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

Side by Side Diff: content/common/url_fetcher.h

Issue 7524033: Add a scoper object for URLFetcher::Factory (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 9 years, 4 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
« no previous file with comments | « content/common/test_url_fetcher_factory.cc ('k') | content/content_tests.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 // This file contains URLFetcher, a wrapper around net::URLRequest that handles 5 // This file contains URLFetcher, a wrapper around net::URLRequest that handles
6 // low-level details like thread safety, ref counting, and incremental buffer 6 // low-level details like thread safety, ref counting, and incremental buffer
7 // reading. This is useful for callers who simply want to get the data from a 7 // reading. This is useful for callers who simply want to get the data from a
8 // URL and don't care about all the nitty-gritty details. 8 // URL and don't care about all the nitty-gritty details.
9 // 9 //
10 // NOTE(willchan): Only one "IO" thread is supported for URLFetcher. This is a 10 // NOTE(willchan): Only one "IO" thread is supported for URLFetcher. This is a
11 // temporary situation. We will work on allowing support for multiple "io" 11 // temporary situation. We will work on allowing support for multiple "io"
12 // threads per process. 12 // threads per process.
13 13
14 #ifndef CONTENT_COMMON_NET_URL_FETCHER_H_ 14 #ifndef CONTENT_COMMON_URL_FETCHER_H_
15 #define CONTENT_COMMON_NET_URL_FETCHER_H_ 15 #define CONTENT_COMMON_URL_FETCHER_H_
16 #pragma once 16 #pragma once
17 17
18 #include <string> 18 #include <string>
19 #include <vector> 19 #include <vector>
20 20
21 #include "base/memory/ref_counted.h" 21 #include "base/memory/ref_counted.h"
22 #include "base/message_loop.h" 22 #include "base/message_loop.h"
23 #include "base/platform_file.h" 23 #include "base/platform_file.h"
24 #include "base/time.h" 24 #include "base/time.h"
25 25
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 Delegate* d) = 0; 110 Delegate* d) = 0;
111 111
112 protected: 112 protected:
113 virtual ~Factory() {} 113 virtual ~Factory() {}
114 }; 114 };
115 115
116 // |url| is the URL to send the request to. 116 // |url| is the URL to send the request to.
117 // |request_type| is the type of request to make. 117 // |request_type| is the type of request to make.
118 // |d| the object that will receive the callback on fetch completion. 118 // |d| the object that will receive the callback on fetch completion.
119 URLFetcher(const GURL& url, RequestType request_type, Delegate* d); 119 URLFetcher(const GURL& url, RequestType request_type, Delegate* d);
120
121 virtual ~URLFetcher(); 120 virtual ~URLFetcher();
122 121
123 // Sets the factory used by the static method Create to create a URLFetcher.
124 // URLFetcher does not take ownership of |factory|. A value of NULL results
125 // in a URLFetcher being created directly.
126 #if defined(UNIT_TEST)
127 static void set_factory(Factory* factory) {
128 factory_ = factory;
129 }
130 #endif
131
132 // Normally interception is disabled for URLFetcher, but you can use this 122 // Normally interception is disabled for URLFetcher, but you can use this
133 // to enable it for tests. Also see the set_factory method for another way 123 // to enable it for tests. Also see ScopedURLFetcherFactory for another way
134 // of testing code that uses an URLFetcher. 124 // of testing code that uses an URLFetcher.
135 static void enable_interception_for_tests(bool enabled) { 125 static void enable_interception_for_tests(bool enabled) {
136 g_interception_enabled = enabled; 126 g_interception_enabled = enabled;
137 } 127 }
138 128
139 // Creates a URLFetcher, ownership returns to the caller. If there is no 129 // Creates a URLFetcher, ownership returns to the caller. If there is no
140 // Factory (the default) this creates and returns a new URLFetcher. See the 130 // Factory (the default) this creates and returns a new URLFetcher. See the
141 // constructor for a description of the args. |id| may be used during testing 131 // constructor for a description of the args. |id| may be used during testing
142 // to identify who is creating the URLFetcher. 132 // to identify who is creating the URLFetcher.
143 static URLFetcher* Create(int id, const GURL& url, RequestType request_type, 133 static URLFetcher* Create(int id, const GURL& url, RequestType request_type,
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 // Return a reference to the string data fetched. Response type must 278 // Return a reference to the string data fetched. Response type must
289 // be STRING, or this will CHECK. This method exists to support the 279 // be STRING, or this will CHECK. This method exists to support the
290 // old signiture to OnURLFetchComplete(), and will be removed as part 280 // old signiture to OnURLFetchComplete(), and will be removed as part
291 // of crbug.com/83592 . 281 // of crbug.com/83592 .
292 virtual const std::string& GetResponseStringRef() const; 282 virtual const std::string& GetResponseStringRef() const;
293 283
294 virtual void SetResponseDestinationForTesting(ResponseDestinationType); 284 virtual void SetResponseDestinationForTesting(ResponseDestinationType);
295 virtual ResponseDestinationType GetResponseDestinationForTesting() const; 285 virtual ResponseDestinationType GetResponseDestinationForTesting() const;
296 286
297 private: 287 private:
288 friend class ScopedURLFetcherFactory;
289 friend class TestURLFetcher;
298 friend class URLFetcherTest; 290 friend class URLFetcherTest;
299 friend class TestURLFetcher;
300 291
301 // Only used by URLFetcherTest, returns the number of URLFetcher::Core objects 292 // Only used by URLFetcherTest, returns the number of URLFetcher::Core objects
302 // actively running. 293 // actively running.
303 static int GetNumFetcherCores(); 294 static int GetNumFetcherCores();
304 295
296 static Factory* factory() { return factory_; }
297
298 // Sets the factory used by the static method Create to create a URLFetcher.
299 // URLFetcher does not take ownership of |factory|. A value of NULL results
300 // in a URLFetcher being created directly.
301 //
302 // NOTE: for safety, this should only be used through ScopedURLFetcherFactory!
303 static void set_factory(Factory* factory) {
304 factory_ = factory;
305 }
306
305 class Core; 307 class Core;
306 scoped_refptr<Core> core_; 308 scoped_refptr<Core> core_;
307 309
308 static Factory* factory_; 310 static Factory* factory_;
309 311
310 // Back-off time delay. 0 by default. 312 // Back-off time delay. 0 by default.
311 base::TimeDelta backoff_delay_; 313 base::TimeDelta backoff_delay_;
312 314
313 static bool g_interception_enabled; 315 static bool g_interception_enabled;
314 316
315 DISALLOW_COPY_AND_ASSIGN(URLFetcher); 317 DISALLOW_COPY_AND_ASSIGN(URLFetcher);
316 }; 318 };
317 319
318 #endif // CONTENT_COMMON_NET_URL_FETCHER_H_ 320 #endif // CONTENT_COMMON_URL_FETCHER_H_
OLDNEW
« no previous file with comments | « content/common/test_url_fetcher_factory.cc ('k') | content/content_tests.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698