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

Side by Side Diff: chrome/browser/search/suggestions/image_fetcher_impl_browsertest.cc

Issue 543753002: [Suggestions] Move ImageManager to the component (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixes Created 6 years, 2 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
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/search/suggestions/image_fetcher_impl.h"
6
7 #include "base/bind.h"
8 #include "base/files/file_path.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "base/run_loop.h"
11 #include "chrome/browser/profiles/profile.h"
12 #include "chrome/browser/ui/browser.h"
13 #include "chrome/test/base/in_process_browser_test.h"
14 #include "components/suggestions/image_fetcher_delegate.h"
15 #include "net/test/spawned_test_server/spawned_test_server.h"
16 #include "testing/gtest/include/gtest/gtest.h"
17 #include "url/gurl.h"
18
19 class SkBitmap;
20
21 namespace suggestions {
22
23 namespace {
24
25 const char kTestUrl[] = "http://go.com/";
26 const char kTestImagePath[] = "files/image_decoding/droids.png";
27 const char kInvalidImagePath[] = "files/DOESNOTEXIST";
28
29 const base::FilePath::CharType kDocRoot[] =
30 FILE_PATH_LITERAL("chrome/test/data");
31
32 class TestImageFetcherDelegate : public ImageFetcherDelegate {
33 public:
34 TestImageFetcherDelegate()
35 : num_delegate_valid_called_(0),
36 num_delegate_null_called_(0) {}
37 virtual ~TestImageFetcherDelegate() {};
38
39 // Perform additional tasks when an image has been fetched.
40 virtual void OnImageFetched(const GURL& url, const SkBitmap* bitmap)
41 OVERRIDE {
42 if (bitmap) {
43 num_delegate_valid_called_++;
44 } else {
45 num_delegate_null_called_++;
46 }
47 };
48
49 int num_delegate_valid_called() { return num_delegate_valid_called_; }
50 int num_delegate_null_called() { return num_delegate_null_called_; }
51
52 private:
53 int num_delegate_valid_called_;
54 int num_delegate_null_called_;
55 };
56
57 } // end namespace
58
59 class ImageFetcherImplBrowserTest : public InProcessBrowserTest {
60 protected:
61 ImageFetcherImplBrowserTest()
62 : num_callback_valid_called_(0),
63 num_callback_null_called_(0),
64 test_server_(net::SpawnedTestServer::TYPE_HTTP,
65 net::SpawnedTestServer::kLocalhost,
66 base::FilePath(kDocRoot)) {}
67
68 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE {
69 ASSERT_TRUE(test_server_.Start());
70 InProcessBrowserTest::SetUpInProcessBrowserTestFixture();
71 }
72
73 virtual void TearDownInProcessBrowserTestFixture() OVERRIDE {
74 test_server_.Stop();
75 }
76
77 ImageFetcherImpl* CreateImageFetcher() {
78 ImageFetcherImpl* fetcher =
79 new ImageFetcherImpl(browser()->profile()->GetRequestContext());
80 fetcher->SetImageFetcherDelegate(&delegate_);
81 return fetcher;
82 }
83
84 void OnImageAvailable(base::RunLoop* loop,
85 const GURL& url,
86 const SkBitmap* bitmap) {
87 if (bitmap) {
88 num_callback_valid_called_++;
89 } else {
90 num_callback_null_called_++;
91 }
92 loop->Quit();
93 }
94
95 void StartOrQueueNetworkRequestHelper(const GURL& image_url) {
96 scoped_ptr<ImageFetcherImpl> image_fetcher_(CreateImageFetcher());
97
98 base::RunLoop run_loop;
99 image_fetcher_->StartOrQueueNetworkRequest(
100 GURL(kTestUrl),
101 image_url,
102 base::Bind(&ImageFetcherImplBrowserTest::OnImageAvailable,
103 base::Unretained(this), &run_loop));
104 run_loop.Run();
105 }
106
107 int num_callback_valid_called_;
108 int num_callback_null_called_;
109
110 net::SpawnedTestServer test_server_;
111 TestImageFetcherDelegate delegate_;
112
113 DISALLOW_COPY_AND_ASSIGN(ImageFetcherImplBrowserTest);
114 };
115
116 IN_PROC_BROWSER_TEST_F(ImageFetcherImplBrowserTest, NormalFetch) {
117 GURL image_url(test_server_.GetURL(kTestImagePath).spec());
118 StartOrQueueNetworkRequestHelper(image_url);
119
120 EXPECT_EQ(1, num_callback_valid_called_);
121 EXPECT_EQ(0, num_callback_null_called_);
122 EXPECT_EQ(1, delegate_.num_delegate_valid_called());
123 EXPECT_EQ(0, delegate_.num_delegate_null_called());
124 }
125
126 IN_PROC_BROWSER_TEST_F(ImageFetcherImplBrowserTest, MultipleFetch) {
127 GURL image_url(test_server_.GetURL(kTestImagePath).spec());
128
129 for (int i = 0; i < 5; i++) {
130 StartOrQueueNetworkRequestHelper(image_url);
131 }
132
133 EXPECT_EQ(5, num_callback_valid_called_);
134 EXPECT_EQ(0, num_callback_null_called_);
135 EXPECT_EQ(5, delegate_.num_delegate_valid_called());
136 EXPECT_EQ(0, delegate_.num_delegate_null_called());
137 }
138
139 IN_PROC_BROWSER_TEST_F(ImageFetcherImplBrowserTest, InvalidFetch) {
140 GURL invalid_image_url(test_server_.GetURL(kInvalidImagePath).spec());
141 StartOrQueueNetworkRequestHelper(invalid_image_url);
142
143 EXPECT_EQ(0, num_callback_valid_called_);
144 EXPECT_EQ(1, num_callback_null_called_);
145 EXPECT_EQ(0, delegate_.num_delegate_valid_called());
146 EXPECT_EQ(1, delegate_.num_delegate_null_called());
147 }
148
149 } // namespace suggestions
OLDNEW
« no previous file with comments | « chrome/browser/search/suggestions/image_fetcher_impl.cc ('k') | chrome/browser/search/suggestions/image_manager_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698