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

Side by Side Diff: chrome/browser/dom_ui/browser_options_handler.cc

Issue 3058018: Revert 53849 - Implement most of the startup page controls in DOMUI prefs... (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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/dom_ui/browser_options_handler.h" 5 #include "chrome/browser/dom_ui/browser_options_handler.h"
6 6
7 #include "app/l10n_util.h" 7 #include "app/l10n_util.h"
8 #include "base/basictypes.h" 8 #include "base/basictypes.h"
9 #include "base/scoped_ptr.h" 9 #include "base/scoped_ptr.h"
10 #include "base/string_util.h" 10 #include "base/string_util.h"
11 #include "base/utf_string_conversions.h" 11 #include "base/utf_string_conversions.h"
12 #include "base/values.h" 12 #include "base/values.h"
13 #include "chrome/browser/custom_home_pages_table_model.h"
14 #include "chrome/browser/profile.h" 13 #include "chrome/browser/profile.h"
15 #include "chrome/browser/session_startup_pref.h"
16 #include "chrome/installer/util/browser_distribution.h" 14 #include "chrome/installer/util/browser_distribution.h"
17 #include "grit/chromium_strings.h" 15 #include "grit/chromium_strings.h"
18 #include "grit/generated_resources.h" 16 #include "grit/generated_resources.h"
19 17
20 BrowserOptionsHandler::BrowserOptionsHandler() 18 BrowserOptionsHandler::BrowserOptionsHandler()
21 : template_url_model_(NULL), startup_custom_pages_table_model_(NULL) { 19 : template_url_model_(NULL) {
22 #if !defined(OS_MACOSX) 20 #if !defined(OS_MACOSX)
23 default_browser_worker_ = new ShellIntegration::DefaultBrowserWorker(this); 21 default_browser_worker_ = new ShellIntegration::DefaultBrowserWorker(this);
24 #endif 22 #endif
25 } 23 }
26 24
27 BrowserOptionsHandler::~BrowserOptionsHandler() { 25 BrowserOptionsHandler::~BrowserOptionsHandler() {
28 if (default_browser_worker_.get()) 26 if (default_browser_worker_.get())
29 default_browser_worker_->ObserverDestroyed(); 27 default_browser_worker_->ObserverDestroyed();
30 if (template_url_model_) 28 if (template_url_model_)
31 template_url_model_->RemoveObserver(this); 29 template_url_model_->RemoveObserver(this);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 l10n_util::GetString(IDS_PRODUCT_NAME))); 68 l10n_util::GetString(IDS_PRODUCT_NAME)));
71 } 69 }
72 70
73 void BrowserOptionsHandler::RegisterMessages() { 71 void BrowserOptionsHandler::RegisterMessages() {
74 dom_ui_->RegisterMessageCallback( 72 dom_ui_->RegisterMessageCallback(
75 "becomeDefaultBrowser", 73 "becomeDefaultBrowser",
76 NewCallback(this, &BrowserOptionsHandler::BecomeDefaultBrowser)); 74 NewCallback(this, &BrowserOptionsHandler::BecomeDefaultBrowser));
77 dom_ui_->RegisterMessageCallback( 75 dom_ui_->RegisterMessageCallback(
78 "setDefaultSearchEngine", 76 "setDefaultSearchEngine",
79 NewCallback(this, &BrowserOptionsHandler::SetDefaultSearchEngine)); 77 NewCallback(this, &BrowserOptionsHandler::SetDefaultSearchEngine));
80 dom_ui_->RegisterMessageCallback(
81 "removeStartupPages",
82 NewCallback(this, &BrowserOptionsHandler::RemoveStartupPages));
83 dom_ui_->RegisterMessageCallback(
84 "setStartupPagesToCurrentPages",
85 NewCallback(this, &BrowserOptionsHandler::SetStartupPagesToCurrentPages));
86 } 78 }
87 79
88 void BrowserOptionsHandler::Initialize() { 80 void BrowserOptionsHandler::Initialize() {
89 UpdateDefaultBrowserState(); 81 UpdateDefaultBrowserState();
90 UpdateStartupPages(); 82
91 UpdateSearchEngines(); 83 template_url_model_ = dom_ui_->GetProfile()->GetTemplateURLModel();
84 if (template_url_model_) {
85 template_url_model_->Load();
86 template_url_model_->AddObserver(this);
87 OnTemplateURLModelChanged();
88 }
92 } 89 }
93 90
94 void BrowserOptionsHandler::UpdateDefaultBrowserState() { 91 void BrowserOptionsHandler::UpdateDefaultBrowserState() {
95 #if defined(OS_WIN) 92 #if defined(OS_WIN)
96 // Check for side-by-side first. 93 // Check for side-by-side first.
97 if (!BrowserDistribution::GetDistribution()->CanSetAsDefault()) { 94 if (!BrowserDistribution::GetDistribution()->CanSetAsDefault()) {
98 SetDefaultBrowserUIString(IDS_OPTIONS_DEFAULTBROWSER_SXS); 95 SetDefaultBrowserUIString(IDS_OPTIONS_DEFAULTBROWSER_SXS);
99 return; 96 return;
100 } 97 }
101 #endif 98 #endif
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 } 204 }
208 int selected_index = StringToInt(string_value); 205 int selected_index = StringToInt(string_value);
209 206
210 std::vector<const TemplateURL*> model_urls = 207 std::vector<const TemplateURL*> model_urls =
211 template_url_model_->GetTemplateURLs(); 208 template_url_model_->GetTemplateURLs();
212 if (selected_index >= 0 && 209 if (selected_index >= 0 &&
213 selected_index < static_cast<int>(model_urls.size())) 210 selected_index < static_cast<int>(model_urls.size()))
214 template_url_model_->SetDefaultSearchProvider(model_urls[selected_index]); 211 template_url_model_->SetDefaultSearchProvider(model_urls[selected_index]);
215 } 212 }
216 213
217 void BrowserOptionsHandler::UpdateSearchEngines() {
218 template_url_model_ = dom_ui_->GetProfile()->GetTemplateURLModel();
219 if (template_url_model_) {
220 template_url_model_->Load();
221 template_url_model_->AddObserver(this);
222 OnTemplateURLModelChanged();
223 }
224 }
225
226 void BrowserOptionsHandler::UpdateStartupPages() {
227 Profile* profile = dom_ui_->GetProfile();
228 startup_custom_pages_table_model_.reset(
229 new CustomHomePagesTableModel(profile));
230 startup_custom_pages_table_model_->SetObserver(this);
231
232 const SessionStartupPref startup_pref =
233 SessionStartupPref::GetStartupPref(profile->GetPrefs());
234 startup_custom_pages_table_model_->SetURLs(startup_pref.urls);
235 }
236
237 void BrowserOptionsHandler::OnModelChanged() {
238 // TODO(stuartmorgan): Add support for showing favicons.
239 ListValue startup_pages;
240 int page_count = startup_custom_pages_table_model_->RowCount();
241 for (int i = 0; i < page_count; ++i) {
242 DictionaryValue* entry = new DictionaryValue();
243 entry->SetString(L"title",
244 startup_custom_pages_table_model_->GetText(i, 0));
245 entry->SetString(L"tooltip",
246 startup_custom_pages_table_model_->GetTooltip(i));
247 startup_pages.Append(entry);
248 }
249
250 dom_ui_->CallJavascriptFunction(L"BrowserOptions.updateStartupPages",
251 startup_pages);
252 }
253
254 void BrowserOptionsHandler::OnItemsChanged(int start, int length) {
255 OnModelChanged();
256 }
257
258 void BrowserOptionsHandler::OnItemsAdded(int start, int length) {
259 OnModelChanged();
260 }
261
262 void BrowserOptionsHandler::OnItemsRemoved(int start, int length) {
263 OnModelChanged();
264 }
265
266 void BrowserOptionsHandler::SetStartupPagesToCurrentPages(const Value* value) {
267 startup_custom_pages_table_model_->SetToCurrentlyOpenPages();
268 SaveStartupPagesPref();
269 }
270
271 void BrowserOptionsHandler::RemoveStartupPages(const Value* value) {
272 if (!value || !value->IsType(Value::TYPE_LIST)) {
273 NOTREACHED();
274 return;
275 }
276 const ListValue* param_values = static_cast<const ListValue*>(value);
277 for (int i = param_values->GetSize() - 1; i >= 0; --i) {
278 std::string string_value;
279 if (!param_values->GetString(i, &string_value)) {
280 NOTREACHED();
281 return;
282 }
283 int selected_index = StringToInt(string_value);
284 if (selected_index < 0 ||
285 selected_index >= startup_custom_pages_table_model_->RowCount()) {
286 NOTREACHED();
287 return;
288 }
289 startup_custom_pages_table_model_->Remove(selected_index);
290 }
291
292 SaveStartupPagesPref();
293 }
294
295 void BrowserOptionsHandler::SaveStartupPagesPref() {
296 PrefService* prefs = dom_ui_->GetProfile()->GetPrefs();
297
298 SessionStartupPref pref = SessionStartupPref::GetStartupPref(prefs);
299 pref.urls = startup_custom_pages_table_model_->GetURLs();
300
301 SessionStartupPref::SetStartupPref(prefs, pref);
302 }
OLDNEW
« no previous file with comments | « chrome/browser/dom_ui/browser_options_handler.h ('k') | chrome/browser/resources/options/browser_options.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698