Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(53)

Side by Side Diff: content/renderer/render_frame_impl.cc

Issue 1959183002: Multi-Process Find-in-Page. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased and made WebLocalFrame::isFocused() private. Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/render_frame_impl.h" 5 #include "content/renderer/render_frame_impl.h"
6 6
7 #include <map> 7 #include <map>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 1440 matching lines...) Expand 10 before | Expand all | Expand 10 after
1451 IPC_MESSAGE_HANDLER(FrameMsg_SetTextTrackSettings, 1451 IPC_MESSAGE_HANDLER(FrameMsg_SetTextTrackSettings,
1452 OnTextTrackSettingsChanged) 1452 OnTextTrackSettingsChanged)
1453 IPC_MESSAGE_HANDLER(FrameMsg_PostMessageEvent, OnPostMessageEvent) 1453 IPC_MESSAGE_HANDLER(FrameMsg_PostMessageEvent, OnPostMessageEvent)
1454 IPC_MESSAGE_HANDLER(FrameMsg_FailedNavigation, OnFailedNavigation) 1454 IPC_MESSAGE_HANDLER(FrameMsg_FailedNavigation, OnFailedNavigation)
1455 IPC_MESSAGE_HANDLER(FrameMsg_GetSavableResourceLinks, 1455 IPC_MESSAGE_HANDLER(FrameMsg_GetSavableResourceLinks,
1456 OnGetSavableResourceLinks) 1456 OnGetSavableResourceLinks)
1457 IPC_MESSAGE_HANDLER(FrameMsg_GetSerializedHtmlWithLocalLinks, 1457 IPC_MESSAGE_HANDLER(FrameMsg_GetSerializedHtmlWithLocalLinks,
1458 OnGetSerializedHtmlWithLocalLinks) 1458 OnGetSerializedHtmlWithLocalLinks)
1459 IPC_MESSAGE_HANDLER(FrameMsg_SerializeAsMHTML, OnSerializeAsMHTML) 1459 IPC_MESSAGE_HANDLER(FrameMsg_SerializeAsMHTML, OnSerializeAsMHTML)
1460 IPC_MESSAGE_HANDLER(FrameMsg_Find, OnFind) 1460 IPC_MESSAGE_HANDLER(FrameMsg_Find, OnFind)
1461 IPC_MESSAGE_HANDLER(FrameMsg_ClearActiveFindMatch, OnClearActiveFindMatch)
1461 IPC_MESSAGE_HANDLER(FrameMsg_StopFinding, OnStopFinding) 1462 IPC_MESSAGE_HANDLER(FrameMsg_StopFinding, OnStopFinding)
1462 IPC_MESSAGE_HANDLER(FrameMsg_EnableViewSourceMode, OnEnableViewSourceMode) 1463 IPC_MESSAGE_HANDLER(FrameMsg_EnableViewSourceMode, OnEnableViewSourceMode)
1463 IPC_MESSAGE_HANDLER(FrameMsg_SuppressFurtherDialogs, 1464 IPC_MESSAGE_HANDLER(FrameMsg_SuppressFurtherDialogs,
1464 OnSuppressFurtherDialogs) 1465 OnSuppressFurtherDialogs)
1465 #if defined(OS_ANDROID) 1466 #if defined(OS_ANDROID)
1466 IPC_MESSAGE_HANDLER(InputMsg_ActivateNearestFindResult, 1467 IPC_MESSAGE_HANDLER(FrameMsg_ActivateNearestFindResult,
1467 OnActivateNearestFindResult) 1468 OnActivateNearestFindResult)
1469 IPC_MESSAGE_HANDLER(FrameMsg_GetNearestFindResult,
1470 OnGetNearestFindResult)
1468 IPC_MESSAGE_HANDLER(FrameMsg_FindMatchRects, OnFindMatchRects) 1471 IPC_MESSAGE_HANDLER(FrameMsg_FindMatchRects, OnFindMatchRects)
1469 IPC_MESSAGE_HANDLER(FrameMsg_SelectPopupMenuItems, OnSelectPopupMenuItems) 1472 IPC_MESSAGE_HANDLER(FrameMsg_SelectPopupMenuItems, OnSelectPopupMenuItems)
1470 #elif defined(OS_MACOSX) 1473 #elif defined(OS_MACOSX)
1471 IPC_MESSAGE_HANDLER(FrameMsg_SelectPopupMenuItem, OnSelectPopupMenuItem) 1474 IPC_MESSAGE_HANDLER(FrameMsg_SelectPopupMenuItem, OnSelectPopupMenuItem)
1472 IPC_MESSAGE_HANDLER(InputMsg_CopyToFindPboard, OnCopyToFindPboard) 1475 IPC_MESSAGE_HANDLER(InputMsg_CopyToFindPboard, OnCopyToFindPboard)
1473 #endif 1476 #endif
1474 IPC_END_MESSAGE_MAP() 1477 IPC_END_MESSAGE_MAP()
1475 1478
1476 return handled; 1479 return handled;
1477 } 1480 }
(...skipping 2565 matching lines...) Expand 10 before | Expand all | Expand 10 after
4043 DCHECK(!frame_ || frame_ == frame); 4046 DCHECK(!frame_ || frame_ == frame);
4044 if (!frame->parent()) { 4047 if (!frame->parent()) {
4045 render_view_->Send(new ViewHostMsg_WillInsertBody( 4048 render_view_->Send(new ViewHostMsg_WillInsertBody(
4046 render_view_->GetRoutingID())); 4049 render_view_->GetRoutingID()));
4047 } 4050 }
4048 } 4051 }
4049 4052
4050 void RenderFrameImpl::reportFindInPageMatchCount(int request_id, 4053 void RenderFrameImpl::reportFindInPageMatchCount(int request_id,
4051 int count, 4054 int count,
4052 bool final_update) { 4055 bool final_update) {
4053 int active_match_ordinal = -1; // -1 = don't update active match ordinal 4056 // -1 here means don't update the active match ordinal.
4054 if (!count) 4057 int active_match_ordinal = count ? -1 : 0;
4055 active_match_ordinal = 0;
4056 4058
4057 Send(new FrameHostMsg_Find_Reply(routing_id_, request_id, count, gfx::Rect(), 4059 SendFindReply(request_id, count, active_match_ordinal, gfx::Rect(),
4058 active_match_ordinal, final_update)); 4060 final_update);
4059 } 4061 }
4060 4062
4061 void RenderFrameImpl::reportFindInPageSelection( 4063 void RenderFrameImpl::reportFindInPageSelection(
4062 int request_id, 4064 int request_id,
4063 int active_match_ordinal, 4065 int active_match_ordinal,
4064 const blink::WebRect& selection_rect) { 4066 const blink::WebRect& selection_rect) {
4065 Send(new FrameHostMsg_Find_Reply(routing_id_, request_id, -1, selection_rect, 4067 SendFindReply(request_id, -1 /* match_count */, active_match_ordinal,
4066 active_match_ordinal, false)); 4068 selection_rect, false /* final_status_update */);
4067 } 4069 }
4068 4070
4069 void RenderFrameImpl::requestStorageQuota( 4071 void RenderFrameImpl::requestStorageQuota(
4070 blink::WebStorageQuotaType type, 4072 blink::WebStorageQuotaType type,
4071 unsigned long long requested_size, 4073 unsigned long long requested_size,
4072 blink::WebStorageQuotaCallbacks callbacks) { 4074 blink::WebStorageQuotaCallbacks callbacks) {
4073 WebSecurityOrigin origin = frame_->document().getSecurityOrigin(); 4075 WebSecurityOrigin origin = frame_->document().getSecurityOrigin();
4074 if (origin.isUnique()) { 4076 if (origin.isUnique()) {
4075 // Unique origins cannot store persistent state. 4077 // Unique origins cannot store persistent state.
4076 callbacks.didFail(blink::WebStorageQuotaErrorAbort); 4078 callbacks.didFail(blink::WebStorageQuotaErrorAbort);
(...skipping 864 matching lines...) Expand 10 before | Expand all | Expand 10 after
4941 // Cleanup and notify the browser process about completion. 4943 // Cleanup and notify the browser process about completion.
4942 file.Close(); // Need to flush file contents before sending IPC response. 4944 file.Close(); // Need to flush file contents before sending IPC response.
4943 Send(new FrameHostMsg_SerializeAsMHTMLResponse( 4945 Send(new FrameHostMsg_SerializeAsMHTMLResponse(
4944 routing_id_, params.job_id, success, 4946 routing_id_, params.job_id, success,
4945 digests_of_uris_of_serialized_resources)); 4947 digests_of_uris_of_serialized_resources));
4946 } 4948 }
4947 4949
4948 void RenderFrameImpl::OnFind(int request_id, 4950 void RenderFrameImpl::OnFind(int request_id,
4949 const base::string16& search_text, 4951 const base::string16& search_text,
4950 const WebFindOptions& options) { 4952 const WebFindOptions& options) {
4951 // This should only be received on the main frame, since find-in-page is
4952 // currently orchestrated by the main frame.
4953 if (!is_main_frame_) {
4954 NOTREACHED();
4955 return;
4956 }
4957
4958 DCHECK(!search_text.empty()); 4953 DCHECK(!search_text.empty());
4959 4954
4960 blink::WebPlugin* plugin = GetWebPluginForFind(); 4955 blink::WebPlugin* plugin = GetWebPluginForFind();
4961 // Check if the plugin still exists in the document. 4956 // Check if the plugin still exists in the document.
4962 if (plugin) { 4957 if (plugin) {
4963 if (options.findNext) { 4958 if (options.findNext) {
4964 // Just navigate back/forward. 4959 // Just navigate back/forward.
4965 plugin->selectFindResult(options.forward); 4960 plugin->selectFindResult(options.forward);
4966 } else { 4961 } else {
4967 if (!plugin->startFind(search_text, options.matchCase, request_id)) { 4962 if (!plugin->startFind(search_text, options.matchCase, request_id)) {
4968 // Send "no results". 4963 // Send "no results".
4969 SendFindReply(request_id, 0, 0, gfx::Rect(), true); 4964 SendFindReply(request_id, 0 /* match_count */, 0 /* ordinal */,
4965 gfx::Rect(), true /* final_status_update */ );
4970 } 4966 }
4971 } 4967 }
4972 return; 4968 return;
4973 } 4969 }
4974 4970
4975 WebLocalFrame* main_frame = GetWebFrame(); 4971 // Send "no results" if this frame has no visible content.
4976 WebLocalFrame* focused_frame = 4972 if (!frame_->hasVisibleContent()) {
4977 render_view_->webview()->focusedFrame()->toWebLocalFrame(); 4973 SendFindReply(request_id, 0 /* match_count */, 0 /* ordinal */,
4978 // Start searching in the focused frame. 4974 gfx::Rect(), true /* final_status_update */ );
4979 WebLocalFrame* search_frame = focused_frame; 4975 return;
4980 4976 }
4981 // Check for multiple searchable frames.
4982 bool multi_frame = (main_frame->traverseNextLocal(true) != main_frame);
4983
4984 // If we have multiple frames, we don't want to wrap the search within the
4985 // frame, so we check here if we only have |main_frame| in the chain.
4986 bool wrap_within_frame = !multi_frame;
4987 4977
4988 WebRect selection_rect; 4978 WebRect selection_rect;
4989 bool result = false;
4990 bool active_now = false; 4979 bool active_now = false;
4991 4980
4992 // If something is selected when we start searching it means we cannot just 4981 // If something is selected when we start searching it means we cannot just
4993 // increment the current match ordinal; we need to re-generate it. 4982 // increment the current match ordinal; we need to re-generate it.
4994 WebRange current_selection = focused_frame->selectionRange(); 4983 WebRange current_selection = frame_->selectionRange();
4995 4984
4996 do { 4985 if (frame_->find(request_id, search_text, options,
4997 result = 4986 false /* wrapWithinFrame */, &selection_rect, &active_now)) {
4998 search_frame->find(request_id, search_text, options, wrap_within_frame, 4987 // Indicate that at least one match has been found. 1 here means possibly
4999 &selection_rect, &active_now); 4988 // more matches could be coming. -1 here means that the exact active match
5000 4989 // ordinal is not yet known.
5001 if (!result) { 4990 SendFindReply(request_id, 1 /* match_count */, -1 /* ordinal */,
5002 // Don't leave text selected as you move to the next frame. 4991 gfx::Rect(), false /* final_status_update */ );
5003 search_frame->executeCommand(WebString::fromUTF8("Unselect")); 4992 }
5004
5005 // Find the next frame, but skip the invisible ones.
5006 do {
5007 // What is the next frame to search (we might be going backwards)? Note
5008 // that we specify wrap=true so that search_frame never becomes NULL.
5009 search_frame = options.forward
5010 ? search_frame->traverseNextLocal(true)
5011 : search_frame->traversePreviousLocal(true);
5012 } while (!search_frame->hasVisibleContent() &&
5013 search_frame != focused_frame);
5014
5015 // Make sure selection doesn't affect the search operation in new frame.
5016 search_frame->executeCommand(WebString::fromUTF8("Unselect"));
5017
5018 // If we have multiple frames and we have wrapped back around to the
5019 // focused frame, we need to search it once more allowing wrap within
5020 // the frame, otherwise it will report 'no match' if the focused frame has
5021 // reported matches, but no frames after the focused_frame contain a
5022 // match for the search word(s).
5023 if (multi_frame && search_frame == focused_frame) {
5024 result = search_frame->find(request_id, search_text, options,
5025 true, // Force wrapping.
5026 &selection_rect, &active_now);
5027 }
5028 }
5029
5030 render_view_->webview()->setFocusedFrame(search_frame);
5031 } while (!result && search_frame != focused_frame);
5032 4993
5033 if (options.findNext && current_selection.isNull() && active_now) { 4994 if (options.findNext && current_selection.isNull() && active_now) {
5034 // Force the main_frame to report the actual count. 4995 // Force report of the actual count.
5035 main_frame->increaseMatchCount(0, request_id); 4996 frame_->increaseMatchCount(0, request_id);
5036 } else { 4997 return;
5037 // If nothing is found, set result to "0 of 0", otherwise, set it to 4998 }
5038 // "-1 of 1" to indicate that we found at least one item, but we don't know
5039 // yet what is active.
5040 int ordinal = result ? -1 : 0; // -1 here means we might know more later.
5041 int match_count = result ? 1 : 0; // 1 here means possibly more coming.
5042 4999
5043 // If we find no matches then this will be our last status update. 5000 // Scoping effort begins.
5044 // Otherwise the scoping effort will send more results. 5001 frame_->resetMatchCount();
5045 bool final_status_update = !result;
5046 5002
5047 SendFindReply(request_id, match_count, ordinal, selection_rect, 5003 // Cancel all old scoping requests before starting a new one.
5048 final_status_update); 5004 frame_->cancelPendingScopingEffort();
5049 5005
5050 // Scoping effort begins, starting with the main frame. 5006 // Start new scoping request. If the scoping function determines that it
5051 search_frame = main_frame; 5007 // needs to scope, it will defer until later.
5008 frame_->scopeStringMatches(request_id,
5009 search_text,
5010 options,
5011 true); // reset the tickmarks
5012 }
5052 5013
5053 main_frame->resetMatchCount(); 5014 void RenderFrameImpl::OnClearActiveFindMatch() {
5054 5015 frame_->executeCommand(WebString::fromUTF8("Unselect"));
5055 do { 5016 frame_->clearActiveFindMatch();
5056 // Cancel all old scoping requests before starting a new one.
5057 search_frame->cancelPendingScopingEffort();
5058
5059 // We don't start another scoping effort unless at least one match has
5060 // been found.
5061 if (result) {
5062 // Start new scoping request. If the scoping function determines that it
5063 // needs to scope, it will defer until later.
5064 search_frame->scopeStringMatches(request_id, search_text, options,
5065 true); // reset the tickmarks
5066 }
5067
5068 // Iterate to the next frame. The frame will not necessarily scope, for
5069 // example if it is not visible.
5070 search_frame = search_frame->traverseNextLocal(true);
5071 } while (search_frame != main_frame);
5072 }
5073 } 5017 }
5074 5018
5075 void RenderFrameImpl::OnStopFinding(StopFindAction action) { 5019 void RenderFrameImpl::OnStopFinding(StopFindAction action) {
5076 // This should only be received on the main frame, since find-in-page is
5077 // currently orchestrated by the main frame.
5078 if (!is_main_frame_) {
5079 NOTREACHED();
5080 return;
5081 }
5082
5083 WebView* view = render_view_->webview();
5084 if (!view)
5085 return;
5086
5087 blink::WebPlugin* plugin = GetWebPluginForFind(); 5020 blink::WebPlugin* plugin = GetWebPluginForFind();
5088 if (plugin) { 5021 if (plugin) {
5089 plugin->stopFind(); 5022 plugin->stopFind();
5090 return; 5023 return;
5091 } 5024 }
5092 5025
5093 bool clear_selection = action == STOP_FIND_ACTION_CLEAR_SELECTION; 5026 frame_->stopFinding(action == STOP_FIND_ACTION_CLEAR_SELECTION,
5094 if (clear_selection) { 5027 action == STOP_FIND_ACTION_ACTIVATE_SELECTION);
5095 view->focusedFrame()->executeCommand(WebString::fromUTF8("Unselect"));
5096 }
5097
5098 WebLocalFrame* frame = GetWebFrame();
5099 while (frame) {
5100 frame->stopFinding(clear_selection);
5101 frame = frame->traverseNextLocal(false);
5102 }
5103
5104 if (action == STOP_FIND_ACTION_ACTIVATE_SELECTION) {
5105 WebFrame* focused_frame = view->focusedFrame();
5106 if (focused_frame) {
5107 WebDocument doc = focused_frame->document();
5108 if (!doc.isNull()) {
5109 WebElement element = doc.focusedElement();
5110 if (!element.isNull())
5111 element.simulateClick();
5112 }
5113 }
5114 }
5115 } 5028 }
5116 5029
5117 void RenderFrameImpl::OnEnableViewSourceMode() { 5030 void RenderFrameImpl::OnEnableViewSourceMode() {
5118 DCHECK(frame_); 5031 DCHECK(frame_);
5119 DCHECK(!frame_->parent()); 5032 DCHECK(!frame_->parent());
5120 frame_->enableViewSourceMode(true); 5033 frame_->enableViewSourceMode(true);
5121 } 5034 }
5122 5035
5123 void RenderFrameImpl::OnSuppressFurtherDialogs() { 5036 void RenderFrameImpl::OnSuppressFurtherDialogs() {
5124 suppress_further_dialogs_ = true; 5037 suppress_further_dialogs_ = true;
(...skipping 11 matching lines...) Expand all
5136 // the current match count) in case the host is waiting for a response due 5049 // the current match count) in case the host is waiting for a response due
5137 // to rate-limiting. 5050 // to rate-limiting.
5138 frame_->increaseMatchCount(0, request_id); 5051 frame_->increaseMatchCount(0, request_id);
5139 return; 5052 return;
5140 } 5053 }
5141 5054
5142 SendFindReply(request_id, -1 /* number_of_matches */, ordinal, selection_rect, 5055 SendFindReply(request_id, -1 /* number_of_matches */, ordinal, selection_rect,
5143 true /* final_update */); 5056 true /* final_update */);
5144 } 5057 }
5145 5058
5059 void RenderFrameImpl::OnGetNearestFindResult(int nfr_request_id,
5060 float x,
5061 float y) {
5062 float distance = frame_->nearestFindMatch(WebFloatPoint(x, y));
5063 Send(new FrameHostMsg_GetNearestFindResult_Reply(
5064 routing_id_, nfr_request_id, distance));
5065 }
5066
5146 void RenderFrameImpl::OnFindMatchRects(int current_version) { 5067 void RenderFrameImpl::OnFindMatchRects(int current_version) {
5147 std::vector<gfx::RectF> match_rects; 5068 std::vector<gfx::RectF> match_rects;
5148 5069
5149 int rects_version = frame_->findMatchMarkersVersion(); 5070 int rects_version = frame_->findMatchMarkersVersion();
5150 if (current_version != rects_version) { 5071 if (current_version != rects_version) {
5151 WebVector<WebFloatRect> web_match_rects; 5072 WebVector<WebFloatRect> web_match_rects;
5152 frame_->findMatchRects(web_match_rects); 5073 frame_->findMatchRects(web_match_rects);
5153 match_rects.reserve(web_match_rects.size()); 5074 match_rects.reserve(web_match_rects.size());
5154 for (size_t i = 0; i < web_match_rects.size(); ++i) 5075 for (size_t i = 0; i < web_match_rects.size(); ++i)
5155 match_rects.push_back(gfx::RectF(web_match_rects[i])); 5076 match_rects.push_back(gfx::RectF(web_match_rects[i]));
(...skipping 855 matching lines...) Expand 10 before | Expand all | Expand 10 after
6011 callback.Run(AudioDeviceFactory::GetOutputDeviceInfo( 5932 callback.Run(AudioDeviceFactory::GetOutputDeviceInfo(
6012 routing_id_, 0, sink_id.utf8(), security_origin) 5933 routing_id_, 0, sink_id.utf8(), security_origin)
6013 .device_status()); 5934 .device_status());
6014 } 5935 }
6015 5936
6016 blink::ServiceRegistry* RenderFrameImpl::serviceRegistry() { 5937 blink::ServiceRegistry* RenderFrameImpl::serviceRegistry() {
6017 return &blink_service_registry_; 5938 return &blink_service_registry_;
6018 } 5939 }
6019 5940
6020 blink::WebPlugin* RenderFrameImpl::GetWebPluginForFind() { 5941 blink::WebPlugin* RenderFrameImpl::GetWebPluginForFind() {
6021 if (!is_main_frame_)
6022 return nullptr;
6023
6024 if (frame_->document().isPluginDocument()) 5942 if (frame_->document().isPluginDocument())
6025 return frame_->document().to<WebPluginDocument>().plugin(); 5943 return frame_->document().to<WebPluginDocument>().plugin();
6026 5944
6027 #if defined(ENABLE_PLUGINS) 5945 #if defined(ENABLE_PLUGINS)
6028 if (plugin_find_handler_) 5946 if (plugin_find_handler_)
6029 return plugin_find_handler_->container()->plugin(); 5947 return plugin_find_handler_->container()->plugin();
6030 #endif 5948 #endif
6031 5949
6032 return nullptr; 5950 return nullptr;
6033 } 5951 }
6034 5952
6035 void RenderFrameImpl::SendFindReply(int request_id, 5953 void RenderFrameImpl::SendFindReply(int request_id,
6036 int match_count, 5954 int match_count,
6037 int ordinal, 5955 int ordinal,
6038 const WebRect& selection_rect, 5956 const WebRect& selection_rect,
6039 bool final_status_update) { 5957 bool final_status_update) {
6040 Send(new FrameHostMsg_Find_Reply(routing_id_, request_id, match_count, 5958 if (final_status_update && !ordinal)
6041 selection_rect, ordinal, 5959 frame_->executeCommand(WebString::fromUTF8("Unselect"));
5960 DCHECK(ordinal >= -1);
5961
5962 Send(new FrameHostMsg_Find_Reply(routing_id_,
5963 request_id,
5964 match_count,
5965 selection_rect,
5966 ordinal,
6042 final_status_update)); 5967 final_status_update));
6043 } 5968 }
6044 5969
6045 #if defined(ENABLE_PLUGINS) 5970 #if defined(ENABLE_PLUGINS)
6046 void RenderFrameImpl::PepperInstanceCreated( 5971 void RenderFrameImpl::PepperInstanceCreated(
6047 PepperPluginInstanceImpl* instance) { 5972 PepperPluginInstanceImpl* instance) {
6048 active_pepper_instances_.insert(instance); 5973 active_pepper_instances_.insert(instance);
6049 5974
6050 Send(new FrameHostMsg_PepperInstanceCreated(routing_id_)); 5975 Send(new FrameHostMsg_PepperInstanceCreated(routing_id_));
6051 } 5976 }
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
6094 // event target. Potentially a Pepper plugin will receive the event. 6019 // event target. Potentially a Pepper plugin will receive the event.
6095 // In order to tell whether a plugin gets the last mouse event and which it 6020 // In order to tell whether a plugin gets the last mouse event and which it
6096 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets 6021 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets
6097 // the event, it will notify us via DidReceiveMouseEvent() and set itself as 6022 // the event, it will notify us via DidReceiveMouseEvent() and set itself as
6098 // |pepper_last_mouse_event_target_|. 6023 // |pepper_last_mouse_event_target_|.
6099 pepper_last_mouse_event_target_ = nullptr; 6024 pepper_last_mouse_event_target_ = nullptr;
6100 #endif 6025 #endif
6101 } 6026 }
6102 6027
6103 } // namespace content 6028 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698