summaryrefslogtreecommitdiff
path: root/chromium/components/image_fetcher/ios/ios_image_data_fetcher_wrapper_unittest.mm
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/components/image_fetcher/ios/ios_image_data_fetcher_wrapper_unittest.mm')
-rw-r--r--chromium/components/image_fetcher/ios/ios_image_data_fetcher_wrapper_unittest.mm111
1 files changed, 60 insertions, 51 deletions
diff --git a/chromium/components/image_fetcher/ios/ios_image_data_fetcher_wrapper_unittest.mm b/chromium/components/image_fetcher/ios/ios_image_data_fetcher_wrapper_unittest.mm
index d1e60e3b778..1f8bcb2038b 100644
--- a/chromium/components/image_fetcher/ios/ios_image_data_fetcher_wrapper_unittest.mm
+++ b/chromium/components/image_fetcher/ios/ios_image_data_fetcher_wrapper_unittest.mm
@@ -9,17 +9,17 @@
#include <memory>
#include "base/mac/scoped_block.h"
-#include "base/macros.h"
#include "base/memory/ref_counted.h"
+#include "base/stl_util.h"
#include "base/test/scoped_task_environment.h"
#include "base/threading/thread.h"
#include "base/threading/thread_task_runner_handle.h"
#include "build/build_config.h"
#import "components/image_fetcher/ios/webp_decoder.h"
#include "net/http/http_response_headers.h"
-#include "net/url_request/test_url_fetcher_factory.h"
-#include "net/url_request/url_fetcher_delegate.h"
-#include "net/url_request/url_request_test_util.h"
+#include "net/http/http_status_code.h"
+#include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h"
+#include "services/network/test/test_url_loader_factory.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "testing/platform_test.h"
@@ -111,27 +111,25 @@ class IOSImageDataFetcherWrapperTest : public PlatformTest {
result_ = [UIImage imageWithData:data];
called_ = true;
} copy]) {
- image_fetcher_ = std::make_unique<IOSImageDataFetcherWrapper>(
- new net::TestURLRequestContextGetter(
- base::ThreadTaskRunnerHandle::Get()));
+ shared_factory_ =
+ base::MakeRefCounted<network::WeakWrapperSharedURLLoaderFactory>(
+ &factory_);
+ image_fetcher_ =
+ std::make_unique<IOSImageDataFetcherWrapper>(shared_factory_);
}
- net::TestURLFetcher* SetupFetcher() {
+ void SetupFetcher() {
image_fetcher_->FetchImageDataWebpDecoded(GURL(kTestUrl), callback_);
EXPECT_EQ(nil, result_);
EXPECT_EQ(false, called_);
- net::TestURLFetcher* fetcher =
- factory_.GetFetcherByID(ImageDataFetcher::kFirstUrlFetcherId);
- DCHECK(fetcher);
- DCHECK(fetcher->delegate());
- return fetcher;
}
// Message loop for the main test thread.
base::test::ScopedTaskEnvironment environment_;
- base::mac::ScopedBlock<IOSImageDataFetcherCallback> callback_;
- net::TestURLFetcherFactory factory_;
+ base::mac::ScopedBlock<ImageDataFetcherBlock> callback_;
+ network::TestURLLoaderFactory factory_;
+ scoped_refptr<network::SharedURLLoaderFactory> shared_factory_;
std::unique_ptr<IOSImageDataFetcherWrapper> image_fetcher_;
NSData* result_data_ = nil;
UIImage* result_ = nil;
@@ -142,77 +140,88 @@ class IOSImageDataFetcherWrapperTest : public PlatformTest {
};
TEST_F(IOSImageDataFetcherWrapperTest, TestError) {
- net::TestURLFetcher* fetcher = SetupFetcher();
- fetcher->set_response_code(404);
- fetcher->delegate()->OnURLFetchComplete(fetcher);
+ SetupFetcher();
+ factory_.AddResponse(kTestUrl, "", net::HTTP_NOT_FOUND);
+ environment_.RunUntilIdle();
EXPECT_EQ(nil, result_);
EXPECT_TRUE(called_);
}
TEST_F(IOSImageDataFetcherWrapperTest, TestJpg) {
- net::TestURLFetcher* fetcher = SetupFetcher();
- fetcher->set_response_code(200);
- fetcher->SetResponseString(
+ SetupFetcher();
+ factory_.AddResponse(
+ kTestUrl,
std::string(reinterpret_cast<const char*>(kJPGImage), sizeof(kJPGImage)));
- fetcher->delegate()->OnURLFetchComplete(fetcher);
+ environment_.RunUntilIdle();
EXPECT_NE(nil, result_);
EXPECT_TRUE(called_);
}
TEST_F(IOSImageDataFetcherWrapperTest, TestPng) {
- net::TestURLFetcher* fetcher = SetupFetcher();
- fetcher->set_response_code(200);
- fetcher->SetResponseString(
+ SetupFetcher();
+ factory_.AddResponse(
+ kTestUrl,
std::string(reinterpret_cast<const char*>(kPNGImage), sizeof(kPNGImage)));
- fetcher->delegate()->OnURLFetchComplete(fetcher);
+ environment_.RunUntilIdle();
EXPECT_NE(nil, result_);
EXPECT_TRUE(called_);
}
TEST_F(IOSImageDataFetcherWrapperTest, TestGoodWebP) {
- net::TestURLFetcher* fetcher = SetupFetcher();
- fetcher->set_response_code(200);
- fetcher->SetResponseString(std::string(
- reinterpret_cast<const char*>(kWEBPImage), sizeof(kWEBPImage)));
- scoped_refptr<net::HttpResponseHeaders> headers(new net::HttpResponseHeaders(
- std::string(kWEBPHeaderResponse, arraysize(kWEBPHeaderResponse))));
- fetcher->set_response_headers(headers);
- fetcher->delegate()->OnURLFetchComplete(fetcher);
+ SetupFetcher();
+
+ std::string content(reinterpret_cast<const char*>(kWEBPImage),
+ sizeof(kWEBPImage));
+ network::ResourceResponseHead head;
+ head.headers = new net::HttpResponseHeaders(
+ std::string(kWEBPHeaderResponse, base::size(kWEBPHeaderResponse)));
+ head.mime_type = "image/webp";
+ network::URLLoaderCompletionStatus status;
+ status.decoded_body_length = content.size();
+ factory_.AddResponse(GURL(kTestUrl), head, content, status);
environment_.RunUntilIdle();
EXPECT_NE(nil, result_);
EXPECT_TRUE(called_);
}
TEST_F(IOSImageDataFetcherWrapperTest, TestGoodWebPNoHeader) {
- net::TestURLFetcher* fetcher = SetupFetcher();
- fetcher->set_response_code(200);
- fetcher->SetResponseString(std::string(
- reinterpret_cast<const char*>(kWEBPImage), sizeof(kWEBPImage)));
- fetcher->delegate()->OnURLFetchComplete(fetcher);
+ SetupFetcher();
+ factory_.AddResponse(kTestUrl,
+ std::string(reinterpret_cast<const char*>(kWEBPImage),
+ sizeof(kWEBPImage)));
environment_.RunUntilIdle();
EXPECT_TRUE([DecodedWebpImage() isEqualToData:result_data_]);
EXPECT_TRUE(called_);
}
TEST_F(IOSImageDataFetcherWrapperTest, TestBadWebP) {
- net::TestURLFetcher* fetcher = SetupFetcher();
- fetcher->set_response_code(200);
- fetcher->SetResponseString("This is not a valid WebP image");
- scoped_refptr<net::HttpResponseHeaders> headers(new net::HttpResponseHeaders(
- std::string(kWEBPHeaderResponse, arraysize(kWEBPHeaderResponse))));
- fetcher->set_response_headers(headers);
- fetcher->delegate()->OnURLFetchComplete(fetcher);
+ SetupFetcher();
+
+ std::string content = "This is not a valid WebP image";
+ network::ResourceResponseHead head;
+ head.headers = new net::HttpResponseHeaders(
+ std::string(kWEBPHeaderResponse, base::size(kWEBPHeaderResponse)));
+ head.mime_type = "image/webp";
+ network::URLLoaderCompletionStatus status;
+ status.decoded_body_length = content.size();
+ factory_.AddResponse(GURL(kTestUrl), head, content, status);
environment_.RunUntilIdle();
EXPECT_EQ(nil, result_);
EXPECT_TRUE(called_);
}
TEST_F(IOSImageDataFetcherWrapperTest, DeleteDuringWebPDecoding) {
- net::TestURLFetcher* fetcher = SetupFetcher();
- fetcher->set_response_code(200);
- fetcher->SetResponseString(std::string(
- reinterpret_cast<const char*>(kWEBPImage), sizeof(kWEBPImage)));
- fetcher->delegate()->OnURLFetchComplete(fetcher);
+ SetupFetcher();
+ // To control timing of events precisely below, this needs to inject the
+ // result synchronously, so it's done via some test-only methods rather than
+ // via TestURLLoaderFactory.
+ image_fetcher::RequestMetadata metadata;
+ metadata.mime_type = "image/webp";
+ metadata.http_response_code = 200;
+ image_fetcher_->AccessImageDataFetcherForTesting()->InjectResultForTesting(
+ metadata, std::string(reinterpret_cast<const char*>(kWEBPImage),
+ sizeof(kWEBPImage)));
+
// Delete the image fetcher, and check that the callback is called.
image_fetcher_.reset();
environment_.RunUntilIdle();