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;
16a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass ExternalVideoSurfaceContainel;
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace android_webview {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class AwContentBrowserClient;
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class AwContentRendererClient;
23558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochclass GpuMemoryBufferFactoryImpl;
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Android WebView implementation of ContentMainDelegate.
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class AwMainDelegate : public content::ContentMainDelegate,
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                       public JniDependencyFactory {
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AwMainDelegate();
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~AwMainDelegate();
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // content::ContentMainDelegate implementation:
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool BasicStartupComplete(int* exit_code) OVERRIDE;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void PreSandboxStartup() OVERRIDE;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SandboxInitialized(const std::string& process_type) OVERRIDE;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int RunProcess(
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::string& process_type,
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const content::MainFunctionParams& main_function_params) OVERRIDE;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ProcessExiting(const std::string& process_type) OVERRIDE;
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual content::ContentBrowserClient* CreateContentBrowserClient() OVERRIDE;
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual content::ContentRendererClient*
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      CreateContentRendererClient() OVERRIDE;
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // JniDependencyFactory implementation.
464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  virtual scoped_refptr<AwQuotaManagerBridge> CreateAwQuotaManagerBridge(
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      AwBrowserContext* browser_context) OVERRIDE;
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual content::WebContentsViewDelegate* CreateViewDelegate(
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      content::WebContents* web_contents) OVERRIDE;
504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  virtual AwWebPreferencesPopulater* CreateWebPreferencesPopulater() OVERRIDE;
51a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#if defined(VIDEO_HOLE)
52a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual content::ExternalVideoSurfaceContainer*
53a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      CreateExternalVideoSurfaceContainer(
54a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch          content::WebContents* web_contents) OVERRIDE;
55a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#endif
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<content::BrowserMainRunner> browser_runner_;
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  AwContentClient content_client_;
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<AwContentBrowserClient> content_browser_client_;
602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_ptr<AwContentRendererClient> content_renderer_client_;
61558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  scoped_ptr<GpuMemoryBufferFactoryImpl> gpu_memory_buffer_factory_;
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(AwMainDelegate);
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace android_webview
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // ANDROID_WEBVIEW_LIB_MAIN_AW_MAIN_DELEGATE_H_
69