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

Side by Side Diff: content/browser/web_contents/web_contents_impl.cc

Issue 26316005: Move out DidStartProvisionalLoad from WebContentsImpl into Navigator. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixes based on Charlie's latest review. Created 7 years 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/browser/web_contents/web_contents_impl.h" 5 #include "content/browser/web_contents/web_contents_impl.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
(...skipping 13 matching lines...) Expand all
24 #include "content/browser/child_process_security_policy_impl.h" 24 #include "content/browser/child_process_security_policy_impl.h"
25 #include "content/browser/devtools/devtools_manager_impl.h" 25 #include "content/browser/devtools/devtools_manager_impl.h"
26 #include "content/browser/dom_storage/dom_storage_context_wrapper.h" 26 #include "content/browser/dom_storage/dom_storage_context_wrapper.h"
27 #include "content/browser/dom_storage/session_storage_namespace_impl.h" 27 #include "content/browser/dom_storage/session_storage_namespace_impl.h"
28 #include "content/browser/download/download_stats.h" 28 #include "content/browser/download/download_stats.h"
29 #include "content/browser/download/mhtml_generation_manager.h" 29 #include "content/browser/download/mhtml_generation_manager.h"
30 #include "content/browser/download/save_package.h" 30 #include "content/browser/download/save_package.h"
31 #include "content/browser/frame_host/interstitial_page_impl.h" 31 #include "content/browser/frame_host/interstitial_page_impl.h"
32 #include "content/browser/frame_host/navigation_entry_impl.h" 32 #include "content/browser/frame_host/navigation_entry_impl.h"
33 #include "content/browser/frame_host/navigator_impl.h" 33 #include "content/browser/frame_host/navigator_impl.h"
34 #include "content/browser/frame_host/render_frame_host_impl.h"
34 #include "content/browser/host_zoom_map_impl.h" 35 #include "content/browser/host_zoom_map_impl.h"
35 #include "content/browser/loader/resource_dispatcher_host_impl.h" 36 #include "content/browser/loader/resource_dispatcher_host_impl.h"
36 #include "content/browser/message_port_message_filter.h" 37 #include "content/browser/message_port_message_filter.h"
37 #include "content/browser/message_port_service.h" 38 #include "content/browser/message_port_service.h"
38 #include "content/browser/power_save_blocker_impl.h" 39 #include "content/browser/power_save_blocker_impl.h"
39 #include "content/browser/renderer_host/render_process_host_impl.h" 40 #include "content/browser/renderer_host/render_process_host_impl.h"
40 #include "content/browser/renderer_host/render_view_host_impl.h" 41 #include "content/browser/renderer_host/render_view_host_impl.h"
41 #include "content/browser/renderer_host/render_widget_host_impl.h" 42 #include "content/browser/renderer_host/render_widget_host_impl.h"
42 #include "content/browser/site_instance_impl.h" 43 #include "content/browser/site_instance_impl.h"
43 #include "content/browser/web_contents/web_contents_view_guest.h" 44 #include "content/browser/web_contents/web_contents_view_guest.h"
(...skipping 1984 matching lines...) Expand 10 before | Expand all | Expand 10 after
2028 if (entry && entry->GetURL() == GURL(kAboutBlankURL)) 2029 if (entry && entry->GetURL() == GURL(kAboutBlankURL))
2029 return true; 2030 return true;
2030 return delegate_ && delegate_->ShouldFocusLocationBarByDefault(this); 2031 return delegate_ && delegate_->ShouldFocusLocationBarByDefault(this);
2031 } 2032 }
2032 2033
2033 void WebContentsImpl::SetFocusToLocationBar(bool select_all) { 2034 void WebContentsImpl::SetFocusToLocationBar(bool select_all) {
2034 if (delegate_) 2035 if (delegate_)
2035 delegate_->SetFocusToLocationBar(select_all); 2036 delegate_->SetFocusToLocationBar(select_all);
2036 } 2037 }
2037 2038
2038 void WebContentsImpl::DidStartProvisionalLoadForFrame( 2039 void WebContentsImpl::DidStartProvisionalLoad(
2039 RenderViewHost* render_view_host, 2040 RenderFrameHostImpl* render_frame_host,
2040 int64 frame_id, 2041 int64 frame_id,
2041 int64 parent_frame_id, 2042 int64 parent_frame_id,
2042 bool is_main_frame, 2043 bool is_main_frame,
2043 const GURL& url) { 2044 const GURL& validated_url,
2044 bool is_error_page = (url.spec() == kUnreachableWebDataURL); 2045 bool is_error_page,
2045 bool is_iframe_srcdoc = (url.spec() == kAboutSrcDocURL); 2046 bool is_iframe_srcdoc) {
2046 GURL validated_url(url); 2047 if (is_main_frame)
2047 RenderProcessHost* render_process_host =
2048 render_view_host->GetProcess();
2049 RenderViewHost::FilterURL(render_process_host, false, &validated_url);
2050
2051 if (is_main_frame) {
2052 DidChangeLoadProgress(0); 2048 DidChangeLoadProgress(0);
2053 2049
2054 // If there is no browser-initiated pending entry for this navigation and it
2055 // is not for the error URL, create a pending entry using the current
2056 // SiteInstance, and ensure the address bar updates accordingly. We don't
2057 // know the referrer or extra headers at this point, but the referrer will
2058 // be set properly upon commit.
2059 NavigationEntryImpl* pending_entry =
2060 NavigationEntryImpl::FromNavigationEntry(controller_.GetPendingEntry());
2061 bool has_browser_initiated_pending_entry = pending_entry &&
2062 !pending_entry->is_renderer_initiated();
2063 if (!has_browser_initiated_pending_entry && !is_error_page) {
2064 NavigationEntryImpl* entry = NavigationEntryImpl::FromNavigationEntry(
2065 controller_.CreateNavigationEntry(validated_url,
2066 content::Referrer(),
2067 content::PAGE_TRANSITION_LINK,
2068 true /* is_renderer_initiated */,
2069 std::string(),
2070 GetBrowserContext()));
2071 entry->set_site_instance(
2072 static_cast<SiteInstanceImpl*>(GetSiteInstance()));
2073 // TODO(creis): If there's a pending entry already, find a safe way to
2074 // update it instead of replacing it and copying over things like this.
2075 if (pending_entry) {
2076 entry->set_transferred_global_request_id(
2077 pending_entry->transferred_global_request_id());
2078 entry->set_should_replace_entry(pending_entry->should_replace_entry());
2079 entry->set_redirect_chain(pending_entry->redirect_chain());
2080 }
2081 controller_.SetPendingEntry(entry);
2082 NotifyNavigationStateChanged(content::INVALIDATE_TYPE_URL);
2083 }
2084 }
2085
2086 // Notify observers about the start of the provisional load. 2050 // Notify observers about the start of the provisional load.
2087 FOR_EACH_OBSERVER(WebContentsObserver, observers_, 2051 FOR_EACH_OBSERVER(WebContentsObserver, observers_,
2088 DidStartProvisionalLoadForFrame(frame_id, parent_frame_id, 2052 DidStartProvisionalLoadForFrame(frame_id, parent_frame_id,
2089 is_main_frame, validated_url, is_error_page, 2053 is_main_frame, validated_url, is_error_page,
2090 is_iframe_srcdoc, render_view_host)); 2054 is_iframe_srcdoc, render_frame_host->render_view_host()));
2091 2055
2092 if (is_main_frame) { 2056 if (is_main_frame) {
2093 // Notify observers about the provisional change in the main frame URL. 2057 FOR_EACH_OBSERVER(
2094 FOR_EACH_OBSERVER(WebContentsObserver, observers_, 2058 WebContentsObserver,
2095 ProvisionalChangeToMainFrameUrl(validated_url, 2059 observers_,
2096 render_view_host)); 2060 ProvisionalChangeToMainFrameUrl(validated_url,
2061 render_frame_host->render_view_host()));
2097 } 2062 }
2098 } 2063 }
2099 2064
2065 void WebContentsImpl::NotifyChangedNavigationState(
2066 InvalidateTypes changed_flags) {
2067 NotifyNavigationStateChanged(changed_flags);
2068 }
2069
2100 void WebContentsImpl::DidRedirectProvisionalLoad( 2070 void WebContentsImpl::DidRedirectProvisionalLoad(
2101 RenderViewHost* render_view_host, 2071 RenderViewHost* render_view_host,
2102 int32 page_id, 2072 int32 page_id,
2103 const GURL& source_url, 2073 const GURL& source_url,
2104 const GURL& target_url) { 2074 const GURL& target_url) {
2105 // TODO(creis): Remove this method and have the pre-rendering code listen to 2075 // TODO(creis): Remove this method and have the pre-rendering code listen to
2106 // WebContentsObserver::DidGetRedirectForResourceRequest instead. 2076 // WebContentsObserver::DidGetRedirectForResourceRequest instead.
2107 // See http://crbug.com/78512. 2077 // See http://crbug.com/78512.
2108 GURL validated_source_url(source_url); 2078 GURL validated_source_url(source_url);
2109 GURL validated_target_url(target_url); 2079 GURL validated_target_url(target_url);
(...skipping 1665 matching lines...) Expand 10 before | Expand all | Expand 10 after
3775 } 3745 }
3776 3746
3777 void WebContentsImpl::OnFrameRemoved( 3747 void WebContentsImpl::OnFrameRemoved(
3778 RenderViewHostImpl* render_view_host, 3748 RenderViewHostImpl* render_view_host,
3779 int64 frame_id) { 3749 int64 frame_id) {
3780 FOR_EACH_OBSERVER(WebContentsObserver, observers_, 3750 FOR_EACH_OBSERVER(WebContentsObserver, observers_,
3781 FrameDetached(render_view_host, frame_id)); 3751 FrameDetached(render_view_host, frame_id));
3782 } 3752 }
3783 3753
3784 } // namespace content 3754 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/web_contents/web_contents_impl.h ('k') | content/public/test/test_renderer_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698