diff options
author | mkosiba@chromium.org <mkosiba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-29 11:36:31 +0000 |
---|---|---|
committer | mkosiba@chromium.org <mkosiba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-29 11:36:31 +0000 |
commit | 1a55c5be47d58f64e9adf22985f4e0c276c9ed86 (patch) | |
tree | 9e3d34700766b476683589ee2f29a50cedfe7cba | |
parent | d52d25e5a28b9798bcfaff23614dae2040db869e (diff) | |
download | chromium_src-1a55c5be47d58f64e9adf22985f4e0c276c9ed86.zip chromium_src-1a55c5be47d58f64e9adf22985f4e0c276c9ed86.tar.gz chromium_src-1a55c5be47d58f64e9adf22985f4e0c276c9ed86.tar.bz2 |
Add url and is_main_frame to DidFinishLoad and DidFailLoad.
This will add 2 fields: validated_url and is_main_frame to
the DidFinishLoad TabContentsObserver callback and the
associated view message and will add a DidFinishLoad
TabContentsObserver callback with the associated view
message.
The change should not have any impact on current behavior.
This is needed for the Chromium port on Android.
BUG=none
TEST=base_unittests,content_unittests,browser_tests
Review URL: http://codereview.chromium.org/8384028
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@111912 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/chromeos/login/web_page_view.cc | 4 | ||||
-rw-r--r-- | chrome/browser/chromeos/login/web_page_view.h | 1 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_webnavigation_api.cc | 10 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_webnavigation_api.h | 4 | ||||
-rw-r--r-- | content/browser/tab_contents/tab_contents.cc | 17 | ||||
-rw-r--r-- | content/browser/tab_contents/tab_contents.h | 9 | ||||
-rw-r--r-- | content/browser/tab_contents/tab_contents_observer.cc | 12 | ||||
-rw-r--r-- | content/browser/tab_contents/tab_contents_observer.h | 9 | ||||
-rw-r--r-- | content/common/view_messages.h | 14 | ||||
-rw-r--r-- | content/renderer/render_view_impl.cc | 23 |
10 files changed, 85 insertions, 18 deletions
diff --git a/chrome/browser/chromeos/login/web_page_view.cc b/chrome/browser/chromeos/login/web_page_view.cc index d6f78ee..8b724c7 100644 --- a/chrome/browser/chromeos/login/web_page_view.cc +++ b/chrome/browser/chromeos/login/web_page_view.cc @@ -84,10 +84,6 @@ void WizardWebPageViewTabContents::DocumentLoadedInFrame( page_delegate_->OnPageLoaded(); } -void WizardWebPageViewTabContents::DidFinishLoad( - long long /*frame_id*/) { -} - /////////////////////////////////////////////////////////////////////////////// // WebPageDomView, public: diff --git a/chrome/browser/chromeos/login/web_page_view.h b/chrome/browser/chromeos/login/web_page_view.h index b7635c0..8f0c58d 100644 --- a/chrome/browser/chromeos/login/web_page_view.h +++ b/chrome/browser/chromeos/login/web_page_view.h @@ -53,7 +53,6 @@ class WizardWebPageViewTabContents : public TabContents { virtual void DidDisplayInsecureContent(); virtual void DidRunInsecureContent(const std::string& security_origin); virtual void DocumentLoadedInFrame(long long frame_id); - virtual void DidFinishLoad(long long frame_id); private: WebPageDelegate* page_delegate_; diff --git a/chrome/browser/extensions/extension_webnavigation_api.cc b/chrome/browser/extensions/extension_webnavigation_api.cc index 943e879..8f4e7f5 100644 --- a/chrome/browser/extensions/extension_webnavigation_api.cc +++ b/chrome/browser/extensions/extension_webnavigation_api.cc @@ -571,13 +571,17 @@ void ExtensionWebNavigationTabObserver::DocumentLoadedInFrame( } void ExtensionWebNavigationTabObserver::DidFinishLoad( - int64 frame_id) { + int64 frame_id, + const GURL& validated_url, + bool is_main_frame) { if (!navigation_state_.CanSendEvents(frame_id)) return; navigation_state_.SetNavigationCompleted(frame_id); + DCHECK_EQ(navigation_state_.GetUrl(frame_id), validated_url); + DCHECK_EQ(navigation_state_.IsMainFrame(frame_id), is_main_frame); DispatchOnCompleted(tab_contents(), - navigation_state_.GetUrl(frame_id), - navigation_state_.IsMainFrame(frame_id), + validated_url, + is_main_frame, frame_id); } diff --git a/chrome/browser/extensions/extension_webnavigation_api.h b/chrome/browser/extensions/extension_webnavigation_api.h index 1989fe0..e8234d0 100644 --- a/chrome/browser/extensions/extension_webnavigation_api.h +++ b/chrome/browser/extensions/extension_webnavigation_api.h @@ -149,7 +149,9 @@ class ExtensionWebNavigationTabObserver : public TabContentsObserver { int error_code, const string16& error_description) OVERRIDE; virtual void DocumentLoadedInFrame(int64 frame_id) OVERRIDE; - virtual void DidFinishLoad(int64 frame_id) OVERRIDE; + virtual void DidFinishLoad(int64 frame_id, + const GURL& validated_url, + bool is_main_frame) OVERRIDE; virtual void DidOpenRequestedURL(TabContents* new_contents, const GURL& url, const GURL& referrer, diff --git a/content/browser/tab_contents/tab_contents.cc b/content/browser/tab_contents/tab_contents.cc index aeb98c2..ea19f20 100644 --- a/content/browser/tab_contents/tab_contents.cc +++ b/content/browser/tab_contents/tab_contents.cc @@ -1089,9 +1089,22 @@ void TabContents::OnDocumentLoadedInFrame(int64 frame_id) { DocumentLoadedInFrame(frame_id)); } -void TabContents::OnDidFinishLoad(int64 frame_id) { +void TabContents::OnDidFinishLoad( + int64 frame_id, + const GURL& validated_url, + bool is_main_frame) { FOR_EACH_OBSERVER(TabContentsObserver, observers_, - DidFinishLoad(frame_id)); + DidFinishLoad(frame_id, validated_url, is_main_frame)); +} + +void TabContents::OnDidFailLoadWithError(int64 frame_id, + const GURL& validated_url, + bool is_main_frame, + int error_code, + const string16& error_description) { + FOR_EACH_OBSERVER(TabContentsObserver, observers_, + DidFailLoad(frame_id, validated_url, is_main_frame, + error_code, error_description)); } void TabContents::OnUpdateContentRestrictions(int restrictions) { diff --git a/content/browser/tab_contents/tab_contents.h b/content/browser/tab_contents/tab_contents.h index 55f03a5..0473b7d 100644 --- a/content/browser/tab_contents/tab_contents.h +++ b/content/browser/tab_contents/tab_contents.h @@ -623,7 +623,14 @@ class CONTENT_EXPORT TabContents : public PageNavigator, void OnDidRunInsecureContent(const std::string& security_origin, const GURL& target_url); void OnDocumentLoadedInFrame(int64 frame_id); - void OnDidFinishLoad(int64 frame_id); + void OnDidFinishLoad(int64 frame_id, + const GURL& validated_url, + bool is_main_frame); + void OnDidFailLoadWithError(int64 frame_id, + const GURL& validated_url, + bool is_main_frame, + int error_code, + const string16& error_description); void OnUpdateContentRestrictions(int restrictions); void OnGoToEntryAtOffset(int offset); void OnUpdateZoomLimits(int minimum_percent, diff --git a/content/browser/tab_contents/tab_contents_observer.cc b/content/browser/tab_contents/tab_contents_observer.cc index e79a13f..b9ad17d 100644 --- a/content/browser/tab_contents/tab_contents_observer.cc +++ b/content/browser/tab_contents/tab_contents_observer.cc @@ -69,7 +69,17 @@ void TabContentsObserver::DocumentAvailableInMainFrame() { void TabContentsObserver::DocumentLoadedInFrame(int64 frame_id) { } -void TabContentsObserver::DidFinishLoad(int64 frame_id) { +void TabContentsObserver::DidFinishLoad( + int64 frame_id, + const GURL& validated_url, + bool is_main_frame) { +} + +void TabContentsObserver::DidFailLoad(int64 frame_id, + const GURL& validated_url, + bool is_main_frame, + int error_code, + const string16& error_description) { } void TabContentsObserver::DidGetUserGesture() { diff --git a/content/browser/tab_contents/tab_contents_observer.h b/content/browser/tab_contents/tab_contents_observer.h index 03590fe..9b90758 100644 --- a/content/browser/tab_contents/tab_contents_observer.h +++ b/content/browser/tab_contents/tab_contents_observer.h @@ -58,7 +58,14 @@ class CONTENT_EXPORT TabContentsObserver : public IPC::Channel::Listener, const string16& error_description); virtual void DocumentAvailableInMainFrame(); virtual void DocumentLoadedInFrame(int64 frame_id); - virtual void DidFinishLoad(int64 frame_id); + virtual void DidFinishLoad(int64 frame_id, + const GURL& validated_url, + bool is_main_frame); + virtual void DidFailLoad(int64 frame_id, + const GURL& validated_url, + bool is_main_frame, + int error_code, + const string16& error_description); virtual void DidGetUserGesture(); virtual void DidGetIgnoredUIEvent(); virtual void DidBecomeSelected(); diff --git a/content/common/view_messages.h b/content/common/view_messages.h index da851ff..9c175e3 100644 --- a/content/common/view_messages.h +++ b/content/common/view_messages.h @@ -1293,8 +1293,10 @@ IPC_MESSAGE_ROUTED1(ViewHostMsg_DocumentLoadedInFrame, int64 /* frame_id */) // Notifies the browser that a frame finished loading. -IPC_MESSAGE_ROUTED1(ViewHostMsg_DidFinishLoad, - int64 /* frame_id */) +IPC_MESSAGE_ROUTED3(ViewHostMsg_DidFinishLoad, + int64 /* frame_id */, + GURL /* validated_url */, + bool /* is_main_frame */) // Changes the title for the page in the UI when the page is navigated or the // title changes. @@ -1367,11 +1369,17 @@ IPC_MESSAGE_ROUTED4(ViewHostMsg_DidStartProvisionalLoadForFrame, GURL /* opener url if present, else empty */, GURL /* url */) +IPC_MESSAGE_ROUTED5(ViewHostMsg_DidFailLoadWithError, + int64 /* frame_id */, + GURL /* validated_url */, + bool /* is_main_frame */, + int /* error_code */, + string16 /* error_description */) + // Sent when the renderer fails a provisional load with an error. IPC_MESSAGE_ROUTED1(ViewHostMsg_DidFailProvisionalLoadWithError, ViewHostMsg_DidFailProvisionalLoadWithError_Params) - // Tells the render view that a ViewHostMsg_PaintAtSize message was // processed, and the DIB is ready for use. |tag| has the same value that // the tag sent along with ViewMsg_PaintAtSize. diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc index fe01da5..9eb76ac 100644 --- a/content/renderer/render_view_impl.cc +++ b/content/renderer/render_view_impl.cc @@ -2617,7 +2617,25 @@ void RenderViewImpl::didHandleOnloadEvents(WebFrame* frame) { } void RenderViewImpl::didFailLoad(WebFrame* frame, const WebURLError& error) { + WebDataSource* ds = frame->dataSource(); + DCHECK(ds); + + FOR_EACH_OBSERVER(RenderViewObserver, observers_, DidFailLoad(frame, error)); + + const WebURLRequest& failed_request = ds->request(); + string16 error_description; + content::GetContentClient()->renderer()->GetNavigationErrorStrings( + failed_request, + error, + NULL, + &error_description); + Send(new ViewHostMsg_DidFailLoadWithError(routing_id_, + frame->identifier(), + failed_request.url(), + !frame->parent(), + error.reason, + error_description)); } void RenderViewImpl::didFinishLoad(WebFrame* frame) { @@ -2628,7 +2646,10 @@ void RenderViewImpl::didFinishLoad(WebFrame* frame) { FOR_EACH_OBSERVER(RenderViewObserver, observers_, DidFinishLoad(frame)); - Send(new ViewHostMsg_DidFinishLoad(routing_id_, frame->identifier())); + Send(new ViewHostMsg_DidFinishLoad(routing_id_, + frame->identifier(), + ds->request().url(), + !frame->parent())); } void RenderViewImpl::didNavigateWithinPage( |