OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "core/fetch/Resource.h" | 5 #include "core/fetch/Resource.h" |
6 | 6 |
| 7 #include "core/fetch/MemoryCache.h" |
| 8 #include "platform/SharedBuffer.h" |
7 #include "platform/network/ResourceRequest.h" | 9 #include "platform/network/ResourceRequest.h" |
8 #include "platform/network/ResourceResponse.h" | 10 #include "platform/network/ResourceResponse.h" |
9 #include "platform/testing/TestingPlatformSupport.h" | 11 #include "platform/testing/TestingPlatformSupport.h" |
10 #include "platform/testing/URLTestHelpers.h" | 12 #include "platform/testing/URLTestHelpers.h" |
11 #include "public/platform/Platform.h" | 13 #include "public/platform/Platform.h" |
12 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
13 #include "wtf/Vector.h" | 15 #include "wtf/Vector.h" |
14 | 16 |
15 namespace blink { | 17 namespace blink { |
16 | 18 |
17 namespace { | 19 namespace { |
18 | 20 |
| 21 class UnlockableResource : public Resource { |
| 22 public: |
| 23 static RefPtrWillBeRawPtr<UnlockableResource> create(const KURL& url) |
| 24 { |
| 25 return adoptRefWillBeNoop(new UnlockableResource(ResourceRequest(url), R
esource::Raw)); |
| 26 } |
| 27 |
| 28 private: |
| 29 UnlockableResource(const ResourceRequest& request, Type type) |
| 30 : Resource(request, type) |
| 31 { |
| 32 } |
| 33 |
| 34 bool isSafeToUnlock() const override { return true; } |
| 35 }; |
| 36 |
19 class MockPlatform final : public TestingPlatformSupport { | 37 class MockPlatform final : public TestingPlatformSupport { |
20 public: | 38 public: |
21 MockPlatform() { } | 39 MockPlatform() { } |
22 ~MockPlatform() override { } | 40 ~MockPlatform() override { } |
23 | 41 |
24 // From blink::Platform: | 42 // From blink::Platform: |
25 void cacheMetadata(const WebURL& url, int64_t, const char*, size_t) override | 43 void cacheMetadata(const WebURL& url, int64_t, const char*, size_t) override |
26 { | 44 { |
27 m_cachedURLs.append(url); | 45 m_cachedURLs.append(url); |
28 } | 46 } |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
65 | 83 |
66 TEST(ResourceTest, SetCachedMetadata_DoesNotSendMetadataToPlatformWhenFetchedVia
ServiceWorker) | 84 TEST(ResourceTest, SetCachedMetadata_DoesNotSendMetadataToPlatformWhenFetchedVia
ServiceWorker) |
67 { | 85 { |
68 MockPlatform mock; | 86 MockPlatform mock; |
69 ResourceResponse response(createTestResourceResponse()); | 87 ResourceResponse response(createTestResourceResponse()); |
70 response.setWasFetchedViaServiceWorker(true); | 88 response.setWasFetchedViaServiceWorker(true); |
71 createTestResourceAndSetCachedMetadata(response); | 89 createTestResourceAndSetCachedMetadata(response); |
72 EXPECT_EQ(0u, mock.cachedURLs().size()); | 90 EXPECT_EQ(0u, mock.cachedURLs().size()); |
73 } | 91 } |
74 | 92 |
| 93 TEST(ResourceTest, LockFailureNoCrash) |
| 94 { |
| 95 ResourceResponse response(createTestResourceResponse()); |
| 96 RefPtrWillBeRawPtr<UnlockableResource> resource = UnlockableResource::create
(response.url()); |
| 97 memoryCache()->add(resource.get()); |
| 98 resource->setResponse(response); |
| 99 |
| 100 // A Resource won't be put in DiscardableMemory unless it is at least 16KiB. |
| 101 Vector<char> dataVector(4*4096); |
| 102 for (int i = 0; i < 4096; i++) |
| 103 dataVector.append("test", 4); |
| 104 resource->setResourceBuffer(SharedBuffer::adoptVector(dataVector)); |
| 105 |
| 106 resource->setLoadFinishTime(currentTime()); |
| 107 resource->finish(); |
| 108 resource->prune(); |
| 109 ASSERT_TRUE(resource->isPurgeable()); |
| 110 bool didLock = resource->lock(); |
| 111 ASSERT_FALSE(didLock); |
| 112 EXPECT_EQ(nullptr, resource->resourceBuffer()); |
| 113 EXPECT_EQ(size_t(0), resource->encodedSize()); |
| 114 } |
| 115 |
75 } // namespace blink | 116 } // namespace blink |
OLD | NEW |