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

Side by Side Diff: chrome/browser/web_resource/notification_promo.cc

Issue 10837044: Correct const accessors in base/values.(h|cc), Part II (ListValue) (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: David's comments Created 8 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
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/web_resource/notification_promo.h" 5 #include "chrome/browser/web_resource/notification_promo.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 if (!json.GetList(promo_type_, &promo_list)) 219 if (!json.GetList(promo_type_, &promo_list))
220 return; 220 return;
221 #else 221 #else
222 if (!json.GetList("mobile_ntp_sync_promo", &promo_list)) { 222 if (!json.GetList("mobile_ntp_sync_promo", &promo_list)) {
223 LOG(ERROR) << "Malfromed JSON: not a mobile_ntp_sync_promo"; 223 LOG(ERROR) << "Malfromed JSON: not a mobile_ntp_sync_promo";
224 return; 224 return;
225 } 225 }
226 #endif // !defined(OS_ANDROID) 226 #endif // !defined(OS_ANDROID)
227 227
228 // No support for multiple promos yet. Only consider the first one. 228 // No support for multiple promos yet. Only consider the first one.
229 DictionaryValue* promo = NULL; 229 const DictionaryValue* promo = NULL;
230 if (!promo_list->GetDictionary(0, &promo)) 230 if (!promo_list->GetDictionary(0, &promo))
231 return; 231 return;
232 232
233 // Strings. Assume the first one is the promo text. 233 // Strings. Assume the first one is the promo text.
234 DictionaryValue* strings = NULL; 234 const DictionaryValue* strings = NULL;
235 if (promo->GetDictionary("strings", &strings)) { 235 if (promo->GetDictionary("strings", &strings)) {
236 #if !defined(OS_ANDROID) 236 #if !defined(OS_ANDROID)
237 DictionaryValue::Iterator iter(*strings); 237 DictionaryValue::Iterator iter(*strings);
238 iter.value().GetAsString(&promo_text_); 238 iter.value().GetAsString(&promo_text_);
239 DVLOG(1) << "promo_text_=" << promo_text_; 239 DVLOG(1) << "promo_text_=" << promo_text_;
240 #endif // defined(OS_ANDROID) 240 #endif // defined(OS_ANDROID)
241 } 241 }
242 242
243 // Date. 243 // Date.
244 ListValue* date_list = NULL; 244 const ListValue* date_list = NULL;
245 if (promo->GetList("date", &date_list)) { 245 if (promo->GetList("date", &date_list)) {
246 DictionaryValue* date; 246 const DictionaryValue* date;
247 if (date_list->GetDictionary(0, &date)) { 247 if (date_list->GetDictionary(0, &date)) {
248 std::string time_str; 248 std::string time_str;
249 base::Time time; 249 base::Time time;
250 if (date->GetString("start", &time_str) && 250 if (date->GetString("start", &time_str) &&
251 base::Time::FromString(time_str.c_str(), &time)) { 251 base::Time::FromString(time_str.c_str(), &time)) {
252 start_ = time.ToDoubleT(); 252 start_ = time.ToDoubleT();
253 DVLOG(1) << "start str=" << time_str 253 DVLOG(1) << "start str=" << time_str
254 << ", start_="<< base::DoubleToString(start_); 254 << ", start_="<< base::DoubleToString(start_);
255 } 255 }
256 if (date->GetString("end", &time_str) && 256 if (date->GetString("end", &time_str) &&
257 base::Time::FromString(time_str.c_str(), &time)) { 257 base::Time::FromString(time_str.c_str(), &time)) {
258 end_ = time.ToDoubleT(); 258 end_ = time.ToDoubleT();
259 DVLOG(1) << "end str =" << time_str 259 DVLOG(1) << "end str =" << time_str
260 << ", end_=" << base::DoubleToString(end_); 260 << ", end_=" << base::DoubleToString(end_);
261 } 261 }
262 } 262 }
263 } 263 }
264 264
265 // Grouping. 265 // Grouping.
266 DictionaryValue* grouping = NULL; 266 const DictionaryValue* grouping = NULL;
267 if (promo->GetDictionary("grouping", &grouping)) { 267 if (promo->GetDictionary("grouping", &grouping)) {
268 grouping->GetInteger("buckets", &num_groups_); 268 grouping->GetInteger("buckets", &num_groups_);
269 grouping->GetInteger("segment", &initial_segment_); 269 grouping->GetInteger("segment", &initial_segment_);
270 grouping->GetInteger("increment", &increment_); 270 grouping->GetInteger("increment", &increment_);
271 grouping->GetInteger("increment_frequency", &time_slice_); 271 grouping->GetInteger("increment_frequency", &time_slice_);
272 grouping->GetInteger("increment_max", &max_group_); 272 grouping->GetInteger("increment_max", &max_group_);
273 273
274 DVLOG(1) << "num_groups_ = " << num_groups_ 274 DVLOG(1) << "num_groups_ = " << num_groups_
275 << ", initial_segment_ = " << initial_segment_ 275 << ", initial_segment_ = " << initial_segment_
276 << ", increment_ = " << increment_ 276 << ", increment_ = " << increment_
277 << ", time_slice_ = " << time_slice_ 277 << ", time_slice_ = " << time_slice_
278 << ", max_group_ = " << max_group_; 278 << ", max_group_ = " << max_group_;
279 } 279 }
280 280
281 // Payload. 281 // Payload.
282 DictionaryValue* payload = NULL; 282 const DictionaryValue* payload = NULL;
283 if (promo->GetDictionary("payload", &payload)) { 283 if (promo->GetDictionary("payload", &payload)) {
284 payload->GetBoolean("gplus_required", &gplus_required_); 284 payload->GetBoolean("gplus_required", &gplus_required_);
285 285
286 DVLOG(1) << "gplus_required_ = " << gplus_required_; 286 DVLOG(1) << "gplus_required_ = " << gplus_required_;
287 } 287 }
288 288
289 promo->GetInteger("max_views", &max_views_); 289 promo->GetInteger("max_views", &max_views_);
290 DVLOG(1) << "max_views_ " << max_views_; 290 DVLOG(1) << "max_views_ " << max_views_;
291 291
292 #if defined(OS_ANDROID) 292 #if defined(OS_ANDROID)
(...skipping 17 matching lines...) Expand all
310 if (!payload->GetString("promo_message_short", &promo_key_short) || 310 if (!payload->GetString("promo_message_short", &promo_key_short) ||
311 !payload->GetString("promo_message_long", &promo_key_long) || 311 !payload->GetString("promo_message_long", &promo_key_long) ||
312 !strings->GetString(promo_key_short, &promo_text_) || 312 !strings->GetString(promo_key_short, &promo_text_) ||
313 !strings->GetString(promo_key_long, &promo_text_long_)) { 313 !strings->GetString(promo_key_long, &promo_text_long_)) {
314 LOG(ERROR) << "Malformed JSON: no promo_message_short or _long"; 314 LOG(ERROR) << "Malformed JSON: no promo_message_short or _long";
315 return; 315 return;
316 } 316 }
317 payload->GetString("promo_action_type", &promo_action_type_); 317 payload->GetString("promo_action_type", &promo_action_type_);
318 // We need to be idempotent as the tests call us more than once. 318 // We need to be idempotent as the tests call us more than once.
319 promo_action_args_.reset(new base::ListValue); 319 promo_action_args_.reset(new base::ListValue);
320 ListValue* args; 320 const ListValue* args;
321 if (payload->GetList("promo_action_args", &args)) { 321 if (payload->GetList("promo_action_args", &args)) {
322 // JSON format for args: "promo_action_args" : [ "<arg1>", "<arg2>"... ] 322 // JSON format for args: "promo_action_args" : [ "<arg1>", "<arg2>"... ]
323 // Every value comes from "strings" dictionary, either directly or not. 323 // Every value comes from "strings" dictionary, either directly or not.
324 // Every arg is either directly a key into "strings" dictionary, 324 // Every arg is either directly a key into "strings" dictionary,
325 // or a key into "payload" dictionary with the value that is a key into 325 // or a key into "payload" dictionary with the value that is a key into
326 // "strings" dictionary. 326 // "strings" dictionary.
327 for (std::size_t i = 0; i < args->GetSize(); ++i) { 327 for (std::size_t i = 0; i < args->GetSize(); ++i) {
328 std::string name, key, value; 328 std::string name, key, value;
329 if (!args->GetString(i, &name) || 329 if (!args->GetString(i, &name) ||
330 !(strings->GetString(name, &value) || 330 !(strings->GetString(name, &value) ||
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
408 const base::DictionaryValue* promo_dict = 408 const base::DictionaryValue* promo_dict =
409 prefs_->GetDictionary(kPrefPromoObject); 409 prefs_->GetDictionary(kPrefPromoObject);
410 if (!promo_dict) 410 if (!promo_dict)
411 return; 411 return;
412 412
413 const base::ListValue* promo_list(NULL); 413 const base::ListValue* promo_list(NULL);
414 promo_dict->GetList(promo_type_, &promo_list); 414 promo_dict->GetList(promo_type_, &promo_list);
415 if (!promo_list) 415 if (!promo_list)
416 return; 416 return;
417 417
418 base::DictionaryValue* ntp_promo(NULL); 418 const base::DictionaryValue* ntp_promo(NULL);
419 promo_list->GetDictionary(0, &ntp_promo); 419 promo_list->GetDictionary(0, &ntp_promo);
420 if (!ntp_promo) 420 if (!ntp_promo)
421 return; 421 return;
422 422
423 ntp_promo->GetString(kPrefPromoText, &promo_text_); 423 ntp_promo->GetString(kPrefPromoText, &promo_text_);
424 #if defined(OS_ANDROID) 424 #if defined(OS_ANDROID)
425 ntp_promo->GetString(kPrefPromoTextLong, &promo_text_long_); 425 ntp_promo->GetString(kPrefPromoTextLong, &promo_text_long_);
426 ntp_promo->GetString(kPrefPromoActionType, &promo_action_type_); 426 ntp_promo->GetString(kPrefPromoActionType, &promo_action_type_);
427 base::ListValue* lv(NULL); 427 const base::ListValue* lv(NULL);
428 ntp_promo->GetList(kPrefPromoActionArgs, &lv); 428 ntp_promo->GetList(kPrefPromoActionArgs, &lv);
429 DCHECK(lv != NULL); 429 DCHECK(lv != NULL);
430 promo_action_args_.reset(lv->DeepCopy()); 430 promo_action_args_.reset(lv->DeepCopy());
431 #endif // defined(OS_ANDROID) 431 #endif // defined(OS_ANDROID)
432 432
433 ntp_promo->GetDouble(kPrefPromoStart, &start_); 433 ntp_promo->GetDouble(kPrefPromoStart, &start_);
434 ntp_promo->GetDouble(kPrefPromoEnd, &end_); 434 ntp_promo->GetDouble(kPrefPromoEnd, &end_);
435 435
436 ntp_promo->GetInteger(kPrefPromoNumGroups, &num_groups_); 436 ntp_promo->GetInteger(kPrefPromoNumGroups, &num_groups_);
437 ntp_promo->GetInteger(kPrefPromoSegment, &initial_segment_); 437 ntp_promo->GetInteger(kPrefPromoSegment, &initial_segment_);
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 if (group_ < initial_segment_) 505 if (group_ < initial_segment_)
506 return start_; 506 return start_;
507 return start_ + 507 return start_ +
508 std::ceil(static_cast<float>(group_ - initial_segment_ + 1) / increment_) 508 std::ceil(static_cast<float>(group_ - initial_segment_ + 1) / increment_)
509 * time_slice_; 509 * time_slice_;
510 } 510 }
511 511
512 double NotificationPromo::EndTime() const { 512 double NotificationPromo::EndTime() const {
513 return end_; 513 return end_;
514 } 514 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/web_ui_browsertest.cc ('k') | chrome/common/extensions/api/extension_api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698