| Index: content/shell/shell_javascript_dialog_creator.cc
|
| diff --git a/content/shell/shell_javascript_dialog_creator.cc b/content/shell/shell_javascript_dialog_creator.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d6b100c2b59c80255114a4f07ae7d7f1ff01037a
|
| --- /dev/null
|
| +++ b/content/shell/shell_javascript_dialog_creator.cc
|
| @@ -0,0 +1,103 @@
|
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "content/shell/shell_javascript_dialog_creator.h"
|
| +
|
| +#include "base/logging.h"
|
| +#include "base/utf_string_conversions.h"
|
| +#include "content/shell/shell_javascript_dialog.h"
|
| +#include "net/base/net_util.h"
|
| +
|
| +namespace content {
|
| +
|
| +ShellJavaScriptDialogCreator::ShellJavaScriptDialogCreator() {
|
| +}
|
| +
|
| +ShellJavaScriptDialogCreator::~ShellJavaScriptDialogCreator() {
|
| +}
|
| +
|
| +void ShellJavaScriptDialogCreator::RunJavaScriptDialog(
|
| + WebContents* web_contents,
|
| + const GURL& origin_url,
|
| + const std::string& accept_lang,
|
| + ui::JavascriptMessageType javascript_message_type,
|
| + const string16& message_text,
|
| + const string16& default_prompt_text,
|
| + const DialogClosedCallback& callback,
|
| + bool* did_suppress_message) {
|
| +#if defined(OS_MACOSX)
|
| + *did_suppress_message = false;
|
| +
|
| + if (dialog_.get()) {
|
| + // One dialog at a time, please.
|
| + *did_suppress_message = true;
|
| + return;
|
| + }
|
| +
|
| + string16 new_message_text = net::FormatUrl(origin_url, accept_lang) +
|
| + ASCIIToUTF16("\n\n") +
|
| + message_text;
|
| +
|
| + dialog_.reset(new ShellJavaScriptDialog(this,
|
| + javascript_message_type,
|
| + new_message_text,
|
| + default_prompt_text,
|
| + callback));
|
| +#else
|
| + // TODO: implement ShellJavaScriptDialog for other platforms, drop this #if
|
| + *did_suppress_message = true;
|
| + return;
|
| +#endif
|
| +}
|
| +
|
| +void ShellJavaScriptDialogCreator::RunBeforeUnloadDialog(
|
| + WebContents* web_contents,
|
| + const string16& message_text,
|
| + bool is_reload,
|
| + const DialogClosedCallback& callback) {
|
| +#if defined(OS_MACOSX)
|
| + if (dialog_.get()) {
|
| + // Seriously!?
|
| + callback.Run(true, string16());
|
| + return;
|
| + }
|
| +
|
| + string16 new_message_text =
|
| + message_text +
|
| + ASCIIToUTF16("\n\nIs it OK to leave/reload this page?");
|
| +
|
| + dialog_.reset(new ShellJavaScriptDialog(this,
|
| + ui::JAVASCRIPT_MESSAGE_TYPE_CONFIRM,
|
| + new_message_text,
|
| + string16(), // default_prompt_text
|
| + callback));
|
| +#else
|
| + // TODO: implement ShellJavaScriptDialog for other platforms, drop this #if
|
| + callback.Run(true, string16());
|
| + return;
|
| +#endif
|
| +}
|
| +
|
| +void ShellJavaScriptDialogCreator::ResetJavaScriptState(
|
| + WebContents* web_contents) {
|
| +#if defined(OS_MACOSX)
|
| + if (dialog_.get()) {
|
| + dialog_->Cancel();
|
| + dialog_.reset();
|
| + }
|
| +#else
|
| + // TODO: implement ShellJavaScriptDialog for other platforms, drop this #if
|
| +#endif
|
| +}
|
| +
|
| +void ShellJavaScriptDialogCreator::DialogClosed(ShellJavaScriptDialog* dialog) {
|
| +#if defined(OS_MACOSX)
|
| + DCHECK_EQ(dialog, dialog_.get());
|
| + dialog_.reset();
|
| +#else
|
| + // TODO: implement ShellJavaScriptDialog for other platforms, drop this #if
|
| +#endif
|
| +}
|
| +
|
| +} // namespace content
|
|
|