12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef ANDROID_WEBVIEW_BROWSER_AW_CONTENTS_CLIENT_BRIDGE_BASE_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define ANDROID_WEBVIEW_BROWSER_AW_CONTENTS_CLIENT_BRIDGE_BASE_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/callback_forward.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/supports_user_data.h" 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "content/public/browser/javascript_dialog_manager.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class GURL; 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace content { 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class WebContents; 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace net { 190529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass SSLCertRequestInfo; 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class X509Certificate; 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace android_webview { 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// browser/ layer interface for AwContensClientBridge, as DEPS prevents this 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// layer from depending on native/ where the implementation lives. The 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// implementor of the base class plumbs the request to the Java side and 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// eventually to the webviewclient. This layering hides the details of 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// native/ from browser/ layer. 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class AwContentsClientBridgeBase { 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 320529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch typedef base::Callback<void(net::X509Certificate*)> SelectCertificateCallback; 330529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Adds the handler to the UserData registry. 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static void Associate(content::WebContents* web_contents, 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AwContentsClientBridgeBase* handler); 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci static void Disassociate(content::WebContents* web_contents); 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static AwContentsClientBridgeBase* FromWebContents( 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::WebContents* web_contents); 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static AwContentsClientBridgeBase* FromID(int render_process_id, 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int render_frame_id); 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~AwContentsClientBridgeBase(); 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void AllowCertificateError(int cert_error, 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) net::X509Certificate* cert, 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GURL& request_url, 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::Callback<void(bool)>& callback, 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool* cancel_request) = 0; 500529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch virtual void SelectClientCertificate( 510529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch net::SSLCertRequestInfo* cert_request_info, 520529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch const SelectCertificateCallback& callback) = 0; 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void RunJavaScriptDialog( 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) content::JavaScriptMessageType message_type, 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const GURL& origin_url, 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16& message_text, 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16& default_prompt_text, 59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const content::JavaScriptDialogManager::DialogClosedCallback& callback) 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) = 0; 61a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void RunBeforeUnloadDialog( 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const GURL& origin_url, 645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16& message_text, 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const content::JavaScriptDialogManager::DialogClosedCallback& callback) 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) = 0; 67a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 68a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual bool ShouldOverrideUrlLoading(const base::string16& url) = 0; 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace android_webview 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // ANDROID_WEBVIEW_BROWSER_AW_CONTENTS_CLIENT_BRIDGE_BASE_H_ 74