| Index: chrome/browser/extensions/network_delay_listener.h
|
| ===================================================================
|
| --- chrome/browser/extensions/network_delay_listener.h (revision 105660)
|
| +++ chrome/browser/extensions/network_delay_listener.h (working copy)
|
| @@ -1,103 +0,0 @@
|
| -// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#ifndef CHROME_BROWSER_EXTENSIONS_NETWORK_DELAY_LISTENER_H_
|
| -#define CHROME_BROWSER_EXTENSIONS_NETWORK_DELAY_LISTENER_H_
|
| -#pragma once
|
| -
|
| -#include <map>
|
| -#include <set>
|
| -
|
| -#include "base/compiler_specific.h"
|
| -#include "base/memory/ref_counted.h"
|
| -#include "base/perftimer.h"
|
| -#include "base/time.h"
|
| -#include "content/browser/renderer_host/resource_queue.h"
|
| -#include "content/common/notification_observer.h"
|
| -#include "content/common/notification_registrar.h"
|
| -
|
| -namespace net {
|
| -class URLRequest;
|
| -} // namespace net
|
| -
|
| -struct GlobalRequestID;
|
| -
|
| -// This class handles delaying of resource loads that depend on unloaded
|
| -// extensions. For each request that comes in, we check if all extensions are
|
| -// ready for it to be loaded; if not, we delay the request.
|
| -//
|
| -// This class lives mostly on the IO thread. It listens on the UI thread for
|
| -// updates to loaded extensions. It will delete itself on the UI thread after
|
| -// WillShutdownResourceQueue is called (on the IO thread).
|
| -class NetworkDelayListener
|
| - : public base::RefCountedThreadSafe<NetworkDelayListener>,
|
| - public ResourceQueueDelegate,
|
| - public NotificationObserver {
|
| - public:
|
| - NetworkDelayListener();
|
| -
|
| - private:
|
| - // ResourceQueueDelegate:
|
| - virtual void Initialize(ResourceQueue* resource_queue) OVERRIDE;
|
| - virtual bool ShouldDelayRequest(
|
| - net::URLRequest* request,
|
| - const ResourceDispatcherHostRequestInfo& request_info,
|
| - const GlobalRequestID& request_id) OVERRIDE;
|
| - virtual void WillShutdownResourceQueue() OVERRIDE;
|
| -
|
| - friend class base::RefCountedThreadSafe<NetworkDelayListener>;
|
| -
|
| - virtual ~NetworkDelayListener();
|
| -
|
| - // Called when an extension that wants to delay network requests is loading.
|
| - void OnExtensionPending(const std::string& id);
|
| -
|
| - // Called when an extension that wants to delay network requests is ready.
|
| - void OnExtensionReady(const std::string& id);
|
| -
|
| - // If there are no more extensions pending, tell the network queue to resume
|
| - // processing requests.
|
| - void StartDelayedRequestsIfReady();
|
| -
|
| - // Cleanup on UI thread.
|
| - void Cleanup();
|
| -
|
| - ResourceQueue* resource_queue_;
|
| -
|
| - // TODO(mpcomplete, pamg): the rest of this stuff should really be
|
| - // per-profile, but the complexity doesn't seem worth it at this point.
|
| -
|
| - // True if the extensions are ready for network requests to proceed. In
|
| - // practice this means that the background pages of any pending extensions
|
| - // have been run.
|
| - bool extensions_ready_;
|
| -
|
| - // Which extension IDs have registered to delay network requests on startup,
|
| - // but are not yet ready for them to resume.
|
| - std::set<std::string> pending_extensions_;
|
| -
|
| - // Used to measure how long each extension has taken to become ready.
|
| - std::map<std::string, base::TimeTicks> delay_start_times_;
|
| -
|
| - // Used to measure total time between the first delay request and resuming
|
| - // network requests.
|
| - PerfTimer overall_start_time_;
|
| -
|
| - // Whether we've already calculated total startup time, so we don't corrupt
|
| - // the data with entries from installing or enabling single extensions.
|
| - bool recorded_startup_delay_;
|
| -
|
| - // --- UI thread:
|
| -
|
| - // NotificationObserver
|
| - virtual void Observe(int type,
|
| - const NotificationSource& source,
|
| - const NotificationDetails& details) OVERRIDE;
|
| -
|
| - NotificationRegistrar registrar_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(NetworkDelayListener);
|
| -};
|
| -
|
| -#endif // CHROME_BROWSER_EXTENSIONS_NETWORK_DELAY_LISTENER_H_
|
|
|