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

Side by Side Diff: chrome/browser/component_updater/component_updater_service.cc

Issue 209313002: Modified components ui to address concern of all the time disabled check update button. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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/component_updater/component_updater_service.h" 5 #include "chrome/browser/component_updater/component_updater_service.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 explicit CrxUpdateService(ComponentUpdateService::Configurator* config); 163 explicit CrxUpdateService(ComponentUpdateService::Configurator* config);
164 virtual ~CrxUpdateService(); 164 virtual ~CrxUpdateService();
165 165
166 // Overrides for ComponentUpdateService. 166 // Overrides for ComponentUpdateService.
167 virtual Status Start() OVERRIDE; 167 virtual Status Start() OVERRIDE;
168 virtual Status Stop() OVERRIDE; 168 virtual Status Stop() OVERRIDE;
169 virtual Status RegisterComponent(const CrxComponent& component) OVERRIDE; 169 virtual Status RegisterComponent(const CrxComponent& component) OVERRIDE;
170 virtual Status OnDemandUpdate(const std::string& component_id) OVERRIDE; 170 virtual Status OnDemandUpdate(const std::string& component_id) OVERRIDE;
171 virtual void GetComponents( 171 virtual void GetComponents(
172 std::vector<CrxComponentInfo>* components) OVERRIDE; 172 std::vector<CrxComponentInfo>* components) OVERRIDE;
173 virtual ComponentUpdateService::Status GetComponentStatus(
174 const std::string& component_id) OVERRIDE;
175
173 virtual content::ResourceThrottle* GetOnDemandResourceThrottle( 176 virtual content::ResourceThrottle* GetOnDemandResourceThrottle(
174 net::URLRequest* request, const std::string& crx_id) OVERRIDE; 177 net::URLRequest* request, const std::string& crx_id) OVERRIDE;
175 178
176 // Context for a crx download url request. 179 // Context for a crx download url request.
177 struct CRXContext { 180 struct CRXContext {
178 ComponentInstaller* installer; 181 ComponentInstaller* installer;
179 std::vector<uint8> pk_hash; 182 std::vector<uint8> pk_hash;
180 std::string id; 183 std::string id;
181 std::string fingerprint; 184 std::string fingerprint;
182 CRXContext() : installer(NULL) {} 185 CRXContext() : installer(NULL) {}
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 CrxUpdateItem* FindUpdateItemById(const std::string& id); 246 CrxUpdateItem* FindUpdateItemById(const std::string& id);
244 247
245 void NotifyComponentObservers(ComponentObserver::Events event, 248 void NotifyComponentObservers(ComponentObserver::Events event,
246 int extra) const; 249 int extra) const;
247 250
248 bool HasOnDemandItems() const; 251 bool HasOnDemandItems() const;
249 252
250 void OnNewResourceThrottle(base::WeakPtr<CUResourceThrottle> rt, 253 void OnNewResourceThrottle(base::WeakPtr<CUResourceThrottle> rt,
251 const std::string& crx_id); 254 const std::string& crx_id);
252 255
256 ComponentUpdateService::Status GetConciseStatus(
257 const CrxUpdateItem::Status status);
258
253 scoped_ptr<ComponentUpdateService::Configurator> config_; 259 scoped_ptr<ComponentUpdateService::Configurator> config_;
254 260
255 scoped_ptr<ComponentPatcher> component_patcher_; 261 scoped_ptr<ComponentPatcher> component_patcher_;
256 262
257 scoped_ptr<UpdateChecker> update_checker_; 263 scoped_ptr<UpdateChecker> update_checker_;
258 264
259 scoped_ptr<PingManager> ping_manager_; 265 scoped_ptr<PingManager> ping_manager_;
260 266
261 scoped_ptr<ComponentUnpacker> unpacker_; 267 scoped_ptr<ComponentUnpacker> unpacker_;
262 268
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 ComponentUpdateService::Status CrxUpdateService::OnDemandUpdateInternal( 508 ComponentUpdateService::Status CrxUpdateService::OnDemandUpdateInternal(
503 CrxUpdateItem* uit) { 509 CrxUpdateItem* uit) {
504 if (!uit) 510 if (!uit)
505 return kError; 511 return kError;
506 512
507 // Check if the request is too soon. 513 // Check if the request is too soon.
508 base::TimeDelta delta = base::Time::Now() - uit->last_check; 514 base::TimeDelta delta = base::Time::Now() - uit->last_check;
509 if (delta < base::TimeDelta::FromSeconds(config_->OnDemandDelay())) 515 if (delta < base::TimeDelta::FromSeconds(config_->OnDemandDelay()))
510 return kError; 516 return kError;
511 517
512 switch (uit->status) { 518 Status service_status = GetConciseStatus(uit->status);
Sorin Jianu 2014/03/26 20:22:36 Consider renaming GetConciseStatus to GetServiceSt
Shrikant Kelkar 2014/03/26 21:35:51 Done.
513 // If the item is already in the process of being updated, there is 519 // If the item is already in the process of being updated, there is
514 // no point in this call, so return kInProgress. 520 // no point in this call, so return kInProgress.
515 case CrxUpdateItem::kChecking: 521 if (service_status == kInProgress)
516 case CrxUpdateItem::kCanUpdate: 522 return service_status;
517 case CrxUpdateItem::kDownloadingDiff: 523
518 case CrxUpdateItem::kDownloading: 524 // Otherwise the item was already checked a while back (or it is new),
519 case CrxUpdateItem::kUpdatingDiff: 525 // set its status to kNew to give it a slightly higher priority.
520 case CrxUpdateItem::kUpdating: 526 ChangeItemState(uit, CrxUpdateItem::kNew);
Sorin Jianu 2014/03/26 20:22:36 are we still setting uit->on_demand = true anywher
Shrikant Kelkar 2014/03/26 21:35:51 good catch, copy~paste error. Thanks.
521 return kInProgress;
522 // Otherwise the item was already checked a while back (or it is new),
523 // set its status to kNew to give it a slightly higher priority.
524 case CrxUpdateItem::kNew:
525 case CrxUpdateItem::kUpdated:
526 case CrxUpdateItem::kUpToDate:
527 case CrxUpdateItem::kNoUpdate:
528 ChangeItemState(uit, CrxUpdateItem::kNew);
529 uit->on_demand = true;
530 break;
531 case CrxUpdateItem::kLastStatus:
532 NOTREACHED() << uit->status;
533 }
534 527
535 // In case the current delay is long, set the timer to a shorter value 528 // In case the current delay is long, set the timer to a shorter value
536 // to get the ball rolling. 529 // to get the ball rolling.
537 if (timer_.IsRunning()) { 530 if (timer_.IsRunning()) {
538 timer_.Stop(); 531 timer_.Stop();
539 timer_.Start(FROM_HERE, base::TimeDelta::FromSeconds(config_->StepDelay()), 532 timer_.Start(FROM_HERE, base::TimeDelta::FromSeconds(config_->StepDelay()),
540 this, &CrxUpdateService::ProcessPendingItems); 533 this, &CrxUpdateService::ProcessPendingItems);
541 } 534 }
542 535
543 return kOk; 536 return kOk;
544 } 537 }
545 538
546 void CrxUpdateService::GetComponents( 539 void CrxUpdateService::GetComponents(
547 std::vector<CrxComponentInfo>* components) { 540 std::vector<CrxComponentInfo>* components) {
548 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 541 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
549 for (UpdateItems::const_iterator it = work_items_.begin(); 542 for (UpdateItems::const_iterator it = work_items_.begin();
550 it != work_items_.end(); ++it) { 543 it != work_items_.end(); ++it) {
551 const CrxUpdateItem* item = *it; 544 const CrxUpdateItem* item = *it;
552 CrxComponentInfo info; 545 CrxComponentInfo info;
553 info.id = GetCrxComponentID(item->component); 546 info.id = GetCrxComponentID(item->component);
554 info.version = item->component.version.GetString(); 547 info.version = item->component.version.GetString();
555 info.name = item->component.name; 548 info.name = item->component.name;
549 info.status = GetConciseStatus(item->status);
556 components->push_back(info); 550 components->push_back(info);
557 } 551 }
558 } 552 }
559 553
554 ComponentUpdateService::Status CrxUpdateService::GetComponentStatus(
555 const std::string& component_id) {
556 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
557
558 CrxUpdateItem* crx = FindUpdateItemById(component_id);
559 DCHECK(crx != NULL);
Sorin Jianu 2014/03/26 20:22:36 no need to dcheck and handle the error, see the DC
Shrikant Kelkar 2014/03/26 21:35:51 Done.
560 if (crx == NULL)
561 return kError;
562
563 Status service_status = GetConciseStatus(crx->status);
564 return service_status;
Sorin Jianu 2014/03/26 20:22:36 return GetConciseStatus(crx->status);
Shrikant Kelkar 2014/03/26 21:35:51 Done.
565 }
566
567
560 // This is the main loop of the component updater. It updates one component 568 // This is the main loop of the component updater. It updates one component
561 // at a time if updates are available. Otherwise, it does an update check or 569 // at a time if updates are available. Otherwise, it does an update check or
562 // takes a long sleep until the loop runs again. 570 // takes a long sleep until the loop runs again.
563 void CrxUpdateService::ProcessPendingItems() { 571 void CrxUpdateService::ProcessPendingItems() {
564 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 572 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
565 573
566 CrxUpdateItem* ready_upgrade = FindReadyComponent(); 574 CrxUpdateItem* ready_upgrade = FindReadyComponent();
567 if (ready_upgrade) { 575 if (ready_upgrade) {
568 UpdateComponent(ready_upgrade); 576 UpdateComponent(ready_upgrade);
569 return; 577 return;
(...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after
966 // Check if we can on-demand update, else unblock the request anyway. 974 // Check if we can on-demand update, else unblock the request anyway.
967 CrxUpdateItem* item = FindUpdateItemById(crx_id); 975 CrxUpdateItem* item = FindUpdateItemById(crx_id);
968 Status status = OnDemandUpdateInternal(item); 976 Status status = OnDemandUpdateInternal(item);
969 if (status == kOk || status == kInProgress) { 977 if (status == kOk || status == kInProgress) {
970 item->throttles.push_back(rt); 978 item->throttles.push_back(rt);
971 return; 979 return;
972 } 980 }
973 UnblockResourceThrottle(rt); 981 UnblockResourceThrottle(rt);
974 } 982 }
975 983
984 ComponentUpdateService::Status CrxUpdateService::GetConciseStatus(
Sorin Jianu 2014/03/26 20:22:36 If we don't fully qualify then the param might fit
Shrikant Kelkar 2014/03/26 21:35:51 Not qualifying gives compile error + we seem to be
985 CrxUpdateItem::Status status) {
986 switch (status) {
987 // If the item is already in the process of being updated, there is
988 // no point in this call, so return kInProgress.
989 case CrxUpdateItem::kChecking:
990 case CrxUpdateItem::kCanUpdate:
991 case CrxUpdateItem::kDownloadingDiff:
992 case CrxUpdateItem::kDownloading:
993 case CrxUpdateItem::kUpdatingDiff:
994 case CrxUpdateItem::kUpdating:
995 return kInProgress;
996 // Otherwise the item was already checked a while back (or it is new),
997 // set its status to kNew to give it a slightly higher priority.
998 case CrxUpdateItem::kNew:
999 case CrxUpdateItem::kUpdated:
1000 case CrxUpdateItem::kUpToDate:
1001 case CrxUpdateItem::kNoUpdate:
1002 return kOk;
1003 break;
1004 case CrxUpdateItem::kLastStatus:
1005 NOTREACHED() << status;
1006 }
1007 return kError;
1008 }
1009
976 /////////////////////////////////////////////////////////////////////////////// 1010 ///////////////////////////////////////////////////////////////////////////////
977 1011
978 CUResourceThrottle::CUResourceThrottle(const net::URLRequest* request) 1012 CUResourceThrottle::CUResourceThrottle(const net::URLRequest* request)
979 : state_(NEW) { 1013 : state_(NEW) {
980 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 1014 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
981 } 1015 }
982 1016
983 CUResourceThrottle::~CUResourceThrottle() { 1017 CUResourceThrottle::~CUResourceThrottle() {
984 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 1018 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
985 } 1019 }
(...skipping 25 matching lines...) Expand all
1011 // The component update factory. Using the component updater as a singleton 1045 // The component update factory. Using the component updater as a singleton
1012 // is the job of the browser process. 1046 // is the job of the browser process.
1013 ComponentUpdateService* ComponentUpdateServiceFactory( 1047 ComponentUpdateService* ComponentUpdateServiceFactory(
1014 ComponentUpdateService::Configurator* config) { 1048 ComponentUpdateService::Configurator* config) {
1015 DCHECK(config); 1049 DCHECK(config);
1016 return new CrxUpdateService(config); 1050 return new CrxUpdateService(config);
1017 } 1051 }
1018 1052
1019 } // namespace component_updater 1053 } // namespace component_updater
1020 1054
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698