Chromium Code Reviews| Index: net/url_request/test_url_fetcher_factory.h |
| diff --git a/net/url_request/test_url_fetcher_factory.h b/net/url_request/test_url_fetcher_factory.h |
| index d7f0d305481c7e5588c96f8ffa907ea1b2a1ffab..9dae9e645393cec26b5e02c84f64452d464a7238 100644 |
| --- a/net/url_request/test_url_fetcher_factory.h |
| +++ b/net/url_request/test_url_fetcher_factory.h |
| @@ -10,13 +10,17 @@ |
| #include <string> |
| #include <utility> |
| + |
|
akalin
2013/02/12 23:10:10
remove extra newline
Noam Samuel (WRONG ACCOUNT)
2013/02/13 00:25:52
Done.
|
| +#include "base/callback.h" |
| #include "base/compiler_specific.h" |
| +#include "base/memory/weak_ptr.h" |
| #include "base/threading/non_thread_safe.h" |
| #include "googleurl/src/gurl.h" |
| #include "net/http/http_request_headers.h" |
| #include "net/url_request/url_fetcher_factory.h" |
| #include "net/url_request/url_request_status.h" |
| + |
|
akalin
2013/02/12 23:10:10
remove extra newline
Noam Samuel (WRONG ACCOUNT)
2013/02/13 00:25:52
Done.
|
| namespace net { |
| // Changes URLFetcher's Factory for the lifetime of the object. |
| @@ -287,13 +291,27 @@ class TestURLFetcherFactory : public URLFetcherFactory, |
| // SomeService service; |
| // service.Run(); // Will eventually request these two URLs. |
| +class FakeURLFetcher; |
| class FakeURLFetcherFactory : public URLFetcherFactory, |
| public ScopedURLFetcherFactory { |
| public: |
| + typedef base::Callback< FakeURLFetcher*( |
|
akalin
2013/02/12 23:10:10
no space after <
akalin
2013/02/12 23:10:10
add comment describing what the parameters are (si
akalin
2013/02/12 23:10:10
since the caller should take ownership of the retu
Noam Samuel (WRONG ACCOUNT)
2013/02/13 00:25:52
Done.
Noam Samuel (WRONG ACCOUNT)
2013/02/13 00:25:52
Since this callback is only called by the factory
Noam Samuel (WRONG ACCOUNT)
2013/02/13 00:25:52
Done.
akalin
2013/02/13 20:44:01
I'd argue that the factory method should also retu
|
| + const GURL&, |
| + URLFetcherDelegate*, |
| + const std::string&, |
| + bool) > FakeURLFetcherCreator; |
|
akalin
2013/02/12 23:10:10
no space before >
Noam Samuel (WRONG ACCOUNT)
2013/02/13 00:25:52
Done.
|
| + |
| FakeURLFetcherFactory(); |
|
akalin
2013/02/12 23:10:10
see if you can get away with only having a single
Noam Samuel (WRONG ACCOUNT)
2013/02/13 00:25:52
Since the callback has an obvious but nontrivial d
akalin
2013/02/13 20:44:01
I suppose. Although I would at least like to get r
Noam Samuel (WRONG ACCOUNT)
2013/02/13 21:37:46
Added to latest patch set. If it's too cumbersome
|
| // FakeURLFetcherFactory that will delegate creating URLFetcher for unknown |
| // url to the given factory. |
| explicit FakeURLFetcherFactory(URLFetcherFactory* default_factory); |
| + |
| + // FakeURLFetcherFactory that will delegate creating URLFetcher for unknown |
|
akalin
2013/02/12 23:10:10
this comment isn't a complete sentence and is hard
Noam Samuel (WRONG ACCOUNT)
2013/02/13 00:25:52
Done.
|
| + // url to the given factory (can be NULL) and will delegate creating for |
| + // known url to given callback |
| + FakeURLFetcherFactory(const FakeURLFetcherCreator& creator, |
| + URLFetcherFactory* default_factory); |
| + |
| virtual ~FakeURLFetcherFactory(); |
| // If no fake response is set for the given URL this method will delegate the |
| @@ -313,18 +331,55 @@ class FakeURLFetcherFactory : public URLFetcherFactory, |
| const std::string& response_data, |
| bool success); |
| + |
|
akalin
2013/02/12 23:10:10
remove extra newline
Noam Samuel (WRONG ACCOUNT)
2013/02/13 00:25:52
Done.
|
| // Clear all the fake responses that were previously set via |
| // SetFakeResponse(). |
| void ClearFakeResponses(); |
| private: |
| + FakeURLFetcherCreator creator_; |
|
akalin
2013/02/12 23:10:10
make it const
Noam Samuel (WRONG ACCOUNT)
2013/02/13 00:25:52
Done.
|
| typedef std::map<GURL, std::pair<std::string, bool> > FakeResponseMap; |
| FakeResponseMap fake_responses_; |
| URLFetcherFactory* default_factory_; |
|
akalin
2013/02/12 23:10:10
make this const, like
URLFetcherFactory* const
Noam Samuel (WRONG ACCOUNT)
2013/02/13 00:25:52
Done.
|
| + |
| + static FakeURLFetcher* DefaultFakeURLFetcherCreator( |
| + const GURL& url, |
| + URLFetcherDelegate* delegate, |
| + const std::string& response, |
| + bool success); |
| DISALLOW_COPY_AND_ASSIGN(FakeURLFetcherFactory); |
| }; |
| + |
| + |
| +// This class is used by the FakeURLFetcherFactory above. |
|
akalin
2013/02/12 23:10:10
Try to describe what the FakeURLFetcher does witho
Noam Samuel (WRONG ACCOUNT)
2013/02/13 00:25:52
Done.
|
| +class FakeURLFetcher : public TestURLFetcher { |
|
akalin
2013/02/12 23:10:10
you can move this declaration up above FakeURLFetc
Noam Samuel (WRONG ACCOUNT)
2013/02/13 00:25:52
Done.
|
| + public: |
| + // Normal URL fetcher constructor but also takes in a pre-baked response. |
| + FakeURLFetcher(const GURL& url, |
| + URLFetcherDelegate* d, |
| + const std::string& response_data, bool success); |
| + |
| + // Start the request. This will call the given delegate asynchronously |
| + // with the pre-baked response as parameter. |
| + virtual void Start() OVERRIDE; |
| + |
| + virtual const GURL& GetURL() const OVERRIDE; |
| + |
| + private: |
| + virtual ~FakeURLFetcher(); |
| + |
| + // This is the method which actually calls the delegate that is passed in the |
| + // constructor. |
| + void RunDelegate(); |
| + |
| + base::WeakPtrFactory<FakeURLFetcher> weak_factory_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(FakeURLFetcher); |
| +}; |
| + |
| + |
| // This is an implementation of URLFetcherFactory that will create a |
| // URLFetcherImpl. It can be use in conjunction with a FakeURLFetcherFactory in |
| // integration tests to control the behavior of some requests but execute |