| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <algorithm> | 5 #include <algorithm> |
| 6 #include <vector> | 6 #include <vector> |
| 7 | 7 |
| 8 #include "base/message_loop.h" | 8 #include "base/message_loop.h" |
| 9 #include "base/thread.h" | 9 #include "base/thread.h" |
| 10 #include "chrome/browser/chrome_thread.h" | 10 #include "chrome/browser/chrome_thread.h" |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 // A simple test URLRequestJob. We don't care what it does, only that whether it | 24 // A simple test URLRequestJob. We don't care what it does, only that whether it |
| 25 // starts and finishes. | 25 // starts and finishes. |
| 26 class SimpleTestJob : public URLRequestTestJob { | 26 class SimpleTestJob : public URLRequestTestJob { |
| 27 public: | 27 public: |
| 28 explicit SimpleTestJob(URLRequest* request) | 28 explicit SimpleTestJob(URLRequest* request) |
| 29 : URLRequestTestJob(request, test_headers(), test_data_1(), true) {} | 29 : URLRequestTestJob(request, test_headers(), test_data_1(), true) {} |
| 30 }; | 30 }; |
| 31 | 31 |
| 32 class MockUserScriptMaster : public UserScriptMaster { | 32 class MockUserScriptMaster : public UserScriptMaster { |
| 33 public: | 33 public: |
| 34 explicit MockUserScriptMaster(MessageLoop* worker, const FilePath& script_dir) | 34 explicit MockUserScriptMaster(const FilePath& script_dir) |
| 35 : UserScriptMaster(worker, script_dir) {} | 35 : UserScriptMaster(script_dir) {} |
| 36 | 36 |
| 37 virtual void StartScan() { | 37 virtual void StartScan() { |
| 38 // Do nothing. We want to manually control when scans occur. | 38 // Do nothing. We want to manually control when scans occur. |
| 39 } | 39 } |
| 40 void TestStartScan() { | 40 void TestStartScan() { |
| 41 UserScriptMaster::StartScan(); | 41 UserScriptMaster::StartScan(); |
| 42 } | 42 } |
| 43 }; | 43 }; |
| 44 | 44 |
| 45 class MockIOThread : public ChromeThread { | 45 class MockIOThread : public ChromeThread { |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 177 | 177 |
| 178 // Note: these variables are accessed on both threads, but since we only | 178 // Note: these variables are accessed on both threads, but since we only |
| 179 // one thread executes at a time, they are safe. | 179 // one thread executes at a time, they are safe. |
| 180 std::vector<int> started_requests_; | 180 std::vector<int> started_requests_; |
| 181 std::vector<int> completed_requests_; | 181 std::vector<int> completed_requests_; |
| 182 }; | 182 }; |
| 183 | 183 |
| 184 class UserScriptListenerTest : public testing::Test { | 184 class UserScriptListenerTest : public testing::Test { |
| 185 public: | 185 public: |
| 186 virtual void SetUp() { | 186 virtual void SetUp() { |
| 187 ui_thread_.reset(new ChromeThread(ChromeThread::UI, &loop_)); |
| 188 file_thread_.reset(new ChromeThread(ChromeThread::FILE, &loop_)); |
| 187 io_thread_.reset(new MockIOThread()); | 189 io_thread_.reset(new MockIOThread()); |
| 188 base::Thread::Options options(MessageLoop::TYPE_IO, 0); | 190 base::Thread::Options options(MessageLoop::TYPE_IO, 0); |
| 189 io_thread_->StartWithOptions(options); | 191 io_thread_->StartWithOptions(options); |
| 190 DCHECK(io_thread_->message_loop()); | 192 DCHECK(io_thread_->message_loop()); |
| 191 DCHECK(io_thread_->IsRunning()); | 193 DCHECK(io_thread_->IsRunning()); |
| 192 | 194 |
| 193 FilePath install_dir = profile_.GetPath() | 195 FilePath install_dir = profile_.GetPath() |
| 194 .AppendASCII(ExtensionsService::kInstallDirectoryName); | 196 .AppendASCII(ExtensionsService::kInstallDirectoryName); |
| 195 | 197 |
| 196 resource_tester_ = | 198 resource_tester_ = |
| 197 new ResourceDispatcherHostTester(io_thread_->message_loop()); | 199 new ResourceDispatcherHostTester(io_thread_->message_loop()); |
| 198 | 200 |
| 199 master_ = new MockUserScriptMaster(&loop_, install_dir); | 201 master_ = new MockUserScriptMaster(install_dir); |
| 200 | 202 |
| 201 service_ = new ExtensionsService(&profile_, | 203 service_ = new ExtensionsService(&profile_, |
| 202 CommandLine::ForCurrentProcess(), | 204 CommandLine::ForCurrentProcess(), |
| 203 profile_.GetPrefs(), | 205 profile_.GetPrefs(), |
| 204 install_dir, | 206 install_dir, |
| 205 &loop_, | |
| 206 &loop_, | |
| 207 false); | 207 false); |
| 208 service_->set_extensions_enabled(true); | 208 service_->set_extensions_enabled(true); |
| 209 service_->set_show_extensions_prompts(false); | 209 service_->set_show_extensions_prompts(false); |
| 210 service_->ClearProvidersForTesting(); | 210 service_->ClearProvidersForTesting(); |
| 211 service_->Init(); | 211 service_->Init(); |
| 212 } | 212 } |
| 213 | 213 |
| 214 virtual void TearDown() { | 214 virtual void TearDown() { |
| 215 io_thread_.reset(); | 215 io_thread_.reset(); |
| 216 file_thread_.reset(); |
| 217 ui_thread_.reset(); |
| 216 resource_tester_ = NULL; | 218 resource_tester_ = NULL; |
| 217 } | 219 } |
| 218 | 220 |
| 219 protected: | 221 protected: |
| 220 TestingProfile profile_; | 222 TestingProfile profile_; |
| 221 MessageLoopForUI loop_; | 223 MessageLoopForUI loop_; |
| 224 scoped_ptr<ChromeThread> ui_thread_; |
| 225 scoped_ptr<ChromeThread> file_thread_; |
| 222 scoped_ptr<MockIOThread> io_thread_; | 226 scoped_ptr<MockIOThread> io_thread_; |
| 223 scoped_refptr<ResourceDispatcherHostTester> resource_tester_; | 227 scoped_refptr<ResourceDispatcherHostTester> resource_tester_; |
| 224 scoped_refptr<MockUserScriptMaster> master_; | 228 scoped_refptr<MockUserScriptMaster> master_; |
| 225 scoped_refptr<ExtensionsService> service_; | 229 scoped_refptr<ExtensionsService> service_; |
| 226 }; | 230 }; |
| 227 | 231 |
| 228 // Loads a single extension and ensures that requests to URLs with content | 232 // Loads a single extension and ensures that requests to URLs with content |
| 229 // scripts are delayed. | 233 // scripts are delayed. |
| 230 TEST_F(UserScriptListenerTest, SingleExtension) { | 234 TEST_F(UserScriptListenerTest, SingleExtension) { |
| 231 FilePath extensions_path; | 235 FilePath extensions_path; |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 300 | 304 |
| 301 // Make the same requests, and they should complete instantly. | 305 // Make the same requests, and they should complete instantly. |
| 302 resource_tester_->MakeTestRequest(2, GURL("http://google.com/")); | 306 resource_tester_->MakeTestRequest(2, GURL("http://google.com/")); |
| 303 resource_tester_->MakeTestRequest(3, GURL("http://yahoo.com/")); | 307 resource_tester_->MakeTestRequest(3, GURL("http://yahoo.com/")); |
| 304 | 308 |
| 305 EXPECT_TRUE(resource_tester_->IsRequestStarted(2)); | 309 EXPECT_TRUE(resource_tester_->IsRequestStarted(2)); |
| 306 EXPECT_TRUE(resource_tester_->IsRequestComplete(2)); | 310 EXPECT_TRUE(resource_tester_->IsRequestComplete(2)); |
| 307 EXPECT_TRUE(resource_tester_->IsRequestStarted(3)); | 311 EXPECT_TRUE(resource_tester_->IsRequestStarted(3)); |
| 308 EXPECT_TRUE(resource_tester_->IsRequestComplete(3)); | 312 EXPECT_TRUE(resource_tester_->IsRequestComplete(3)); |
| 309 } | 313 } |
| OLD | NEW |