| Index: chrome/browser/ui/webui/ntp/new_tab_page_handler.cc
|
| ===================================================================
|
| --- chrome/browser/ui/webui/ntp/new_tab_page_handler.cc (revision 103269)
|
| +++ chrome/browser/ui/webui/ntp/new_tab_page_handler.cc (working copy)
|
| @@ -4,6 +4,9 @@
|
|
|
| #include "chrome/browser/ui/webui/ntp/new_tab_page_handler.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"
|
| @@ -15,25 +18,47 @@
|
| #include "grit/generated_resources.h"
|
| #include "ui/base/l10n/l10n_util.h"
|
|
|
| -static const int kIntroDisplayMax = 10;
|
| +namespace {
|
| +const int kIntroDisplayMax = 10;
|
| +} // anonymous
|
|
|
| // The URL of a knowledge-base article about the new NTP.
|
| 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("closePromo", NewCallback(
|
| + web_ui()->RegisterMessageCallback("closePromo", NewCallback(
|
| this, &NewTabPageHandler::HandleClosePromo));
|
| - web_ui_->RegisterMessageCallback("pageSelected", NewCallback(
|
| + web_ui()->RegisterMessageCallback("pageSelected", NewCallback(
|
| this, &NewTabPageHandler::HandlePageSelected));
|
| - web_ui_->RegisterMessageCallback("introMessageDismissed", NewCallback(
|
| + web_ui()->RegisterMessageCallback("introMessageDismissed", NewCallback(
|
| this, &NewTabPageHandler::HandleIntroMessageDismissed));
|
| - web_ui_->RegisterMessageCallback("introMessageSeen", NewCallback(
|
| + web_ui()->RegisterMessageCallback("introMessageSeen", NewCallback(
|
| this, &NewTabPageHandler::HandleIntroMessageSeen));
|
| }
|
|
|
| void NewTabPageHandler::HandleClosePromo(const ListValue* args) {
|
| - Profile::FromWebUI(web_ui_)->GetPrefs()->SetBoolean(prefs::kNTPPromoClosed,
|
| + Profile::FromWebUI(web_ui())->GetPrefs()->SetBoolean(prefs::kNTPPromoClosed,
|
| true);
|
| NotificationService* service = NotificationService::current();
|
| service->Notify(chrome::NOTIFICATION_PROMO_RESOURCE_STATE_CHANGED,
|
| @@ -50,17 +75,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);
|
| }
|
|
|