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

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

Issue 318143003: Make CUS interface more resilient by returning a copy of the data (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 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
11 #include "base/at_exit.h" 11 #include "base/at_exit.h"
12 #include "base/bind.h" 12 #include "base/bind.h"
13 #include "base/compiler_specific.h" 13 #include "base/compiler_specific.h"
14 #include "base/file_util.h" 14 #include "base/file_util.h"
15 #include "base/files/file_path.h" 15 #include "base/files/file_path.h"
16 #include "base/logging.h" 16 #include "base/logging.h"
17 #include "base/memory/scoped_ptr.h" 17 #include "base/memory/scoped_ptr.h"
18 #include "base/memory/weak_ptr.h"
19 #include "base/observer_list.h" 18 #include "base/observer_list.h"
20 #include "base/sequenced_task_runner.h" 19 #include "base/sequenced_task_runner.h"
21 #include "base/stl_util.h" 20 #include "base/stl_util.h"
22 #include "base/threading/sequenced_worker_pool.h" 21 #include "base/threading/sequenced_worker_pool.h"
23 #include "base/timer/timer.h" 22 #include "base/timer/timer.h"
24 #include "chrome/browser/browser_process.h" 23 #include "chrome/browser/browser_process.h"
25 #include "chrome/browser/component_updater/component_unpacker.h" 24 #include "chrome/browser/component_updater/component_unpacker.h"
26 #include "chrome/browser/component_updater/component_updater_ping_manager.h" 25 #include "chrome/browser/component_updater/component_updater_ping_manager.h"
27 #include "chrome/browser/component_updater/component_updater_utils.h" 26 #include "chrome/browser/component_updater/component_updater_utils.h"
28 #include "chrome/browser/component_updater/crx_downloader.h" 27 #include "chrome/browser/component_updater/crx_downloader.h"
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 explicit CrxUpdateService(ComponentUpdateService::Configurator* config); 147 explicit CrxUpdateService(ComponentUpdateService::Configurator* config);
149 virtual ~CrxUpdateService(); 148 virtual ~CrxUpdateService();
150 149
151 // Overrides for ComponentUpdateService. 150 // Overrides for ComponentUpdateService.
152 virtual void AddObserver(Observer* observer) OVERRIDE; 151 virtual void AddObserver(Observer* observer) OVERRIDE;
153 virtual void RemoveObserver(Observer* observer) OVERRIDE; 152 virtual void RemoveObserver(Observer* observer) OVERRIDE;
154 virtual Status Start() OVERRIDE; 153 virtual Status Start() OVERRIDE;
155 virtual Status Stop() OVERRIDE; 154 virtual Status Stop() OVERRIDE;
156 virtual Status RegisterComponent(const CrxComponent& component) OVERRIDE; 155 virtual Status RegisterComponent(const CrxComponent& component) OVERRIDE;
157 virtual std::vector<std::string> GetComponentIDs() const OVERRIDE; 156 virtual std::vector<std::string> GetComponentIDs() const OVERRIDE;
158 virtual CrxUpdateItem* GetComponentDetails( 157 virtual base::WeakPtr<CrxUpdateItem> GetComponentDetails(
159 const std::string& component_id) const OVERRIDE; 158 const std::string& component_id) const OVERRIDE;
160 virtual OnDemandUpdater& GetOnDemandUpdater() OVERRIDE; 159 virtual OnDemandUpdater& GetOnDemandUpdater() OVERRIDE;
161 160
162 // Overrides for OnDemandUpdater. 161 // Overrides for OnDemandUpdater.
163 virtual content::ResourceThrottle* GetOnDemandResourceThrottle( 162 virtual content::ResourceThrottle* GetOnDemandResourceThrottle(
164 net::URLRequest* request, 163 net::URLRequest* request,
165 const std::string& crx_id) OVERRIDE; 164 const std::string& crx_id) OVERRIDE;
166 virtual Status OnDemandUpdate(const std::string& component_id) OVERRIDE; 165 virtual Status OnDemandUpdate(const std::string& component_id) OVERRIDE;
167 166
168 // Context for a crx download url request. 167 // Context for a crx download url request.
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after
503 std::vector<std::string> component_ids; 502 std::vector<std::string> component_ids;
504 for (UpdateItems::const_iterator it = work_items_.begin(); 503 for (UpdateItems::const_iterator it = work_items_.begin();
505 it != work_items_.end(); 504 it != work_items_.end();
506 ++it) { 505 ++it) {
507 const CrxUpdateItem* item = *it; 506 const CrxUpdateItem* item = *it;
508 component_ids.push_back(item->id); 507 component_ids.push_back(item->id);
509 } 508 }
510 return component_ids; 509 return component_ids;
511 } 510 }
512 511
513 CrxUpdateItem* CrxUpdateService::GetComponentDetails( 512 base::WeakPtr<CrxUpdateItem> CrxUpdateService::GetComponentDetails(
514 const std::string& component_id) const { 513 const std::string& component_id) const {
515 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 514 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
516 return FindUpdateItemById(component_id); 515 return FindUpdateItemById(component_id)->AsWeakPtr();
517 } 516 }
518 517
519 OnDemandUpdater& CrxUpdateService::GetOnDemandUpdater() { 518 OnDemandUpdater& CrxUpdateService::GetOnDemandUpdater() {
520 return *this; 519 return *this;
521 } 520 }
522 521
523 // This is the main loop of the component updater. It updates one component 522 // This is the main loop of the component updater. It updates one component
524 // at a time if updates are available. Otherwise, it does an update check or 523 // at a time if updates are available. Otherwise, it does an update check or
525 // takes a long sleep until the loop runs again. 524 // takes a long sleep until the loop runs again.
526 void CrxUpdateService::ProcessPendingItems() { 525 void CrxUpdateService::ProcessPendingItems() {
(...skipping 546 matching lines...) Expand 10 before | Expand all | Expand 10 after
1073 1072
1074 // The component update factory. Using the component updater as a singleton 1073 // The component update factory. Using the component updater as a singleton
1075 // is the job of the browser process. 1074 // is the job of the browser process.
1076 ComponentUpdateService* ComponentUpdateServiceFactory( 1075 ComponentUpdateService* ComponentUpdateServiceFactory(
1077 ComponentUpdateService::Configurator* config) { 1076 ComponentUpdateService::Configurator* config) {
1078 DCHECK(config); 1077 DCHECK(config);
1079 return new CrxUpdateService(config); 1078 return new CrxUpdateService(config);
1080 } 1079 }
1081 1080
1082 } // namespace component_updater 1081 } // namespace component_updater
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698