OLD | NEW |
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 "build/build_config.h" | 5 #include "build/build_config.h" |
6 | 6 |
7 #include "chrome/browser/ui/webui/ntp/new_tab_ui.h" | 7 #include "chrome/browser/ui/webui/ntp/new_tab_ui.h" |
8 | 8 |
9 #include <set> | 9 #include <set> |
10 | 10 |
(...skipping 22 matching lines...) Expand all Loading... |
33 #include "chrome/browser/ui/webui/ntp/favicon_webui_handler.h" | 33 #include "chrome/browser/ui/webui/ntp/favicon_webui_handler.h" |
34 #include "chrome/browser/ui/webui/ntp/foreign_session_handler.h" | 34 #include "chrome/browser/ui/webui/ntp/foreign_session_handler.h" |
35 #include "chrome/browser/ui/webui/ntp/most_visited_handler.h" | 35 #include "chrome/browser/ui/webui/ntp/most_visited_handler.h" |
36 #include "chrome/browser/ui/webui/ntp/new_tab_page_sync_handler.h" | 36 #include "chrome/browser/ui/webui/ntp/new_tab_page_sync_handler.h" |
37 #include "chrome/browser/ui/webui/ntp/ntp_login_handler.h" | 37 #include "chrome/browser/ui/webui/ntp/ntp_login_handler.h" |
38 #include "chrome/browser/ui/webui/ntp/ntp_resource_cache.h" | 38 #include "chrome/browser/ui/webui/ntp/ntp_resource_cache.h" |
39 #include "chrome/browser/ui/webui/ntp/ntp_resource_cache_factory.h" | 39 #include "chrome/browser/ui/webui/ntp/ntp_resource_cache_factory.h" |
40 #include "chrome/browser/ui/webui/ntp/shown_sections_handler.h" | 40 #include "chrome/browser/ui/webui/ntp/shown_sections_handler.h" |
41 #include "chrome/browser/ui/webui/ntp/value_helper.h" | 41 #include "chrome/browser/ui/webui/ntp/value_helper.h" |
42 #include "chrome/browser/ui/webui/theme_source.h" | 42 #include "chrome/browser/ui/webui/theme_source.h" |
| 43 #include "chrome/common/chrome_notification_types.h" |
43 #include "chrome/common/chrome_switches.h" | 44 #include "chrome/common/chrome_switches.h" |
44 #include "chrome/common/extensions/extension.h" | 45 #include "chrome/common/extensions/extension.h" |
45 #include "chrome/common/pref_names.h" | 46 #include "chrome/common/pref_names.h" |
46 #include "chrome/common/url_constants.h" | 47 #include "chrome/common/url_constants.h" |
47 #include "content/browser/browser_thread.h" | 48 #include "content/browser/browser_thread.h" |
48 #include "content/browser/renderer_host/render_view_host.h" | 49 #include "content/browser/renderer_host/render_view_host.h" |
49 #include "content/browser/tab_contents/tab_contents.h" | 50 #include "content/browser/tab_contents/tab_contents.h" |
50 #include "content/browser/user_metrics.h" | 51 #include "content/browser/user_metrics.h" |
51 #include "content/common/notification_service.h" | 52 #include "content/common/notification_service.h" |
52 #include "grit/generated_resources.h" | 53 #include "grit/generated_resources.h" |
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
259 } else if (event_name == "Tab.NewTabDOMContentLoaded") { | 260 } else if (event_name == "Tab.NewTabDOMContentLoaded") { |
260 UMA_HISTOGRAM_TIMES("Tab.NewTabDOMContentLoaded", duration); | 261 UMA_HISTOGRAM_TIMES("Tab.NewTabDOMContentLoaded", duration); |
261 } else if (event_name == "Tab.NewTabOnload") { | 262 } else if (event_name == "Tab.NewTabOnload") { |
262 UMA_HISTOGRAM_TIMES("Tab.NewTabOnload", duration); | 263 UMA_HISTOGRAM_TIMES("Tab.NewTabOnload", duration); |
263 // The new tab page has finished loading; reset it. | 264 // The new tab page has finished loading; reset it. |
264 tab->set_new_tab_start_time(base::TimeTicks()); | 265 tab->set_new_tab_start_time(base::TimeTicks()); |
265 } else { | 266 } else { |
266 NOTREACHED(); | 267 NOTREACHED(); |
267 } | 268 } |
268 NotificationService::current()->Notify( | 269 NotificationService::current()->Notify( |
269 NotificationType::METRIC_EVENT_DURATION, | 270 chrome::NOTIFICATION_METRIC_EVENT_DURATION, |
270 Source<TabContents>(tab), | 271 Source<TabContents>(tab), |
271 Details<MetricEventDurationDetails>(&details)); | 272 Details<MetricEventDurationDetails>(&details)); |
272 } | 273 } |
273 | 274 |
274 /////////////////////////////////////////////////////////////////////////////// | 275 /////////////////////////////////////////////////////////////////////////////// |
275 // NewTabPageSetHomePageHandler | 276 // NewTabPageSetHomePageHandler |
276 | 277 |
277 // Sets the new tab page as home page when user clicks on "make this my home | 278 // Sets the new tab page as home page when user clicks on "make this my home |
278 // page" link. | 279 // page" link. |
279 class NewTabPageSetHomePageHandler : public WebUIMessageHandler { | 280 class NewTabPageSetHomePageHandler : public WebUIMessageHandler { |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
332 | 333 |
333 void NewTabPageClosePromoHandler::RegisterMessages() { | 334 void NewTabPageClosePromoHandler::RegisterMessages() { |
334 web_ui_->RegisterMessageCallback("closePromo", NewCallback( | 335 web_ui_->RegisterMessageCallback("closePromo", NewCallback( |
335 this, &NewTabPageClosePromoHandler::HandleClosePromo)); | 336 this, &NewTabPageClosePromoHandler::HandleClosePromo)); |
336 } | 337 } |
337 | 338 |
338 void NewTabPageClosePromoHandler::HandleClosePromo( | 339 void NewTabPageClosePromoHandler::HandleClosePromo( |
339 const ListValue* args) { | 340 const ListValue* args) { |
340 web_ui_->GetProfile()->GetPrefs()->SetBoolean(prefs::kNTPPromoClosed, true); | 341 web_ui_->GetProfile()->GetPrefs()->SetBoolean(prefs::kNTPPromoClosed, true); |
341 NotificationService* service = NotificationService::current(); | 342 NotificationService* service = NotificationService::current(); |
342 service->Notify(NotificationType::PROMO_RESOURCE_STATE_CHANGED, | 343 service->Notify(chrome::NOTIFICATION_PROMO_RESOURCE_STATE_CHANGED, |
343 Source<NewTabPageClosePromoHandler>(this), | 344 Source<NewTabPageClosePromoHandler>(this), |
344 NotificationService::NoDetails()); | 345 NotificationService::NoDetails()); |
345 } | 346 } |
346 | 347 |
347 } // namespace | 348 } // namespace |
348 | 349 |
349 /////////////////////////////////////////////////////////////////////////////// | 350 /////////////////////////////////////////////////////////////////////////////// |
350 // NewTabUI | 351 // NewTabUI |
351 | 352 |
352 NewTabUI::NewTabUI(TabContents* contents) | 353 NewTabUI::NewTabUI(TabContents* contents) |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
402 | 403 |
403 // Initializing the CSS and HTML can require some CPU, so do it after | 404 // Initializing the CSS and HTML can require some CPU, so do it after |
404 // we've hooked up the most visited handler. This allows the DB query | 405 // we've hooked up the most visited handler. This allows the DB query |
405 // for the new tab thumbs to happen earlier. | 406 // for the new tab thumbs to happen earlier. |
406 InitializeCSSCaches(); | 407 InitializeCSSCaches(); |
407 NewTabHTMLSource* html_source = | 408 NewTabHTMLSource* html_source = |
408 new NewTabHTMLSource(GetProfile()->GetOriginalProfile()); | 409 new NewTabHTMLSource(GetProfile()->GetOriginalProfile()); |
409 contents->profile()->GetChromeURLDataManager()->AddDataSource(html_source); | 410 contents->profile()->GetChromeURLDataManager()->AddDataSource(html_source); |
410 | 411 |
411 // Listen for theme installation. | 412 // Listen for theme installation. |
412 registrar_.Add(this, NotificationType::BROWSER_THEME_CHANGED, | 413 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED, |
413 Source<ThemeService>( | 414 Source<ThemeService>( |
414 ThemeServiceFactory::GetForProfile(GetProfile()))); | 415 ThemeServiceFactory::GetForProfile(GetProfile()))); |
415 // Listen for bookmark bar visibility changes. | 416 // Listen for bookmark bar visibility changes. |
416 registrar_.Add(this, NotificationType::BOOKMARK_BAR_VISIBILITY_PREF_CHANGED, | 417 registrar_.Add(this, |
| 418 chrome::NOTIFICATION_BOOKMARK_BAR_VISIBILITY_PREF_CHANGED, |
417 NotificationService::AllSources()); | 419 NotificationService::AllSources()); |
418 } | 420 } |
419 | 421 |
420 NewTabUI::~NewTabUI() { | 422 NewTabUI::~NewTabUI() { |
421 } | 423 } |
422 | 424 |
423 // The timer callback. If enough time has elapsed since the last paint | 425 // The timer callback. If enough time has elapsed since the last paint |
424 // message, we say we're done painting; otherwise, we keep waiting. | 426 // message, we say we're done painting; otherwise, we keep waiting. |
425 void NewTabUI::PaintTimeout() { | 427 void NewTabUI::PaintTimeout() { |
426 // The amount of time there must be no painting for us to consider painting | 428 // The amount of time there must be no painting for us to consider painting |
427 // finished. Observed times are in the ~1200ms range on Windows. | 429 // finished. Observed times are in the ~1200ms range on Windows. |
428 base::TimeTicks now = base::TimeTicks::Now(); | 430 base::TimeTicks now = base::TimeTicks::Now(); |
429 if ((now - last_paint_) >= base::TimeDelta::FromMilliseconds(kTimeoutMs)) { | 431 if ((now - last_paint_) >= base::TimeDelta::FromMilliseconds(kTimeoutMs)) { |
430 // Painting has quieted down. Log this as the full time to run. | 432 // Painting has quieted down. Log this as the full time to run. |
431 base::TimeDelta load_time = last_paint_ - start_; | 433 base::TimeDelta load_time = last_paint_ - start_; |
432 int load_time_ms = static_cast<int>(load_time.InMilliseconds()); | 434 int load_time_ms = static_cast<int>(load_time.InMilliseconds()); |
433 NotificationService::current()->Notify( | 435 NotificationService::current()->Notify( |
434 NotificationType::INITIAL_NEW_TAB_UI_LOAD, | 436 chrome::NOTIFICATION_INITIAL_NEW_TAB_UI_LOAD, |
435 NotificationService::AllSources(), | 437 NotificationService::AllSources(), |
436 Details<int>(&load_time_ms)); | 438 Details<int>(&load_time_ms)); |
437 UMA_HISTOGRAM_TIMES("NewTabUI load", load_time); | 439 UMA_HISTOGRAM_TIMES("NewTabUI load", load_time); |
438 } else { | 440 } else { |
439 // Not enough quiet time has elapsed. | 441 // Not enough quiet time has elapsed. |
440 // Some more paints must've occurred since we set the timeout. | 442 // Some more paints must've occurred since we set the timeout. |
441 // Wait some more. | 443 // Wait some more. |
442 timer_.Start(base::TimeDelta::FromMilliseconds(kTimeoutMs), this, | 444 timer_.Start(base::TimeDelta::FromMilliseconds(kTimeoutMs), this, |
443 &NewTabUI::PaintTimeout); | 445 &NewTabUI::PaintTimeout); |
444 } | 446 } |
445 } | 447 } |
446 | 448 |
447 void NewTabUI::StartTimingPaint(RenderViewHost* render_view_host) { | 449 void NewTabUI::StartTimingPaint(RenderViewHost* render_view_host) { |
448 start_ = base::TimeTicks::Now(); | 450 start_ = base::TimeTicks::Now(); |
449 last_paint_ = start_; | 451 last_paint_ = start_; |
450 registrar_.Add(this, NotificationType::RENDER_WIDGET_HOST_DID_PAINT, | 452 registrar_.Add(this, content::NOTIFICATION_RENDER_WIDGET_HOST_DID_PAINT, |
451 Source<RenderWidgetHost>(render_view_host)); | 453 Source<RenderWidgetHost>(render_view_host)); |
452 timer_.Start(base::TimeDelta::FromMilliseconds(kTimeoutMs), this, | 454 timer_.Start(base::TimeDelta::FromMilliseconds(kTimeoutMs), this, |
453 &NewTabUI::PaintTimeout); | 455 &NewTabUI::PaintTimeout); |
454 | 456 |
455 } | 457 } |
456 void NewTabUI::RenderViewCreated(RenderViewHost* render_view_host) { | 458 void NewTabUI::RenderViewCreated(RenderViewHost* render_view_host) { |
457 StartTimingPaint(render_view_host); | 459 StartTimingPaint(render_view_host); |
458 } | 460 } |
459 | 461 |
460 void NewTabUI::RenderViewReused(RenderViewHost* render_view_host) { | 462 void NewTabUI::RenderViewReused(RenderViewHost* render_view_host) { |
461 StartTimingPaint(render_view_host); | 463 StartTimingPaint(render_view_host); |
462 } | 464 } |
463 | 465 |
464 void NewTabUI::Observe(NotificationType type, | 466 void NewTabUI::Observe(int type, |
465 const NotificationSource& source, | 467 const NotificationSource& source, |
466 const NotificationDetails& details) { | 468 const NotificationDetails& details) { |
467 switch (type.value) { | 469 switch (type) { |
468 case NotificationType::BROWSER_THEME_CHANGED: { | 470 case chrome::NOTIFICATION_BROWSER_THEME_CHANGED: { |
469 InitializeCSSCaches(); | 471 InitializeCSSCaches(); |
470 ListValue args; | 472 ListValue args; |
471 args.Append(Value::CreateStringValue( | 473 args.Append(Value::CreateStringValue( |
472 ThemeServiceFactory::GetForProfile(GetProfile())->HasCustomImage( | 474 ThemeServiceFactory::GetForProfile(GetProfile())->HasCustomImage( |
473 IDR_THEME_NTP_ATTRIBUTION) ? | 475 IDR_THEME_NTP_ATTRIBUTION) ? |
474 "true" : "false")); | 476 "true" : "false")); |
475 CallJavascriptFunction("themeChanged", args); | 477 CallJavascriptFunction("themeChanged", args); |
476 break; | 478 break; |
477 } | 479 } |
478 case NotificationType::BOOKMARK_BAR_VISIBILITY_PREF_CHANGED: { | 480 case chrome::NOTIFICATION_BOOKMARK_BAR_VISIBILITY_PREF_CHANGED: { |
479 if (GetProfile()->GetPrefs()->IsManagedPreference( | 481 if (GetProfile()->GetPrefs()->IsManagedPreference( |
480 prefs::kEnableBookmarkBar)) { | 482 prefs::kEnableBookmarkBar)) { |
481 break; | 483 break; |
482 } | 484 } |
483 if (GetProfile()->GetPrefs()->GetBoolean(prefs::kShowBookmarkBar)) | 485 if (GetProfile()->GetPrefs()->GetBoolean(prefs::kShowBookmarkBar)) |
484 CallJavascriptFunction("bookmarkBarAttached"); | 486 CallJavascriptFunction("bookmarkBarAttached"); |
485 else | 487 else |
486 CallJavascriptFunction("bookmarkBarDetached"); | 488 CallJavascriptFunction("bookmarkBarDetached"); |
487 break; | 489 break; |
488 } | 490 } |
489 case NotificationType::RENDER_WIDGET_HOST_DID_PAINT: { | 491 case content::NOTIFICATION_RENDER_WIDGET_HOST_DID_PAINT: { |
490 last_paint_ = base::TimeTicks::Now(); | 492 last_paint_ = base::TimeTicks::Now(); |
491 break; | 493 break; |
492 } | 494 } |
493 default: | 495 default: |
494 CHECK(false) << "Unexpected notification: " << type.value; | 496 CHECK(false) << "Unexpected notification: " << type; |
495 } | 497 } |
496 } | 498 } |
497 | 499 |
498 void NewTabUI::InitializeCSSCaches() { | 500 void NewTabUI::InitializeCSSCaches() { |
499 Profile* profile = GetProfile(); | 501 Profile* profile = GetProfile(); |
500 ThemeSource* theme = new ThemeSource(profile); | 502 ThemeSource* theme = new ThemeSource(profile); |
501 profile->GetChromeURLDataManager()->AddDataSource(theme); | 503 profile->GetChromeURLDataManager()->AddDataSource(theme); |
502 } | 504 } |
503 | 505 |
504 // static | 506 // static |
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
670 SendResponse(request_id, html_bytes); | 672 SendResponse(request_id, html_bytes); |
671 } | 673 } |
672 | 674 |
673 std::string NewTabUI::NewTabHTMLSource::GetMimeType(const std::string&) const { | 675 std::string NewTabUI::NewTabHTMLSource::GetMimeType(const std::string&) const { |
674 return "text/html"; | 676 return "text/html"; |
675 } | 677 } |
676 | 678 |
677 bool NewTabUI::NewTabHTMLSource::ShouldReplaceExistingSource() const { | 679 bool NewTabUI::NewTabHTMLSource::ShouldReplaceExistingSource() const { |
678 return false; | 680 return false; |
679 } | 681 } |
OLD | NEW |