// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // An implementation of BrowserProcess for unit tests that fails for most // services. By preventing creation of services, we reduce dependencies and // keep the profile clean. Clients of this class must handle the NULL return // value, however. #ifndef CHROME_TEST_TESTING_BROWSER_PROCESS_H_ #define CHROME_TEST_TESTING_BROWSER_PROCESS_H_ #pragma once #include #include "base/memory/scoped_ptr.h" #include "build/build_config.h" #include "chrome/browser/browser_process.h" #include "content/common/notification_service.h" class BackgroundModeManager; class IOThread; class GoogleURLTracker; class MHTMLGenerationManager; class NotificationUIManager; class PrefService; class WatchDogThread; namespace base { class WaitableEvent; } namespace policy { class BrowserPolicyConnector; } namespace prerender { class PrerenderTracker; } namespace ui { class Clipboard; } class TestingBrowserProcess : public BrowserProcess { public: TestingBrowserProcess(); virtual ~TestingBrowserProcess(); virtual void EndSession(); virtual ResourceDispatcherHost* resource_dispatcher_host(); virtual MetricsService* metrics_service(); virtual IOThread* io_thread(); virtual base::Thread* file_thread(); virtual base::Thread* db_thread(); virtual base::Thread* cache_thread(); virtual WatchDogThread* watchdog_thread(); #if defined(OS_CHROMEOS) virtual base::Thread* web_socket_proxy_thread(); #endif virtual ProfileManager* profile_manager(); virtual PrefService* local_state(); virtual policy::BrowserPolicyConnector* browser_policy_connector(); virtual IconManager* icon_manager(); virtual ThumbnailGenerator* GetThumbnailGenerator(); virtual DevToolsManager* devtools_manager(); virtual SidebarManager* sidebar_manager(); virtual TabCloseableStateWatcher* tab_closeable_state_watcher(); virtual BackgroundModeManager* background_mode_manager(); virtual StatusTray* status_tray(); virtual SafeBrowsingService* safe_browsing_service(); virtual safe_browsing::ClientSideDetectionService* safe_browsing_detection_service(); virtual net::URLRequestContextGetter* system_request_context(); #if defined(OS_CHROMEOS) virtual chromeos::ProxyConfigServiceImpl* chromeos_proxy_config_service_impl(); #endif // defined(OS_CHROMEOS) virtual ui::Clipboard* clipboard(); virtual ExtensionEventRouterForwarder* extension_event_router_forwarder(); virtual NotificationUIManager* notification_ui_manager(); virtual GoogleURLTracker* google_url_tracker(); virtual IntranetRedirectDetector* intranet_redirect_detector(); virtual AutomationProviderList* InitAutomationProviderList(); virtual void InitDevToolsHttpProtocolHandler( const std::string& ip, int port, const std::string& frontend_url); virtual void InitDevToolsLegacyProtocolHandler(int port); virtual unsigned int AddRefModule(); virtual unsigned int ReleaseModule(); virtual bool IsShuttingDown(); virtual printing::PrintJobManager* print_job_manager(); virtual printing::PrintPreviewTabController* print_preview_tab_controller(); virtual printing::BackgroundPrintingManager* background_printing_manager(); virtual const std::string& GetApplicationLocale(); virtual void SetApplicationLocale(const std::string& app_locale); virtual DownloadStatusUpdater* download_status_updater(); virtual bool plugin_finder_disabled() const; virtual void CheckForInspectorFiles() {} #if (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) virtual void StartAutoupdateTimer() {} #endif virtual ChromeNetLog* net_log(); virtual prerender::PrerenderTracker* prerender_tracker(); #if defined(IPC_MESSAGE_LOG_ENABLED) virtual void SetIPCLoggingEnabled(bool enable) {} #endif virtual MHTMLGenerationManager* mhtml_generation_manager(); // Set the local state for tests. Consumer is responsible for cleaning it up // afterwards (using ScopedTestingLocalState, for example). void SetLocalState(PrefService* local_state); void SetGoogleURLTracker(GoogleURLTracker* google_url_tracker); void SetProfileManager(ProfileManager* profile_manager); private: NotificationService notification_service_; unsigned int module_ref_count_; scoped_ptr clipboard_; std::string app_locale_; // Weak pointer. PrefService* local_state_; scoped_ptr browser_policy_connector_; scoped_ptr google_url_tracker_; scoped_ptr profile_manager_; scoped_ptr notification_ui_manager_; scoped_ptr background_printing_manager_; scoped_ptr prerender_tracker_; DISALLOW_COPY_AND_ASSIGN(TestingBrowserProcess); }; // Scoper to put a TestingBrowserProcess in |g_browser_process|. class ScopedTestingBrowserProcess { public: ScopedTestingBrowserProcess(); ~ScopedTestingBrowserProcess(); TestingBrowserProcess* get() { return browser_process_.get(); } private: // TODO(phajdan.jr): Temporary, for http://crbug.com/61062. // After the transition is over, we should just stack-allocate it. scoped_ptr browser_process_; DISALLOW_COPY_AND_ASSIGN(ScopedTestingBrowserProcess); }; #endif // CHROME_TEST_TESTING_BROWSER_PROCESS_H_