1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_UI_WEBUI_OPTIONS_BROWSER_OPTIONS_HANDLER_H_
#define CHROME_BROWSER_UI_WEBUI_OPTIONS_BROWSER_OPTIONS_HANDLER_H_
#pragma once
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
#include "chrome/browser/autocomplete/autocomplete_controller_delegate.h"
#include "chrome/browser/prefs/pref_change_registrar.h"
#include "chrome/browser/prefs/pref_member.h"
#include "chrome/browser/search_engines/template_url_service_observer.h"
#include "chrome/browser/shell_integration.h"
#include "chrome/browser/ui/webui/options/options_ui.h"
#include "ui/base/models/table_model_observer.h"
class AutocompleteController;
class CustomHomePagesTableModel;
class TemplateURLService;
// Chrome browser options page UI handler.
class BrowserOptionsHandler : public OptionsPageUIHandler,
public AutocompleteControllerDelegate,
public ShellIntegration::DefaultWebClientObserver,
public TemplateURLServiceObserver,
public ui::TableModelObserver {
public:
BrowserOptionsHandler();
virtual ~BrowserOptionsHandler();
virtual void Initialize();
// OptionsPageUIHandler implementation.
virtual void GetLocalizedValues(DictionaryValue* localized_strings) OVERRIDE;
virtual void RegisterMessages() OVERRIDE;
// AutocompleteControllerDelegate implementation.
virtual void OnResultChanged(bool default_match_changed) OVERRIDE;
// ShellIntegration::DefaultWebClientObserver implementation.
virtual void SetDefaultWebClientUIState(
ShellIntegration::DefaultWebClientUIState state) OVERRIDE;
// TemplateURLServiceObserver implementation.
virtual void OnTemplateURLServiceChanged() OVERRIDE;
// ui::TableModelObserver implementation.
virtual void OnModelChanged() OVERRIDE;
virtual void OnItemsChanged(int start, int length) OVERRIDE;
virtual void OnItemsAdded(int start, int length) OVERRIDE;
virtual void OnItemsRemoved(int start, int length) OVERRIDE;
private:
// NotificationObserver implementation.
virtual void Observe(int type,
const NotificationSource& source,
const NotificationDetails& details) OVERRIDE;
// Makes this the default browser. Called from WebUI.
void BecomeDefaultBrowser(const ListValue* args);
// Sets the search engine at the given index to be default. Called from WebUI.
void SetDefaultSearchEngine(const ListValue* args);
// Removes the startup page at the given indexes. Called from WebUI.
void RemoveStartupPages(const ListValue* args);
// Adds a startup page with the given URL after the given index.
// Called from WebUI.
void AddStartupPage(const ListValue* args);
// Changes the startup page at the given index to the given URL.
// Called from WebUI.
void EditStartupPage(const ListValue* args);
// Sets the startup page set to the current pages. Called from WebUI.
void SetStartupPagesToCurrentPages(const ListValue* args);
// Writes the current set of startup pages to prefs. Called from WebUI.
void DragDropStartupPage(const ListValue* args);
// Gets autocomplete suggestions asychronously for the given string.
// Called from WebUI.
void RequestAutocompleteSuggestions(const ListValue* args);
// Enables/disables Instant.
void EnableInstant(const ListValue* args);
void DisableInstant(const ListValue* args);
// Called to request information about the Instant field trial.
void GetInstantFieldTrialStatus(const ListValue* args);
// Returns the string ID for the given default browser state.
int StatusStringIdForState(ShellIntegration::DefaultWebClientState state);
// Gets the current default browser state, and asynchronously reports it to
// the WebUI page.
void UpdateDefaultBrowserState();
// Updates the UI with the given state for the default browser.
void SetDefaultBrowserUIString(int status_string_id);
// Loads the current set of custom startup pages and reports it to the WebUI.
void UpdateStartupPages();
// Loads the possible default search engine list and reports it to the WebUI.
void UpdateSearchEngines();
// Writes the current set of startup pages to prefs.
void SaveStartupPagesPref();
scoped_refptr<ShellIntegration::DefaultBrowserWorker>
default_browser_worker_;
StringPrefMember homepage_;
BooleanPrefMember default_browser_policy_;
// Used to observe updates to the preference of the list of URLs to load
// on startup, which can be updated via sync.
PrefChangeRegistrar pref_change_registrar_;
TemplateURLService* template_url_service_; // Weak.
// TODO(stuartmorgan): Once there are no other clients of
// CustomHomePagesTableModel, consider changing it to something more like
// TemplateURLService.
scoped_ptr<CustomHomePagesTableModel> startup_custom_pages_table_model_;
scoped_ptr<AutocompleteController> autocomplete_controller_;
DISALLOW_COPY_AND_ASSIGN(BrowserOptionsHandler);
};
#endif // CHROME_BROWSER_UI_WEBUI_OPTIONS_BROWSER_OPTIONS_HANDLER_H_
|