summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormkosiba@chromium.org <mkosiba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-29 11:36:31 +0000
committermkosiba@chromium.org <mkosiba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-29 11:36:31 +0000
commit1a55c5be47d58f64e9adf22985f4e0c276c9ed86 (patch)
tree9e3d34700766b476683589ee2f29a50cedfe7cba
parentd52d25e5a28b9798bcfaff23614dae2040db869e (diff)
downloadchromium_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.cc4
-rw-r--r--chrome/browser/chromeos/login/web_page_view.h1
-rw-r--r--chrome/browser/extensions/extension_webnavigation_api.cc10
-rw-r--r--chrome/browser/extensions/extension_webnavigation_api.h4
-rw-r--r--content/browser/tab_contents/tab_contents.cc17
-rw-r--r--content/browser/tab_contents/tab_contents.h9
-rw-r--r--content/browser/tab_contents/tab_contents_observer.cc12
-rw-r--r--content/browser/tab_contents/tab_contents_observer.h9
-rw-r--r--content/common/view_messages.h14
-rw-r--r--content/renderer/render_view_impl.cc23
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(