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

Side by Side Diff: third_party/WebKit/Source/core/fetch/RawResourceTest.cpp

Issue 1667843003: Make Resource RefCountedWillBeGarbageCollectedFinalized, attempt #2 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase + address review comments Created 4 years, 10 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
1 /* 1 /*
2 * Copyright (c) 2013, Google Inc. All rights reserved. 2 * Copyright (c) 2013, Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 16 matching lines...) Expand all
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */ 29 */
30 30
31 #include "core/fetch/RawResource.h" 31 #include "core/fetch/RawResource.h"
32 32
33 #include "core/fetch/ImageResourceClient.h" 33 #include "core/fetch/ImageResourceClient.h"
34 #include "core/fetch/MemoryCache.h" 34 #include "core/fetch/MemoryCache.h"
35 #include "core/fetch/MockImageResourceClient.h" 35 #include "core/fetch/MockImageResourceClient.h"
36 #include "core/fetch/ResourceFetcher.h" 36 #include "core/fetch/ResourceFetcher.h"
37 #include "core/fetch/ResourcePtr.h"
38 #include "platform/SharedBuffer.h" 37 #include "platform/SharedBuffer.h"
39 #include "platform/testing/UnitTestHelpers.h" 38 #include "platform/testing/UnitTestHelpers.h"
40 #include "public/platform/Platform.h" 39 #include "public/platform/Platform.h"
41 #include "public/platform/WebURL.h" 40 #include "public/platform/WebURL.h"
42 #include "public/platform/WebURLResponse.h" 41 #include "public/platform/WebURLResponse.h"
43 #include "public/platform/WebUnitTestSupport.h" 42 #include "public/platform/WebUnitTestSupport.h"
44 #include "testing/gtest/include/gtest/gtest.h" 43 #include "testing/gtest/include/gtest/gtest.h"
45 44
46 namespace blink { 45 namespace blink {
47 46
48 TEST(RawResourceTest, DontIgnoreAcceptForCacheReuse) 47 TEST(RawResourceTest, DontIgnoreAcceptForCacheReuse)
49 { 48 {
50 ResourceRequest jpegRequest; 49 ResourceRequest jpegRequest;
51 jpegRequest.setHTTPAccept("image/jpeg"); 50 jpegRequest.setHTTPAccept("image/jpeg");
52 51
53 ResourcePtr<RawResource> jpegResource(new RawResource(jpegRequest, Resource: :Raw)); 52 RefPtrWillBeRawPtr<RawResource> jpegResource(RawResource::create(jpegRequest , Resource::Raw));
54 53
55 ResourceRequest pngRequest; 54 ResourceRequest pngRequest;
56 pngRequest.setHTTPAccept("image/png"); 55 pngRequest.setHTTPAccept("image/png");
57 56
58 ASSERT_FALSE(jpegResource->canReuse(pngRequest)); 57 ASSERT_FALSE(jpegResource->canReuse(pngRequest));
59 } 58 }
60 59
61 class DummyClient final : public RawResourceClient { 60 class DummyClient final : public RawResourceClient {
62 public: 61 public:
63 DummyClient() : m_called(false) {} 62 DummyClient() : m_called(false) {}
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 resource->addClient(m_dummyClient); 100 resource->addClient(m_dummyClient);
102 } 101 }
103 String debugName() const override { return "AddingClient"; } 102 String debugName() const override { return "AddingClient"; }
104 103
105 void removeClient(Timer<AddingClient>* timer) 104 void removeClient(Timer<AddingClient>* timer)
106 { 105 {
107 m_resource->removeClient(m_dummyClient); 106 m_resource->removeClient(m_dummyClient);
108 } 107 }
109 private: 108 private:
110 DummyClient* m_dummyClient; 109 DummyClient* m_dummyClient;
111 ResourcePtr<Resource> m_resource; 110 RefPtrWillBePersistent<Resource> m_resource;
112 Timer<AddingClient> m_removeClientTimer; 111 Timer<AddingClient> m_removeClientTimer;
113 }; 112 };
114 113
115 TEST(RawResourceTest, RevalidationSucceeded) 114 TEST(RawResourceTest, RevalidationSucceeded)
116 { 115 {
117 ResourcePtr<Resource> resource = new RawResource(ResourceRequest("data:text/ html,"), Resource::Raw); 116 RefPtrWillBeRawPtr<Resource> resource = RawResource::create(ResourceRequest( "data:text/html,"), Resource::Raw);
118 ResourceResponse response; 117 ResourceResponse response;
119 response.setHTTPStatusCode(200); 118 response.setHTTPStatusCode(200);
120 resource->responseReceived(response, nullptr); 119 resource->responseReceived(response, nullptr);
121 const char data[5] = "abcd"; 120 const char data[5] = "abcd";
122 resource->appendData(data, 4); 121 resource->appendData(data, 4);
123 resource->finish(); 122 resource->finish();
124 memoryCache()->add(resource.get()); 123 memoryCache()->add(resource.get());
125 124
126 // Simulate a successful revalidation. 125 // Simulate a successful revalidation.
127 resource->setRevalidatingRequest(ResourceRequest("data:text/html,")); 126 resource->setRevalidatingRequest(ResourceRequest("data:text/html,"));
(...skipping 11 matching lines...) Expand all
139 memoryCache()->remove(resource.get()); 138 memoryCache()->remove(resource.get());
140 139
141 resource->removeClient(client.get()); 140 resource->removeClient(client.get());
142 EXPECT_FALSE(resource->hasClients()); 141 EXPECT_FALSE(resource->hasClients());
143 EXPECT_FALSE(client->called()); 142 EXPECT_FALSE(client->called());
144 EXPECT_EQ("abcd", String(client->data().data(), client->data().size())); 143 EXPECT_EQ("abcd", String(client->data().data(), client->data().size()));
145 } 144 }
146 145
147 TEST(RawResourceTest, RevalidationSucceededForResourceWithoutBody) 146 TEST(RawResourceTest, RevalidationSucceededForResourceWithoutBody)
148 { 147 {
149 ResourcePtr<Resource> resource = new RawResource(ResourceRequest("data:text/ html,"), Resource::Raw); 148 RefPtrWillBeRawPtr<Resource> resource = RawResource::create(ResourceRequest( "data:text/html,"), Resource::Raw);
150 ResourceResponse response; 149 ResourceResponse response;
151 response.setHTTPStatusCode(200); 150 response.setHTTPStatusCode(200);
152 resource->responseReceived(response, nullptr); 151 resource->responseReceived(response, nullptr);
153 resource->finish(); 152 resource->finish();
154 memoryCache()->add(resource.get()); 153 memoryCache()->add(resource.get());
155 154
156 // Simulate a successful revalidation. 155 // Simulate a successful revalidation.
157 resource->setRevalidatingRequest(ResourceRequest("data:text/html,")); 156 resource->setRevalidatingRequest(ResourceRequest("data:text/html,"));
158 157
159 OwnPtr<DummyClient> client = adoptPtr(new DummyClient); 158 OwnPtr<DummyClient> client = adoptPtr(new DummyClient);
160 resource->addClient(client.get()); 159 resource->addClient(client.get());
161 160
162 ResourceResponse revalidatingResponse; 161 ResourceResponse revalidatingResponse;
163 revalidatingResponse.setHTTPStatusCode(304); 162 revalidatingResponse.setHTTPStatusCode(304);
164 resource->responseReceived(revalidatingResponse, nullptr); 163 resource->responseReceived(revalidatingResponse, nullptr);
165 EXPECT_FALSE(resource->isCacheValidator()); 164 EXPECT_FALSE(resource->isCacheValidator());
166 EXPECT_EQ(200, resource->response().httpStatusCode()); 165 EXPECT_EQ(200, resource->response().httpStatusCode());
167 EXPECT_EQ(nullptr, resource->resourceBuffer()); 166 EXPECT_EQ(nullptr, resource->resourceBuffer());
168 EXPECT_EQ(memoryCache()->resourceForURL(KURL(ParsedURLString, "data:text/htm l,")), resource.get()); 167 EXPECT_EQ(memoryCache()->resourceForURL(KURL(ParsedURLString, "data:text/htm l,")), resource.get());
169 memoryCache()->remove(resource.get()); 168 memoryCache()->remove(resource.get());
170 169
171 resource->removeClient(client.get()); 170 resource->removeClient(client.get());
172 EXPECT_FALSE(resource->hasClients()); 171 EXPECT_FALSE(resource->hasClients());
173 EXPECT_FALSE(client->called()); 172 EXPECT_FALSE(client->called());
174 EXPECT_EQ(0u, client->data().size()); 173 EXPECT_EQ(0u, client->data().size());
175 } 174 }
176 175
177 TEST(RawResourceTest, AddClientDuringCallback) 176 TEST(RawResourceTest, AddClientDuringCallback)
178 { 177 {
179 ResourcePtr<Resource> raw = new RawResource(ResourceRequest("data:text/html, "), Resource::Raw); 178 RefPtrWillBeRawPtr<Resource> raw = RawResource::create(ResourceRequest("data :text/html,"), Resource::Raw);
180 raw->setLoading(false); 179 raw->setLoading(false);
181 180
182 // Create a non-null response. 181 // Create a non-null response.
183 ResourceResponse response = raw->response(); 182 ResourceResponse response = raw->response();
184 response.setURL(KURL(ParsedURLString, "http://600.613/")); 183 response.setURL(KURL(ParsedURLString, "http://600.613/"));
185 raw->setResponse(response); 184 raw->setResponse(response);
186 EXPECT_FALSE(raw->response().isNull()); 185 EXPECT_FALSE(raw->response().isNull());
187 186
188 OwnPtr<DummyClient> dummyClient = adoptPtr(new DummyClient()); 187 OwnPtr<DummyClient> dummyClient = adoptPtr(new DummyClient());
189 OwnPtr<AddingClient> addingClient = adoptPtr(new AddingClient(dummyClient.ge t(), raw.get())); 188 OwnPtr<AddingClient> addingClient = adoptPtr(new AddingClient(dummyClient.ge t(), raw.get()));
(...skipping 18 matching lines...) Expand all
208 resource->removeClient(m_dummyClient); 207 resource->removeClient(m_dummyClient);
209 resource->removeClient(this); 208 resource->removeClient(this);
210 } 209 }
211 String debugName() const override { return "RemovingClient"; } 210 String debugName() const override { return "RemovingClient"; }
212 private: 211 private:
213 DummyClient* m_dummyClient; 212 DummyClient* m_dummyClient;
214 }; 213 };
215 214
216 TEST(RawResourceTest, RemoveClientDuringCallback) 215 TEST(RawResourceTest, RemoveClientDuringCallback)
217 { 216 {
218 ResourcePtr<Resource> raw = new RawResource(ResourceRequest("data:text/html, "), Resource::Raw); 217 RefPtrWillBeRawPtr<Resource> raw = RawResource::create(ResourceRequest("data :text/html,"), Resource::Raw);
219 raw->setLoading(false); 218 raw->setLoading(false);
220 219
221 // Create a non-null response. 220 // Create a non-null response.
222 ResourceResponse response = raw->response(); 221 ResourceResponse response = raw->response();
223 response.setURL(KURL(ParsedURLString, "http://600.613/")); 222 response.setURL(KURL(ParsedURLString, "http://600.613/"));
224 raw->setResponse(response); 223 raw->setResponse(response);
225 EXPECT_FALSE(raw->response().isNull()); 224 EXPECT_FALSE(raw->response().isNull());
226 225
227 OwnPtr<DummyClient> dummyClient = adoptPtr(new DummyClient()); 226 OwnPtr<DummyClient> dummyClient = adoptPtr(new DummyClient());
228 OwnPtr<RemovingClient> removingClient = adoptPtr(new RemovingClient(dummyCli ent.get())); 227 OwnPtr<RemovingClient> removingClient = adoptPtr(new RemovingClient(dummyCli ent.get()));
229 raw->addClient(dummyClient.get()); 228 raw->addClient(dummyClient.get());
230 raw->addClient(removingClient.get()); 229 raw->addClient(removingClient.get());
231 testing::runPendingTasks(); 230 testing::runPendingTasks();
232 EXPECT_FALSE(raw->hasClients()); 231 EXPECT_FALSE(raw->hasClients());
233 } 232 }
234 233
235 } // namespace blink 234 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/fetch/RawResource.cpp ('k') | third_party/WebKit/Source/core/fetch/Resource.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698