| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/browsing_data/browsing_data_counter_utils.h" |
| |
| #include <string> |
| #include <vector> |
| |
| #include "base/message_loop/message_loop.h" |
| #include "base/strings/stringprintf.h" |
| #include "base/strings/utf_string_conversions.h" |
| #include "chrome/test/base/testing_browser_process.h" |
| #include "chrome/test/base/testing_profile.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| #if defined(ENABLE_EXTENSIONS) |
| #include "base/strings/string_split.h" |
| #include "chrome/browser/browsing_data/hosted_apps_counter.h" |
| #endif |
| |
| class BrowsingDataCounterUtilsTest : public testing::Test { |
| public: |
| BrowsingDataCounterUtilsTest() {} |
| ~BrowsingDataCounterUtilsTest() override {} |
| |
| TestingProfile* GetProfile() { return &profile_; } |
| |
| private: |
| base::MessageLoop loop_; |
| TestingProfile profile_; |
| }; |
| |
| #if defined(ENABLE_EXTENSIONS) |
| // Tests the complex output of the hosted apps counter. |
| TEST_F(BrowsingDataCounterUtilsTest, HostedAppsCounterResult) { |
| HostedAppsCounter counter(GetProfile()); |
| |
| // This test assumes that the strings are served exactly as defined, |
| // i.e. that the locale is set to the default "en". |
| ASSERT_EQ("en", TestingBrowserProcess::GetGlobal()->GetApplicationLocale()); |
| |
| // Test the output for various numbers of hosted apps. |
| const struct TestCase { |
| std::string apps_list; |
| std::string expected_output; |
| } kTestCases[] = { |
| { "", "none" }, |
| { "App1", "1 app (App1)" }, |
| { "App1, App2", "2 apps (App1, App2)" }, |
| { "App1, App2, App3", "3 apps (App1, App2, and 1 more)" }, |
| { "App1, App2, App3, App4", "4 apps (App1, App2, and 2 more)" }, |
| { "App1, App2, App3, App4, App5", "5 apps (App1, App2, and 3 more)" }, |
| }; |
| |
| for (const TestCase& test_case : kTestCases) { |
| // Split the list of installed apps by commas. |
| std::vector<std::string> apps = base::SplitString( |
| test_case.apps_list, ",", |
| base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY); |
| |
| // The first two apps in the list are used as examples. |
| std::vector<std::string> examples; |
| examples.assign( |
| apps.begin(), apps.begin() + (apps.size() > 2 ? 2 : apps.size())); |
| |
| HostedAppsCounter::HostedAppsResult result( |
| &counter, |
| apps.size(), |
| examples); |
| |
| base::string16 output = GetChromeCounterTextFromResult(&result); |
| EXPECT_EQ(output, base::ASCIIToUTF16(test_case.expected_output)); |
| } |
| } |
| #endif |