1a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// found in the LICENSE file. 4a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 5a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#ifndef EXTENSIONS_BROWSER_TEST_EXTENSIONS_BROWSER_CLIENT_H_ 6a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#define EXTENSIONS_BROWSER_TEST_EXTENSIONS_BROWSER_CLIENT_H_ 7a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 8a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "base/compiler_specific.h" 9a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "extensions/browser/extensions_browser_client.h" 10a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 11a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)namespace extensions { 12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 13a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// A simplified ExtensionsBrowserClient for a single normal browser context and 14a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// an optional incognito browser context associated with it. A test that uses 15a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// this class should call ExtensionsBrowserClient::Set() with its instance. 16a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class TestExtensionsBrowserClient : public ExtensionsBrowserClient { 17a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) public: 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // |main_context| is required and must not be an incognito context. 1946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) explicit TestExtensionsBrowserClient(content::BrowserContext* main_context); 20a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual ~TestExtensionsBrowserClient(); 21a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) void set_process_manager_delegate(ProcessManagerDelegate* delegate) { 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) process_manager_delegate_ = delegate; 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) void set_extension_system_factory(ExtensionSystemProvider* factory) { 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) extension_system_factory_ = factory; 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 29a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Associates an incognito context with |main_context_|. 30a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void SetIncognitoContext(content::BrowserContext* incognito_context); 31a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 32a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // ExtensionsBrowserClient overrides: 33a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual bool IsShuttingDown() OVERRIDE; 34a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual bool AreExtensionsDisabled(const base::CommandLine& command_line, 35a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::BrowserContext* context) OVERRIDE; 36a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual bool IsValidContext(content::BrowserContext* context) OVERRIDE; 37a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual bool IsSameContext(content::BrowserContext* first, 38a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::BrowserContext* second) OVERRIDE; 39a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual bool HasOffTheRecordContext(content::BrowserContext* context) 40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) OVERRIDE; 41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual content::BrowserContext* GetOffTheRecordContext( 42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::BrowserContext* context) OVERRIDE; 43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual content::BrowserContext* GetOriginalContext( 44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::BrowserContext* context) OVERRIDE; 45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual bool IsGuestSession(content::BrowserContext* context) const OVERRIDE; 46a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual bool IsExtensionIncognitoEnabled( 47a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const std::string& extension_id, 48a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::BrowserContext* context) const OVERRIDE; 49a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual bool CanExtensionCrossIncognito( 50a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const extensions::Extension* extension, 51a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::BrowserContext* context) const OVERRIDE; 52a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch virtual net::URLRequestJob* MaybeCreateResourceBundleRequestJob( 53a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch net::URLRequest* request, 54a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch net::NetworkDelegate* network_delegate, 55a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch const base::FilePath& directory_path, 56a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch const std::string& content_security_policy, 57a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch bool send_cors_header) OVERRIDE; 58a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch virtual bool AllowCrossRendererResourceLoad(net::URLRequest* request, 59a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch bool is_incognito, 60a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch const Extension* extension, 61a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch InfoMap* extension_info_map) 62a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch OVERRIDE; 63a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual PrefService* GetPrefServiceForContext( 64a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::BrowserContext* context) OVERRIDE; 65e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch virtual void GetEarlyExtensionPrefsObservers( 66e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch content::BrowserContext* context, 67e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch std::vector<ExtensionPrefsObserver*>* observers) const OVERRIDE; 685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual ProcessManagerDelegate* GetProcessManagerDelegate() const OVERRIDE; 6923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) virtual scoped_ptr<ExtensionHostDelegate> CreateExtensionHostDelegate() 70a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) OVERRIDE; 71a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual bool DidVersionUpdate(content::BrowserContext* context) OVERRIDE; 725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void PermitExternalProtocolHandler() OVERRIDE; 73a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual scoped_ptr<AppSorting> CreateAppSorting() OVERRIDE; 74a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual bool IsRunningInForcedAppMode() OVERRIDE; 75a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual ApiActivityMonitor* GetApiActivityMonitor( 76a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::BrowserContext* context) OVERRIDE; 77a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual ExtensionSystemProvider* GetExtensionSystemFactory() OVERRIDE; 78a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual void RegisterExtensionFunctions( 79a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ExtensionFunctionRegistry* registry) const OVERRIDE; 80010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual scoped_ptr<RuntimeAPIDelegate> CreateRuntimeAPIDelegate( 81010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) content::BrowserContext* context) const OVERRIDE; 826d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) virtual ComponentExtensionResourceManager* 836d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) GetComponentExtensionResourceManager() OVERRIDE; 841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void BroadcastEventToRenderers( 851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string& event_name, 861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<base::ListValue> args) OVERRIDE; 875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual net::NetLog* GetNetLog() OVERRIDE; 88a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 89a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) private: 90a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::BrowserContext* main_context_; // Not owned. 91a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::BrowserContext* incognito_context_; // Not owned, defaults to NULL. 92a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Not owned, defaults to NULL. 945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ProcessManagerDelegate* process_manager_delegate_; 955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Not owned, defaults to NULL. 975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ExtensionSystemProvider* extension_system_factory_; 985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 99a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(TestExtensionsBrowserClient); 100a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}; 101a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 102a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} // namespace extensions 103a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 104a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif // EXTENSIONS_BROWSER_TEST_EXTENSIONS_BROWSER_CLIENT_H_ 105