| Index: content/test/weburl_loader_mock_factory.cc
|
| diff --git a/content/test/weburl_loader_mock_factory.cc b/content/test/weburl_loader_mock_factory.cc
|
| index 6e0f02b3422ba5f9bd615d160fca81a456e1fa5b..b9ef2be514c32fc72fe05719b7dddc81ac55011b 100644
|
| --- a/content/test/weburl_loader_mock_factory.cc
|
| +++ b/content/test/weburl_loader_mock_factory.cc
|
| @@ -76,8 +76,10 @@ void WebURLLoaderMockFactory::ServeAsynchronousRequests() {
|
| // pending_loaders_ as it might get modified.
|
| while (!pending_loaders_.empty()) {
|
| LoaderToRequestMap::iterator iter = pending_loaders_.begin();
|
| - WebURLLoaderMock* loader = iter->first;
|
| - const WebURLRequest& request = iter->second;
|
| + base::WeakPtr<WebURLLoaderMock> loader(iter->first->GetWeakPtr());
|
| + const WebURLRequest request = iter->second;
|
| + pending_loaders_.erase(loader.get());
|
| +
|
| WebURLResponse response;
|
| WebURLError error;
|
| WebData data;
|
| @@ -86,15 +88,13 @@ void WebURLLoaderMockFactory::ServeAsynchronousRequests() {
|
| while (response.httpStatusCode() >= 300 &&
|
| response.httpStatusCode() < 400) {
|
| WebURLRequest newRequest = loader->ServeRedirect(request, response);
|
| - if (!IsPending(loader) || loader->isDeferred())
|
| + if (!loader || loader->is_cancelled() || loader->is_deferred())
|
| break;
|
| LoadRequest(newRequest, &response, &error, &data);
|
| }
|
| // Serve the request if the loader is still active.
|
| - if (IsPending(loader) && !loader->isDeferred())
|
| + if (loader && !loader->is_cancelled() && !loader->is_deferred())
|
| loader->ServeAsynchronousRequest(delegate_, response, data, error);
|
| - // The loader might have already been removed.
|
| - pending_loaders_.erase(loader);
|
| }
|
| base::RunLoop().RunUntilIdle();
|
| }
|
| @@ -152,11 +152,6 @@ void WebURLLoaderMockFactory::LoadRequest(const WebURLRequest& request,
|
| *response = iter->second.response;
|
| }
|
|
|
| -bool WebURLLoaderMockFactory::IsPending(WebURLLoaderMock* loader) {
|
| - LoaderToRequestMap::iterator iter = pending_loaders_.find(loader);
|
| - return iter != pending_loaders_.end();
|
| -}
|
| -
|
| // static
|
| bool WebURLLoaderMockFactory::ReadFile(const base::FilePath& file_path,
|
| WebData* data) {
|
|
|