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

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

Issue 2584513003: PlzNavigate: identify same-page browser-initiated navigation. (Closed)
Patch Set: Rebase. Created 3 years, 10 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 543 matching lines...) Expand 10 before | Expand all | Expand 10 after
554 554
555 // Returns false unless this is a top-level navigation. 555 // Returns false unless this is a top-level navigation.
556 bool IsTopLevelNavigation(WebFrame* frame) { 556 bool IsTopLevelNavigation(WebFrame* frame) {
557 return frame->parent() == NULL; 557 return frame->parent() == NULL;
558 } 558 }
559 559
560 WebURLRequest CreateURLRequestForNavigation( 560 WebURLRequest CreateURLRequestForNavigation(
561 const CommonNavigationParams& common_params, 561 const CommonNavigationParams& common_params,
562 std::unique_ptr<StreamOverrideParameters> stream_override, 562 std::unique_ptr<StreamOverrideParameters> stream_override,
563 bool is_view_source_mode_enabled, 563 bool is_view_source_mode_enabled,
564 bool is_same_document_navigation,
564 int nav_entry_id) { 565 int nav_entry_id) {
565 WebURLRequest request(common_params.url); 566 WebURLRequest request(common_params.url);
566 if (is_view_source_mode_enabled) 567 if (is_view_source_mode_enabled)
567 request.setCachePolicy(WebCachePolicy::ReturnCacheDataElseLoad); 568 request.setCachePolicy(WebCachePolicy::ReturnCacheDataElseLoad);
568 569
569 request.setHTTPMethod(WebString::fromUTF8(common_params.method)); 570 request.setHTTPMethod(WebString::fromUTF8(common_params.method));
570 if (common_params.referrer.url.is_valid()) { 571 if (common_params.referrer.url.is_valid()) {
571 WebString web_referrer = WebSecurityPolicy::generateReferrerHeader( 572 WebString web_referrer = WebSecurityPolicy::generateReferrerHeader(
572 common_params.referrer.policy, 573 common_params.referrer.policy, common_params.url,
573 common_params.url,
574 WebString::fromUTF8(common_params.referrer.url.spec())); 574 WebString::fromUTF8(common_params.referrer.url.spec()));
575 if (!web_referrer.isEmpty()) { 575 if (!web_referrer.isEmpty()) {
576 request.setHTTPReferrer(web_referrer, common_params.referrer.policy); 576 request.setHTTPReferrer(web_referrer, common_params.referrer.policy);
577 request.addHTTPOriginIfNeeded( 577 request.addHTTPOriginIfNeeded(
578 WebSecurityOrigin(url::Origin(common_params.referrer.url))); 578 WebSecurityOrigin(url::Origin(common_params.referrer.url)));
579 } 579 }
580 } 580 }
581 581
582 request.setIsSameDocumentNavigation(is_same_document_navigation);
582 request.setPreviewsState( 583 request.setPreviewsState(
583 static_cast<WebURLRequest::PreviewsState>(common_params.previews_state)); 584 static_cast<WebURLRequest::PreviewsState>(common_params.previews_state));
584 585
585 RequestExtraData* extra_data = new RequestExtraData(); 586 RequestExtraData* extra_data = new RequestExtraData();
586 extra_data->set_stream_override(std::move(stream_override)); 587 extra_data->set_stream_override(std::move(stream_override));
587 extra_data->set_navigation_initiated_by_renderer(nav_entry_id == 0); 588 extra_data->set_navigation_initiated_by_renderer(nav_entry_id == 0);
588 request.setExtraData(extra_data); 589 request.setExtraData(extra_data);
589 590
590 // Set the ui timestamp for this navigation. Currently the timestamp here is 591 // Set the ui timestamp for this navigation. Currently the timestamp here is
591 // only non empty when the navigation was triggered by an Android intent. The 592 // only non empty when the navigation was triggered by an Android intent. The
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
631 // version supported by blink. It will be passed back to the renderer in the 632 // version supported by blink. It will be passed back to the renderer in the
632 // CommitNavigation IPC, and then back to the browser again in the 633 // CommitNavigation IPC, and then back to the browser again in the
633 // DidCommitProvisionalLoad and the DocumentLoadComplete IPCs. 634 // DidCommitProvisionalLoad and the DocumentLoadComplete IPCs.
634 base::TimeTicks ui_timestamp = 635 base::TimeTicks ui_timestamp =
635 base::TimeTicks() + 636 base::TimeTicks() +
636 base::TimeDelta::FromSecondsD(info.urlRequest.uiStartTime()); 637 base::TimeDelta::FromSecondsD(info.urlRequest.uiStartTime());
637 FrameMsg_UILoadMetricsReportType::Value report_type = 638 FrameMsg_UILoadMetricsReportType::Value report_type =
638 static_cast<FrameMsg_UILoadMetricsReportType::Value>( 639 static_cast<FrameMsg_UILoadMetricsReportType::Value>(
639 info.urlRequest.inputPerfMetricReportPolicy()); 640 info.urlRequest.inputPerfMetricReportPolicy());
640 641
641 // Determine the navigation type. 642 // No history-navigation is expected to happen.
643 DCHECK(info.navigationType != blink::WebNavigationTypeBackForward);
644
645 // Determine the navigation type. No same-document navigation is expected
646 // because it is loaded immediately by the FrameLoader.
642 FrameMsg_Navigate_Type::Value navigation_type = 647 FrameMsg_Navigate_Type::Value navigation_type =
643 FrameMsg_Navigate_Type::NORMAL; 648 FrameMsg_Navigate_Type::DIFFERENT_DOCUMENT;
644 if (info.navigationType == blink::WebNavigationTypeReload) { 649 if (info.navigationType == blink::WebNavigationTypeReload) {
645 if (load_flags & net::LOAD_BYPASS_CACHE) 650 if (load_flags & net::LOAD_BYPASS_CACHE)
646 navigation_type = FrameMsg_Navigate_Type::RELOAD_BYPASSING_CACHE; 651 navigation_type = FrameMsg_Navigate_Type::RELOAD_BYPASSING_CACHE;
647 else 652 else
648 navigation_type = FrameMsg_Navigate_Type::RELOAD; 653 navigation_type = FrameMsg_Navigate_Type::RELOAD;
649 } 654 }
650 655
651 const RequestExtraData* extra_data = 656 const RequestExtraData* extra_data =
652 static_cast<RequestExtraData*>(info.urlRequest.getExtraData()); 657 static_cast<RequestExtraData*>(info.urlRequest.getExtraData());
653 DCHECK(extra_data); 658 DCHECK(extra_data);
654 return CommonNavigationParams( 659 return CommonNavigationParams(
655 info.urlRequest.url(), referrer, extra_data->transition_type(), 660 info.urlRequest.url(), referrer, extra_data->transition_type(),
656 navigation_type, true, info.replacesCurrentHistoryItem, ui_timestamp, 661 navigation_type, true, info.replacesCurrentHistoryItem, ui_timestamp,
657 report_type, GURL(), GURL(), 662 report_type, GURL(), GURL(),
658 static_cast<PreviewsState>(info.urlRequest.getPreviewsState()), 663 static_cast<PreviewsState>(info.urlRequest.getPreviewsState()),
659 base::TimeTicks::Now(), info.urlRequest.httpMethod().latin1(), 664 base::TimeTicks::Now(), info.urlRequest.httpMethod().latin1(),
660 GetRequestBodyForWebURLRequest(info.urlRequest)); 665 GetRequestBodyForWebURLRequest(info.urlRequest));
661 } 666 }
662 667
663 media::Context3D GetSharedMainThreadContext3D( 668 media::Context3D GetSharedMainThreadContext3D(
664 scoped_refptr<ui::ContextProviderCommandBuffer> provider) { 669 scoped_refptr<ui::ContextProviderCommandBuffer> provider) {
665 if (!provider) 670 if (!provider)
666 return media::Context3D(); 671 return media::Context3D();
667 return media::Context3D(provider->ContextGL(), provider->GrContext()); 672 return media::Context3D(provider->ContextGL(), provider->GrContext());
668 } 673 }
669 674
670 bool IsReload(FrameMsg_Navigate_Type::Value navigation_type) {
671 switch (navigation_type) {
672 case FrameMsg_Navigate_Type::RELOAD:
673 case FrameMsg_Navigate_Type::RELOAD_BYPASSING_CACHE:
674 case FrameMsg_Navigate_Type::RELOAD_ORIGINAL_REQUEST_URL:
675 return true;
676 case FrameMsg_Navigate_Type::RESTORE:
677 case FrameMsg_Navigate_Type::RESTORE_WITH_POST:
678 case FrameMsg_Navigate_Type::NORMAL:
679 return false;
680 }
681 NOTREACHED();
682 return false;
683 }
684
685 WebFrameLoadType ReloadFrameLoadTypeFor( 675 WebFrameLoadType ReloadFrameLoadTypeFor(
686 FrameMsg_Navigate_Type::Value navigation_type) { 676 FrameMsg_Navigate_Type::Value navigation_type) {
687 switch (navigation_type) { 677 switch (navigation_type) {
688 case FrameMsg_Navigate_Type::RELOAD: 678 case FrameMsg_Navigate_Type::RELOAD:
689 case FrameMsg_Navigate_Type::RELOAD_ORIGINAL_REQUEST_URL: 679 case FrameMsg_Navigate_Type::RELOAD_ORIGINAL_REQUEST_URL:
690 return WebFrameLoadType::ReloadMainResource; 680 return WebFrameLoadType::ReloadMainResource;
681
691 case FrameMsg_Navigate_Type::RELOAD_BYPASSING_CACHE: 682 case FrameMsg_Navigate_Type::RELOAD_BYPASSING_CACHE:
692 return WebFrameLoadType::ReloadBypassingCache; 683 return WebFrameLoadType::ReloadBypassingCache;
693 case FrameMsg_Navigate_Type::RESTORE: 684
694 case FrameMsg_Navigate_Type::RESTORE_WITH_POST: 685 default:
695 case FrameMsg_Navigate_Type::NORMAL:
696 NOTREACHED(); 686 NOTREACHED();
697 return WebFrameLoadType::Standard; 687 return WebFrameLoadType::Standard;
698 } 688 }
699 NOTREACHED();
700 return WebFrameLoadType::Standard;
701 } 689 }
702 690
703 RenderFrameImpl::CreateRenderFrameImplFunction g_create_render_frame_impl = 691 RenderFrameImpl::CreateRenderFrameImplFunction g_create_render_frame_impl =
704 nullptr; 692 nullptr;
705 693
706 WebString ConvertRelativePathToHtmlAttribute(const base::FilePath& path) { 694 WebString ConvertRelativePathToHtmlAttribute(const base::FilePath& path) {
707 DCHECK(!path.IsAbsolute()); 695 DCHECK(!path.IsAbsolute());
708 return WebString::fromUTF8( 696 return WebString::fromUTF8(
709 std::string("./") + 697 std::string("./") +
710 path.NormalizePathSeparatorsTo(FILE_PATH_LITERAL('/')).AsUTF8Unsafe()); 698 path.NormalizePathSeparatorsTo(FILE_PATH_LITERAL('/')).AsUTF8Unsafe());
(...skipping 4463 matching lines...) Expand 10 before | Expand all | Expand 10 after
5174 // RenderFrameImpl. 5162 // RenderFrameImpl.
5175 } 5163 }
5176 5164
5177 // PlzNavigate 5165 // PlzNavigate
5178 void RenderFrameImpl::OnFailedNavigation( 5166 void RenderFrameImpl::OnFailedNavigation(
5179 const CommonNavigationParams& common_params, 5167 const CommonNavigationParams& common_params,
5180 const RequestNavigationParams& request_params, 5168 const RequestNavigationParams& request_params,
5181 bool has_stale_copy_in_cache, 5169 bool has_stale_copy_in_cache,
5182 int error_code) { 5170 int error_code) {
5183 DCHECK(IsBrowserSideNavigationEnabled()); 5171 DCHECK(IsBrowserSideNavigationEnabled());
5184 bool is_reload = IsReload(common_params.navigation_type); 5172 bool is_reload =
5173 FrameMsg_Navigate_Type::IsReload(common_params.navigation_type);
5185 RenderFrameImpl::PrepareRenderViewForNavigation( 5174 RenderFrameImpl::PrepareRenderViewForNavigation(
5186 common_params.url, request_params); 5175 common_params.url, request_params);
5187 5176
5188 GetContentClient()->SetActiveURL(common_params.url); 5177 GetContentClient()->SetActiveURL(common_params.url);
5189 5178
5190 // If this frame isn't in the same process as the main frame, it may naively 5179 // If this frame isn't in the same process as the main frame, it may naively
5191 // assume that this is the first navigation in the iframe, but this may not 5180 // assume that this is the first navigation in the iframe, but this may not
5192 // actually be the case. Inform the frame's state machine if this frame has 5181 // actually be the case. Inform the frame's state machine if this frame has
5193 // already committed other loads. 5182 // already committed other loads.
5194 if (request_params.has_committed_real_load && frame_->parent()) 5183 if (request_params.has_committed_real_load && frame_->parent())
5195 frame_->setCommittedFirstRealLoad(); 5184 frame_->setCommittedFirstRealLoad();
5196 5185
5197 pending_navigation_params_.reset(new NavigationParams( 5186 pending_navigation_params_.reset(new NavigationParams(
5198 common_params, StartNavigationParams(), request_params)); 5187 common_params, StartNavigationParams(), request_params));
5199 5188
5200 // Send the provisional load failure. 5189 // Send the provisional load failure.
5201 blink::WebURLError error = 5190 blink::WebURLError error =
5202 CreateWebURLError(common_params.url, has_stale_copy_in_cache, error_code); 5191 CreateWebURLError(common_params.url, has_stale_copy_in_cache, error_code);
5203 WebURLRequest failed_request = CreateURLRequestForNavigation( 5192 WebURLRequest failed_request = CreateURLRequestForNavigation(
5204 common_params, std::unique_ptr<StreamOverrideParameters>(), 5193 common_params, std::unique_ptr<StreamOverrideParameters>(),
5205 frame_->isViewSourceModeEnabled(), request_params.nav_entry_id); 5194 frame_->isViewSourceModeEnabled(),
5195 false, // is_same_document_navigation
5196 request_params.nav_entry_id);
5206 5197
5207 if (!ShouldDisplayErrorPageForFailedLoad(error_code, common_params.url)) { 5198 if (!ShouldDisplayErrorPageForFailedLoad(error_code, common_params.url)) {
5208 // The browser expects this frame to be loading an error page. Inform it 5199 // The browser expects this frame to be loading an error page. Inform it
5209 // that the load stopped. 5200 // that the load stopped.
5210 Send(new FrameHostMsg_DidStopLoading(routing_id_)); 5201 Send(new FrameHostMsg_DidStopLoading(routing_id_));
5211 browser_side_navigation_pending_ = false; 5202 browser_side_navigation_pending_ = false;
5212 return; 5203 return;
5213 } 5204 }
5214 5205
5215 // On load failure, a frame can ask its owner to render fallback content. 5206 // On load failure, a frame can ask its owner to render fallback content.
(...skipping 606 matching lines...) Expand 10 before | Expand all | Expand 10 after
5822 5813
5823 void RenderFrameImpl::NavigateInternal( 5814 void RenderFrameImpl::NavigateInternal(
5824 const CommonNavigationParams& common_params, 5815 const CommonNavigationParams& common_params,
5825 const StartNavigationParams& start_params, 5816 const StartNavigationParams& start_params,
5826 const RequestNavigationParams& request_params, 5817 const RequestNavigationParams& request_params,
5827 std::unique_ptr<StreamOverrideParameters> stream_params) { 5818 std::unique_ptr<StreamOverrideParameters> stream_params) {
5828 bool browser_side_navigation = IsBrowserSideNavigationEnabled(); 5819 bool browser_side_navigation = IsBrowserSideNavigationEnabled();
5829 5820
5830 // Lower bound for browser initiated navigation start time. 5821 // Lower bound for browser initiated navigation start time.
5831 base::TimeTicks renderer_navigation_start = base::TimeTicks::Now(); 5822 base::TimeTicks renderer_navigation_start = base::TimeTicks::Now();
5832 bool is_reload = IsReload(common_params.navigation_type); 5823 bool is_reload =
5824 FrameMsg_Navigate_Type::IsReload(common_params.navigation_type);
5833 bool is_history_navigation = request_params.page_state.IsValid(); 5825 bool is_history_navigation = request_params.page_state.IsValid();
5834 WebCachePolicy cache_policy = WebCachePolicy::UseProtocolCachePolicy; 5826 WebCachePolicy cache_policy = WebCachePolicy::UseProtocolCachePolicy;
5835 RenderFrameImpl::PrepareRenderViewForNavigation( 5827 RenderFrameImpl::PrepareRenderViewForNavigation(
5836 common_params.url, request_params); 5828 common_params.url, request_params);
5837 5829
5838 GetContentClient()->SetActiveURL(common_params.url); 5830 GetContentClient()->SetActiveURL(common_params.url);
5839 5831
5840 // If this frame isn't in the same process as the main frame, it may naively 5832 // If this frame isn't in the same process as the main frame, it may naively
5841 // assume that this is the first navigation in the iframe, but this may not 5833 // assume that this is the first navigation in the iframe, but this may not
5842 // actually be the case. Inform the frame's state machine if this frame has 5834 // actually be the case. Inform the frame's state machine if this frame has
(...skipping 25 matching lines...) Expand all
5868 // Create parameters for a standard navigation, indicating whether it should 5860 // Create parameters for a standard navigation, indicating whether it should
5869 // replace the current NavigationEntry. 5861 // replace the current NavigationEntry.
5870 blink::WebFrameLoadType load_type = 5862 blink::WebFrameLoadType load_type =
5871 common_params.should_replace_current_entry 5863 common_params.should_replace_current_entry
5872 ? blink::WebFrameLoadType::ReplaceCurrentItem 5864 ? blink::WebFrameLoadType::ReplaceCurrentItem
5873 : blink::WebFrameLoadType::Standard; 5865 : blink::WebFrameLoadType::Standard;
5874 blink::WebHistoryLoadType history_load_type = 5866 blink::WebHistoryLoadType history_load_type =
5875 blink::WebHistoryDifferentDocumentLoad; 5867 blink::WebHistoryDifferentDocumentLoad;
5876 bool should_load_request = false; 5868 bool should_load_request = false;
5877 WebHistoryItem item_for_history_navigation; 5869 WebHistoryItem item_for_history_navigation;
5878 WebURLRequest request = 5870
5879 CreateURLRequestForNavigation(common_params, std::move(stream_params), 5871 // Enforce same-document navigation from the browser only if
5880 frame_->isViewSourceModeEnabled(), 5872 // browser-side-navigation is enabled.
5881 request_params.nav_entry_id); 5873 bool is_same_document =
5874 IsBrowserSideNavigationEnabled() &&
5875 FrameMsg_Navigate_Type::IsSameDocument(common_params.navigation_type);
5876
5877 WebURLRequest request = CreateURLRequestForNavigation(
5878 common_params, std::move(stream_params),
5879 frame_->isViewSourceModeEnabled(), is_same_document,
5880 request_params.nav_entry_id);
5882 request.setFrameType(IsTopLevelNavigation(frame_) 5881 request.setFrameType(IsTopLevelNavigation(frame_)
5883 ? blink::WebURLRequest::FrameTypeTopLevel 5882 ? blink::WebURLRequest::FrameTypeTopLevel
5884 : blink::WebURLRequest::FrameTypeNested); 5883 : blink::WebURLRequest::FrameTypeNested);
5885 5884
5886 if (IsBrowserSideNavigationEnabled() && common_params.post_data) 5885 if (IsBrowserSideNavigationEnabled() && common_params.post_data)
5887 request.setHTTPBody(GetWebHTTPBodyForRequestBody(common_params.post_data)); 5886 request.setHTTPBody(GetWebHTTPBodyForRequestBody(common_params.post_data));
5888 5887
5889 // Used to determine whether this frame is actually loading a request as part 5888 // Used to determine whether this frame is actually loading a request as part
5890 // of a history navigation. 5889 // of a history navigation.
5891 bool has_history_navigation_in_frame = false; 5890 bool has_history_navigation_in_frame = false;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
5925 // browser. 5924 // browser.
5926 DCHECK_NE(0, request_params.nav_entry_id); 5925 DCHECK_NE(0, request_params.nav_entry_id);
5927 std::unique_ptr<HistoryEntry> entry = 5926 std::unique_ptr<HistoryEntry> entry =
5928 PageStateToHistoryEntry(request_params.page_state); 5927 PageStateToHistoryEntry(request_params.page_state);
5929 if (entry) { 5928 if (entry) {
5930 // The browser process sends a single WebHistoryItem for this frame. 5929 // The browser process sends a single WebHistoryItem for this frame.
5931 // TODO(creis): Change PageState to FrameState. In the meantime, we 5930 // TODO(creis): Change PageState to FrameState. In the meantime, we
5932 // store the relevant frame's WebHistoryItem in the root of the 5931 // store the relevant frame's WebHistoryItem in the root of the
5933 // PageState. 5932 // PageState.
5934 item_for_history_navigation = entry->root(); 5933 item_for_history_navigation = entry->root();
5935 history_load_type = request_params.is_same_document_history_load 5934 switch (common_params.navigation_type) {
5936 ? blink::WebHistorySameDocumentLoad 5935 case FrameMsg_Navigate_Type::RELOAD:
5937 : blink::WebHistoryDifferentDocumentLoad; 5936 case FrameMsg_Navigate_Type::RELOAD_BYPASSING_CACHE:
5937 case FrameMsg_Navigate_Type::RELOAD_ORIGINAL_REQUEST_URL:
5938 case FrameMsg_Navigate_Type::RESTORE:
5939 case FrameMsg_Navigate_Type::RESTORE_WITH_POST:
5940 case FrameMsg_Navigate_Type::HISTORY_DIFFERENT_DOCUMENT:
5941 history_load_type = blink::WebHistoryDifferentDocumentLoad;
5942 break;
5943 case FrameMsg_Navigate_Type::HISTORY_SAME_DOCUMENT:
5944 history_load_type = blink::WebHistorySameDocumentLoad;
5945 break;
5946 default:
5947 NOTREACHED();
5948 history_load_type = blink::WebHistoryDifferentDocumentLoad;
5949 }
5938 load_type = request_params.is_history_navigation_in_new_child 5950 load_type = request_params.is_history_navigation_in_new_child
5939 ? blink::WebFrameLoadType::InitialHistoryLoad 5951 ? blink::WebFrameLoadType::InitialHistoryLoad
5940 : blink::WebFrameLoadType::BackForward; 5952 : blink::WebFrameLoadType::BackForward;
5941 should_load_request = true; 5953 should_load_request = true;
5942 5954
5943 // Keep track of which subframes the browser process has history items 5955 // Keep track of which subframes the browser process has history items
5944 // for during a history navigation. 5956 // for during a history navigation.
5945 history_subframe_unique_names_ = request_params.subframe_unique_names; 5957 history_subframe_unique_names_ = request_params.subframe_unique_names;
5946 5958
5947 if (history_load_type == blink::WebHistorySameDocumentLoad) { 5959 if (history_load_type == blink::WebHistorySameDocumentLoad) {
(...skipping 878 matching lines...) Expand 10 before | Expand all | Expand 10 after
6826 // event target. Potentially a Pepper plugin will receive the event. 6838 // event target. Potentially a Pepper plugin will receive the event.
6827 // In order to tell whether a plugin gets the last mouse event and which it 6839 // In order to tell whether a plugin gets the last mouse event and which it
6828 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets 6840 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets
6829 // the event, it will notify us via DidReceiveMouseEvent() and set itself as 6841 // the event, it will notify us via DidReceiveMouseEvent() and set itself as
6830 // |pepper_last_mouse_event_target_|. 6842 // |pepper_last_mouse_event_target_|.
6831 pepper_last_mouse_event_target_ = nullptr; 6843 pepper_last_mouse_event_target_ = nullptr;
6832 #endif 6844 #endif
6833 } 6845 }
6834 6846
6835 } // namespace content 6847 } // namespace content
OLDNEW
« no previous file with comments | « content/public/test/render_view_test.cc ('k') | content/renderer/render_frame_impl_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698