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_LIB_MAIN_AW_MAIN_DELEGATE_H_
6 #define ANDROID_WEBVIEW_LIB_MAIN_AW_MAIN_DELEGATE_H_
8 #include "android_webview/browser/jni_dependency_factory.h"
9 #include "android_webview/common/aw_content_client.h"
10 #include "base/memory/ref_counted.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "content/public/app/content_main_delegate.h"
15 class BrowserMainRunner
;
16 class ExternalVideoSurfaceContainel
;
19 namespace android_webview
{
21 class AwContentBrowserClient
;
22 class AwContentRendererClient
;
24 // Android WebView implementation of ContentMainDelegate.
25 class AwMainDelegate
: public content::ContentMainDelegate
,
26 public JniDependencyFactory
{
29 virtual ~AwMainDelegate();
32 // content::ContentMainDelegate implementation:
33 virtual bool BasicStartupComplete(int* exit_code
) override
;
34 virtual void PreSandboxStartup() override
;
35 virtual void SandboxInitialized(const std::string
& process_type
) override
;
36 virtual int RunProcess(
37 const std::string
& process_type
,
38 const content::MainFunctionParams
& main_function_params
) override
;
39 virtual void ProcessExiting(const std::string
& process_type
) override
;
40 virtual content::ContentBrowserClient
* CreateContentBrowserClient() override
;
41 virtual content::ContentRendererClient
*
42 CreateContentRendererClient() override
;
44 // JniDependencyFactory implementation.
45 virtual scoped_refptr
<AwQuotaManagerBridge
> CreateAwQuotaManagerBridge(
46 AwBrowserContext
* browser_context
) override
;
47 virtual content::WebContentsViewDelegate
* CreateViewDelegate(
48 content::WebContents
* web_contents
) override
;
49 virtual AwWebPreferencesPopulater
* CreateWebPreferencesPopulater() override
;
50 #if defined(VIDEO_HOLE)
51 virtual content::ExternalVideoSurfaceContainer
*
52 CreateExternalVideoSurfaceContainer(
53 content::WebContents
* web_contents
) override
;
56 scoped_ptr
<content::BrowserMainRunner
> browser_runner_
;
57 AwContentClient content_client_
;
58 scoped_ptr
<AwContentBrowserClient
> content_browser_client_
;
59 scoped_ptr
<AwContentRendererClient
> content_renderer_client_
;
61 DISALLOW_COPY_AND_ASSIGN(AwMainDelegate
);
64 } // namespace android_webview
66 #endif // ANDROID_WEBVIEW_LIB_MAIN_AW_MAIN_DELEGATE_H_