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 "chrome/browser/ui/webui/chrome_web_ui_controller_factory.h" | 5 #include "chrome/browser/ui/webui/chrome_web_ui_controller_factory.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/location.h" | 9 #include "base/location.h" |
10 #include "base/message_loop_proxy.h" | 10 #include "base/message_loop_proxy.h" |
(...skipping 30 matching lines...) Expand all Loading... |
41 #include "chrome/browser/ui/webui/omnibox/omnibox_ui.h" | 41 #include "chrome/browser/ui/webui/omnibox/omnibox_ui.h" |
42 #include "chrome/browser/ui/webui/options/options_ui.h" | 42 #include "chrome/browser/ui/webui/options/options_ui.h" |
43 #include "chrome/browser/ui/webui/performance_monitor/performance_monitor_ui.h" | 43 #include "chrome/browser/ui/webui/performance_monitor/performance_monitor_ui.h" |
44 #include "chrome/browser/ui/webui/plugins_ui.h" | 44 #include "chrome/browser/ui/webui/plugins_ui.h" |
45 #include "chrome/browser/ui/webui/predictors/predictors_ui.h" | 45 #include "chrome/browser/ui/webui/predictors/predictors_ui.h" |
46 #include "chrome/browser/ui/webui/print_preview/print_preview_ui.h" | 46 #include "chrome/browser/ui/webui/print_preview/print_preview_ui.h" |
47 #include "chrome/browser/ui/webui/profiler_ui.h" | 47 #include "chrome/browser/ui/webui/profiler_ui.h" |
48 #include "chrome/browser/ui/webui/quota_internals_ui.h" | 48 #include "chrome/browser/ui/webui/quota_internals_ui.h" |
49 #include "chrome/browser/ui/webui/signin_internals_ui.h" | 49 #include "chrome/browser/ui/webui/signin_internals_ui.h" |
50 #include "chrome/browser/ui/webui/sync_internals_ui.h" | 50 #include "chrome/browser/ui/webui/sync_internals_ui.h" |
| 51 #include "chrome/browser/ui/webui/test_chrome_web_ui_controller_factory.h" |
51 #include "chrome/browser/ui/webui/tracing_ui.h" | 52 #include "chrome/browser/ui/webui/tracing_ui.h" |
52 #include "chrome/browser/ui/webui/user_actions/user_actions_ui.h" | 53 #include "chrome/browser/ui/webui/user_actions/user_actions_ui.h" |
53 #include "chrome/browser/ui/webui/version_ui.h" | 54 #include "chrome/browser/ui/webui/version_ui.h" |
54 #include "chrome/common/chrome_switches.h" | 55 #include "chrome/common/chrome_switches.h" |
55 #include "chrome/common/extensions/extension_constants.h" | 56 #include "chrome/common/extensions/extension_constants.h" |
56 #include "chrome/common/extensions/feature_switch.h" | 57 #include "chrome/common/extensions/feature_switch.h" |
57 #include "chrome/common/pref_names.h" | 58 #include "chrome/common/pref_names.h" |
58 #include "chrome/common/url_constants.h" | 59 #include "chrome/common/url_constants.h" |
59 #include "content/public/browser/web_contents.h" | 60 #include "content/public/browser/web_contents.h" |
60 #include "content/public/browser/web_ui.h" | 61 #include "content/public/browser/web_ui.h" |
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
405 #endif | 406 #endif |
406 #if defined(ENABLE_PRINTING) | 407 #if defined(ENABLE_PRINTING) |
407 if (url.host() == chrome::kChromeUIPrintHost && | 408 if (url.host() == chrome::kChromeUIPrintHost && |
408 !profile->GetPrefs()->GetBoolean(prefs::kPrintPreviewDisabled)) | 409 !profile->GetPrefs()->GetBoolean(prefs::kPrintPreviewDisabled)) |
409 return &NewWebUI<PrintPreviewUI>; | 410 return &NewWebUI<PrintPreviewUI>; |
410 #endif | 411 #endif |
411 | 412 |
412 return NULL; | 413 return NULL; |
413 } | 414 } |
414 | 415 |
| 416 // When the test-type switch is set, return a TestType object, which should be a |
| 417 // subclass of Type. The logic is provided here in the traits class, rather than |
| 418 // in GetInstance() so that the choice is made only once, when the Singleton is |
| 419 // first instantiated, rather than every time GetInstance() is called. |
| 420 template<typename Type, typename TestType> |
| 421 struct PossibleTestSingletonTraits : public DefaultSingletonTraits<Type> { |
| 422 static Type* New() { |
| 423 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kTestType)) |
| 424 return DefaultSingletonTraits<TestType>::New(); |
| 425 else |
| 426 return DefaultSingletonTraits<Type>::New(); |
| 427 } |
| 428 }; |
| 429 |
415 void RunFaviconCallbackAsync( | 430 void RunFaviconCallbackAsync( |
416 const FaviconService::FaviconResultsCallback& callback, | 431 const FaviconService::FaviconResultsCallback& callback, |
417 const std::vector<history::FaviconBitmapResult>* results) { | 432 const std::vector<history::FaviconBitmapResult>* results) { |
418 base::MessageLoopProxy::current()->PostTask( | 433 base::MessageLoopProxy::current()->PostTask( |
419 FROM_HERE, | 434 FROM_HERE, |
420 base::Bind(&FaviconService::FaviconResultsCallbackRunner, | 435 base::Bind(&FaviconService::FaviconResultsCallbackRunner, |
421 callback, base::Owned(results))); | 436 callback, base::Owned(results))); |
422 } | 437 } |
423 | 438 |
424 } // namespace | 439 } // namespace |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
499 static_cast<int>(gfx::kFaviconSize * scale + 0.5f); | 514 static_cast<int>(gfx::kFaviconSize * scale + 0.5f); |
500 bitmap_result.pixel_size = gfx::Size(edge_pixel_size, edge_pixel_size); | 515 bitmap_result.pixel_size = gfx::Size(edge_pixel_size, edge_pixel_size); |
501 } | 516 } |
502 } | 517 } |
503 | 518 |
504 RunFaviconCallbackAsync(callback, favicon_bitmap_results); | 519 RunFaviconCallbackAsync(callback, favicon_bitmap_results); |
505 } | 520 } |
506 | 521 |
507 // static | 522 // static |
508 ChromeWebUIControllerFactory* ChromeWebUIControllerFactory::GetInstance() { | 523 ChromeWebUIControllerFactory* ChromeWebUIControllerFactory::GetInstance() { |
509 return Singleton<ChromeWebUIControllerFactory>::get(); | 524 return Singleton< ChromeWebUIControllerFactory, PossibleTestSingletonTraits< |
| 525 ChromeWebUIControllerFactory, TestChromeWebUIControllerFactory> >::get(); |
510 } | 526 } |
511 | 527 |
512 ChromeWebUIControllerFactory::ChromeWebUIControllerFactory() { | 528 ChromeWebUIControllerFactory::ChromeWebUIControllerFactory() { |
513 } | 529 } |
514 | 530 |
515 ChromeWebUIControllerFactory::~ChromeWebUIControllerFactory() { | 531 ChromeWebUIControllerFactory::~ChromeWebUIControllerFactory() { |
516 } | 532 } |
517 | 533 |
518 base::RefCountedMemory* ChromeWebUIControllerFactory::GetFaviconResourceBytes( | 534 base::RefCountedMemory* ChromeWebUIControllerFactory::GetFaviconResourceBytes( |
519 const GURL& page_url, ui::ScaleFactor scale_factor) const { | 535 const GURL& page_url, ui::ScaleFactor scale_factor) const { |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
560 if (page_url.host() == chrome::kChromeUISettingsFrameHost) | 576 if (page_url.host() == chrome::kChromeUISettingsFrameHost) |
561 return options::OptionsUI::GetFaviconResourceBytes(scale_factor); | 577 return options::OptionsUI::GetFaviconResourceBytes(scale_factor); |
562 | 578 |
563 // Android doesn't use the plugins pages. | 579 // Android doesn't use the plugins pages. |
564 if (page_url.host() == chrome::kChromeUIPluginsHost) | 580 if (page_url.host() == chrome::kChromeUIPluginsHost) |
565 return PluginsUI::GetFaviconResourceBytes(scale_factor); | 581 return PluginsUI::GetFaviconResourceBytes(scale_factor); |
566 #endif | 582 #endif |
567 | 583 |
568 return NULL; | 584 return NULL; |
569 } | 585 } |
OLD | NEW |