Home | History | Annotate | Download | only in native
      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