Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / user_script_listener_unittest.cc
index 0e530d4..b4cc28e 100644 (file)
@@ -2,29 +2,33 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "base/file_util.h"
+#include "base/files/file_util.h"
 #include "base/json/json_file_value_serializer.h"
+#include "base/memory/scoped_ptr.h"
 #include "base/message_loop/message_loop.h"
 #include "base/threading/thread.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/unpacked_installer.h"
 #include "chrome/browser/extensions/user_script_listener.h"
 #include "chrome/common/chrome_paths.h"
-#include "chrome/common/extensions/extension_file_util.h"
 #include "chrome/test/base/testing_profile.h"
 #include "content/public/browser/notification_service.h"
 #include "content/public/browser/resource_controller.h"
 #include "content/public/browser/resource_throttle.h"
+#include "extensions/browser/extension_registry.h"
 #include "net/base/request_priority.h"
 #include "net/url_request/url_request.h"
 #include "net/url_request/url_request_filter.h"
+#include "net/url_request/url_request_interceptor.h"
 #include "net/url_request/url_request_test_job.h"
 #include "net/url_request/url_request_test_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 using content::ResourceController;
 using content::ResourceThrottle;
+using content::ResourceType;
 
 namespace extensions {
 
@@ -44,18 +48,10 @@ class ThrottleController : public base::SupportsUserData::Data,
   }
 
   // ResourceController implementation:
-  virtual void Resume() OVERRIDE {
-    request_->Start();
-  }
-  virtual void Cancel() OVERRIDE {
-    NOTREACHED();
-  }
-  virtual void CancelAndIgnore() OVERRIDE {
-    NOTREACHED();
-  }
-  virtual void CancelWithError(int error_code) OVERRIDE {
-    NOTREACHED();
-  }
+  void Resume() override { request_->Start(); }
+  void Cancel() override { NOTREACHED(); }
+  void CancelAndIgnore() override { NOTREACHED(); }
+  void CancelWithError(int error_code) override { NOTREACHED(); }
 
  private:
   net::URLRequest* request_;
@@ -74,15 +70,16 @@ class SimpleTestJob : public net::URLRequestTestJob {
                                kTestData,
                                true) {}
  private:
-  virtual ~SimpleTestJob() {}
+  ~SimpleTestJob() override {}
 };
 
 // Yoinked from extension_manifest_unittest.cc.
-DictionaryValue* LoadManifestFile(const base::FilePath path,
-                                  std::string* error) {
+base::DictionaryValue* LoadManifestFile(const base::FilePath path,
+                                        std::string* error) {
   EXPECT_TRUE(base::PathExists(path));
   JSONFileValueSerializer serializer(path);
-  return static_cast<DictionaryValue*>(serializer.Deserialize(NULL, error));
+  return static_cast<base::DictionaryValue*>(
+      serializer.Deserialize(NULL, error));
 }
 
 scoped_refptr<Extension> LoadExtension(const std::string& filename,
@@ -93,28 +90,28 @@ scoped_refptr<Extension> LoadExtension(const std::string& filename,
       AppendASCII("extensions").
       AppendASCII("manifest_tests").
       AppendASCII(filename.c_str());
-  scoped_ptr<DictionaryValue> value(LoadManifestFile(path, error));
+  scoped_ptr<base::DictionaryValue> value(LoadManifestFile(path, error));
   if (!value)
     return NULL;
   return Extension::Create(path.DirName(), Manifest::UNPACKED, *value,
                            Extension::NO_FLAGS, error);
 }
 
-class SimpleTestJobProtocolHandler
-    : public net::URLRequestJobFactory::ProtocolHandler {
+class SimpleTestJobURLRequestInterceptor
+    : public net::URLRequestInterceptor {
  public:
-  SimpleTestJobProtocolHandler() {}
-  virtual ~SimpleTestJobProtocolHandler() {}
+  SimpleTestJobURLRequestInterceptor() {}
+  ~SimpleTestJobURLRequestInterceptor() override {}
 
   // net::URLRequestJobFactory::ProtocolHandler
-  virtual net::URLRequestJob* MaybeCreateJob(
+  net::URLRequestJob* MaybeInterceptRequest(
       net::URLRequest* request,
-      net::NetworkDelegate* network_delegate) const OVERRIDE {
+      net::NetworkDelegate* network_delegate) const override {
     return new SimpleTestJob(request, network_delegate);
   }
 
  private:
-  DISALLOW_COPY_AND_ASSIGN(SimpleTestJobProtocolHandler);
+  DISALLOW_COPY_AND_ASSIGN(SimpleTestJobURLRequestInterceptor);
 };
 
 }  // namespace
@@ -122,24 +119,24 @@ class SimpleTestJobProtocolHandler
 class UserScriptListenerTest : public ExtensionServiceTestBase {
  public:
   UserScriptListenerTest() {
-    net::URLRequestFilter::GetInstance()->AddHostnameProtocolHandler(
+    net::URLRequestFilter::GetInstance()->AddHostnameInterceptor(
         "http", "google.com",
-        scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>(
-            new SimpleTestJobProtocolHandler()));
-    net::URLRequestFilter::GetInstance()->AddHostnameProtocolHandler(
+        scoped_ptr<net::URLRequestInterceptor>(
+            new SimpleTestJobURLRequestInterceptor()));
+    net::URLRequestFilter::GetInstance()->AddHostnameInterceptor(
         "http", "example.com",
-        scoped_ptr<net::URLRequestJobFactory::ProtocolHandler>(
-            new SimpleTestJobProtocolHandler()));
+        scoped_ptr<net::URLRequestInterceptor>(
+            new SimpleTestJobURLRequestInterceptor()));
   }
 
-  virtual ~UserScriptListenerTest() {
+  ~UserScriptListenerTest() override {
     net::URLRequestFilter::GetInstance()->RemoveHostnameHandler("http",
                                                                 "google.com");
     net::URLRequestFilter::GetInstance()->RemoveHostnameHandler("http",
                                                                 "example.com");
   }
 
-  virtual void SetUp() OVERRIDE {
+  void SetUp() override {
     ExtensionServiceTestBase::SetUp();
 
     InitializeEmptyExtensionService();
@@ -149,26 +146,28 @@ class UserScriptListenerTest : public ExtensionServiceTestBase {
     listener_ = new UserScriptListener();
   }
 
-  virtual void TearDown() OVERRIDE {
+  void TearDown() override {
     listener_ = NULL;
     base::MessageLoop::current()->RunUntilIdle();
     ExtensionServiceTestBase::TearDown();
   }
 
  protected:
-  net::TestURLRequest* StartTestRequest(net::URLRequest::Delegate* delegate,
-                                        const std::string& url_string,
-                                        net::TestURLRequestContext* context) {
+  scoped_ptr<net::URLRequest> StartTestRequest(
+      net::URLRequest::Delegate* delegate,
+      const std::string& url_string,
+      net::TestURLRequestContext* context) {
     GURL url(url_string);
-    net::TestURLRequest* request =
-        new net::TestURLRequest(url, net::DEFAULT_PRIORITY, delegate, context);
+    scoped_ptr<net::URLRequest> request(context->CreateRequest(
+        url, net::DEFAULT_PRIORITY, delegate, NULL));
 
-    ResourceThrottle* throttle =
-        listener_->CreateResourceThrottle(url, ResourceType::MAIN_FRAME);
+    ResourceThrottle* throttle = listener_->CreateResourceThrottle(
+        url, content::RESOURCE_TYPE_MAIN_FRAME);
 
     bool defer = false;
     if (throttle) {
-      request->SetUserData(NULL, new ThrottleController(request, throttle));
+      request->SetUserData(NULL,
+                           new ThrottleController(request.get(), throttle));
 
       throttle->WillStartRequest(&defer);
     }
@@ -176,7 +175,7 @@ class UserScriptListenerTest : public ExtensionServiceTestBase {
     if (!defer)
       request->Start();
 
-    return request;
+    return request.Pass();
   }
 
   void LoadTestExtension() {
@@ -208,12 +207,12 @@ TEST_F(UserScriptListenerTest, DelayAndUpdate) {
 
   net::TestDelegate delegate;
   net::TestURLRequestContext context;
-  scoped_ptr<net::TestURLRequest> request(
+  scoped_ptr<net::URLRequest> request(
       StartTestRequest(&delegate, kMatchingUrl, &context));
   ASSERT_FALSE(request->is_pending());
 
   content::NotificationService::current()->Notify(
-      chrome::NOTIFICATION_USER_SCRIPTS_UPDATED,
+      extensions::NOTIFICATION_USER_SCRIPTS_UPDATED,
       content::Source<Profile>(profile_.get()),
       content::NotificationService::NoDetails());
   base::MessageLoop::current()->RunUntilIdle();
@@ -226,7 +225,7 @@ TEST_F(UserScriptListenerTest, DelayAndUnload) {
 
   net::TestDelegate delegate;
   net::TestURLRequestContext context;
-  scoped_ptr<net::TestURLRequest> request(
+  scoped_ptr<net::URLRequest> request(
       StartTestRequest(&delegate, kMatchingUrl, &context));
   ASSERT_FALSE(request->is_pending());
 
@@ -238,7 +237,7 @@ TEST_F(UserScriptListenerTest, DelayAndUnload) {
   ASSERT_FALSE(request->is_pending());
 
   content::NotificationService::current()->Notify(
-      chrome::NOTIFICATION_USER_SCRIPTS_UPDATED,
+      extensions::NOTIFICATION_USER_SCRIPTS_UPDATED,
       content::Source<Profile>(profile_.get()),
       content::NotificationService::NoDetails());
   base::MessageLoop::current()->RunUntilIdle();
@@ -248,7 +247,7 @@ TEST_F(UserScriptListenerTest, DelayAndUnload) {
 TEST_F(UserScriptListenerTest, NoDelayNoExtension) {
   net::TestDelegate delegate;
   net::TestURLRequestContext context;
-  scoped_ptr<net::TestURLRequest> request(
+  scoped_ptr<net::URLRequest> request(
       StartTestRequest(&delegate, kMatchingUrl, &context));
 
   // The request should be started immediately.
@@ -264,9 +263,8 @@ TEST_F(UserScriptListenerTest, NoDelayNotMatching) {
 
   net::TestDelegate delegate;
   net::TestURLRequestContext context;
-  scoped_ptr<net::TestURLRequest> request(StartTestRequest(&delegate,
-                                                           kNotMatchingUrl,
-                                                           &context));
+  scoped_ptr<net::URLRequest> request(
+      StartTestRequest(&delegate, kNotMatchingUrl, &context));
 
   // The request should be started immediately.
   ASSERT_TRUE(request->is_pending());
@@ -279,7 +277,7 @@ TEST_F(UserScriptListenerTest, MultiProfile) {
   LoadTestExtension();
   base::MessageLoop::current()->RunUntilIdle();
 
-  // Fire up a second profile and have it load and extension with a content
+  // Fire up a second profile and have it load an extension with a content
   // script.
   TestingProfile profile2;
   std::string error;
@@ -287,21 +285,23 @@ TEST_F(UserScriptListenerTest, MultiProfile) {
       "content_script_yahoo.json", &error);
   ASSERT_TRUE(extension.get());
 
+  extensions::ExtensionRegistry::Get(&profile2)->AddEnabled(extension);
+
   content::NotificationService::current()->Notify(
-      chrome::NOTIFICATION_EXTENSION_LOADED,
+      extensions::NOTIFICATION_EXTENSION_LOADED_DEPRECATED,
       content::Source<Profile>(&profile2),
       content::Details<Extension>(extension.get()));
 
   net::TestDelegate delegate;
   net::TestURLRequestContext context;
-  scoped_ptr<net::TestURLRequest> request(
+  scoped_ptr<net::URLRequest> request(
       StartTestRequest(&delegate, kMatchingUrl, &context));
   ASSERT_FALSE(request->is_pending());
 
   // When the first profile's user scripts are ready, the request should still
   // be blocked waiting for profile2.
   content::NotificationService::current()->Notify(
-      chrome::NOTIFICATION_USER_SCRIPTS_UPDATED,
+      extensions::NOTIFICATION_USER_SCRIPTS_UPDATED,
       content::Source<Profile>(profile_.get()),
       content::NotificationService::NoDetails());
   base::MessageLoop::current()->RunUntilIdle();
@@ -310,7 +310,7 @@ TEST_F(UserScriptListenerTest, MultiProfile) {
 
   // After profile2 is ready, the request should proceed.
   content::NotificationService::current()->Notify(
-      chrome::NOTIFICATION_USER_SCRIPTS_UPDATED,
+      extensions::NOTIFICATION_USER_SCRIPTS_UPDATED,
       content::Source<Profile>(&profile2),
       content::NotificationService::NoDetails());
   base::MessageLoop::current()->RunUntilIdle();
@@ -326,18 +326,18 @@ TEST_F(UserScriptListenerTest, ResumeBeforeStart) {
   net::TestDelegate delegate;
   net::TestURLRequestContext context;
   GURL url(kMatchingUrl);
-  scoped_ptr<net::TestURLRequest> request(
-      new net::TestURLRequest(url, net::DEFAULT_PRIORITY, &delegate, &context));
+  scoped_ptr<net::URLRequest> request(context.CreateRequest(
+      url, net::DEFAULT_PRIORITY, &delegate, NULL));
 
   ResourceThrottle* throttle =
-      listener_->CreateResourceThrottle(url, ResourceType::MAIN_FRAME);
+      listener_->CreateResourceThrottle(url, content::RESOURCE_TYPE_MAIN_FRAME);
   ASSERT_TRUE(throttle);
   request->SetUserData(NULL, new ThrottleController(request.get(), throttle));
 
   ASSERT_FALSE(request->is_pending());
 
   content::NotificationService::current()->Notify(
-      chrome::NOTIFICATION_USER_SCRIPTS_UPDATED,
+      extensions::NOTIFICATION_USER_SCRIPTS_UPDATED,
       content::Source<Profile>(profile_.get()),
       content::NotificationService::NoDetails());
   base::MessageLoop::current()->RunUntilIdle();