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

Side by Side Diff: content/browser/tab_contents/tab_contents.cc

Issue 7036019: Enabling page visibility api in the chrome browser. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Created 9 years, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/tab_contents/tab_contents.h" 5 #include "content/browser/tab_contents/tab_contents.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 if (entry.restore_type() == NavigationEntry::RESTORE_LAST_SESSION && 173 if (entry.restore_type() == NavigationEntry::RESTORE_LAST_SESSION &&
174 profile->DidLastSessionExitCleanly()) 174 profile->DidLastSessionExitCleanly())
175 return ViewMsg_Navigate_Type::RESTORE; 175 return ViewMsg_Navigate_Type::RESTORE;
176 176
177 return ViewMsg_Navigate_Type::NORMAL; 177 return ViewMsg_Navigate_Type::NORMAL;
178 } 178 }
179 179
180 void MakeNavigateParams(const NavigationEntry& entry, 180 void MakeNavigateParams(const NavigationEntry& entry,
181 const NavigationController& controller, 181 const NavigationController& controller,
182 NavigationController::ReloadType reload_type, 182 NavigationController::ReloadType reload_type,
183 bool is_hidden,
183 ViewMsg_Navigate_Params* params) { 184 ViewMsg_Navigate_Params* params) {
184 params->page_id = entry.page_id(); 185 params->page_id = entry.page_id();
185 params->pending_history_list_offset = controller.GetIndexOfEntry(&entry); 186 params->pending_history_list_offset = controller.GetIndexOfEntry(&entry);
186 params->current_history_list_offset = controller.last_committed_entry_index(); 187 params->current_history_list_offset = controller.last_committed_entry_index();
187 params->current_history_list_length = controller.entry_count(); 188 params->current_history_list_length = controller.entry_count();
188 params->url = entry.url(); 189 params->url = entry.url();
189 params->referrer = entry.referrer(); 190 params->referrer = entry.referrer();
190 params->transition = entry.transition_type(); 191 params->transition = entry.transition_type();
191 params->state = entry.content_state(); 192 params->state = entry.content_state();
192 params->navigation_type = 193 params->navigation_type =
193 GetNavigationType(controller.profile(), entry, reload_type); 194 GetNavigationType(controller.profile(), entry, reload_type);
195 params->is_hidden = is_hidden;
194 params->request_time = base::Time::Now(); 196 params->request_time = base::Time::Now();
195 } 197 }
196 198
197 } // namespace 199 } // namespace
198 200
199 201
200 // TabContents ---------------------------------------------------------------- 202 // TabContents ----------------------------------------------------------------
201 203
202 TabContents::TabContents(Profile* profile, 204 TabContents::TabContents(Profile* profile,
203 SiteInstance* site_instance, 205 SiteInstance* site_instance,
(...skipping 25 matching lines...) Expand all
229 #endif 231 #endif
230 suppress_javascript_messages_(false), 232 suppress_javascript_messages_(false),
231 is_showing_before_unload_dialog_(false), 233 is_showing_before_unload_dialog_(false),
232 opener_web_ui_type_(WebUI::kNoWebUI), 234 opener_web_ui_type_(WebUI::kNoWebUI),
233 closed_by_user_gesture_(false), 235 closed_by_user_gesture_(false),
234 minimum_zoom_percent_( 236 minimum_zoom_percent_(
235 static_cast<int>(WebKit::WebView::minTextSizeMultiplier * 100)), 237 static_cast<int>(WebKit::WebView::minTextSizeMultiplier * 100)),
236 maximum_zoom_percent_( 238 maximum_zoom_percent_(
237 static_cast<int>(WebKit::WebView::maxTextSizeMultiplier * 100)), 239 static_cast<int>(WebKit::WebView::maxTextSizeMultiplier * 100)),
238 temporary_zoom_settings_(false), 240 temporary_zoom_settings_(false),
239 content_restrictions_(0) { 241 content_restrictions_(0),
242 is_initially_hidden_(false) {
240 renderer_preferences_util::UpdateFromSystemSettings( 243 renderer_preferences_util::UpdateFromSystemSettings(
241 &renderer_preferences_, profile); 244 &renderer_preferences_, profile);
242 245
243 render_manager_.Init(profile, site_instance, routing_id); 246 render_manager_.Init(profile, site_instance, routing_id);
244 247
245 // We have the initial size of the view be based on the size of the passed in 248 // We have the initial size of the view be based on the size of the passed in
246 // tab contents (normally a tab from the same window). 249 // tab contents (normally a tab from the same window).
247 view_->CreateView(base_tab_contents ? 250 view_->CreateView(base_tab_contents ?
248 base_tab_contents->view()->GetContainerSize() : gfx::Size()); 251 base_tab_contents->view()->GetContainerSize() : gfx::Size());
249 252
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
501 #if defined(OS_MACOSX) 504 #if defined(OS_MACOSX)
502 rwhv->SetActive(true); 505 rwhv->SetActive(true);
503 #endif 506 #endif
504 } 507 }
505 508
506 WebCacheManager::GetInstance()->ObserveActivity(GetRenderProcessHost()->id()); 509 WebCacheManager::GetInstance()->ObserveActivity(GetRenderProcessHost()->id());
507 last_selected_time_ = base::TimeTicks::Now(); 510 last_selected_time_ = base::TimeTicks::Now();
508 } 511 }
509 512
510 void TabContents::WasHidden() { 513 void TabContents::WasHidden() {
514 is_initially_hidden_ = true;
515
511 if (!capturing_contents()) { 516 if (!capturing_contents()) {
512 // |render_view_host()| can be NULL if the user middle clicks a link to open 517 // |render_view_host()| can be NULL if the user middle clicks a link to open
513 // a tab in then background, then closes the tab before selecting it. This 518 // a tab in then background, then closes the tab before selecting it. This
514 // is because closing the tab calls TabContents::Destroy(), which removes 519 // is because closing the tab calls TabContents::Destroy(), which removes
515 // the |render_view_host()|; then when we actually destroy the window, 520 // the |render_view_host()|; then when we actually destroy the window,
516 // OnWindowPosChanged() notices and calls HideContents() (which calls us). 521 // OnWindowPosChanged() notices and calls HideContents() (which calls us).
517 RenderWidgetHostView* rwhv = GetRenderWidgetHostView(); 522 RenderWidgetHostView* rwhv = GetRenderWidgetHostView();
518 if (rwhv) 523 if (rwhv)
519 rwhv->WasHidden(); 524 rwhv->WasHidden();
520 } 525 }
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
601 devtools_manager->OnNavigatingToPendingEntry(render_view_host(), 606 devtools_manager->OnNavigatingToPendingEntry(render_view_host(),
602 dest_render_view_host, 607 dest_render_view_host,
603 entry.url()); 608 entry.url());
604 } 609 }
605 610
606 // Used for page load time metrics. 611 // Used for page load time metrics.
607 current_load_start_ = base::TimeTicks::Now(); 612 current_load_start_ = base::TimeTicks::Now();
608 613
609 // Navigate in the desired RenderViewHost. 614 // Navigate in the desired RenderViewHost.
610 ViewMsg_Navigate_Params navigate_params; 615 ViewMsg_Navigate_Params navigate_params;
611 MakeNavigateParams(entry, controller_, reload_type, &navigate_params); 616 MakeNavigateParams(entry, controller_, reload_type,
617 IsHidden(), &navigate_params);
612 if (delegate_) { 618 if (delegate_) {
613 navigate_params.extra_headers = 619 navigate_params.extra_headers =
614 delegate_->GetNavigationHeaders(navigate_params.url); 620 delegate_->GetNavigationHeaders(navigate_params.url);
615 } 621 }
616 dest_render_view_host->Navigate(navigate_params); 622 dest_render_view_host->Navigate(navigate_params);
617 623
618 if (entry.page_id() == -1) { 624 if (entry.page_id() == -1) {
619 // HACK!! This code suppresses javascript: URLs from being added to 625 // HACK!! This code suppresses javascript: URLs from being added to
620 // session history, which is what we want to do for javascript: URLs that 626 // session history, which is what we want to do for javascript: URLs that
621 // do not generate content. What we really need is a message from the 627 // do not generate content. What we really need is a message from the
(...skipping 1411 matching lines...) Expand 10 before | Expand all | Expand 10 after
2033 2039
2034 void TabContents::RequestDesktopNotificationPermission( 2040 void TabContents::RequestDesktopNotificationPermission(
2035 const GURL& source_origin, int callback_context) { 2041 const GURL& source_origin, int callback_context) {
2036 DesktopNotificationService* service = 2042 DesktopNotificationService* service =
2037 DesktopNotificationServiceFactory::GetForProfile(profile()); 2043 DesktopNotificationServiceFactory::GetForProfile(profile());
2038 service->RequestPermission( 2044 service->RequestPermission(
2039 source_origin, GetRenderProcessHost()->id(), 2045 source_origin, GetRenderProcessHost()->id(),
2040 render_view_host()->routing_id(), callback_context, this); 2046 render_view_host()->routing_id(), callback_context, this);
2041 } 2047 }
2042 2048
2049 bool TabContents::IsHidden() const {
2050 if (delegate())
2051 return delegate()->IsHidden(this);
2052 return is_initially_hidden_;
2053 }
2054
2043 void TabContents::BeforeUnloadFiredFromRenderManager( 2055 void TabContents::BeforeUnloadFiredFromRenderManager(
2044 bool proceed, 2056 bool proceed,
2045 bool* proceed_to_fire_unload) { 2057 bool* proceed_to_fire_unload) {
2046 if (delegate()) 2058 if (delegate())
2047 delegate()->BeforeUnloadFired(this, proceed, proceed_to_fire_unload); 2059 delegate()->BeforeUnloadFired(this, proceed, proceed_to_fire_unload);
2048 } 2060 }
2049 2061
2050 void TabContents::DidStartLoadingFromRenderManager( 2062 void TabContents::DidStartLoadingFromRenderManager(
2051 RenderViewHost* render_view_host) { 2063 RenderViewHost* render_view_host) {
2052 DidStartLoading(); 2064 DidStartLoading();
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
2201 2213
2202 void TabContents::CreateViewAndSetSizeForRVH(RenderViewHost* rvh) { 2214 void TabContents::CreateViewAndSetSizeForRVH(RenderViewHost* rvh) {
2203 RenderWidgetHostView* rwh_view = view()->CreateViewForWidget(rvh); 2215 RenderWidgetHostView* rwh_view = view()->CreateViewForWidget(rvh);
2204 rwh_view->SetSize(view()->GetContainerSize()); 2216 rwh_view->SetSize(view()->GetContainerSize());
2205 } 2217 }
2206 2218
2207 void TabContents::OnOnlineStateChanged(bool online) { 2219 void TabContents::OnOnlineStateChanged(bool online) {
2208 render_view_host()->Send(new ViewMsg_NetworkStateChanged( 2220 render_view_host()->Send(new ViewMsg_NetworkStateChanged(
2209 render_view_host()->routing_id(), online)); 2221 render_view_host()->routing_id(), online));
2210 } 2222 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698