Index: chrome/browser/image_decoder_browsertest.cc |
diff --git a/chrome/browser/image_decoder_browsertest.cc b/chrome/browser/image_decoder_browsertest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5621815a3bab0fb5a732e41c4c232cf6dc77dd71 |
--- /dev/null |
+++ b/chrome/browser/image_decoder_browsertest.cc |
@@ -0,0 +1,70 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chrome/browser/image_decoder.h" |
+ |
+#include "chrome/test/base/in_process_browser_test.h" |
+#include "content/public/browser/browser_thread.h" |
+#include "content/public/test/test_utils.h" |
+ |
+using content::BrowserThread; |
+ |
+namespace { |
+ |
+class TestImageRequest : public ImageDecoder::ImageRequest { |
+ public: |
+ explicit TestImageRequest(const base::Closure& quit_closure) |
+ : quit_closure_(quit_closure), |
+ quit_called_(false) { |
+ } |
+ |
+ ~TestImageRequest() override { |
+ if (!quit_called_) { |
+ quit_closure_.Run(); |
+ } |
+ } |
+ |
+ private: |
+ void OnImageDecoded(const SkBitmap& decoded_image) override { |
+ Quit(); |
+ } |
+ |
+ void OnDecodeImageFailed() override { |
+ Quit(); |
+ } |
+ |
+ void Quit() { |
+ EXPECT_FALSE(quit_called_); |
+ quit_called_ = true; |
+ quit_closure_.Run(); |
+ } |
+ |
+ base::Closure quit_closure_; |
+ bool quit_called_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(TestImageRequest); |
+}; |
+ |
+} // namespace |
+ |
+class ImageDecoderBrowserTest : public InProcessBrowserTest { |
+}; |
+ |
+IN_PROC_BROWSER_TEST_F(ImageDecoderBrowserTest, Basic) { |
+ scoped_refptr<content::MessageLoopRunner> runner = |
+ new content::MessageLoopRunner; |
+ TestImageRequest test_request(runner->QuitClosure()); |
+ ImageDecoder::Start(&test_request, std::string()); |
+ runner->Run(); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(ImageDecoderBrowserTest, StartAndDestroy) { |
+ scoped_refptr<content::MessageLoopRunner> runner = |
+ new content::MessageLoopRunner; |
+ scoped_ptr<TestImageRequest> test_request( |
+ new TestImageRequest(runner->QuitClosure())); |
+ ImageDecoder::Start(test_request.get(), std::string()); |
+ test_request.reset(); |
+ runner->Run(); |
+} |