Index: chrome/browser/tab_contents/tab_contents.cc |
diff --git a/chrome/browser/tab_contents/tab_contents.cc b/chrome/browser/tab_contents/tab_contents.cc |
index 486e52c73b415cc521128e9721e486a39036d56b..3c05931dc21ff7a7be48d943e229954b8ef68a68 100644 |
--- a/chrome/browser/tab_contents/tab_contents.cc |
+++ b/chrome/browser/tab_contents/tab_contents.cc |
@@ -2093,11 +2093,12 @@ void TabContents::OnSetSuggestResult(int32 page_id, const std::string& result) { |
void TabContents::DidStartProvisionalLoadForFrame( |
RenderViewHost* render_view_host, |
+ long long frame_id, |
bool is_main_frame, |
const GURL& url) { |
ProvisionalLoadDetails details(is_main_frame, |
controller_.IsURLInPageNavigation(url), |
- url, std::string(), false); |
+ url, std::string(), false, frame_id); |
NotificationService::current()->Notify( |
NotificationType::FRAME_PROVISIONAL_LOAD_START, |
Source<NavigationController>(&controller_), |
@@ -2156,6 +2157,7 @@ void TabContents::DidRunInsecureContent(const std::string& security_origin) { |
void TabContents::DidFailProvisionalLoadWithError( |
RenderViewHost* render_view_host, |
+ long long frame_id, |
bool is_main_frame, |
int error_code, |
const GURL& url, |
@@ -2201,7 +2203,7 @@ void TabContents::DidFailProvisionalLoadWithError( |
// Send out a notification that we failed a provisional load with an error. |
ProvisionalLoadDetails details(is_main_frame, |
controller_.IsURLInPageNavigation(url), |
- url, std::string(), false); |
+ url, std::string(), false, frame_id); |
details.set_error_code(error_code); |
NotificationService::current()->Notify( |
@@ -2429,9 +2431,14 @@ void TabContents::DidNavigate(RenderViewHost* rvh, |
// different from the NAV_ENTRY_COMMITTED notification which doesn't include |
// the actual URL navigated to and isn't sent for AUTO_SUBFRAME navigations. |
if (details.type != NavigationType::NAV_IGNORE) { |
- ProvisionalLoadDetails load_details(details.is_main_frame, |
- details.is_in_page, |
- params.url, std::string(), false); |
+ // For AUTO_SUBFRAME navigations, an event for the main frame is generated |
+ // that is not recorded in the navigation history. For the purpose of |
+ // tracking navigation events, we treat this event as a sub frame navigation |
+ // event. |
+ bool is_main_frame = did_navigate ? details.is_main_frame : false; |
+ ProvisionalLoadDetails load_details( |
+ is_main_frame, details.is_in_page, params.url, std::string(), false, |
+ params.frame_id); |
load_details.set_transition_type(params.transition); |
// Whether or not a page transition was triggered by going backward or |
// forward in the history is only stored in the navigation controller's |