| Index: content/renderer/render_frame_impl.cc
|
| diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
|
| index 357ddbf4277a09fba084fb21b590eb0dde412b75..a0ddeefe0146ad12c26c9d4c62fc3b2fd60a84c4 100644
|
| --- a/content/renderer/render_frame_impl.cc
|
| +++ b/content/renderer/render_frame_impl.cc
|
| @@ -1091,6 +1091,28 @@ bool RenderFrameImpl::ShouldUpdateSelectionTextFromContextMenuParams(
|
| return trimmed_params_text != trimmed_selection_text;
|
| }
|
|
|
| +bool RenderFrameImpl::RunJavaScriptMessage(JavaScriptMessageType type,
|
| + const base::string16& message,
|
| + const base::string16& default_value,
|
| + const GURL& frame_url,
|
| + base::string16* result) {
|
| + // Don't allow further dialogs if we are waiting to swap out, since the
|
| + // PageGroupLoadDeferrer in our stack prevents it.
|
| + if (render_view()->suppress_dialogs_until_swap_out_)
|
| + return false;
|
| +
|
| + bool success = false;
|
| + base::string16 result_temp;
|
| + if (!result)
|
| + result = &result_temp;
|
| +
|
| + render_view()->SendAndRunNestedMessageLoop(
|
| + new FrameHostMsg_RunJavaScriptMessage(
|
| + routing_id_, message, default_value, frame_url, type, &success,
|
| + result));
|
| + return success;
|
| +}
|
| +
|
| void RenderFrameImpl::DidCommitCompositorFrame() {
|
| if (compositing_helper_)
|
| compositing_helper_->DidCommitCompositorFrame();
|
| @@ -2016,6 +2038,62 @@ void RenderFrameImpl::didChangeSelection(bool is_empty_selection) {
|
| #endif
|
| }
|
|
|
| +void RenderFrameImpl::runModalAlertDialog(const blink::WebString& message) {
|
| + RunJavaScriptMessage(JAVASCRIPT_MESSAGE_TYPE_ALERT,
|
| + message,
|
| + base::string16(),
|
| + frame_->document().url(),
|
| + NULL);
|
| +}
|
| +
|
| +bool RenderFrameImpl::runModalConfirmDialog(const blink::WebString& message) {
|
| + return RunJavaScriptMessage(JAVASCRIPT_MESSAGE_TYPE_CONFIRM,
|
| + message,
|
| + base::string16(),
|
| + frame_->document().url(),
|
| + NULL);
|
| +}
|
| +
|
| +bool RenderFrameImpl::runModalPromptDialog(
|
| + const blink::WebString& message,
|
| + const blink::WebString& default_value,
|
| + blink::WebString* actual_value) {
|
| + base::string16 result;
|
| + bool ok = RunJavaScriptMessage(JAVASCRIPT_MESSAGE_TYPE_PROMPT,
|
| + message,
|
| + default_value,
|
| + frame_->document().url(),
|
| + &result);
|
| + if (ok)
|
| + actual_value->assign(result);
|
| + return ok;
|
| +}
|
| +
|
| +bool RenderFrameImpl::runModalBeforeUnloadDialog(
|
| + bool is_reload,
|
| + const blink::WebString& message) {
|
| + // If we are swapping out, we have already run the beforeunload handler.
|
| + // TODO(creis): Fix OnSwapOut to clear the frame without running beforeunload
|
| + // at all, to avoid running it twice.
|
| + if (render_view()->is_swapped_out_)
|
| + return true;
|
| +
|
| + // Don't allow further dialogs if we are waiting to swap out, since the
|
| + // PageGroupLoadDeferrer in our stack prevents it.
|
| + if (render_view()->suppress_dialogs_until_swap_out_)
|
| + return false;
|
| +
|
| + bool success = false;
|
| + // This is an ignored return value, but is included so we can accept the same
|
| + // response as RunJavaScriptMessage.
|
| + base::string16 ignored_result;
|
| + render_view()->SendAndRunNestedMessageLoop(
|
| + new FrameHostMsg_RunBeforeUnloadConfirm(
|
| + routing_id_, frame_->document().url(), message, is_reload,
|
| + &success, &ignored_result));
|
| + return success;
|
| +}
|
| +
|
| void RenderFrameImpl::showContextMenu(const blink::WebContextMenuData& data) {
|
| ContextMenuParams params = ContextMenuParamsBuilder::Build(data);
|
| params.source_type = GetRenderWidget()->context_menu_source_type();
|
|
|