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

Side by Side Diff: chrome/browser/dom_ui/new_tab_ui.cc

Issue 3053015: Revert bookmark bar promo CL, r52993... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 5 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
« no previous file with comments | « chrome/browser/dom_ui/new_tab_ui.h ('k') | chrome/browser/dom_ui/new_tab_ui_uitest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/dom_ui/new_tab_ui.h" 7 #include "chrome/browser/dom_ui/new_tab_ui.h"
8 8
9 #include <set> 9 #include <set>
10 10
11 #include "app/l10n_util.h" 11 #include "app/l10n_util.h"
12 #include "base/callback.h" 12 #include "base/callback.h"
13 #include "base/command_line.h" 13 #include "base/command_line.h"
14 #include "base/histogram.h" 14 #include "base/histogram.h"
15 #include "base/i18n/rtl.h" 15 #include "base/i18n/rtl.h"
16 #include "base/singleton.h" 16 #include "base/singleton.h"
17 #include "base/thread.h" 17 #include "base/thread.h"
18 #include "chrome/browser/bookmarks/bookmark_model.h"
19 #include "chrome/browser/browser.h" 18 #include "chrome/browser/browser.h"
20 #include "chrome/browser/browser_window.h"
21 #include "chrome/browser/chrome_thread.h" 19 #include "chrome/browser/chrome_thread.h"
22 #include "chrome/browser/dom_ui/app_launcher_handler.h" 20 #include "chrome/browser/dom_ui/app_launcher_handler.h"
23 #include "chrome/browser/dom_ui/dom_ui_theme_source.h" 21 #include "chrome/browser/dom_ui/dom_ui_theme_source.h"
24 #include "chrome/browser/dom_ui/most_visited_handler.h" 22 #include "chrome/browser/dom_ui/most_visited_handler.h"
25 #include "chrome/browser/dom_ui/new_tab_page_sync_handler.h" 23 #include "chrome/browser/dom_ui/new_tab_page_sync_handler.h"
26 #include "chrome/browser/dom_ui/ntp_resource_cache.h" 24 #include "chrome/browser/dom_ui/ntp_resource_cache.h"
27 #include "chrome/browser/dom_ui/shown_sections_handler.h" 25 #include "chrome/browser/dom_ui/shown_sections_handler.h"
28 #include "chrome/browser/dom_ui/tips_handler.h" 26 #include "chrome/browser/dom_ui/tips_handler.h"
29 #include "chrome/browser/importer/importer_data_types.h"
30 #include "chrome/browser/metrics/user_metrics.h" 27 #include "chrome/browser/metrics/user_metrics.h"
31 #include "chrome/browser/pref_service.h" 28 #include "chrome/browser/pref_service.h"
32 #include "chrome/browser/profile.h" 29 #include "chrome/browser/profile.h"
33 #include "chrome/browser/renderer_host/render_view_host.h" 30 #include "chrome/browser/renderer_host/render_view_host.h"
34 #include "chrome/browser/sessions/session_types.h" 31 #include "chrome/browser/sessions/session_types.h"
35 #include "chrome/browser/sessions/tab_restore_service.h" 32 #include "chrome/browser/sessions/tab_restore_service.h"
36 #include "chrome/browser/sync/profile_sync_service.h" 33 #include "chrome/browser/sync/profile_sync_service.h"
37 #include "chrome/browser/tab_contents/tab_contents.h" 34 #include "chrome/browser/tab_contents/tab_contents.h"
38 #include "chrome/common/chrome_switches.h" 35 #include "chrome/common/chrome_switches.h"
39 #include "chrome/common/notification_service.h" 36 #include "chrome/common/notification_service.h"
40 #include "chrome/common/pref_names.h" 37 #include "chrome/common/pref_names.h"
41 #include "chrome/common/url_constants.h" 38 #include "chrome/common/url_constants.h"
42 #include "grit/generated_resources.h" 39 #include "grit/generated_resources.h"
43 40
44 #if defined(OS_WIN)
45 #include "chrome/browser/views/importer_view.h"
46 #include "views/window/window.h"
47 #endif
48
49 namespace { 41 namespace {
50 42
51 // The number of recent bookmarks we show. 43 // The number of recent bookmarks we show.
52 const int kRecentBookmarks = 9; 44 const int kRecentBookmarks = 9;
53 45
54 // The number of search URLs to show. 46 // The number of search URLs to show.
55 const int kSearchURLs = 3; 47 const int kSearchURLs = 3;
56 48
57 // Strings sent to the page via jstemplates used to set the direction of the 49 // Strings sent to the page via jstemplates used to set the direction of the
58 // HTML document based on locale. 50 // HTML document based on locale.
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after
430 dom_ui_->GetProfile()->GetPrefs()->SetBoolean(prefs::kHomePageIsNewTabPage, 422 dom_ui_->GetProfile()->GetPrefs()->SetBoolean(prefs::kHomePageIsNewTabPage,
431 true); 423 true);
432 ListValue list_value; 424 ListValue list_value;
433 list_value.Append(new StringValue( 425 list_value.Append(new StringValue(
434 l10n_util::GetString(IDS_NEW_TAB_HOME_PAGE_SET_NOTIFICATION))); 426 l10n_util::GetString(IDS_NEW_TAB_HOME_PAGE_SET_NOTIFICATION)));
435 list_value.Append(new StringValue( 427 list_value.Append(new StringValue(
436 l10n_util::GetString(IDS_NEW_TAB_HOME_PAGE_HIDE_NOTIFICATION))); 428 l10n_util::GetString(IDS_NEW_TAB_HOME_PAGE_HIDE_NOTIFICATION)));
437 dom_ui_->CallJavascriptFunction(L"onHomePageSet", list_value); 429 dom_ui_->CallJavascriptFunction(L"onHomePageSet", list_value);
438 } 430 }
439 431
440 ///////////////////////////////////////////////////////////////////////////////
441 // NewTabPageImportBookmarksHandler
442 class NewTabPageImportBookmarksHandler : public DOMMessageHandler {
443 public:
444 NewTabPageImportBookmarksHandler() {}
445 virtual ~NewTabPageImportBookmarksHandler() {}
446
447 // DOMMessageHandler implementation.
448 virtual void RegisterMessages();
449
450 // Callback for "importBookmarks".
451 void HandleImportBookmarks(const Value* value);
452 private:
453
454 DISALLOW_COPY_AND_ASSIGN(NewTabPageImportBookmarksHandler);
455 };
456
457 void NewTabPageImportBookmarksHandler::RegisterMessages() {
458 dom_ui_->RegisterMessageCallback("importBookmarks", NewCallback(
459 this, &NewTabPageImportBookmarksHandler::HandleImportBookmarks));
460 }
461
462 void NewTabPageImportBookmarksHandler::HandleImportBookmarks(
463 const Value* value) {
464 Browser* browser = NULL;
465 TabContentsDelegate* delegate = dom_ui_->tab_contents()->delegate();
466 if (delegate)
467 browser = delegate->GetBrowser();
468 DCHECK(browser);
469 #if defined(OS_WIN)
470 views::Window::CreateChromeWindow(
471 browser->window()->GetNativeHandle(),
472 gfx::Rect(),
473 new ImporterView(dom_ui_->GetProfile(), importer::FAVORITES))->Show();
474 #endif
475 }
476
477 } // namespace 432 } // namespace
478 433
479 /////////////////////////////////////////////////////////////////////////////// 434 ///////////////////////////////////////////////////////////////////////////////
480 // NewTabUI 435 // NewTabUI
481 436
482 NewTabUI::NewTabUI(TabContents* contents) 437 NewTabUI::NewTabUI(TabContents* contents)
483 : DOMUI(contents) { 438 : DOMUI(contents) {
484 // Override some options on the DOM UI. 439 // Override some options on the DOM UI.
485 hide_favicon_ = true; 440 hide_favicon_ = true;
486 force_bookmark_bar_visible_ = true; 441 force_bookmark_bar_visible_ = true;
487 force_extension_shelf_visible_ = true; 442 force_extension_shelf_visible_ = true;
488 focus_location_bar_by_default_ = true; 443 focus_location_bar_by_default_ = true;
489 should_hide_url_ = true; 444 should_hide_url_ = true;
490 overridden_title_ = WideToUTF16Hack(l10n_util::GetString(IDS_NEW_TAB_TITLE)); 445 overridden_title_ = WideToUTF16Hack(l10n_util::GetString(IDS_NEW_TAB_TITLE));
491 446
492 // We count all link clicks as AUTO_BOOKMARK, so that site can be ranked more 447 // We count all link clicks as AUTO_BOOKMARK, so that site can be ranked more
493 // highly. Note this means we're including clicks on not only most visited 448 // highly. Note this means we're including clicks on not only most visited
494 // thumbnails, but also clicks on recently bookmarked. 449 // thumbnails, but also clicks on recently bookmarked.
495 link_transition_type_ = PageTransition::AUTO_BOOKMARK; 450 link_transition_type_ = PageTransition::AUTO_BOOKMARK;
496 451
497 if (NewTabUI::FirstRunDisabled()) 452 if (NewTabUI::FirstRunDisabled())
498 NewTabHTMLSource::set_first_run(false); 453 NewTabHTMLSource::set_first_run(false);
499 454
500 static bool first_view = true; 455 static bool first_view = true;
501 if (first_view) { 456 if (first_view) {
502 Profile* profile = GetProfile();
503 profile->GetPrefs()->SetInteger(prefs::kNTPPromoViewsRemaining,
504 profile->GetPrefs()->GetInteger(prefs::kNTPPromoViewsRemaining) - 1);
505 profile->GetBookmarkModel()->AddObserver(this);
506 first_view = false; 457 first_view = false;
507 } 458 }
508 459
509 if (!GetProfile()->IsOffTheRecord()) { 460 if (!GetProfile()->IsOffTheRecord()) {
510 PrefService* pref_service = GetProfile()->GetPrefs(); 461 PrefService* pref_service = GetProfile()->GetPrefs();
511 AddMessageHandler((new ShownSectionsHandler(pref_service))->Attach(this)); 462 AddMessageHandler((new ShownSectionsHandler(pref_service))->Attach(this));
512 AddMessageHandler((new MostVisitedHandler())->Attach(this)); 463 AddMessageHandler((new MostVisitedHandler())->Attach(this));
513 AddMessageHandler((new RecentlyClosedTabsHandler())->Attach(this)); 464 AddMessageHandler((new RecentlyClosedTabsHandler())->Attach(this));
514 AddMessageHandler((new MetricsHandler())->Attach(this)); 465 AddMessageHandler((new MetricsHandler())->Attach(this));
515 if (WebResourcesEnabled()) 466 if (WebResourcesEnabled())
516 AddMessageHandler((new TipsHandler())->Attach(this)); 467 AddMessageHandler((new TipsHandler())->Attach(this));
517 if (GetProfile()->IsSyncAccessible()) 468 if (GetProfile()->IsSyncAccessible())
518 AddMessageHandler((new NewTabPageSyncHandler())->Attach(this)); 469 AddMessageHandler((new NewTabPageSyncHandler())->Attach(this));
519 if (Extension::AppsAreEnabled()) { 470 if (Extension::AppsAreEnabled()) {
520 ExtensionsService* service = GetProfile()->GetExtensionsService(); 471 ExtensionsService* service = GetProfile()->GetExtensionsService();
521 // We might not have an ExtensionsService (on ChromeOS when not logged in 472 // We might not have an ExtensionsService (on ChromeOS when not logged in
522 // for example). 473 // for example).
523 if (service) 474 if (service)
524 AddMessageHandler((new AppLauncherHandler(service))->Attach(this)); 475 AddMessageHandler((new AppLauncherHandler(service))->Attach(this));
525 } 476 }
526 477
527 AddMessageHandler((new NewTabPageSetHomePageHandler())->Attach(this)); 478 AddMessageHandler((new NewTabPageSetHomePageHandler())->Attach(this));
528 AddMessageHandler((new NewTabPageImportBookmarksHandler())->Attach(this));
529 } 479 }
530 480
531 // Initializing the CSS and HTML can require some CPU, so do it after 481 // Initializing the CSS and HTML can require some CPU, so do it after
532 // we've hooked up the most visited handler. This allows the DB query 482 // we've hooked up the most visited handler. This allows the DB query
533 // for the new tab thumbs to happen earlier. 483 // for the new tab thumbs to happen earlier.
534 InitializeCSSCaches(); 484 InitializeCSSCaches();
535 NewTabHTMLSource* html_source = 485 NewTabHTMLSource* html_source =
536 new NewTabHTMLSource(GetProfile()->GetOriginalProfile()); 486 new NewTabHTMLSource(GetProfile()->GetOriginalProfile());
537 ChromeThread::PostTask( 487 ChromeThread::PostTask(
538 ChromeThread::IO, FROM_HERE, 488 ChromeThread::IO, FROM_HERE,
539 NewRunnableMethod( 489 NewRunnableMethod(
540 Singleton<ChromeURLDataManager>::get(), 490 Singleton<ChromeURLDataManager>::get(),
541 &ChromeURLDataManager::AddDataSource, 491 &ChromeURLDataManager::AddDataSource,
542 make_scoped_refptr(html_source))); 492 make_scoped_refptr(html_source)));
543 493
544 // Listen for theme installation. 494 // Listen for theme installation.
545 registrar_.Add(this, NotificationType::BROWSER_THEME_CHANGED, 495 registrar_.Add(this, NotificationType::BROWSER_THEME_CHANGED,
546 NotificationService::AllSources()); 496 NotificationService::AllSources());
547 // Listen for bookmark bar visibility changes. 497 // Listen for bookmark bar visibility changes.
548 registrar_.Add(this, NotificationType::BOOKMARK_BAR_VISIBILITY_PREF_CHANGED, 498 registrar_.Add(this, NotificationType::BOOKMARK_BAR_VISIBILITY_PREF_CHANGED,
549 NotificationService::AllSources()); 499 NotificationService::AllSources());
550 } 500 }
551 501
552 NewTabUI::~NewTabUI() { 502 NewTabUI::~NewTabUI() {
553 BookmarkModel* bookmark_model = GetProfile()->GetBookmarkModel();
554 if (bookmark_model)
555 bookmark_model->RemoveObserver(this);
556 } 503 }
557 504
558 void NewTabUI::RenderViewCreated(RenderViewHost* render_view_host) { 505 void NewTabUI::RenderViewCreated(RenderViewHost* render_view_host) {
559 render_view_host->set_paint_observer(new PaintTimer); 506 render_view_host->set_paint_observer(new PaintTimer);
560 } 507 }
561 508
562 void NewTabUI::RenderViewReused(RenderViewHost* render_view_host) { 509 void NewTabUI::RenderViewReused(RenderViewHost* render_view_host) {
563 render_view_host->set_paint_observer(new PaintTimer); 510 render_view_host->set_paint_observer(new PaintTimer);
564 } 511 }
565 512
566 void NewTabUI::BookmarkNodeAdded(BookmarkModel* model,
567 const BookmarkNode* parent,
568 int index) {
569 // Stop showing the promo, and no longer observe the bookmark model.
570 GetProfile()->GetPrefs()->SetInteger(prefs::kNTPPromoViewsRemaining, 0);
571 GetProfile()->GetBookmarkModel()->RemoveObserver(this);
572 }
573
574 void NewTabUI::Observe(NotificationType type, 513 void NewTabUI::Observe(NotificationType type,
575 const NotificationSource& source, 514 const NotificationSource& source,
576 const NotificationDetails& details) { 515 const NotificationDetails& details) {
577 if (NotificationType::BROWSER_THEME_CHANGED == type) { 516 if (NotificationType::BROWSER_THEME_CHANGED == type) {
578 InitializeCSSCaches(); 517 InitializeCSSCaches();
579 CallJavascriptFunction(L"themeChanged"); 518 CallJavascriptFunction(L"themeChanged");
580 } else if (NotificationType::BOOKMARK_BAR_VISIBILITY_PREF_CHANGED) { 519 } else if (NotificationType::BOOKMARK_BAR_VISIBILITY_PREF_CHANGED) {
581 if (GetProfile()->GetPrefs()->GetBoolean(prefs::kShowBookmarkBar)) 520 if (GetProfile()->GetPrefs()->GetBoolean(prefs::kShowBookmarkBar))
582 CallJavascriptFunction(L"bookmarkBarAttached"); 521 CallJavascriptFunction(L"bookmarkBarAttached");
583 else 522 else
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
710 // URL from the new tab page, but in any case it's an error. 649 // URL from the new tab page, but in any case it's an error.
711 NOTREACHED(); 650 NOTREACHED();
712 return; 651 return;
713 } 652 }
714 653
715 scoped_refptr<RefCountedBytes> html_bytes = 654 scoped_refptr<RefCountedBytes> html_bytes =
716 profile_->GetNTPResourceCache()->GetNewTabHTML(is_off_the_record); 655 profile_->GetNTPResourceCache()->GetNewTabHTML(is_off_the_record);
717 656
718 SendResponse(request_id, html_bytes); 657 SendResponse(request_id, html_bytes);
719 } 658 }
OLDNEW
« no previous file with comments | « chrome/browser/dom_ui/new_tab_ui.h ('k') | chrome/browser/dom_ui/new_tab_ui_uitest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698