| Index: chrome/browser/ui/webui/ntp/new_tab_page_handler.cc
|
| ===================================================================
|
| --- chrome/browser/ui/webui/ntp/new_tab_page_handler.cc (revision 103881)
|
| +++ chrome/browser/ui/webui/ntp/new_tab_page_handler.cc (working copy)
|
| @@ -6,6 +6,9 @@
|
|
|
| #include "base/bind.h"
|
| #include "base/bind_helpers.h"
|
| +#include "base/metrics/field_trial.h"
|
| +#include "base/metrics/histogram.h"
|
| +#include "chrome/browser/extensions/default_apps_trial.h"
|
| #include "chrome/browser/prefs/pref_service.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/sync/profile_sync_service.h"
|
| @@ -24,27 +27,47 @@
|
| static const char kNTP4IntroURL[] =
|
| "http://www.google.com/support/chrome/bin/answer.py?answer=95451";
|
|
|
| +WebUIMessageHandler* NewTabPageHandler::Attach(WebUI* web_ui) {
|
| + // Record an open of the NTP with its default page type.
|
| + PrefService* prefs = Profile::FromWebUI(web_ui)->GetPrefs();
|
| + int shown_page_type = prefs->GetInteger(prefs::kNTPShownPage) >>
|
| + PAGE_ID_OFFSET;
|
| + UMA_HISTOGRAM_ENUMERATION("NtpHandler.AttachShownPageType",
|
| + shown_page_type, 4);
|
| +
|
| + static bool default_apps_trial_exists =
|
| + base::FieldTrialList::TrialExists(kDefaultAppsTrial_Name);
|
| + if (default_apps_trial_exists) {
|
| + UMA_HISTOGRAM_ENUMERATION(
|
| + base::FieldTrial::MakeName("NtpHandler.AttachShownPageType",
|
| + kDefaultAppsTrial_Name),
|
| + shown_page_type, 4);
|
| + }
|
| +
|
| + return WebUIMessageHandler::Attach(web_ui);
|
| +}
|
| +
|
| void NewTabPageHandler::RegisterMessages() {
|
| - web_ui_->RegisterMessageCallback("closeNotificationPromo",
|
| + web_ui()->RegisterMessageCallback("closeNotificationPromo",
|
| base::Bind(&NewTabPageHandler::HandleCloseNotificationPromo,
|
| base::Unretained(this)));
|
| - web_ui_->RegisterMessageCallback("notificationPromoViewed",
|
| + web_ui()->RegisterMessageCallback("notificationPromoViewed",
|
| base::Bind(&NewTabPageHandler::HandleNotificationPromoViewed,
|
| base::Unretained(this)));
|
| - web_ui_->RegisterMessageCallback("pageSelected",
|
| + web_ui()->RegisterMessageCallback("pageSelected",
|
| base::Bind(&NewTabPageHandler::HandlePageSelected,
|
| base::Unretained(this)));
|
| - web_ui_->RegisterMessageCallback("introMessageDismissed",
|
| + web_ui()->RegisterMessageCallback("introMessageDismissed",
|
| base::Bind(&NewTabPageHandler::HandleIntroMessageDismissed,
|
| base::Unretained(this)));
|
| - web_ui_->RegisterMessageCallback("introMessageSeen",
|
| + web_ui()->RegisterMessageCallback("introMessageSeen",
|
| base::Bind(&NewTabPageHandler::HandleIntroMessageSeen,
|
| base::Unretained(this)));
|
| }
|
|
|
| void NewTabPageHandler::HandleCloseNotificationPromo(const ListValue* args) {
|
| NotificationPromo notification_promo(
|
| - Profile::FromWebUI(web_ui_)->GetPrefs(), NULL);
|
| + Profile::FromWebUI(web_ui())->GetPrefs(), NULL);
|
| notification_promo.HandleClosed();
|
| NotifyPromoResourceChanged();
|
| }
|
| @@ -66,17 +89,30 @@
|
| CHECK(args->GetDouble(1, &index_double));
|
| int index = static_cast<int>(index_double);
|
|
|
| - PrefService* prefs = Profile::FromWebUI(web_ui_)->GetPrefs();
|
| + PrefService* prefs = Profile::FromWebUI(web_ui())->GetPrefs();
|
| prefs->SetInteger(prefs::kNTPShownPage, page_id | index);
|
| +
|
| + int shown_page_type = page_id >> PAGE_ID_OFFSET;
|
| + UMA_HISTOGRAM_ENUMERATION("NtpHandler.SelectedShownPageType",
|
| + shown_page_type, 4);
|
| +
|
| + static bool default_apps_trial_exists =
|
| + base::FieldTrialList::TrialExists(kDefaultAppsTrial_Name);
|
| + if (default_apps_trial_exists) {
|
| + UMA_HISTOGRAM_ENUMERATION(
|
| + base::FieldTrial::MakeName("NtpHandler.SelectedShownPageType",
|
| + kDefaultAppsTrial_Name),
|
| + shown_page_type, 4);
|
| + }
|
| }
|
|
|
| void NewTabPageHandler::HandleIntroMessageDismissed(const ListValue* args) {
|
| - PrefService* prefs = Profile::FromWebUI(web_ui_)->GetPrefs();
|
| + PrefService* prefs = Profile::FromWebUI(web_ui())->GetPrefs();
|
| prefs->SetInteger(prefs::kNTP4IntroDisplayCount, kIntroDisplayMax + 1);
|
| }
|
|
|
| void NewTabPageHandler::HandleIntroMessageSeen(const ListValue* args) {
|
| - PrefService* prefs = Profile::FromWebUI(web_ui_)->GetPrefs();
|
| + PrefService* prefs = Profile::FromWebUI(web_ui())->GetPrefs();
|
| int intro_displays = prefs->GetInteger(prefs::kNTP4IntroDisplayCount);
|
| prefs->SetInteger(prefs::kNTP4IntroDisplayCount, intro_displays + 1);
|
| }
|
|
|