// 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 {
}
// 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_;
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,
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
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();
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);
}
if (!defer)
request->Start();
- return request;
+ return request.Pass();
}
void LoadTestExtension() {
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();
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());
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();
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.
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());
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;
"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();
// 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();
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();