aw_main_delegate.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef ANDROID_WEBVIEW_LIB_MAIN_AW_MAIN_DELEGATE_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ANDROID_WEBVIEW_LIB_MAIN_AW_MAIN_DELEGATE_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "android_webview/browser/jni_dependency_factory.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "android_webview/common/aw_content_client.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/app/content_main_delegate.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BrowserMainRunner;
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace android_webview {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class AwContentBrowserClient;
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class AwContentRendererClient;
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Android WebView implementation of ContentMainDelegate.
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class AwMainDelegate : public content::ContentMainDelegate,
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                       public JniDependencyFactory {
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AwMainDelegate();
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~AwMainDelegate();
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // content::ContentMainDelegate implementation:
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool BasicStartupComplete(int* exit_code) OVERRIDE;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void PreSandboxStartup() OVERRIDE;
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SandboxInitialized(const std::string& process_type) OVERRIDE;
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int RunProcess(
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::string& process_type,
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const content::MainFunctionParams& main_function_params) OVERRIDE;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ProcessExiting(const std::string& process_type) OVERRIDE;
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual content::ContentBrowserClient* CreateContentBrowserClient() OVERRIDE;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual content::ContentRendererClient*
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      CreateContentRendererClient() OVERRIDE;
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // JniDependencyFactory implementation.
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual AwQuotaManagerBridge* CreateAwQuotaManagerBridge(
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      AwBrowserContext* browser_context) OVERRIDE;
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual content::GeolocationPermissionContext* CreateGeolocationPermission(
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      AwBrowserContext* browser_context) OVERRIDE;
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual content::WebContentsViewDelegate* CreateViewDelegate(
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      content::WebContents* web_contents) OVERRIDE;
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<content::BrowserMainRunner> browser_runner_;
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  AwContentClient content_client_;
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<AwContentBrowserClient> content_browser_client_;
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<AwContentRendererClient> content_renderer_client_;
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(AwMainDelegate);
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace android_webview
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // ANDROID_WEBVIEW_LIB_MAIN_AW_MAIN_DELEGATE_H_
61