| Index: content/renderer/render_frame_impl.cc
|
| diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
|
| index 2f79ac027a3144ba9006282e9f8b529ea2d58d43..64b819b6ab7bd3b7229fc723eadaef62cdbed5bd 100644
|
| --- a/content/renderer/render_frame_impl.cc
|
| +++ b/content/renderer/render_frame_impl.cc
|
| @@ -75,6 +75,7 @@
|
| #include "content/public/common/context_menu_params.h"
|
| #include "content/public/common/file_chooser_file_info.h"
|
| #include "content/public/common/file_chooser_params.h"
|
| +#include "content/public/common/form_field_data.h"
|
| #include "content/public/common/isolated_world_ids.h"
|
| #include "content/public/common/page_state.h"
|
| #include "content/public/common/resource_response.h"
|
| @@ -1600,6 +1601,8 @@ bool RenderFrameImpl::OnMessageReceived(const IPC::Message& msg) {
|
| IPC_MESSAGE_HANDLER(FrameMsg_ReloadLoFiImages, OnReloadLoFiImages)
|
| IPC_MESSAGE_HANDLER(FrameMsg_TextSurroundingSelectionRequest,
|
| OnTextSurroundingSelectionRequest)
|
| + IPC_MESSAGE_HANDLER(FrameMsg_FocusedFormFieldDataRequest,
|
| + OnFocusedFormFieldDataRequest)
|
| IPC_MESSAGE_HANDLER(FrameMsg_SetAccessibilityMode,
|
| OnSetAccessibilityMode)
|
| IPC_MESSAGE_HANDLER(AccessibilityMsg_SnapshotTree,
|
| @@ -2325,6 +2328,32 @@ void RenderFrameImpl::OnTextSurroundingSelectionRequest(uint32_t max_length) {
|
| surroundingText.endOffsetInTextContent()));
|
| }
|
|
|
| +void RenderFrameImpl::OnFocusedFormFieldDataRequest(int request_id) {
|
| + DCHECK(frame_);
|
| +
|
| + // In case of early return, the IPC response message is always needed in
|
| + // order to avoid leaks in the browser for unacknowledged requests.
|
| + if (frame_ != render_view_->GetWebView()->focusedFrame() ||
|
| + frame_->document().focusedElement().isNull()) {
|
| + Send(new FrameHostMsg_FocusedFormFieldDataResponse(routing_id_, request_id,
|
| + FormFieldData()));
|
| + return;
|
| + }
|
| +
|
| + WebElement element = frame_->document().focusedElement();
|
| +
|
| + DCHECK(GetRenderWidget()->GetWebWidget());
|
| + blink::WebTextInputInfo info =
|
| + GetRenderWidget()->GetWebWidget()->textInputInfo();
|
| + FormFieldData field;
|
| + field.text = info.value.utf8();
|
| + field.placeholder = element.getAttribute("placeholder").utf8();
|
| + field.text_input_type = GetRenderWidget()->GetTextInputType();
|
| +
|
| + Send(new FrameHostMsg_FocusedFormFieldDataResponse(routing_id_, request_id,
|
| + field));
|
| +}
|
| +
|
| bool RenderFrameImpl::RunJavaScriptMessage(JavaScriptMessageType type,
|
| const base::string16& message,
|
| const base::string16& default_value,
|
|
|