| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/cancelable_callback.h" | 6 #include "base/cancelable_callback.h" |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
| 9 #include "base/memory/ref_counted.h" | 9 #include "base/memory/ref_counted.h" |
| 10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 42 #include "content/public/browser/devtools_manager.h" | 42 #include "content/public/browser/devtools_manager.h" |
| 43 #include "content/public/browser/notification_registrar.h" | 43 #include "content/public/browser/notification_registrar.h" |
| 44 #include "content/public/browser/notification_service.h" | 44 #include "content/public/browser/notification_service.h" |
| 45 #include "content/public/browser/render_view_host.h" | 45 #include "content/public/browser/render_view_host.h" |
| 46 #include "content/public/browser/web_contents.h" | 46 #include "content/public/browser/web_contents.h" |
| 47 #include "content/public/browser/worker_service.h" | 47 #include "content/public/browser/worker_service.h" |
| 48 #include "content/public/browser/worker_service_observer.h" | 48 #include "content/public/browser/worker_service_observer.h" |
| 49 #include "content/public/common/content_switches.h" | 49 #include "content/public/common/content_switches.h" |
| 50 #include "content/public/test/browser_test_utils.h" | 50 #include "content/public/test/browser_test_utils.h" |
| 51 #include "extensions/browser/extension_system.h" | 51 #include "extensions/browser/extension_system.h" |
| 52 #include "extensions/browser/notification_types.h" |
| 52 #include "extensions/common/switches.h" | 53 #include "extensions/common/switches.h" |
| 53 #include "net/socket/tcp_listen_socket.h" | 54 #include "net/socket/tcp_listen_socket.h" |
| 54 #include "net/test/spawned_test_server/spawned_test_server.h" | 55 #include "net/test/spawned_test_server/spawned_test_server.h" |
| 55 | 56 |
| 56 using content::BrowserThread; | 57 using content::BrowserThread; |
| 57 using content::DevToolsManager; | 58 using content::DevToolsManager; |
| 58 using content::DevToolsAgentHost; | 59 using content::DevToolsAgentHost; |
| 59 using content::NavigationController; | 60 using content::NavigationController; |
| 60 using content::RenderViewHost; | 61 using content::RenderViewHost; |
| 61 using content::WebContents; | 62 using content::WebContents; |
| (...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 315 } | 316 } |
| 316 | 317 |
| 317 private: | 318 private: |
| 318 bool LoadExtensionFromPath(const base::FilePath& path) { | 319 bool LoadExtensionFromPath(const base::FilePath& path) { |
| 319 ExtensionService* service = extensions::ExtensionSystem::Get( | 320 ExtensionService* service = extensions::ExtensionSystem::Get( |
| 320 browser()->profile())->extension_service(); | 321 browser()->profile())->extension_service(); |
| 321 size_t num_before = service->extensions()->size(); | 322 size_t num_before = service->extensions()->size(); |
| 322 { | 323 { |
| 323 content::NotificationRegistrar registrar; | 324 content::NotificationRegistrar registrar; |
| 324 registrar.Add(this, | 325 registrar.Add(this, |
| 325 chrome::NOTIFICATION_EXTENSION_LOADED_DEPRECATED, | 326 extensions::NOTIFICATION_EXTENSION_LOADED_DEPRECATED, |
| 326 content::NotificationService::AllSources()); | 327 content::NotificationService::AllSources()); |
| 327 base::CancelableClosure timeout( | 328 base::CancelableClosure timeout( |
| 328 base::Bind(&TimeoutCallback, "Extension load timed out.")); | 329 base::Bind(&TimeoutCallback, "Extension load timed out.")); |
| 329 base::MessageLoop::current()->PostDelayedTask( | 330 base::MessageLoop::current()->PostDelayedTask( |
| 330 FROM_HERE, timeout.callback(), TestTimeouts::action_timeout()); | 331 FROM_HERE, timeout.callback(), TestTimeouts::action_timeout()); |
| 331 extensions::UnpackedInstaller::Create(service)->Load(path); | 332 extensions::UnpackedInstaller::Create(service)->Load(path); |
| 332 content::RunMessageLoop(); | 333 content::RunMessageLoop(); |
| 333 timeout.Cancel(); | 334 timeout.Cancel(); |
| 334 } | 335 } |
| 335 size_t num_after = service->extensions()->size(); | 336 size_t num_after = service->extensions()->size(); |
| 336 if (num_after != (num_before + 1)) | 337 if (num_after != (num_before + 1)) |
| 337 return false; | 338 return false; |
| 338 | 339 |
| 339 return WaitForExtensionViewsToLoad(); | 340 return WaitForExtensionViewsToLoad(); |
| 340 } | 341 } |
| 341 | 342 |
| 342 bool WaitForExtensionViewsToLoad() { | 343 bool WaitForExtensionViewsToLoad() { |
| 343 // Wait for all the extension render views that exist to finish loading. | 344 // Wait for all the extension render views that exist to finish loading. |
| 344 // NOTE: This assumes that the extension views list is not changing while | 345 // NOTE: This assumes that the extension views list is not changing while |
| 345 // this method is running. | 346 // this method is running. |
| 346 | 347 |
| 347 content::NotificationRegistrar registrar; | 348 content::NotificationRegistrar registrar; |
| 348 registrar.Add(this, chrome::NOTIFICATION_EXTENSION_HOST_DID_STOP_LOADING, | 349 registrar.Add(this, |
| 350 extensions::NOTIFICATION_EXTENSION_HOST_DID_STOP_LOADING, |
| 349 content::NotificationService::AllSources()); | 351 content::NotificationService::AllSources()); |
| 350 base::CancelableClosure timeout( | 352 base::CancelableClosure timeout( |
| 351 base::Bind(&TimeoutCallback, "Extension host load timed out.")); | 353 base::Bind(&TimeoutCallback, "Extension host load timed out.")); |
| 352 base::MessageLoop::current()->PostDelayedTask( | 354 base::MessageLoop::current()->PostDelayedTask( |
| 353 FROM_HERE, timeout.callback(), TestTimeouts::action_timeout()); | 355 FROM_HERE, timeout.callback(), TestTimeouts::action_timeout()); |
| 354 | 356 |
| 355 extensions::ProcessManager* manager = | 357 extensions::ProcessManager* manager = |
| 356 extensions::ExtensionSystem::Get(browser()->profile())-> | 358 extensions::ExtensionSystem::Get(browser()->profile())-> |
| 357 process_manager(); | 359 process_manager(); |
| 358 extensions::ProcessManager::ViewSet all_views = manager->GetAllViews(); | 360 extensions::ProcessManager::ViewSet all_views = manager->GetAllViews(); |
| 359 for (extensions::ProcessManager::ViewSet::const_iterator iter = | 361 for (extensions::ProcessManager::ViewSet::const_iterator iter = |
| 360 all_views.begin(); | 362 all_views.begin(); |
| 361 iter != all_views.end();) { | 363 iter != all_views.end();) { |
| 362 if (!(*iter)->IsLoading()) | 364 if (!(*iter)->IsLoading()) |
| 363 ++iter; | 365 ++iter; |
| 364 else | 366 else |
| 365 content::RunMessageLoop(); | 367 content::RunMessageLoop(); |
| 366 } | 368 } |
| 367 | 369 |
| 368 timeout.Cancel(); | 370 timeout.Cancel(); |
| 369 return true; | 371 return true; |
| 370 } | 372 } |
| 371 | 373 |
| 372 virtual void Observe(int type, | 374 virtual void Observe(int type, |
| 373 const content::NotificationSource& source, | 375 const content::NotificationSource& source, |
| 374 const content::NotificationDetails& details) OVERRIDE { | 376 const content::NotificationDetails& details) OVERRIDE { |
| 375 switch (type) { | 377 switch (type) { |
| 376 case chrome::NOTIFICATION_EXTENSION_LOADED_DEPRECATED: | 378 case extensions::NOTIFICATION_EXTENSION_LOADED_DEPRECATED: |
| 377 case chrome::NOTIFICATION_EXTENSION_HOST_DID_STOP_LOADING: | 379 case extensions::NOTIFICATION_EXTENSION_HOST_DID_STOP_LOADING: |
| 378 base::MessageLoopForUI::current()->Quit(); | 380 base::MessageLoopForUI::current()->Quit(); |
| 379 break; | 381 break; |
| 380 default: | 382 default: |
| 381 NOTREACHED(); | 383 NOTREACHED(); |
| 382 break; | 384 break; |
| 383 } | 385 } |
| 384 } | 386 } |
| 385 | 387 |
| 386 base::FilePath test_extensions_dir_; | 388 base::FilePath test_extensions_dir_; |
| 387 }; | 389 }; |
| (...skipping 537 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 925 | 927 |
| 926 IN_PROC_BROWSER_TEST_F(RemoteDebuggingTest, RemoteDebugger) { | 928 IN_PROC_BROWSER_TEST_F(RemoteDebuggingTest, RemoteDebugger) { |
| 927 #if defined(OS_WIN) && defined(USE_ASH) | 929 #if defined(OS_WIN) && defined(USE_ASH) |
| 928 // Disable this test in Metro+Ash for now (http://crbug.com/262796). | 930 // Disable this test in Metro+Ash for now (http://crbug.com/262796). |
| 929 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests)) | 931 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests)) |
| 930 return; | 932 return; |
| 931 #endif | 933 #endif |
| 932 | 934 |
| 933 ASSERT_TRUE(RunExtensionTest("target_list")) << message_; | 935 ASSERT_TRUE(RunExtensionTest("target_list")) << message_; |
| 934 } | 936 } |
| OLD | NEW |