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