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
3 // found in the LICENSE file.
5 #ifndef ANDROID_WEBVIEW_AW_BROWSER_DELEGATE_H_
6 #define ANDROID_WEBVIEW_AW_BROWSER_DELEGATE_H_
8 #include "base/basictypes.h"
12 class JavaScriptDialogManager
;
16 namespace android_webview
{
18 class AwContentsContainer
;
20 // The concrete class implementing this interface is the responsible for
21 // creating he browser component objects that the Android WebView depends on.
22 // The motivation for this abstraction is to keep code under
23 // android_webview/native from holding direct chrome/ layer dependencies.
24 // Note this is a distinct role to the Webview embedder proper: this class is
25 // about 'static' environmental decoupling, allowing dependency injection by the
26 // top-level lib, whereas runtime behavior is controlled by propagated back to
27 // the embedding application code via WebContentsDelegate and the like.
28 class AwBrowserDependencyFactory
{
30 virtual ~AwBrowserDependencyFactory();
32 // Allows the lib executive to inject the delegate instance. Ownership of
33 // |delegate| is NOT transferred, but the object must be long-lived.
34 static void SetInstance(AwBrowserDependencyFactory
* delegate
);
36 // Returns the singleton instance. |SetInstance| must have been called.
37 static AwBrowserDependencyFactory
* GetInstance();
39 // Returns the current browser context based on the specified mode.
40 virtual content::BrowserContext
* GetBrowserContext() = 0;
42 // Constructs and returns ownership of a WebContents instance.
43 virtual content::WebContents
* CreateWebContents() = 0;
46 AwBrowserDependencyFactory();
49 DISALLOW_COPY_AND_ASSIGN(AwBrowserDependencyFactory
);
52 } // namespace android_webview
54 #endif // ANDROID_WEBVIEW_AW_BROWSER_DELEGATE_H_