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

Side by Side Diff: chrome/browser/net/sdch_dictionary_fetcher.h

Issue 298063006: Make SdchManager per-profile. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed bugs found through smoke testing and incorporated comments. 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 // Support modularity by calling to load a new SDCH filter dictionary. 5 // Support modularity by calling to load a new SDCH filter dictionary.
6 // Note that this sort of calling can't be done in the /net directory, as it has 6 // Note that this sort of calling can't be done in the /net directory, as it has
7 // no concept of the HTTP cache (which is only visible at the browser level). 7 // no concept of the HTTP cache (which is only visible at the browser level).
8 8
9 #ifndef CHROME_BROWSER_NET_SDCH_DICTIONARY_FETCHER_H_ 9 #ifndef CHROME_BROWSER_NET_SDCH_DICTIONARY_FETCHER_H_
10 #define CHROME_BROWSER_NET_SDCH_DICTIONARY_FETCHER_H_ 10 #define CHROME_BROWSER_NET_SDCH_DICTIONARY_FETCHER_H_
(...skipping 11 matching lines...) Expand all
22 namespace net { 22 namespace net {
23 class URLFetcher; 23 class URLFetcher;
24 class URLRequestContextGetter; 24 class URLRequestContextGetter;
25 } // namespace net 25 } // namespace net
26 26
27 class SdchDictionaryFetcher 27 class SdchDictionaryFetcher
28 : public net::URLFetcherDelegate, 28 : public net::URLFetcherDelegate,
29 public net::SdchFetcher, 29 public net::SdchFetcher,
30 public base::NonThreadSafe { 30 public base::NonThreadSafe {
31 public: 31 public:
32 explicit SdchDictionaryFetcher(net::URLRequestContextGetter* context); 32 // Consumer must guarantee that the SdchManager pointer outlives
33 // this object. The current implementation guarantees this by
34 // the SdchManager owning this object.
35 SdchDictionaryFetcher(net::SdchManager* manager,
36 net::URLRequestContextGetter* context);
33 virtual ~SdchDictionaryFetcher(); 37 virtual ~SdchDictionaryFetcher();
34 38
35 // Stop fetching dictionaries, and abandon any current URLFetcheer operations
36 // so that the IO thread can be stopped.
37 static void Shutdown();
38
39 // Implementation of SdchFetcher class. 39 // Implementation of SdchFetcher class.
40 // This method gets the requested dictionary, and then calls back into the 40 // This method gets the requested dictionary, and then calls back into the
41 // SdchManager class with the dictionary's text. 41 // SdchManager class with the dictionary's text.
42 virtual void Schedule(const GURL& dictionary_url) OVERRIDE; 42 virtual void Schedule(const GURL& dictionary_url) OVERRIDE;
43 43
44 private: 44 private:
45 // Delay in ms between Schedule and actual download. 45 // Delay in ms between Schedule and actual download.
46 // This leaves the URL in a queue, which is de-duped, so that there is less 46 // This leaves the URL in a queue, which is de-duped, so that there is less
47 // chance we'll try to load the same URL multiple times when a pile of 47 // chance we'll try to load the same URL multiple times when a pile of
48 // page subresources (or tabs opened in parallel) all suggest the dictionary. 48 // page subresources (or tabs opened in parallel) all suggest the dictionary.
49 static const int kMsDelayFromRequestTillDownload = 100; 49 static const int kMsDelayFromRequestTillDownload = 100;
50 50
51 // Ensure the download after the above delay. 51 // Ensure the download after the above delay.
52 void ScheduleDelayedRun(); 52 void ScheduleDelayedRun();
53 53
54 // Make sure we're processing (or waiting for) the the arrival of the next URL 54 // Make sure we're processing (or waiting for) the the arrival of the next URL
55 // in the |fetch_queue_|. 55 // in the |fetch_queue_|.
56 void StartFetching(); 56 void StartFetching();
57 57
58 // Implementation of net::URLFetcherDelegate. Called after transmission 58 // Implementation of net::URLFetcherDelegate. Called after transmission
59 // completes (either successfully or with failure). 59 // completes (either successfully or with failure).
60 virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE; 60 virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE;
61 61
62 net::SdchManager* const manager_;
63
62 // A queue of URLs that are being used to download dictionaries. 64 // A queue of URLs that are being used to download dictionaries.
63 std::queue<GURL> fetch_queue_; 65 std::queue<GURL> fetch_queue_;
64 // The currently outstanding URL fetch of a dicitonary. 66 // The currently outstanding URL fetch of a dicitonary.
65 // If this is null, then there is no outstanding request. 67 // If this is null, then there is no outstanding request.
66 scoped_ptr<net::URLFetcher> current_fetch_; 68 scoped_ptr<net::URLFetcher> current_fetch_;
67 69
68 // Always spread out the dictionary fetches, so that they don't steal 70 // Always spread out the dictionary fetches, so that they don't steal
69 // bandwidth from the actual page load. Create delayed tasks to spread out 71 // bandwidth from the actual page load. Create delayed tasks to spread out
70 // the download. 72 // the download.
71 base::WeakPtrFactory<SdchDictionaryFetcher> weak_factory_; 73 base::WeakPtrFactory<SdchDictionaryFetcher> weak_factory_;
(...skipping 15 matching lines...) Expand all
87 std::set<GURL> attempted_load_; 89 std::set<GURL> attempted_load_;
88 90
89 // Store the system_url_request_context_getter to use it when we start 91 // Store the system_url_request_context_getter to use it when we start
90 // fetching. 92 // fetching.
91 scoped_refptr<net::URLRequestContextGetter> context_; 93 scoped_refptr<net::URLRequestContextGetter> context_;
92 94
93 DISALLOW_COPY_AND_ASSIGN(SdchDictionaryFetcher); 95 DISALLOW_COPY_AND_ASSIGN(SdchDictionaryFetcher);
94 }; 96 };
95 97
96 #endif // CHROME_BROWSER_NET_SDCH_DICTIONARY_FETCHER_H_ 98 #endif // CHROME_BROWSER_NET_SDCH_DICTIONARY_FETCHER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698