Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / external_provider_impl_unittest.cc
index 3b82b78..81364e1 100644 (file)
@@ -5,17 +5,24 @@
 #include "chrome/browser/extensions/external_provider_impl.h"
 
 #include "base/command_line.h"
-#include "base/file_util.h"
 #include "base/files/file_path.h"
+#include "base/files/file_util.h"
 #include "base/memory/scoped_ptr.h"
 #include "base/path_service.h"
+#include "base/prefs/testing_pref_service.h"
 #include "base/strings/stringprintf.h"
 #include "base/test/scoped_path_override.h"
 #include "chrome/browser/chrome_notification_types.h"
-#include "chrome/browser/extensions/extension_service_unittest.h"
+#include "chrome/browser/extensions/extension_service.h"
+#include "chrome/browser/extensions/extension_service_test_base.h"
 #include "chrome/browser/extensions/updater/extension_cache_fake.h"
+#include "chrome/browser/extensions/updater/extension_updater.h"
+#include "chrome/common/chrome_constants.h"
 #include "chrome/common/chrome_paths.h"
 #include "chrome/common/chrome_switches.h"
+#include "chrome/common/extensions/extension_constants.h"
+#include "chrome/common/pref_names.h"
+#include "chrome/test/base/testing_browser_process.h"
 #include "chrome/test/base/testing_profile.h"
 #include "content/public/browser/notification_service.h"
 #include "content/public/test/test_utils.h"
 #include "testing/gmock/include/gmock/gmock.h"
 
 #if defined(OS_CHROMEOS)
-#include "chromeos/system/mock_statistics_provider.h"
+#include "chrome/browser/chromeos/customization_document.h"
+#include "chrome/browser/chromeos/login/users/fake_user_manager.h"
+#include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h"
+#include "chromeos/system/fake_statistics_provider.h"
 #include "chromeos/system/statistics_provider.h"
 #endif
 
-using ::testing::_;
 using ::testing::NotNull;
 using ::testing::Return;
+using ::testing::_;
 
 namespace extensions {
 
@@ -45,10 +55,22 @@ const char kAppPath[] = "/app.crx";
 class ExternalProviderImplTest : public ExtensionServiceTestBase {
  public:
   ExternalProviderImplTest() {}
-  virtual ~ExternalProviderImplTest() {}
+  ~ExternalProviderImplTest() override {}
 
   void InitServiceWithExternalProviders() {
-    InitializeExtensionServiceWithUpdater();
+#if defined(OS_CHROMEOS)
+    chromeos::ScopedUserManagerEnabler scoped_user_manager(
+        new chromeos::FakeUserManager);
+#endif
+    InitializeExtensionServiceWithUpdaterAndPrefs();
+
+    service()->updater()->SetExtensionCacheForTesting(
+        test_extension_cache_.get());
+
+    // Don't install default apps. Some of the default apps are downloaded from
+    // the webstore, ignoring the url we pass to kAppsGalleryUpdateURL, which
+    // would cause the external updates to never finish install.
+    profile_->GetPrefs()->SetString(prefs::kDefaultApps, "");
 
     ProviderCollection providers;
     extensions::ExternalProviderImpl::CreateExternalProviders(
@@ -61,10 +83,28 @@ class ExternalProviderImplTest : public ExtensionServiceTestBase {
     }
   }
 
+  void InitializeExtensionServiceWithUpdaterAndPrefs() {
+    ExtensionServiceInitParams params = CreateDefaultInitParams();
+    params.autoupdate_enabled = true;
+    // Create prefs file to make the profile not new.
+    const char prefs[] = "{}";
+    EXPECT_EQ(base::WriteFile(params.pref_file, prefs, sizeof(prefs)),
+              int(sizeof(prefs)));
+    InitializeExtensionService(params);
+    service_->updater()->Start();
+  }
+
   // ExtensionServiceTestBase overrides:
-  virtual void SetUp() OVERRIDE {
+  void SetUp() override {
     ExtensionServiceTestBase::SetUp();
     test_server_.reset(new EmbeddedTestServer());
+
+#if defined(OS_CHROMEOS)
+    TestingBrowserProcess::GetGlobal()->SetLocalState(&local_state_);
+    chromeos::ServicesCustomizationDocument::RegisterPrefs(
+        local_state_.registry());
+#endif
+
     ASSERT_TRUE(test_server_->InitializeAndWaitUntilReady());
     test_server_->RegisterRequestHandler(
         base::Bind(&ExternalProviderImplTest::HandleRequest,
@@ -75,18 +115,10 @@ class ExternalProviderImplTest : public ExtensionServiceTestBase {
     CommandLine* cmdline = CommandLine::ForCurrentProcess();
     cmdline->AppendSwitchASCII(switches::kAppsGalleryUpdateURL,
                                test_server_->GetURL(kManifestPath).spec());
-#if defined(OS_CHROMEOS)
-    chromeos::system::StatisticsProvider::SetTestProvider(
-        &mock_statistics_provider_);
-    EXPECT_CALL(mock_statistics_provider_, GetMachineStatistic(_, NotNull()))
-        .WillRepeatedly(Return(false));
-#endif
   }
 
-  virtual void TearDown() OVERRIDE {
-#if defined(OS_CHROMEOS)
-    chromeos::system::StatisticsProvider::SetTestProvider(NULL);
-#endif
+  void TearDown() override {
+    TestingBrowserProcess::GetGlobal()->SetLocalState(NULL);
   }
 
  private:
@@ -106,7 +138,7 @@ class ExternalProviderImplTest : public ExtensionServiceTestBase {
           extension_misc::kInAppPaymentsSupportAppId,
           test_server_->GetURL(kAppPath).spec().c_str()));
       response->set_content_type("text/xml");
-      return response.PassAs<HttpResponse>();
+      return response.Pass();
     }
     if (url.path() == kAppPath) {
       base::FilePath test_data_dir;
@@ -118,16 +150,20 @@ class ExternalProviderImplTest : public ExtensionServiceTestBase {
       scoped_ptr<BasicHttpResponse> response(new BasicHttpResponse);
       response->set_code(net::HTTP_OK);
       response->set_content(contents);
-      return response.PassAs<HttpResponse>();
+      return response.Pass();
     }
 
-    return scoped_ptr<HttpResponse>();
+    return nullptr;
   }
 
   scoped_ptr<EmbeddedTestServer> test_server_;
   scoped_ptr<ExtensionCacheFake> test_extension_cache_;
+
 #if defined(OS_CHROMEOS)
-  chromeos::system::MockStatisticsProvider mock_statistics_provider_;
+  // chromeos::ServicesCustomizationExternalLoader is hooked up as an
+  // extensions::ExternalLoader and depends on a functioning StatisticsProvider.
+  chromeos::system::ScopedFakeStatisticsProvider fake_statistics_provider_;
+  TestingPrefServiceSimple local_state_;
 #endif
 
   DISALLOW_COPY_AND_ASSIGN(ExternalProviderImplTest);