• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
4 
5 #ifndef ANDROID_WEBVIEW_AW_BROWSER_DELEGATE_H_
6 #define ANDROID_WEBVIEW_AW_BROWSER_DELEGATE_H_
7 
8 #include "base/basictypes.h"
9 
10 namespace content {
11 class BrowserContext;
12 class JavaScriptDialogManager;
13 class WebContents;
14 }
15 
16 namespace android_webview {
17 
18 class AwContentsContainer;
19 
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 {
29  public:
30   virtual ~AwBrowserDependencyFactory();
31 
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);
35 
36   // Returns the singleton instance. |SetInstance| must have been called.
37   static AwBrowserDependencyFactory* GetInstance();
38 
39   // Returns the current browser context based on the specified mode.
40   virtual content::BrowserContext* GetBrowserContext() = 0;
41 
42   // Constructs and returns ownership of a WebContents instance.
43   virtual content::WebContents* CreateWebContents() = 0;
44 
45  protected:
46   AwBrowserDependencyFactory();
47 
48  private:
49   DISALLOW_COPY_AND_ASSIGN(AwBrowserDependencyFactory);
50 };
51 
52 }  // namespace android_webview
53 
54 #endif  // ANDROID_WEBVIEW_AW_BROWSER_DELEGATE_H_
55