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

Unified Diff: chrome/browser/extensions/api/web_navigation/web_navigation_api.cc

Issue 11791018: When an iframe displays its srcdoc, generate navigation events for about:srcdoc (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/web_navigation/web_navigation_api.cc
diff --git a/chrome/browser/extensions/api/web_navigation/web_navigation_api.cc b/chrome/browser/extensions/api/web_navigation/web_navigation_api.cc
index 5cece6675e151b3dc5781477b268881090663f39..32c6d71484813f6149d8f014d969fed5b71ad811 100644
--- a/chrome/browser/extensions/api/web_navigation/web_navigation_api.cc
+++ b/chrome/browser/extensions/api/web_navigation/web_navigation_api.cc
@@ -26,6 +26,7 @@
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/web_contents.h"
+#include "content/public/common/url_constants.h"
#include "net/base/net_errors.h"
namespace GetFrame = extensions::api::web_navigation::GetFrame;
@@ -376,7 +377,9 @@ void WebNavigationTabObserver::DidStartProvisionalLoadForFrame(
parent_frame_id,
validated_url,
is_main_frame,
- is_error_page);
+ is_error_page,
+ is_iframe_srcdoc);
+
if (!navigation_state_.CanSendEvents(frame_id))
return;
@@ -387,7 +390,7 @@ void WebNavigationTabObserver::DidStartProvisionalLoadForFrame(
is_main_frame,
parent_frame_num,
navigation_state_.IsMainFrame(parent_frame_id),
- validated_url);
+ navigation_state_.GetUrl(frame_id));
}
void WebNavigationTabObserver::DidCommitProvisionalLoadForFrame(
@@ -441,7 +444,7 @@ void WebNavigationTabObserver::DidCommitProvisionalLoadForFrame(
web_contents(),
frame_num,
is_main_frame,
- url,
+ navigation_state_.GetUrl(frame_id),
transition_type);
} else if (is_history_state_modification) {
helpers::DispatchOnCommitted(
@@ -449,7 +452,7 @@ void WebNavigationTabObserver::DidCommitProvisionalLoadForFrame(
web_contents(),
frame_num,
is_main_frame,
- url,
+ navigation_state_.GetUrl(frame_id),
transition_type);
} else {
if (navigation_state_.GetIsServerRedirected(frame_id)) {
@@ -461,7 +464,7 @@ void WebNavigationTabObserver::DidCommitProvisionalLoadForFrame(
web_contents(),
frame_num,
is_main_frame,
- url,
+ navigation_state_.GetUrl(frame_id),
transition_type);
}
}
@@ -485,8 +488,12 @@ void WebNavigationTabObserver::DidFailProvisionalLoad(
FrameNavigationState::FrameID frame_id(frame_num, render_view_host);
if (navigation_state_.CanSendEvents(frame_id)) {
helpers::DispatchOnErrorOccurred(
- web_contents(), render_view_host->GetProcess()->GetID(), validated_url,
- frame_num, is_main_frame, error_code);
+ web_contents(),
+ render_view_host->GetProcess()->GetID(),
+ navigation_state_.GetUrl(frame_id),
+ frame_num,
+ is_main_frame,
+ error_code);
}
navigation_state_.SetErrorOccurredInFrame(frame_id);
if (stop_tracking_frames) {
@@ -524,10 +531,12 @@ void WebNavigationTabObserver::DidFinishLoad(
navigation_state_.SetNavigationCompleted(frame_id);
if (!navigation_state_.CanSendEvents(frame_id))
return;
- DCHECK_EQ(navigation_state_.GetUrl(frame_id), validated_url);
+ DCHECK(navigation_state_.GetUrl(frame_id) == validated_url ||
+ (navigation_state_.GetUrl(frame_id) == GURL(chrome::kAboutSrcDocURL) &&
+ validated_url == GURL(chrome::kAboutBlankURL)));
DCHECK_EQ(navigation_state_.IsMainFrame(frame_id), is_main_frame);
helpers::DispatchOnCompleted(web_contents(),
- validated_url,
+ navigation_state_.GetUrl(frame_id),
is_main_frame,
frame_num);
}
@@ -548,8 +557,12 @@ void WebNavigationTabObserver::DidFailLoad(
return;
if (navigation_state_.CanSendEvents(frame_id)) {
helpers::DispatchOnErrorOccurred(
- web_contents(), render_view_host->GetProcess()->GetID(), validated_url,
- frame_num, is_main_frame, error_code);
+ web_contents(),
+ render_view_host->GetProcess()->GetID(),
+ navigation_state_.GetUrl(frame_id),
+ frame_num,
+ is_main_frame,
+ error_code);
}
navigation_state_.SetErrorOccurredInFrame(frame_id);
}

Powered by Google App Engine
This is Rietveld 408576698