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

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

Issue 3116023: DOMUI prefs: Fix a race condition in pushing search engine information to DOMUI (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: Created 10 years, 4 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/search_engine_manager_handler.h" 5 #include "chrome/browser/dom_ui/search_engine_manager_handler.h"
6 6
7 #include "app/l10n_util.h" 7 #include "app/l10n_util.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/string_number_conversions.h" 9 #include "base/string_number_conversions.h"
10 #include "base/utf_string_conversions.h" 10 #include "base/utf_string_conversions.h"
11 #include "base/values.h" 11 #include "base/values.h"
12 #include "chrome/browser/profile.h" 12 #include "chrome/browser/profile.h"
13 #include "chrome/browser/search_engines/keyword_editor_controller.h" 13 #include "chrome/browser/search_engines/keyword_editor_controller.h"
14 #include "chrome/browser/search_engines/template_url_table_model.h" 14 #include "chrome/browser/search_engines/template_url_table_model.h"
15 #include "chrome/common/url_constants.h" 15 #include "chrome/common/url_constants.h"
16 #include "grit/generated_resources.h" 16 #include "grit/generated_resources.h"
17 #include "grit/locale_settings.h" 17 #include "grit/locale_settings.h"
18 18
19 SearchEngineManagerHandler::SearchEngineManagerHandler() { 19 SearchEngineManagerHandler::SearchEngineManagerHandler() {
20 } 20 }
21 21
22 SearchEngineManagerHandler::~SearchEngineManagerHandler() { 22 SearchEngineManagerHandler::~SearchEngineManagerHandler() {
23 if (controller_.get() && controller_->table_model()) 23 if (controller_.get() && controller_->table_model())
24 controller_->table_model()->SetObserver(NULL); 24 controller_->table_model()->SetObserver(NULL);
25 } 25 }
26 26
27 void SearchEngineManagerHandler::Initialize() { 27 void SearchEngineManagerHandler::Initialize() {
28 controller_.reset(new KeywordEditorController(dom_ui_->GetProfile())); 28 controller_.reset(new KeywordEditorController(dom_ui_->GetProfile()));
29 controller_->table_model()->SetObserver(this); 29 if (controller_.get()) {
30 controller_->table_model()->SetObserver(this);
31 OnModelChanged();
32 }
30 } 33 }
31 34
32 void SearchEngineManagerHandler::GetLocalizedValues( 35 void SearchEngineManagerHandler::GetLocalizedValues(
33 DictionaryValue* localized_strings) { 36 DictionaryValue* localized_strings) {
34 DCHECK(localized_strings); 37 DCHECK(localized_strings);
35 38
36 localized_strings->SetString("searchEngineManagerPage", 39 localized_strings->SetString("searchEngineManagerPage",
37 l10n_util::GetStringUTF16(IDS_SEARCH_ENGINES_EDITOR_WINDOW_TITLE)); 40 l10n_util::GetStringUTF16(IDS_SEARCH_ENGINES_EDITOR_WINDOW_TITLE));
38 localized_strings->SetString("searchEngineTableNameHeader", 41 localized_strings->SetString("searchEngineTableNameHeader",
39 l10n_util::GetStringUTF16(IDS_SEARCH_ENGINES_EDITOR_DESCRIPTION_COLUMN)); 42 l10n_util::GetStringUTF16(IDS_SEARCH_ENGINES_EDITOR_DESCRIPTION_COLUMN));
(...skipping 12 matching lines...) Expand all
52 void SearchEngineManagerHandler::RegisterMessages() { 55 void SearchEngineManagerHandler::RegisterMessages() {
53 dom_ui_->RegisterMessageCallback( 56 dom_ui_->RegisterMessageCallback(
54 "managerSetDefaultSearchEngine", 57 "managerSetDefaultSearchEngine",
55 NewCallback(this, &SearchEngineManagerHandler::SetDefaultSearchEngine)); 58 NewCallback(this, &SearchEngineManagerHandler::SetDefaultSearchEngine));
56 dom_ui_->RegisterMessageCallback( 59 dom_ui_->RegisterMessageCallback(
57 "removeSearchEngine", 60 "removeSearchEngine",
58 NewCallback(this, &SearchEngineManagerHandler::RemoveSearchEngine)); 61 NewCallback(this, &SearchEngineManagerHandler::RemoveSearchEngine));
59 } 62 }
60 63
61 void SearchEngineManagerHandler::OnModelChanged() { 64 void SearchEngineManagerHandler::OnModelChanged() {
65 if (!controller_->loaded())
66 return;
67
62 ListValue engine_list; 68 ListValue engine_list;
63 69
64 // Find the default engine. 70 // Find the default engine.
65 const TemplateURL* default_engine = 71 const TemplateURL* default_engine =
66 controller_->url_model()->GetDefaultSearchProvider(); 72 controller_->url_model()->GetDefaultSearchProvider();
67 int default_index = controller_->table_model()->IndexOfTemplateURL( 73 int default_index = controller_->table_model()->IndexOfTemplateURL(
68 default_engine); 74 default_engine);
69 75
70 // Add the first group (default search engine options). 76 // Add the first group (default search engine options).
71 engine_list.Append(CreateDictionaryForHeading(0)); 77 engine_list.Append(CreateDictionaryForHeading(0));
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 if (!ExtractIntegerValue(value, &index)) { 157 if (!ExtractIntegerValue(value, &index)) {
152 NOTREACHED(); 158 NOTREACHED();
153 return; 159 return;
154 } 160 }
155 if (index < 0 || index >= controller_->table_model()->RowCount()) 161 if (index < 0 || index >= controller_->table_model()->RowCount())
156 return; 162 return;
157 163
158 if (controller_->CanRemove(controller_->GetTemplateURL(index))) 164 if (controller_->CanRemove(controller_->GetTemplateURL(index)))
159 controller_->RemoveTemplateURL(index); 165 controller_->RemoveTemplateURL(index);
160 } 166 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698