| OLD | NEW |
| 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/web_resource_service.h" | 5 #include "chrome/browser/web_resource/web_resource_service.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/file_path.h" | 10 #include "base/file_path.h" |
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 235 Init(); | 235 Init(); |
| 236 } | 236 } |
| 237 | 237 |
| 238 WebResourceService::~WebResourceService() { } | 238 WebResourceService::~WebResourceService() { } |
| 239 | 239 |
| 240 void WebResourceService::Init() { | 240 void WebResourceService::Init() { |
| 241 cache_update_delay_ = kCacheUpdateDelay; | 241 cache_update_delay_ = kCacheUpdateDelay; |
| 242 resource_dispatcher_host_ = g_browser_process->resource_dispatcher_host(); | 242 resource_dispatcher_host_ = g_browser_process->resource_dispatcher_host(); |
| 243 web_resource_fetcher_.reset(new WebResourceFetcher(this)); | 243 web_resource_fetcher_.reset(new WebResourceFetcher(this)); |
| 244 prefs_->RegisterStringPref(prefs::kNTPWebResourceCacheUpdate, "0"); | 244 prefs_->RegisterStringPref(prefs::kNTPWebResourceCacheUpdate, "0"); |
| 245 prefs_->RegisterRealPref(prefs::kNTPCustomLogoStart, 0); | 245 prefs_->RegisterDoublePref(prefs::kNTPCustomLogoStart, 0); |
| 246 prefs_->RegisterRealPref(prefs::kNTPCustomLogoEnd, 0); | 246 prefs_->RegisterDoublePref(prefs::kNTPCustomLogoEnd, 0); |
| 247 prefs_->RegisterRealPref(prefs::kNTPPromoStart, 0); | 247 prefs_->RegisterDoublePref(prefs::kNTPPromoStart, 0); |
| 248 prefs_->RegisterRealPref(prefs::kNTPPromoEnd, 0); | 248 prefs_->RegisterDoublePref(prefs::kNTPPromoEnd, 0); |
| 249 prefs_->RegisterStringPref(prefs::kNTPPromoLine, std::string()); | 249 prefs_->RegisterStringPref(prefs::kNTPPromoLine, std::string()); |
| 250 prefs_->RegisterBooleanPref(prefs::kNTPPromoClosed, false); | 250 prefs_->RegisterBooleanPref(prefs::kNTPPromoClosed, false); |
| 251 prefs_->RegisterIntegerPref(prefs::kNTPPromoGroup, -1); | 251 prefs_->RegisterIntegerPref(prefs::kNTPPromoGroup, -1); |
| 252 prefs_->RegisterIntegerPref(prefs::kNTPPromoBuild, | 252 prefs_->RegisterIntegerPref(prefs::kNTPPromoBuild, |
| 253 DEV_BUILD | BETA_BUILD | STABLE_BUILD); | 253 DEV_BUILD | BETA_BUILD | STABLE_BUILD); |
| 254 prefs_->RegisterIntegerPref(prefs::kNTPPromoGroupTimeSlice, 0); | 254 prefs_->RegisterIntegerPref(prefs::kNTPPromoGroupTimeSlice, 0); |
| 255 | 255 |
| 256 // If the promo start is in the future, set a notification task to invalidate | 256 // If the promo start is in the future, set a notification task to invalidate |
| 257 // the NTP cache at the time of the promo start. | 257 // the NTP cache at the time of the promo start. |
| 258 double promo_start = prefs_->GetReal(prefs::kNTPPromoStart); | 258 double promo_start = prefs_->GetDouble(prefs::kNTPPromoStart); |
| 259 double promo_end = prefs_->GetReal(prefs::kNTPPromoEnd); | 259 double promo_end = prefs_->GetDouble(prefs::kNTPPromoEnd); |
| 260 ScheduleNotification(promo_start, promo_end); | 260 ScheduleNotification(promo_start, promo_end); |
| 261 } | 261 } |
| 262 | 262 |
| 263 void WebResourceService::EndFetch() { | 263 void WebResourceService::EndFetch() { |
| 264 in_fetch_ = false; | 264 in_fetch_ = false; |
| 265 } | 265 } |
| 266 | 266 |
| 267 void WebResourceService::OnWebResourceUnpacked( | 267 void WebResourceService::OnWebResourceUnpacked( |
| 268 const DictionaryValue& parsed_json) { | 268 const DictionaryValue& parsed_json) { |
| 269 UnpackLogoSignal(parsed_json); | 269 UnpackLogoSignal(parsed_json); |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 384 DictionaryValue* topic_dict; | 384 DictionaryValue* topic_dict; |
| 385 ListValue* answer_list; | 385 ListValue* answer_list; |
| 386 double old_promo_start = 0; | 386 double old_promo_start = 0; |
| 387 double old_promo_end = 0; | 387 double old_promo_end = 0; |
| 388 double promo_start = 0; | 388 double promo_start = 0; |
| 389 double promo_end = 0; | 389 double promo_end = 0; |
| 390 | 390 |
| 391 // Check for preexisting start and end values. | 391 // Check for preexisting start and end values. |
| 392 if (prefs_->HasPrefPath(prefs::kNTPPromoStart) && | 392 if (prefs_->HasPrefPath(prefs::kNTPPromoStart) && |
| 393 prefs_->HasPrefPath(prefs::kNTPPromoEnd)) { | 393 prefs_->HasPrefPath(prefs::kNTPPromoEnd)) { |
| 394 old_promo_start = prefs_->GetReal(prefs::kNTPPromoStart); | 394 old_promo_start = prefs_->GetDouble(prefs::kNTPPromoStart); |
| 395 old_promo_end = prefs_->GetReal(prefs::kNTPPromoEnd); | 395 old_promo_end = prefs_->GetDouble(prefs::kNTPPromoEnd); |
| 396 } | 396 } |
| 397 | 397 |
| 398 // Check for newly received start and end values. | 398 // Check for newly received start and end values. |
| 399 if (parsed_json.GetDictionary("topic", &topic_dict)) { | 399 if (parsed_json.GetDictionary("topic", &topic_dict)) { |
| 400 if (topic_dict->GetList("answers", &answer_list)) { | 400 if (topic_dict->GetList("answers", &answer_list)) { |
| 401 std::string promo_start_string = ""; | 401 std::string promo_start_string = ""; |
| 402 std::string promo_end_string = ""; | 402 std::string promo_end_string = ""; |
| 403 std::string promo_string = ""; | 403 std::string promo_string = ""; |
| 404 std::string promo_build = ""; | 404 std::string promo_build = ""; |
| 405 int promo_build_type = 0; | 405 int promo_build_type = 0; |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 466 } | 466 } |
| 467 } | 467 } |
| 468 | 468 |
| 469 // If start or end times have changed, trigger a new web resource | 469 // If start or end times have changed, trigger a new web resource |
| 470 // notification, so that the logo on the NTP is updated. This check is | 470 // notification, so that the logo on the NTP is updated. This check is |
| 471 // outside the reading of the web resource data, because the absence of | 471 // outside the reading of the web resource data, because the absence of |
| 472 // dates counts as a triggering change if there were dates before. | 472 // dates counts as a triggering change if there were dates before. |
| 473 // Also reset the promo closed preference, to signal a new promo. | 473 // Also reset the promo closed preference, to signal a new promo. |
| 474 if (!(old_promo_start == promo_start) || | 474 if (!(old_promo_start == promo_start) || |
| 475 !(old_promo_end == promo_end)) { | 475 !(old_promo_end == promo_end)) { |
| 476 prefs_->SetReal(prefs::kNTPPromoStart, promo_start); | 476 prefs_->SetDouble(prefs::kNTPPromoStart, promo_start); |
| 477 prefs_->SetReal(prefs::kNTPPromoEnd, promo_end); | 477 prefs_->SetDouble(prefs::kNTPPromoEnd, promo_end); |
| 478 prefs_->SetBoolean(prefs::kNTPPromoClosed, false); | 478 prefs_->SetBoolean(prefs::kNTPPromoClosed, false); |
| 479 ScheduleNotification(promo_start, promo_end); | 479 ScheduleNotification(promo_start, promo_end); |
| 480 } | 480 } |
| 481 } | 481 } |
| 482 | 482 |
| 483 void WebResourceService::UnpackLogoSignal(const DictionaryValue& parsed_json) { | 483 void WebResourceService::UnpackLogoSignal(const DictionaryValue& parsed_json) { |
| 484 DictionaryValue* topic_dict; | 484 DictionaryValue* topic_dict; |
| 485 ListValue* answer_list; | 485 ListValue* answer_list; |
| 486 double old_logo_start = 0; | 486 double old_logo_start = 0; |
| 487 double old_logo_end = 0; | 487 double old_logo_end = 0; |
| 488 double logo_start = 0; | 488 double logo_start = 0; |
| 489 double logo_end = 0; | 489 double logo_end = 0; |
| 490 | 490 |
| 491 // Check for preexisting start and end values. | 491 // Check for preexisting start and end values. |
| 492 if (prefs_->HasPrefPath(prefs::kNTPCustomLogoStart) && | 492 if (prefs_->HasPrefPath(prefs::kNTPCustomLogoStart) && |
| 493 prefs_->HasPrefPath(prefs::kNTPCustomLogoEnd)) { | 493 prefs_->HasPrefPath(prefs::kNTPCustomLogoEnd)) { |
| 494 old_logo_start = prefs_->GetReal(prefs::kNTPCustomLogoStart); | 494 old_logo_start = prefs_->GetDouble(prefs::kNTPCustomLogoStart); |
| 495 old_logo_end = prefs_->GetReal(prefs::kNTPCustomLogoEnd); | 495 old_logo_end = prefs_->GetDouble(prefs::kNTPCustomLogoEnd); |
| 496 } | 496 } |
| 497 | 497 |
| 498 // Check for newly received start and end values. | 498 // Check for newly received start and end values. |
| 499 if (parsed_json.GetDictionary("topic", &topic_dict)) { | 499 if (parsed_json.GetDictionary("topic", &topic_dict)) { |
| 500 if (topic_dict->GetList("answers", &answer_list)) { | 500 if (topic_dict->GetList("answers", &answer_list)) { |
| 501 std::string logo_start_string = ""; | 501 std::string logo_start_string = ""; |
| 502 std::string logo_end_string = ""; | 502 std::string logo_end_string = ""; |
| 503 for (ListValue::const_iterator tip_iter = answer_list->begin(); | 503 for (ListValue::const_iterator tip_iter = answer_list->begin(); |
| 504 tip_iter != answer_list->end(); ++tip_iter) { | 504 tip_iter != answer_list->end(); ++tip_iter) { |
| 505 if (!(*tip_iter)->IsType(Value::TYPE_DICTIONARY)) | 505 if (!(*tip_iter)->IsType(Value::TYPE_DICTIONARY)) |
| (...skipping 25 matching lines...) Expand all Loading... |
| 531 } | 531 } |
| 532 } | 532 } |
| 533 } | 533 } |
| 534 | 534 |
| 535 // If logo start or end times have changed, trigger a new web resource | 535 // If logo start or end times have changed, trigger a new web resource |
| 536 // notification, so that the logo on the NTP is updated. This check is | 536 // notification, so that the logo on the NTP is updated. This check is |
| 537 // outside the reading of the web resource data, because the absence of | 537 // outside the reading of the web resource data, because the absence of |
| 538 // dates counts as a triggering change if there were dates before. | 538 // dates counts as a triggering change if there were dates before. |
| 539 if (!(old_logo_start == logo_start) || | 539 if (!(old_logo_start == logo_start) || |
| 540 !(old_logo_end == logo_end)) { | 540 !(old_logo_end == logo_end)) { |
| 541 prefs_->SetReal(prefs::kNTPCustomLogoStart, logo_start); | 541 prefs_->SetDouble(prefs::kNTPCustomLogoStart, logo_start); |
| 542 prefs_->SetReal(prefs::kNTPCustomLogoEnd, logo_end); | 542 prefs_->SetDouble(prefs::kNTPCustomLogoEnd, logo_end); |
| 543 NotificationService* service = NotificationService::current(); | 543 NotificationService* service = NotificationService::current(); |
| 544 service->Notify(NotificationType::WEB_RESOURCE_STATE_CHANGED, | 544 service->Notify(NotificationType::WEB_RESOURCE_STATE_CHANGED, |
| 545 Source<WebResourceService>(this), | 545 Source<WebResourceService>(this), |
| 546 NotificationService::NoDetails()); | 546 NotificationService::NoDetails()); |
| 547 } | 547 } |
| 548 } | 548 } |
| 549 | 549 |
| 550 namespace WebResourceServiceUtil { | 550 namespace WebResourceServiceUtil { |
| 551 | 551 |
| 552 bool CanShowPromo(Profile* profile) { | 552 bool CanShowPromo(Profile* profile) { |
| (...skipping 23 matching lines...) Expand all Loading... |
| 576 } else { | 576 } else { |
| 577 is_promo_build = true; | 577 is_promo_build = true; |
| 578 } | 578 } |
| 579 } | 579 } |
| 580 | 580 |
| 581 return !promo_closed && !is_synced && is_promo_build; | 581 return !promo_closed && !is_synced && is_promo_build; |
| 582 } | 582 } |
| 583 | 583 |
| 584 } // namespace WebResourceService | 584 } // namespace WebResourceService |
| 585 | 585 |
| OLD | NEW |