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

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

Issue 7820003: Add support to download web store promo logos over https. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix sync failures Created 9 years, 3 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/promo_resource_service.h" 5 #include "chrome/browser/web_resource/promo_resource_service.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/string_number_conversions.h" 8 #include "base/string_number_conversions.h"
9 #include "base/threading/thread_restrictions.h" 9 #include "base/threading/thread_restrictions.h"
10 #include "base/time.h" 10 #include "base/time.h"
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 } 309 }
310 } 310 }
311 311
312 void PromoResourceService::UnpackWebStoreSignal( 312 void PromoResourceService::UnpackWebStoreSignal(
313 const DictionaryValue& parsed_json) { 313 const DictionaryValue& parsed_json) {
314 DictionaryValue* topic_dict; 314 DictionaryValue* topic_dict;
315 ListValue* answer_list; 315 ListValue* answer_list;
316 316
317 bool is_webstore_active = false; 317 bool is_webstore_active = false;
318 bool signal_found = false; 318 bool signal_found = false;
319 std::string promo_id = ""; 319 AppsPromo::PromoData promo_data;
320 std::string promo_header = "";
321 std::string promo_button = "";
322 std::string promo_link = ""; 320 std::string promo_link = "";
323 std::string promo_expire = "";
324 std::string promo_logo = ""; 321 std::string promo_logo = "";
325 int maximize_setting = 0;
326 int target_builds = 0; 322 int target_builds = 0;
327 323
328 if (!parsed_json.GetDictionary("topic", &topic_dict) || 324 if (!parsed_json.GetDictionary("topic", &topic_dict) ||
329 !topic_dict->GetList("answers", &answer_list)) 325 !topic_dict->GetList("answers", &answer_list))
330 return; 326 return;
331 327
332 for (ListValue::const_iterator answer_iter = answer_list->begin(); 328 for (ListValue::const_iterator answer_iter = answer_list->begin();
333 answer_iter != answer_list->end(); ++answer_iter) { 329 answer_iter != answer_list->end(); ++answer_iter) {
334 if (!(*answer_iter)->IsType(Value::TYPE_DICTIONARY)) 330 if (!(*answer_iter)->IsType(Value::TYPE_DICTIONARY))
335 continue; 331 continue;
(...skipping 19 matching lines...) Expand all
355 name = name.substr(split+1); 351 name = name.substr(split+1);
356 split = name.find(':'); 352 split = name.find(':');
357 if (split == std::string::npos || 353 if (split == std::string::npos ||
358 !base::StringToInt(name.substr(0, split), &target_builds)) 354 !base::StringToInt(name.substr(0, split), &target_builds))
359 continue; 355 continue;
360 356
361 // (3) an integer specifying what users should maximize the promo 357 // (3) an integer specifying what users should maximize the promo
362 name = name.substr(split+1); 358 name = name.substr(split+1);
363 split = name.find(':'); 359 split = name.find(':');
364 if (split == std::string::npos || 360 if (split == std::string::npos ||
365 !base::StringToInt(name.substr(0, split), &maximize_setting)) 361 !base::StringToInt(name.substr(0, split), &promo_data.user_group))
366 continue; 362 continue;
367 363
368 // (4) optional text that specifies a URL of a logo image 364 // (4) optional text that specifies a URL of a logo image
369 promo_logo = name.substr(split+1); 365 promo_logo = name.substr(split+1);
370 366
371 if (!a_dic->GetString(kAnswerIdProperty, &promo_id) || 367 if (!a_dic->GetString(kAnswerIdProperty, &promo_data.id) ||
372 !a_dic->GetString(kWebStoreHeaderProperty, &promo_header) || 368 !a_dic->GetString(kWebStoreHeaderProperty, &promo_data.header) ||
373 !a_dic->GetString(kWebStoreButtonProperty, &promo_button) || 369 !a_dic->GetString(kWebStoreButtonProperty, &promo_data.button) ||
374 !a_dic->GetString(kWebStoreLinkProperty, &promo_link) || 370 !a_dic->GetString(kWebStoreLinkProperty, &promo_link) ||
375 !a_dic->GetString(kWebStoreExpireProperty, &promo_expire)) 371 !a_dic->GetString(kWebStoreExpireProperty, &promo_data.expire))
376 continue; 372 continue;
377 373
378 if (IsThisBuildTargeted(target_builds)) { 374 if (IsThisBuildTargeted(target_builds)) {
379 // Store the first web store promo that targets the current build. 375 // The downloader will set the promo prefs and send the
380 AppsPromo::SetPromo(promo_id, promo_header, promo_button, 376 // NOTIFICATION_WEB_STORE_PROMO_LOADED notification.
381 GURL(promo_link), promo_expire, GURL(promo_logo), 377 promo_data.link = GURL(promo_link);
382 maximize_setting); 378 promo_data.logo = GURL(promo_logo);
379 apps_promo_logo_fetcher_.reset(
380 new AppsPromoLogoFetcher(profile_, promo_data));
383 signal_found = true; 381 signal_found = true;
384 break; 382 break;
385 } 383 }
386 } 384 }
387 385
388 if (!signal_found) { 386 if (!signal_found) {
389 // If no web store promos target this build, then clear all the prefs. 387 // If no web store promos target this build, then clear all the prefs.
390 AppsPromo::ClearPromo(); 388 AppsPromo::ClearPromo();
391 } 389 }
392 390
393 AppsPromo::SetWebStoreSupportedForLocale(is_webstore_active); 391 AppsPromo::SetWebStoreSupportedForLocale(is_webstore_active);
394 392
395 NotificationService::current()->Notify(
396 chrome::NOTIFICATION_WEB_STORE_PROMO_LOADED,
397 Source<Profile>(profile_),
398 NotificationService::NoDetails());
399
400 return; 393 return;
401 } 394 }
402 395
403 void PromoResourceService::UnpackLogoSignal( 396 void PromoResourceService::UnpackLogoSignal(
404 const DictionaryValue& parsed_json) { 397 const DictionaryValue& parsed_json) {
405 DictionaryValue* topic_dict; 398 DictionaryValue* topic_dict;
406 ListValue* answer_list; 399 ListValue* answer_list;
407 double old_logo_start = 0; 400 double old_logo_start = 0;
408 double old_logo_end = 0; 401 double old_logo_end = 0;
409 double logo_start = 0; 402 double logo_start = 0;
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 base::ThreadRestrictions::ScopedAllowIO allow_io; 479 base::ThreadRestrictions::ScopedAllowIO allow_io;
487 chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel(); 480 chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel();
488 is_promo_build = PromoResourceService::IsBuildTargeted( 481 is_promo_build = PromoResourceService::IsBuildTargeted(
489 channel, prefs->GetInteger(prefs::kNTPPromoBuild)); 482 channel, prefs->GetInteger(prefs::kNTPPromoBuild));
490 } 483 }
491 484
492 return !promo_closed && !is_synced && is_promo_build; 485 return !promo_closed && !is_synced && is_promo_build;
493 } 486 }
494 487
495 } // namespace PromoResourceServiceUtil 488 } // namespace PromoResourceServiceUtil
OLDNEW
« no previous file with comments | « chrome/browser/web_resource/promo_resource_service.h ('k') | chrome/browser/web_resource/promo_resource_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698