| Index: trunk/src/chrome/browser/component_updater/component_updater_service.cc
|
| ===================================================================
|
| --- trunk/src/chrome/browser/component_updater/component_updater_service.cc (revision 232536)
|
| +++ trunk/src/chrome/browser/component_updater/component_updater_service.cc (working copy)
|
| @@ -15,7 +15,6 @@
|
| #include "base/files/file_path.h"
|
| #include "base/logging.h"
|
| #include "base/memory/scoped_ptr.h"
|
| -#include "base/memory/weak_ptr.h"
|
| #include "base/stl_util.h"
|
| #include "base/strings/string_number_conversions.h"
|
| #include "base/strings/string_piece.h"
|
| @@ -32,8 +31,6 @@
|
| #include "chrome/common/chrome_version_info.h"
|
| #include "chrome/common/extensions/extension.h"
|
| #include "content/public/browser/browser_thread.h"
|
| -#include "content/public/browser/resource_controller.h"
|
| -#include "content/public/browser/resource_throttle.h"
|
| #include "content/public/browser/utility_process_host.h"
|
| #include "content/public/browser/utility_process_host_client.h"
|
| #include "net/base/escape.h"
|
| @@ -41,7 +38,6 @@
|
| #include "net/base/net_errors.h"
|
| #include "net/url_request/url_fetcher.h"
|
| #include "net/url_request/url_fetcher_delegate.h"
|
| -#include "net/url_request/url_request.h"
|
| #include "net/url_request/url_request_status.h"
|
| #include "url/gurl.h"
|
|
|
| @@ -241,52 +237,6 @@
|
| CrxComponentInfo::~CrxComponentInfo() {
|
| }
|
|
|
| -///////////////////////////////////////////////////////////////////////////////
|
| -// In charge of blocking url requests until the |crx_id| component has been
|
| -// updated. This class is touched solely from the IO thread. The UI thread
|
| -// can post tasks to it via weak pointers. By default the request is blocked
|
| -// unless the CrxUpdateService calls Unblock().
|
| -// The lifetime is controlled by Chrome's resource loader so the component
|
| -// updater cannot touch objects from this class except via weak pointers.
|
| -class CUResourceThrottle
|
| - : public content::ResourceThrottle,
|
| - public base::SupportsWeakPtr<CUResourceThrottle> {
|
| - public:
|
| - explicit CUResourceThrottle(const net::URLRequest* request);
|
| - virtual ~CUResourceThrottle();
|
| - // Overriden from ResourceThrottle.
|
| - virtual void WillStartRequest(bool* defer) OVERRIDE;
|
| - virtual void WillRedirectRequest(const GURL& new_url, bool* defer) OVERRIDE;
|
| -
|
| - // Component updater calls this function via PostTask to unblock the request.
|
| - void Unblock();
|
| -
|
| - typedef std::vector<base::WeakPtr<CUResourceThrottle> > WeakPtrVector;
|
| -
|
| - private:
|
| - enum State {
|
| - NEW,
|
| - BLOCKED,
|
| - UNBLOCKED
|
| - };
|
| -
|
| - State state_;
|
| -};
|
| -
|
| -void UnblockResourceThrottle(base::WeakPtr<CUResourceThrottle> rt) {
|
| - BrowserThread::PostTask(
|
| - BrowserThread::IO,
|
| - FROM_HERE,
|
| - base::Bind(&CUResourceThrottle::Unblock, rt));
|
| -}
|
| -
|
| -void UnblockandReapAllThrottles(CUResourceThrottle::WeakPtrVector* throttles) {
|
| - CUResourceThrottle::WeakPtrVector::iterator it;
|
| - for (it = throttles->begin(); it != throttles->end(); ++it)
|
| - UnblockResourceThrottle(*it);
|
| - throttles->clear();
|
| -}
|
| -
|
| //////////////////////////////////////////////////////////////////////////////
|
| // The one and only implementation of the ComponentUpdateService interface. In
|
| // charge of running the show. The main method is ProcessPendingItems() which
|
| @@ -313,8 +263,6 @@
|
| virtual Status OnDemandUpdate(const std::string& component_id) OVERRIDE;
|
| virtual void GetComponents(
|
| std::vector<CrxComponentInfo>* components) OVERRIDE;
|
| - virtual content::ResourceThrottle* GetOnDemandResourceThrottle(
|
| - net::URLRequest* request, const std::string& crx_id) OVERRIDE;
|
|
|
| // The only purpose of this class is to forward the
|
| // UtilityProcessHostClient callbacks so CrxUpdateService does
|
| @@ -395,8 +343,6 @@
|
|
|
| bool AddItemToUpdateCheck(CrxUpdateItem* item, std::string* query);
|
|
|
| - Status OnDemandUpdateInternal(CrxUpdateItem* item);
|
| -
|
| void ProcessPendingItems();
|
|
|
| CrxUpdateItem* FindReadyComponent();
|
| @@ -429,9 +375,6 @@
|
|
|
| bool HasOnDemandItems() const;
|
|
|
| - void OnNewResourceThrottle(base::WeakPtr<CUResourceThrottle> rt,
|
| - const std::string& crx_id);
|
| -
|
| scoped_ptr<ComponentUpdateService::Configurator> config_;
|
|
|
| scoped_ptr<ComponentPatcher> component_patcher_;
|
| @@ -616,13 +559,6 @@
|
| break;
|
| }
|
| }
|
| -
|
| - // Free possible pending network requests.
|
| - if ((to == CrxUpdateItem::kUpdated) ||
|
| - (to == CrxUpdateItem::kUpToDate) ||
|
| - (to == CrxUpdateItem::kNoUpdate)) {
|
| - UnblockandReapAllThrottles(&item->throttles);
|
| - }
|
| }
|
|
|
| // Changes all the components in |work_items_| that have |from| status to
|
| @@ -712,13 +648,11 @@
|
| // |component_id| is a value returned from GetCrxComponentID().
|
| ComponentUpdateService::Status CrxUpdateService::OnDemandUpdate(
|
| const std::string& component_id) {
|
| - return OnDemandUpdateInternal(FindUpdateItemById(component_id));
|
| -}
|
| -
|
| -ComponentUpdateService::Status CrxUpdateService::OnDemandUpdateInternal(
|
| - CrxUpdateItem* uit) {
|
| + CrxUpdateItem* uit;
|
| + uit = FindUpdateItemById(component_id);
|
| if (!uit)
|
| return kError;
|
| +
|
| // Check if the request is too soon.
|
| base::TimeDelta delta = base::Time::Now() - uit->last_check;
|
| if (delta < base::TimeDelta::FromSeconds(config_->OnDemandDelay()))
|
| @@ -1146,66 +1080,6 @@
|
| }
|
| }
|
|
|
| -content::ResourceThrottle* CrxUpdateService::GetOnDemandResourceThrottle(
|
| - net::URLRequest* request, const std::string& crx_id) {
|
| - // We give the raw pointer to the caller, who will delete it at will
|
| - // and we keep for ourselves a weak pointer to it so we can post tasks
|
| - // from the UI thread without having to track lifetime directly.
|
| - CUResourceThrottle* rt = new CUResourceThrottle(request);
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI,
|
| - FROM_HERE,
|
| - base::Bind(&CrxUpdateService::OnNewResourceThrottle,
|
| - base::Unretained(this),
|
| - rt->AsWeakPtr(),
|
| - crx_id));
|
| - return rt;
|
| -}
|
| -
|
| -void CrxUpdateService::OnNewResourceThrottle(
|
| - base::WeakPtr<CUResourceThrottle> rt, const std::string& crx_id) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| - // Check if we can on-demand update, else unblock the request anyway.
|
| - CrxUpdateItem* item = FindUpdateItemById(crx_id);
|
| - Status status = OnDemandUpdateInternal(item);
|
| - if (status == kOk || status == kInProgress) {
|
| - item->throttles.push_back(rt);
|
| - return;
|
| - }
|
| - UnblockResourceThrottle(rt);
|
| -}
|
| -
|
| -///////////////////////////////////////////////////////////////////////////////
|
| -
|
| -CUResourceThrottle::CUResourceThrottle(const net::URLRequest* request)
|
| - : state_(NEW) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| -}
|
| -
|
| -CUResourceThrottle::~CUResourceThrottle() {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| -}
|
| -
|
| -void CUResourceThrottle::WillStartRequest(bool* defer) {
|
| - if (state_ != UNBLOCKED) {
|
| - state_ = BLOCKED;
|
| - *defer = true;
|
| - } else {
|
| - *defer = false;
|
| - }
|
| -}
|
| -
|
| -void CUResourceThrottle::WillRedirectRequest(const GURL& new_url, bool* defer) {
|
| - WillStartRequest(defer);
|
| -}
|
| -
|
| -void CUResourceThrottle::Unblock() {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| - if (state_ == BLOCKED)
|
| - controller()->Resume();
|
| - state_ = UNBLOCKED;
|
| -}
|
| -
|
| // The component update factory. Using the component updater as a singleton
|
| // is the job of the browser process.
|
| ComponentUpdateService* ComponentUpdateServiceFactory(
|
|
|