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

Unified Diff: chrome/browser/dom_ui/new_tab_ui.cc

Issue 2805089: Add bookmark promo to NTP on first run. (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 side-by-side diff with in-line comments
Download patch
« 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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/dom_ui/new_tab_ui.cc
===================================================================
--- chrome/browser/dom_ui/new_tab_ui.cc (revision 52977)
+++ chrome/browser/dom_ui/new_tab_ui.cc (working copy)
@@ -15,7 +15,9 @@
#include "base/i18n/rtl.h"
#include "base/singleton.h"
#include "base/thread.h"
+#include "chrome/browser/bookmarks/bookmark_model.h"
#include "chrome/browser/browser.h"
+#include "chrome/browser/browser_window.h"
#include "chrome/browser/chrome_thread.h"
#include "chrome/browser/dom_ui/app_launcher_handler.h"
#include "chrome/browser/dom_ui/dom_ui_theme_source.h"
@@ -24,6 +26,7 @@
#include "chrome/browser/dom_ui/ntp_resource_cache.h"
#include "chrome/browser/dom_ui/shown_sections_handler.h"
#include "chrome/browser/dom_ui/tips_handler.h"
+#include "chrome/browser/importer/importer_data_types.h"
#include "chrome/browser/metrics/user_metrics.h"
#include "chrome/browser/pref_service.h"
#include "chrome/browser/profile.h"
@@ -38,6 +41,11 @@
#include "chrome/common/url_constants.h"
#include "grit/generated_resources.h"
+#if defined(OS_WIN)
+#include "chrome/browser/views/importer_view.h"
+#include "views/window/window.h"
+#endif
+
namespace {
// The number of recent bookmarks we show.
@@ -429,6 +437,43 @@
dom_ui_->CallJavascriptFunction(L"onHomePageSet", list_value);
}
+///////////////////////////////////////////////////////////////////////////////
+// NewTabPageImportBookmarksHandler
+class NewTabPageImportBookmarksHandler : public DOMMessageHandler {
+ public:
+ NewTabPageImportBookmarksHandler() {}
+ virtual ~NewTabPageImportBookmarksHandler() {}
+
+ // DOMMessageHandler implementation.
+ virtual void RegisterMessages();
+
+ // Callback for "importBookmarks".
+ void HandleImportBookmarks(const Value* value);
+ private:
+
+ DISALLOW_COPY_AND_ASSIGN(NewTabPageImportBookmarksHandler);
+};
+
+void NewTabPageImportBookmarksHandler::RegisterMessages() {
+ dom_ui_->RegisterMessageCallback("importBookmarks", NewCallback(
+ this, &NewTabPageImportBookmarksHandler::HandleImportBookmarks));
+}
+
+void NewTabPageImportBookmarksHandler::HandleImportBookmarks(
+ const Value* value) {
+ Browser* browser = NULL;
+ TabContentsDelegate* delegate = dom_ui_->tab_contents()->delegate();
+ if (delegate)
+ browser = delegate->GetBrowser();
+ DCHECK(browser);
+#if defined(OS_WIN)
+ views::Window::CreateChromeWindow(
+ browser->window()->GetNativeHandle(),
+ gfx::Rect(),
+ new ImporterView(dom_ui_->GetProfile(), importer::FAVORITES))->Show();
+#endif
+}
+
} // namespace
///////////////////////////////////////////////////////////////////////////////
@@ -454,6 +499,10 @@
static bool first_view = true;
if (first_view) {
+ Profile* profile = GetProfile();
+ profile->GetPrefs()->SetInteger(prefs::kNTPPromoViewsRemaining,
+ profile->GetPrefs()->GetInteger(prefs::kNTPPromoViewsRemaining) - 1);
+ profile->GetBookmarkModel()->AddObserver(this);
first_view = false;
}
@@ -476,6 +525,7 @@
}
AddMessageHandler((new NewTabPageSetHomePageHandler())->Attach(this));
+ AddMessageHandler((new NewTabPageImportBookmarksHandler())->Attach(this));
}
// Initializing the CSS and HTML can require some CPU, so do it after
@@ -500,6 +550,9 @@
}
NewTabUI::~NewTabUI() {
+ BookmarkModel* bookmark_model = GetProfile()->GetBookmarkModel();
+ if (bookmark_model)
+ bookmark_model->RemoveObserver(this);
}
void NewTabUI::RenderViewCreated(RenderViewHost* render_view_host) {
@@ -510,6 +563,14 @@
render_view_host->set_paint_observer(new PaintTimer);
}
+void NewTabUI::BookmarkNodeAdded(BookmarkModel* model,
+ const BookmarkNode* parent,
+ int index) {
+ // Stop showing the promo, and no longer observe the bookmark model.
+ GetProfile()->GetPrefs()->SetInteger(prefs::kNTPPromoViewsRemaining, 0);
+ GetProfile()->GetBookmarkModel()->RemoveObserver(this);
+}
+
void NewTabUI::Observe(NotificationType type,
const NotificationSource& source,
const NotificationDetails& details) {
« 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