Index: content/browser/tab_contents/tab_contents.cc |
diff --git a/content/browser/tab_contents/tab_contents.cc b/content/browser/tab_contents/tab_contents.cc |
index b4aee7c962069e04e147b0f2dde59dcc90f04a92..62f98826a4358ddd1990e9b095ad0f1786282cf9 100644 |
--- a/content/browser/tab_contents/tab_contents.cc |
+++ b/content/browser/tab_contents/tab_contents.cc |
@@ -180,6 +180,7 @@ ViewMsg_Navigate_Type::Value GetNavigationType( |
void MakeNavigateParams(const NavigationEntry& entry, |
const NavigationController& controller, |
NavigationController::ReloadType reload_type, |
+ bool is_hidden, |
ViewMsg_Navigate_Params* params) { |
params->page_id = entry.page_id(); |
params->pending_history_list_offset = controller.GetIndexOfEntry(&entry); |
@@ -191,6 +192,7 @@ void MakeNavigateParams(const NavigationEntry& entry, |
params->state = entry.content_state(); |
params->navigation_type = |
GetNavigationType(controller.profile(), entry, reload_type); |
+ params->is_hidden = is_hidden; |
params->request_time = base::Time::Now(); |
} |
@@ -236,7 +238,8 @@ TabContents::TabContents(Profile* profile, |
maximum_zoom_percent_( |
static_cast<int>(WebKit::WebView::maxTextSizeMultiplier * 100)), |
temporary_zoom_settings_(false), |
- content_restrictions_(0) { |
+ content_restrictions_(0), |
+ is_initially_hidden_(false) { |
renderer_preferences_util::UpdateFromSystemSettings( |
&renderer_preferences_, profile); |
@@ -508,6 +511,8 @@ void TabContents::DidBecomeSelected() { |
} |
void TabContents::WasHidden() { |
+ is_initially_hidden_ = true; |
+ |
if (!capturing_contents()) { |
// |render_view_host()| can be NULL if the user middle clicks a link to open |
// a tab in then background, then closes the tab before selecting it. This |
@@ -608,7 +613,8 @@ bool TabContents::NavigateToEntry( |
// Navigate in the desired RenderViewHost. |
ViewMsg_Navigate_Params navigate_params; |
- MakeNavigateParams(entry, controller_, reload_type, &navigate_params); |
+ MakeNavigateParams(entry, controller_, reload_type, |
+ IsHidden(), &navigate_params); |
if (delegate_) { |
navigate_params.extra_headers = |
delegate_->GetNavigationHeaders(navigate_params.url); |
@@ -2040,6 +2046,12 @@ void TabContents::RequestDesktopNotificationPermission( |
render_view_host()->routing_id(), callback_context, this); |
} |
+bool TabContents::IsHidden() const { |
+ if (delegate()) |
+ return delegate()->IsHidden(this); |
+ return is_initially_hidden_; |
+} |
+ |
void TabContents::BeforeUnloadFiredFromRenderManager( |
bool proceed, |
bool* proceed_to_fire_unload) { |