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

Side by Side Diff: chrome/browser/ui/webui/options2/cookies_view_handler2.cc

Issue 10636019: Adding Application Data dialog for isolated apps (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 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
« no previous file with comments | « chrome/browser/ui/webui/options2/cookies_view_handler2.h ('k') | chrome/chrome_browser.gypi » ('j') | 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/ui/webui/options2/cookies_view_handler2.h" 5 #include "chrome/browser/ui/webui/options2/cookies_view_handler2.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.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/common/extensions/extension.h"
14 #include "chrome/common/extensions/extension_set.h"
13 #include "chrome/browser/browsing_data_appcache_helper.h" 15 #include "chrome/browser/browsing_data_appcache_helper.h"
14 #include "chrome/browser/browsing_data_cookie_helper.h" 16 #include "chrome/browser/browsing_data_cookie_helper.h"
15 #include "chrome/browser/browsing_data_database_helper.h" 17 #include "chrome/browser/browsing_data_database_helper.h"
16 #include "chrome/browser/browsing_data_file_system_helper.h" 18 #include "chrome/browser/browsing_data_file_system_helper.h"
17 #include "chrome/browser/browsing_data_indexed_db_helper.h" 19 #include "chrome/browser/browsing_data_indexed_db_helper.h"
18 #include "chrome/browser/browsing_data_local_storage_helper.h" 20 #include "chrome/browser/browsing_data_local_storage_helper.h"
19 #include "chrome/browser/browsing_data_quota_helper.h" 21 #include "chrome/browser/browsing_data_quota_helper.h"
20 #include "chrome/browser/browsing_data_server_bound_cert_helper.h" 22 #include "chrome/browser/browsing_data_server_bound_cert_helper.h"
23 #include "chrome/browser/extensions/extension_service.h"
21 #include "chrome/browser/profiles/profile.h" 24 #include "chrome/browser/profiles/profile.h"
22 #include "chrome/browser/ui/webui/cookies_tree_model_util.h" 25 #include "chrome/browser/ui/webui/cookies_tree_model_util.h"
23 #include "content/public/browser/web_ui.h" 26 #include "content/public/browser/web_ui.h"
24 #include "grit/generated_resources.h" 27 #include "grit/generated_resources.h"
25 #include "ui/base/l10n/l10n_util.h" 28 #include "ui/base/l10n/l10n_util.h"
26 29
27 namespace options2 { 30 namespace options2 {
28 31
29 CookiesViewHandler::CookiesViewHandler() 32 CookiesViewHandler::CookiesViewHandler()
30 : batch_update_(false), 33 : batch_update_(false),
31 model_util_(new CookiesTreeModelUtil) { 34 app_context_(false),
35 model_util_(new CookiesTreeModelUtil) {
32 } 36 }
33 37
34 CookiesViewHandler::~CookiesViewHandler() { 38 CookiesViewHandler::~CookiesViewHandler() {
35 } 39 }
36 40
37 void CookiesViewHandler::GetLocalizedValues( 41 void CookiesViewHandler::GetLocalizedValues(
38 DictionaryValue* localized_strings) { 42 DictionaryValue* localized_strings) {
39 DCHECK(localized_strings); 43 DCHECK(localized_strings);
40 44
41 static OptionsStringResource resources[] = { 45 static OptionsStringResource resources[] = {
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 IDS_COOKIES_SERVER_BOUND_CERT_TYPE_LABEL }, 89 IDS_COOKIES_SERVER_BOUND_CERT_TYPE_LABEL },
86 { "label_server_bound_cert_created", 90 { "label_server_bound_cert_created",
87 IDS_COOKIES_SERVER_BOUND_CERT_CREATED_LABEL }, 91 IDS_COOKIES_SERVER_BOUND_CERT_CREATED_LABEL },
88 { "label_server_bound_cert_expires", 92 { "label_server_bound_cert_expires",
89 IDS_COOKIES_SERVER_BOUND_CERT_EXPIRES_LABEL }, 93 IDS_COOKIES_SERVER_BOUND_CERT_EXPIRES_LABEL },
90 }; 94 };
91 95
92 RegisterStrings(localized_strings, resources, arraysize(resources)); 96 RegisterStrings(localized_strings, resources, arraysize(resources));
93 RegisterTitle(localized_strings, "cookiesViewPage", 97 RegisterTitle(localized_strings, "cookiesViewPage",
94 IDS_COOKIES_WEBSITE_PERMISSIONS_WINDOW_TITLE); 98 IDS_COOKIES_WEBSITE_PERMISSIONS_WINDOW_TITLE);
99 RegisterTitle(localized_strings, "appCookiesViewPage",
100 IDS_APP_COOKIES_WEBSITE_PERMISSIONS_WINDOW_TITLE);
95 } 101 }
96 102
97 void CookiesViewHandler::RegisterMessages() { 103 void CookiesViewHandler::RegisterMessages() {
98 web_ui()->RegisterMessageCallback("updateCookieSearchResults", 104 web_ui()->RegisterMessageCallback("updateCookieSearchResults",
99 base::Bind(&CookiesViewHandler::UpdateSearchResults, 105 base::Bind(&CookiesViewHandler::UpdateSearchResults,
100 base::Unretained(this))); 106 base::Unretained(this)));
101 web_ui()->RegisterMessageCallback("removeAllCookies", 107 web_ui()->RegisterMessageCallback("removeAllCookies",
102 base::Bind(&CookiesViewHandler::RemoveAll, 108 base::Bind(&CookiesViewHandler::RemoveAll,
103 base::Unretained(this))); 109 base::Unretained(this)));
104 web_ui()->RegisterMessageCallback("removeCookie", 110 web_ui()->RegisterMessageCallback("removeCookie",
105 base::Bind(&CookiesViewHandler::Remove, 111 base::Bind(&CookiesViewHandler::Remove,
106 base::Unretained(this))); 112 base::Unretained(this)));
107 web_ui()->RegisterMessageCallback("loadCookie", 113 web_ui()->RegisterMessageCallback("loadCookie",
108 base::Bind(&CookiesViewHandler::LoadChildren, 114 base::Bind(&CookiesViewHandler::LoadChildren,
109 base::Unretained(this))); 115 base::Unretained(this)));
116 web_ui()->RegisterMessageCallback("setViewContext",
117 base::Bind(&CookiesViewHandler::SetViewContext,
118 base::Unretained(this)));
110 } 119 }
111 120
112 void CookiesViewHandler::TreeNodesAdded(ui::TreeModel* model, 121 void CookiesViewHandler::TreeNodesAdded(ui::TreeModel* model,
113 ui::TreeModelNode* parent, 122 ui::TreeModelNode* parent,
114 int start, 123 int start,
115 int count) { 124 int count) {
116 // Skip if there is a batch update in progress. 125 // Skip if there is a batch update in progress.
117 if (batch_update_) 126 if (batch_update_)
118 return; 127 return;
119 128
120 CookieTreeNode* parent_node = cookies_tree_model_->AsNode(parent); 129 CookiesTreeModel* tree_model = static_cast<CookiesTreeModel*>(model);
130 CookieTreeNode* parent_node = tree_model->AsNode(parent);
121 131
122 ListValue* children = new ListValue; 132 ListValue* children = new ListValue;
123 model_util_->GetChildNodeList(parent_node, start, count, 133 model_util_->GetChildNodeList(parent_node, start, count,
124 children); 134 children);
125 135
126 ListValue args; 136 ListValue args;
127 args.Append(parent == cookies_tree_model_->GetRoot() ? 137 args.Append(parent == tree_model->GetRoot() ?
128 Value::CreateNullValue() : 138 Value::CreateNullValue() :
129 Value::CreateStringValue( 139 Value::CreateStringValue(
130 model_util_->GetTreeNodeId(parent_node))); 140 model_util_->GetTreeNodeId(parent_node)));
131 args.Append(Value::CreateIntegerValue(start)); 141 args.Append(Value::CreateIntegerValue(start));
132 args.Append(children); 142 args.Append(children);
133 web_ui()->CallJavascriptFunction("CookiesView.onTreeItemAdded", args); 143 web_ui()->CallJavascriptFunction(
144 GetCallback("onTreeItemAdded", GetTreeModel()), args);
134 } 145 }
135 146
136 void CookiesViewHandler::TreeNodesRemoved(ui::TreeModel* model, 147 void CookiesViewHandler::TreeNodesRemoved(ui::TreeModel* model,
137 ui::TreeModelNode* parent, 148 ui::TreeModelNode* parent,
138 int start, 149 int start,
139 int count) { 150 int count) {
140 // Skip if there is a batch update in progress. 151 // Skip if there is a batch update in progress.
141 if (batch_update_) 152 if (batch_update_)
142 return; 153 return;
143 154
155 CookiesTreeModel* tree_model = static_cast<CookiesTreeModel*>(model);
156
144 ListValue args; 157 ListValue args;
145 args.Append(parent == cookies_tree_model_->GetRoot() ? 158 args.Append(parent == tree_model->GetRoot() ?
146 Value::CreateNullValue() : 159 Value::CreateNullValue() :
147 Value::CreateStringValue(model_util_->GetTreeNodeId( 160 Value::CreateStringValue(model_util_->GetTreeNodeId(
148 cookies_tree_model_->AsNode(parent)))); 161 tree_model->AsNode(parent))));
149 args.Append(Value::CreateIntegerValue(start)); 162 args.Append(Value::CreateIntegerValue(start));
150 args.Append(Value::CreateIntegerValue(count)); 163 args.Append(Value::CreateIntegerValue(count));
151 web_ui()->CallJavascriptFunction("CookiesView.onTreeItemRemoved", args); 164 web_ui()->CallJavascriptFunction(
165 GetCallback("onTreeItemRemoved", GetTreeModel()), args);
152 } 166 }
153 167
154 void CookiesViewHandler::TreeModelBeginBatch(CookiesTreeModel* model) { 168 void CookiesViewHandler::TreeModelBeginBatch(CookiesTreeModel* model) {
155 DCHECK(!batch_update_); // There should be no nested batch begin. 169 DCHECK(!batch_update_); // There should be no nested batch begin.
156 batch_update_ = true; 170 batch_update_ = true;
157 } 171 }
158 172
159 void CookiesViewHandler::TreeModelEndBatch(CookiesTreeModel* model) { 173 void CookiesViewHandler::TreeModelEndBatch(CookiesTreeModel* model) {
160 DCHECK(batch_update_); 174 DCHECK(batch_update_);
161 batch_update_ = false; 175 batch_update_ = false;
162 176
163 SendChildren(cookies_tree_model_->GetRoot()); 177 SendChildren(model->GetRoot());
164 } 178 }
165 179
166 void CookiesViewHandler::EnsureCookiesTreeModelCreated() { 180 void CookiesViewHandler::EnsureCookiesTreeModelCreated() {
Bernhard Bauer 2012/07/10 18:18:03 Hmm, it looks like exactly one of |app_cookies_tre
nasko 2012/07/10 19:54:10 There is one CookiesViewHandler for the lifetime o
167 if (!cookies_tree_model_.get()) { 181 if (!app_context_ && !cookies_tree_model_.get()) {
168 Profile* profile = Profile::FromWebUI(web_ui()); 182 Profile* profile = Profile::FromWebUI(web_ui());
169 cookies_tree_model_.reset(new CookiesTreeModel( 183 ContainerMap apps_map;
184 apps_map[std::string()] = new LocalDataContainer(
185 "Site Data", std::string(),
170 new BrowsingDataCookieHelper(profile->GetRequestContext()), 186 new BrowsingDataCookieHelper(profile->GetRequestContext()),
171 new BrowsingDataDatabaseHelper(profile), 187 new BrowsingDataDatabaseHelper(profile),
172 new BrowsingDataLocalStorageHelper(profile), 188 new BrowsingDataLocalStorageHelper(profile),
173 NULL, 189 NULL,
174 new BrowsingDataAppCacheHelper(profile), 190 new BrowsingDataAppCacheHelper(profile),
175 BrowsingDataIndexedDBHelper::Create(profile), 191 BrowsingDataIndexedDBHelper::Create(profile),
176 BrowsingDataFileSystemHelper::Create(profile), 192 BrowsingDataFileSystemHelper::Create(profile),
177 BrowsingDataQuotaHelper::Create(profile), 193 BrowsingDataQuotaHelper::Create(profile),
178 BrowsingDataServerBoundCertHelper::Create(profile), 194 BrowsingDataServerBoundCertHelper::Create(profile));
179 false)); 195 cookies_tree_model_.reset(new CookiesTreeModel(apps_map, false));
180 cookies_tree_model_->AddCookiesTreeObserver(this); 196 cookies_tree_model_->AddCookiesTreeObserver(this);
181 } 197 }
198
199 if (app_context_ && !app_cookies_tree_model_.get()) {
200 Profile* profile = Profile::FromWebUI(web_ui());
201 ContainerMap apps_map;
202 const ExtensionService* service = profile->GetExtensionService();
203 if (service) {
204 const ExtensionSet* extensions = service->extensions();
205 for (ExtensionSet::const_iterator it = extensions->begin();
206 it != extensions->end(); ++it) {
207 if ((*it)->is_storage_isolated()) {
208 net::URLRequestContextGetter* context_getter =
209 profile->GetRequestContextForIsolatedApp((*it)->id());
210 // TODO(nasko): When new types of storage are isolated, add the
211 // appropriate browsing data helper objects to the consutrctor.
Bernhard Bauer 2012/07/10 18:18:03 Nit: constructor
nasko 2012/07/10 19:54:10 Done.
212 // For now, just cookies are isolated, so other parameters are NULL.
213 apps_map[(*it)->id()] = new LocalDataContainer(
214 (*it)->name(), (*it)->id(),
215 new BrowsingDataCookieHelper(context_getter),
216 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
217 }
218 }
219 app_cookies_tree_model_.reset(new CookiesTreeModel(apps_map, false));
220 app_cookies_tree_model_->AddCookiesTreeObserver(this);
221 }
222 }
182 } 223 }
183 224
184 void CookiesViewHandler::UpdateSearchResults(const ListValue* args) { 225 void CookiesViewHandler::UpdateSearchResults(const ListValue* args) {
185 std::string query; 226 string16 query;
186 if (!args->GetString(0, &query)) { 227 if (!args->GetString(0, &query)) {
187 return; 228 return;
188 } 229 }
189 230
190 EnsureCookiesTreeModelCreated(); 231 EnsureCookiesTreeModelCreated();
191 232
192 cookies_tree_model_->UpdateSearchResults(UTF8ToWide(query)); 233 GetTreeModel()->UpdateSearchResults(query);
193 } 234 }
194 235
195 void CookiesViewHandler::RemoveAll(const ListValue* args) { 236 void CookiesViewHandler::RemoveAll(const ListValue* args) {
196 EnsureCookiesTreeModelCreated(); 237 EnsureCookiesTreeModelCreated();
197 cookies_tree_model_->DeleteAllStoredObjects(); 238 GetTreeModel()->DeleteAllStoredObjects();
198 } 239 }
199 240
200 void CookiesViewHandler::Remove(const ListValue* args) { 241 void CookiesViewHandler::Remove(const ListValue* args) {
201 std::string node_path; 242 std::string node_path;
202 if (!args->GetString(0, &node_path)) { 243 if (!args->GetString(0, &node_path)) {
203 return; 244 return;
204 } 245 }
205 246
206 EnsureCookiesTreeModelCreated(); 247 EnsureCookiesTreeModelCreated();
207 248
208 const CookieTreeNode* node = model_util_->GetTreeNodeFromPath( 249 const CookieTreeNode* node = model_util_->GetTreeNodeFromPath(
209 cookies_tree_model_->GetRoot(), node_path); 250 GetTreeModel()->GetRoot(), node_path);
210 if (node) 251 if (node)
211 cookies_tree_model_->DeleteCookieNode(const_cast<CookieTreeNode*>(node)); 252 GetTreeModel()->DeleteCookieNode(const_cast<CookieTreeNode*>(node));
212 } 253 }
213 254
214 void CookiesViewHandler::LoadChildren(const ListValue* args) { 255 void CookiesViewHandler::LoadChildren(const ListValue* args) {
215 std::string node_path; 256 std::string node_path;
216 if (!args->GetString(0, &node_path)) { 257 if (!args->GetString(0, &node_path)) {
217 return; 258 return;
218 } 259 }
219 260
220 EnsureCookiesTreeModelCreated(); 261 EnsureCookiesTreeModelCreated();
221 262
222 const CookieTreeNode* node = model_util_->GetTreeNodeFromPath( 263 const CookieTreeNode* node = model_util_->GetTreeNodeFromPath(
223 cookies_tree_model_->GetRoot(), node_path); 264 GetTreeModel()->GetRoot(), node_path);
224 if (node) 265 if (node)
225 SendChildren(node); 266 SendChildren(node);
226 } 267 }
227 268
228 void CookiesViewHandler::SendChildren(const CookieTreeNode* parent) { 269 void CookiesViewHandler::SendChildren(const CookieTreeNode* parent) {
229 ListValue* children = new ListValue; 270 ListValue* children = new ListValue;
230 model_util_->GetChildNodeList(parent, 0, parent->child_count(), 271 model_util_->GetChildNodeList(parent, 0, parent->child_count(),
231 children); 272 children);
232 273
233 ListValue args; 274 ListValue args;
234 args.Append(parent == cookies_tree_model_->GetRoot() ? 275 args.Append(parent == GetTreeModel()->GetRoot() ?
235 Value::CreateNullValue() : 276 Value::CreateNullValue() :
236 Value::CreateStringValue(model_util_->GetTreeNodeId(parent))); 277 Value::CreateStringValue(model_util_->GetTreeNodeId(parent)));
237 args.Append(children); 278 args.Append(children);
238 279
239 web_ui()->CallJavascriptFunction("CookiesView.loadChildren", args); 280 web_ui()->CallJavascriptFunction(
281 GetCallback("loadChildren", GetTreeModel()), args);
282 }
283
284 void CookiesViewHandler::SetViewContext(const base::ListValue* args) {
285 bool app_context = false;
286 if (args->GetBoolean(0, &app_context))
287 app_context_ = app_context;
288 }
289
290 CookiesTreeModel* CookiesViewHandler::GetTreeModel() {
291 CookiesTreeModel* model = app_context_ ?
292 app_cookies_tree_model_.get() : cookies_tree_model_.get();
293 DCHECK(model);
294 return model;
295 }
296
297 std::string CookiesViewHandler::GetCallback(
298 std::string method, CookiesTreeModel* model) {
Bernhard Bauer 2012/07/10 18:18:03 You're always calling this method with GetTreeMode
nasko 2012/07/10 19:54:10 This should be acting on the model. I've changed t
299 std::string callback("CookiesView");
300
301 if (model == app_cookies_tree_model_) {
Bernhard Bauer 2012/07/10 18:18:03 Nit: braces are unnecessary.
nasko 2012/07/10 19:54:10 Done.
302 callback.append("App");
303 }
304 return callback.append(".").append(method);
240 } 305 }
241 306
242 } // namespace options2 307 } // namespace options2
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/options2/cookies_view_handler2.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698