| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_UI_WEBUI_NTP_NEW_TAB_PAGE_HANDLER_H_ |
| #define CHROME_BROWSER_UI_WEBUI_NTP_NEW_TAB_PAGE_HANDLER_H_ |
| |
| #include "base/memory/weak_ptr.h" |
| #include "base/values.h" |
| #include "chrome/browser/chrome_notification_types.h" |
| #include "content/public/browser/web_ui_message_handler.h" |
| |
| class PrefRegistrySimple; |
| class Profile; |
| |
| namespace user_prefs { |
| class PrefRegistrySyncable; |
| } |
| |
| // Handler for general New Tab Page functionality that does not belong in a |
| // more specialized handler. |
| class NewTabPageHandler : public content::WebUIMessageHandler, |
| public base::SupportsWeakPtr<NewTabPageHandler> { |
| public: |
| NewTabPageHandler(); |
| |
| // Register NTP per-profile preferences. |
| static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); |
| |
| // Registers values (strings etc.) for the page. |
| static void GetLocalizedValues(Profile* profile, DictionaryValue* values); |
| |
| private: |
| virtual ~NewTabPageHandler(); |
| |
| // WebUIMessageHandler implementation. |
| virtual void RegisterMessages() OVERRIDE; |
| |
| // Callback for "notificationPromoClosed". No arguments. |
| void HandleNotificationPromoClosed(const ListValue* args); |
| |
| // Callback for "notificationPromoViewed". No arguments. |
| void HandleNotificationPromoViewed(const ListValue* args); |
| |
| // Callback for "notificationPromoLinkClicked". No arguments. |
| void HandleNotificationPromoLinkClicked(const ListValue* args); |
| |
| // Callback for "bubblePromoClosed". No arguments. |
| void HandleBubblePromoClosed(const ListValue* args); |
| |
| // Callback for "bubblePromoViewed". No arguments. |
| void HandleBubblePromoViewed(const ListValue* args); |
| |
| // Callback for "bubblePromoLinkClicked". No arguments. |
| void HandleBubblePromoLinkClicked(const ListValue* args); |
| |
| // Callback for "pageSelected". |
| void HandlePageSelected(const ListValue* args); |
| |
| // Callback for "logTimeToClick". |
| void HandleLogTimeToClick(const base::ListValue* args); |
| |
| // Tracks the number of times the user has switches pages (for UMA). |
| size_t page_switch_count_; |
| |
| // The purpose of this enum is to track which page on the NTP is showing. |
| // The lower 10 bits of kNtpShownPage are used for the index within the page |
| // group, and the rest of the bits are used for the page group ID (defined |
| // here). |
| static const int kPageIdOffset = 10; |
| enum { |
| INDEX_MASK = (1 << kPageIdOffset) - 1, |
| MOST_VISITED_PAGE_ID = 1 << kPageIdOffset, |
| APPS_PAGE_ID = 2 << kPageIdOffset, |
| BOOKMARKS_PAGE_ID = 3 << kPageIdOffset, |
| SUGGESTIONS_PAGE_ID = 4 << kPageIdOffset, |
| LAST_PAGE_ID = SUGGESTIONS_PAGE_ID |
| }; |
| static const int kHistogramEnumerationMax = |
| (LAST_PAGE_ID >> kPageIdOffset) + 1; |
| |
| // Helper to send out promo resource change notification. |
| void Notify(chrome::NotificationType notification_type); |
| |
| DISALLOW_COPY_AND_ASSIGN(NewTabPageHandler); |
| }; |
| |
| #endif // CHROME_BROWSER_UI_WEBUI_NTP_NEW_TAB_PAGE_HANDLER_H_ |