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_AW_CONTENT_BROWSER_CLIENT_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ANDROID_WEBVIEW_LIB_AW_CONTENT_BROWSER_CLIENT_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "android_webview/browser/aw_web_preferences_populater.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/basictypes.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/scoped_ptr.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/browser/content_browser_client.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace android_webview { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class AwBrowserContext; 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class JniDependencyFactory; 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AwContentBrowserClient : public content::ContentBrowserClient { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // This is what AwContentBrowserClient::GetAcceptLangs uses. 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) static std::string GetAcceptLangsImpl(); 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 247d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Deprecated: use AwBrowserContext::GetDefault() instead. 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) static AwBrowserContext* GetAwBrowserContext(); 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AwContentBrowserClient(JniDependencyFactory* native_factory); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~AwContentBrowserClient(); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overriden methods from ContentBrowserClient. 3146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual void AddCertificate(net::CertificateMimeType cert_type, 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const void* cert_data, 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) size_t cert_size, 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int render_process_id, 3546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) int render_frame_id) OVERRIDE; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual content::BrowserMainParts* CreateBrowserMainParts( 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const content::MainFunctionParams& parameters) OVERRIDE; 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual content::WebContentsViewDelegate* GetWebContentsViewDelegate( 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::WebContents* web_contents) OVERRIDE; 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void RenderProcessWillLaunch( 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::RenderProcessHost* host) OVERRIDE; 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual net::URLRequestContextGetter* CreateRequestContext( 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::BrowserContext* browser_context, 44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::ProtocolHandlerMap* protocol_handlers, 45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) content::URLRequestInterceptorScopedVector request_interceptors) OVERRIDE; 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual net::URLRequestContextGetter* CreateRequestContextForStoragePartition( 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::BrowserContext* browser_context, 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& partition_path, 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool in_memory, 50a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::ProtocolHandlerMap* protocol_handlers, 51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) content::URLRequestInterceptorScopedVector request_interceptors) OVERRIDE; 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual std::string GetCanonicalEncodingNameByAliasName( 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& alias_name) OVERRIDE; 54a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual void AppendExtraCommandLineSwitches(base::CommandLine* command_line, 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int child_process_id) OVERRIDE; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual std::string GetApplicationLocale() OVERRIDE; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual std::string GetAcceptLangs(content::BrowserContext* context) OVERRIDE; 58f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual const gfx::ImageSkia* GetDefaultFavicon() OVERRIDE; 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool AllowAppCache(const GURL& manifest_url, 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& first_party, 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::ResourceContext* context) OVERRIDE; 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool AllowGetCookie(const GURL& url, 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& first_party, 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const net::CookieList& cookie_list, 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::ResourceContext* context, 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int render_process_id, 675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int render_frame_id) OVERRIDE; 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool AllowSetCookie(const GURL& url, 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& first_party, 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& cookie_line, 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::ResourceContext* context, 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int render_process_id, 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int render_frame_id, 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) net::CookieOptions* options) OVERRIDE; 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool AllowWorkerDatabase( 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& url, 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16& name, 785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16& display_name, 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) unsigned long estimated_size, 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::ResourceContext* context, 815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::vector<std::pair<int, int> >& render_frames) OVERRIDE; 82116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void AllowWorkerFileSystem( 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& url, 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::ResourceContext* context, 85116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const std::vector<std::pair<int, int> >& render_frames, 86116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch base::Callback<void(bool)> callback) OVERRIDE; 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool AllowWorkerIndexedDB( 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& url, 895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16& name, 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::ResourceContext* context, 915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::vector<std::pair<int, int> >& render_frames) OVERRIDE; 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual content::QuotaPermissionContext* 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CreateQuotaPermissionContext() OVERRIDE; 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void AllowCertificateError( 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int render_process_id, 965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int render_frame_id, 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int cert_error, 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const net::SSLInfo& ssl_info, 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& request_url, 1005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) content::ResourceType resource_type, 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool overridable, 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool strict_enforcement, 1036e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) bool expired_previous_decision, 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Callback<void(bool)>& callback, 10590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) content::CertificateRequestResultType* result) OVERRIDE; 1061e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) virtual void SelectClientCertificate( 1071e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) int render_process_id, 1085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int render_frame_id, 1091e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) const net::HttpNetworkSession* network_session, 1101e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) net::SSLCertRequestInfo* cert_request_info, 1111e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) const base::Callback<void(net::X509Certificate*)>& callback) OVERRIDE; 1125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual blink::WebNotificationPermission 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CheckDesktopNotificationPermission( 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& source_url, 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::ResourceContext* context, 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int render_process_id) OVERRIDE; 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ShowDesktopNotification( 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const content::ShowDesktopNotificationHostMsgParams& params, 1190529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch content::RenderFrameHost* render_frame_host, 1205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<content::DesktopNotificationDelegate> delegate, 1210529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch base::Closure* cancel_callback) OVERRIDE; 122f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void RequestGeolocationPermission( 123f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) content::WebContents* web_contents, 124f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) int bridge_id, 125f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const GURL& requesting_frame, 126f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) bool user_gesture, 127f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) base::Callback<void(bool)> result_callback, 128f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) base::Closure* cancel_callback) OVERRIDE; 129f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void RequestMidiSysExPermission( 130f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) content::WebContents* web_contents, 131f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) int bridge_id, 132f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const GURL& requesting_frame, 133f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) bool user_gesture, 134f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) base::Callback<void(bool)> result_callback, 135f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) base::Closure* cancel_callback) OVERRIDE; 136f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void RequestProtectedMediaIdentifierPermission( 137f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) content::WebContents* web_contents, 138f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const GURL& origin, 139f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) base::Callback<void(bool)> result_callback, 140f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) base::Closure* cancel_callback) OVERRIDE; 141558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch virtual bool CanCreateWindow(const GURL& opener_url, 14258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const GURL& opener_top_level_frame_url, 143558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch const GURL& source_origin, 144558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch WindowContainerType container_type, 145558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch const GURL& target_url, 146558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch const content::Referrer& referrer, 147558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch WindowOpenDisposition disposition, 148f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const blink::WebWindowFeatures& features, 149558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch bool user_gesture, 150558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch bool opener_suppressed, 151558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch content::ResourceContext* context, 152558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch int render_process_id, 153558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch int opener_id, 154558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch bool* no_javascript_access) OVERRIDE; 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ResourceDispatcherHostCreated() OVERRIDE; 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual net::NetLog* GetNetLog() OVERRIDE; 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual content::AccessTokenStore* CreateAccessTokenStore() OVERRIDE; 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsFastShutdownPossible() OVERRIDE; 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ClearCache(content::RenderViewHost* rvh) OVERRIDE; 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ClearCookies(content::RenderViewHost* rvh) OVERRIDE; 1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual base::FilePath GetDefaultDownloadDirectory() OVERRIDE; 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual std::string GetDefaultDownloadName() OVERRIDE; 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DidCreatePpapiPlugin( 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::BrowserPpapiHost* browser_host) OVERRIDE; 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool AllowPepperSocketAPI( 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::BrowserContext* browser_context, 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& url, 1687d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) bool private_api, 16968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) const content::SocketPermissionRequest* params) OVERRIDE; 1704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual void OverrideWebkitPrefs(content::RenderViewHost* rvh, 1714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) const GURL& url, 172116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch content::WebPreferences* web_prefs) OVERRIDE; 173a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#if defined(VIDEO_HOLE) 174a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch virtual content::ExternalVideoSurfaceContainer* 175a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch OverrideCreateExternalVideoSurfaceContainer( 176a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch content::WebContents* web_contents) OVERRIDE; 177a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#endif 1781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual content::DevToolsManagerDelegate* 1791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetDevToolsManagerDelegate() OVERRIDE; 1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Android WebView currently has a single global (non-off-the-record) browser 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // context. 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<AwBrowserContext> browser_context_; 1854e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) scoped_ptr<AwWebPreferencesPopulater> preferences_populater_; 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) JniDependencyFactory* native_factory_; 1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(AwContentBrowserClient); 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace android_webview 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // ANDROID_WEBVIEW_LIB_AW_CONTENT_BROWSER_CLIENT_H_ 195