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 ~AwMainDelegate() override
;
32 // content::ContentMainDelegate implementation:
33 bool BasicStartupComplete(int* exit_code
) override
;
34 void PreSandboxStartup() override
;
35 void SandboxInitialized(const std::string
& process_type
) override
;
37 const std::string
& process_type
,
38 const content::MainFunctionParams
& main_function_params
) override
;
39 void ProcessExiting(const std::string
& process_type
) override
;
40 content::ContentBrowserClient
* CreateContentBrowserClient() override
;
41 content::ContentRendererClient
* CreateContentRendererClient() override
;
43 // JniDependencyFactory implementation.
44 scoped_refptr
<AwQuotaManagerBridge
> CreateAwQuotaManagerBridge(
45 AwBrowserContext
* browser_context
) override
;
46 content::WebContentsViewDelegate
* CreateViewDelegate(
47 content::WebContents
* web_contents
) override
;
48 AwWebPreferencesPopulater
* CreateWebPreferencesPopulater() override
;
49 AwMessagePortService
* CreateAwMessagePortService() override
;
50 AwLocaleManager
* CreateAwLocaleManager() override
;
51 #if defined(VIDEO_HOLE)
52 content::ExternalVideoSurfaceContainer
* 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_