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