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

Side by Side Diff: chrome/browser/ui/webui/ntp/shown_sections_handler.cc

Issue 8438028: ntp: remove ShownSectionHandler and all references to it (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: more functional test updates Created 9 years, 1 month 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
OLDNEW
(Empty)
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/webui/ntp/shown_sections_handler.h"
6
7 #include <string>
8
9 #include "base/bind.h"
10 #include "base/bind_helpers.h"
11 #include "base/command_line.h"
12 #include "base/string_number_conversions.h"
13 #include "base/values.h"
14 #include "chrome/browser/prefs/pref_service.h"
15 #include "chrome/browser/profiles/profile.h"
16 #include "chrome/common/chrome_notification_types.h"
17 #include "chrome/common/extensions/extension.h"
18 #include "chrome/common/pref_names.h"
19 #include "content/browser/user_metrics.h"
20 #include "content/public/browser/notification_details.h"
21
22 namespace {
23
24 // Will cause an UMA notification if the mode of the new tab page
25 // was changed to hide/show the most visited thumbnails.
26 // TODO(aa): Needs to be updated to match newest NTP - http://crbug.com/57440
27 void NotifySectionDisabled(int new_mode, int old_mode, Profile *profile) {
28 // If the oldmode HAD either thumbs or lists visible.
29 bool old_had_it = (old_mode & THUMB) && !(old_mode & MENU_THUMB);
30 bool new_has_it = (new_mode & THUMB) && !(new_mode & MENU_THUMB);
31
32 if (old_had_it && !new_has_it) {
33 UserMetrics::RecordAction(
34 UserMetricsAction("ShowSections_RecentSitesDisabled"));
35 }
36
37 if (new_has_it && !old_had_it) {
38 UserMetrics::RecordAction(
39 UserMetricsAction("ShowSections_RecentSitesEnabled"));
40 }
41 }
42
43 } // namespace
44
45 // static
46 int ShownSectionsHandler::GetShownSections(PrefService* prefs) {
47 return prefs->GetInteger(prefs::kNTPShownSections);
48 }
49
50 // static
51 void ShownSectionsHandler::SetShownSection(PrefService* prefs,
52 Section section) {
53 int shown_sections = GetShownSections(prefs);
54 shown_sections &= ~ALL_SECTIONS_MASK;
55 shown_sections |= section;
56 prefs->SetInteger(prefs::kNTPShownSections, shown_sections);
57 }
58
59 ShownSectionsHandler::ShownSectionsHandler(PrefService* pref_service)
60 : pref_service_(pref_service) {
61 pref_registrar_.Init(pref_service);
62 pref_registrar_.Add(prefs::kNTPShownSections, this);
63 }
64
65 void ShownSectionsHandler::RegisterMessages() {
66 web_ui_->RegisterMessageCallback("setShownSections",
67 base::Bind(&ShownSectionsHandler::HandleSetShownSections,
68 base::Unretained(this)));
69 }
70
71 void ShownSectionsHandler::Observe(
72 int type,
73 const content::NotificationSource& source,
74 const content::NotificationDetails& details) {
75 if (type == chrome::NOTIFICATION_PREF_CHANGED) {
76 std::string* pref_name = content::Details<std::string>(details).ptr();
77 DCHECK(*pref_name == prefs::kNTPShownSections);
78 int sections = pref_service_->GetInteger(prefs::kNTPShownSections);
79 base::FundamentalValue sections_value(sections);
80 web_ui_->CallJavascriptFunction("setShownSections", sections_value);
81 } else {
82 NOTREACHED();
83 }
84 }
85
86 void ShownSectionsHandler::HandleSetShownSections(const ListValue* args) {
87 double mode_double;
88 CHECK(args->GetDouble(0, &mode_double));
89 int mode = static_cast<int>(mode_double);
90 int old_mode = pref_service_->GetInteger(prefs::kNTPShownSections);
91
92 if (old_mode != mode) {
93 NotifySectionDisabled(mode, old_mode, Profile::FromWebUI(web_ui_));
94 pref_service_->SetInteger(prefs::kNTPShownSections, mode);
95 }
96 }
97
98 // static
99 void ShownSectionsHandler::RegisterUserPrefs(PrefService* pref_service) {
100 #if defined(OS_CHROMEOS)
101 // Default to have expanded APPS and all other sections are minimized.
102 pref_service->RegisterIntegerPref(prefs::kNTPShownSections,
103 APPS | MENU_THUMB | MENU_RECENT,
104 PrefService::UNSYNCABLE_PREF);
105 #else
106 pref_service->RegisterIntegerPref(prefs::kNTPShownSections,
107 THUMB,
108 PrefService::UNSYNCABLE_PREF);
109 #endif
110 }
111
112 // static
113 void ShownSectionsHandler::MigrateUserPrefs(PrefService* pref_service,
114 int old_pref_version,
115 int new_pref_version) {
116 // Nothing to migrate for default kNTPShownSections value.
117 const PrefService::Preference* shown_sections_pref =
118 pref_service->FindPreference(prefs::kNTPShownSections);
119 if (!shown_sections_pref || shown_sections_pref->IsDefaultValue())
120 return;
121
122 bool changed = false;
123 int shown_sections = pref_service->GetInteger(prefs::kNTPShownSections);
124
125 if (old_pref_version < 3) {
126 // In version 3, we went from being able to show multiple sections to being
127 // able to show only one expanded at a time. The only two expandable
128 // sections are APPS and THUMBS.
129 if (shown_sections & APPS)
130 shown_sections = APPS;
131 else
132 shown_sections = THUMB;
133
134 changed = true;
135 }
136
137 if (changed)
138 pref_service->SetInteger(prefs::kNTPShownSections, shown_sections);
139 }
140
141 // static
142 void ShownSectionsHandler::OnExtensionInstalled(PrefService* prefs,
143 const Extension* extension) {
144 if (extension->is_app()) {
145 int mode = prefs->GetInteger(prefs::kNTPShownSections);
146
147 // De-menu-mode the apps section.
148 mode &= ~MENU_APPS;
149
150 // Hide any open sections.
151 mode &= ~ALL_SECTIONS_MASK;
152
153 // Show the apps section.
154 mode |= APPS;
155
156 prefs->SetInteger(prefs::kNTPShownSections, mode);
157 }
158 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/ntp/shown_sections_handler.h ('k') | chrome/browser/ui/webui/ntp/shown_sections_handler_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698