aw_main_delegate.h revision 4e180b6a0b4720a9b8e9e959a882386f690f08ff
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"
104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "base/memory/ref_counted.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/app/content_main_delegate.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BrowserMainRunner;
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace android_webview {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class AwContentBrowserClient;
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class AwContentRendererClient;
22558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochclass GpuMemoryBufferFactoryImpl;
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Android WebView implementation of ContentMainDelegate.
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class AwMainDelegate : public content::ContentMainDelegate,
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                       public JniDependencyFactory {
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AwMainDelegate();
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~AwMainDelegate();
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // content::ContentMainDelegate implementation:
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool BasicStartupComplete(int* exit_code) OVERRIDE;
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void PreSandboxStartup() OVERRIDE;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SandboxInitialized(const std::string& process_type) OVERRIDE;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int RunProcess(
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::string& process_type,
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const content::MainFunctionParams& main_function_params) OVERRIDE;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ProcessExiting(const std::string& process_type) OVERRIDE;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual content::ContentBrowserClient* CreateContentBrowserClient() OVERRIDE;
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual content::ContentRendererClient*
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      CreateContentRendererClient() OVERRIDE;
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // JniDependencyFactory implementation.
454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  virtual scoped_refptr<AwQuotaManagerBridge> CreateAwQuotaManagerBridge(
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      AwBrowserContext* browser_context) OVERRIDE;
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual content::GeolocationPermissionContext* CreateGeolocationPermission(
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      AwBrowserContext* browser_context) OVERRIDE;
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual content::WebContentsViewDelegate* CreateViewDelegate(
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      content::WebContents* web_contents) OVERRIDE;
514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  virtual AwWebPreferencesPopulater* CreateWebPreferencesPopulater() OVERRIDE;
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<content::BrowserMainRunner> browser_runner_;
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  AwContentClient content_client_;
552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<AwContentBrowserClient> content_browser_client_;
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<AwContentRendererClient> content_renderer_client_;
57558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  scoped_ptr<GpuMemoryBufferFactoryImpl> gpu_memory_buffer_factory_;
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(AwMainDelegate);
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace android_webview
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // ANDROID_WEBVIEW_LIB_MAIN_AW_MAIN_DELEGATE_H_
65