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) 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "android_webview/browser/aw_javascript_dialog_manager.h" 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "android_webview/browser/aw_contents_client_bridge_base.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/browser/javascript_dialog_manager.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_contents.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace android_webview { 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)AwJavaScriptDialogManager::AwJavaScriptDialogManager() {} 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)AwJavaScriptDialogManager::~AwJavaScriptDialogManager() {} 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void AwJavaScriptDialogManager::RunJavaScriptDialog( 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::WebContents* web_contents, 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& origin_url, 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& accept_lang, 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::JavaScriptMessageType message_type, 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16& message_text, 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16& default_prompt_text, 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const DialogClosedCallback& callback, 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool* did_suppress_message) { 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AwContentsClientBridgeBase* bridge = 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AwContentsClientBridgeBase::FromWebContents(web_contents); 28101e658ed8b57cb6fc90aa36ea2df1ea7aa9391eBen Murdoch if (!bridge) { 29101e658ed8b57cb6fc90aa36ea2df1ea7aa9391eBen Murdoch callback.Run(false, base::string16()); 30101e658ed8b57cb6fc90aa36ea2df1ea7aa9391eBen Murdoch return; 31101e658ed8b57cb6fc90aa36ea2df1ea7aa9391eBen Murdoch } 32101e658ed8b57cb6fc90aa36ea2df1ea7aa9391eBen Murdoch 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bridge->RunJavaScriptDialog(message_type, 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) origin_url, 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) message_text, 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) default_prompt_text, 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) callback); 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void AwJavaScriptDialogManager::RunBeforeUnloadDialog( 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::WebContents* web_contents, 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16& message_text, 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_reload, 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const DialogClosedCallback& callback) { 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AwContentsClientBridgeBase* bridge = 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AwContentsClientBridgeBase::FromWebContents(web_contents); 47101e658ed8b57cb6fc90aa36ea2df1ea7aa9391eBen Murdoch if (!bridge) { 48101e658ed8b57cb6fc90aa36ea2df1ea7aa9391eBen Murdoch callback.Run(false, base::string16()); 49101e658ed8b57cb6fc90aa36ea2df1ea7aa9391eBen Murdoch return; 50101e658ed8b57cb6fc90aa36ea2df1ea7aa9391eBen Murdoch } 51101e658ed8b57cb6fc90aa36ea2df1ea7aa9391eBen Murdoch 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bridge->RunBeforeUnloadDialog(web_contents->GetURL(), 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) message_text, 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) callback); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 57a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)void AwJavaScriptDialogManager::CancelActiveAndPendingDialogs( 58a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) content::WebContents* web_contents) { 59a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)} 60a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 61a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)void AwJavaScriptDialogManager::WebContentsDestroyed( 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::WebContents* web_contents) { 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace android_webview 66