| 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" | 7 #include "core/fetch/MemoryCache.h" |
| 8 #include "platform/SharedBuffer.h" | 8 #include "platform/SharedBuffer.h" |
| 9 #include "platform/network/ResourceRequest.h" | 9 #include "platform/network/ResourceRequest.h" |
| 10 #include "platform/network/ResourceResponse.h" | 10 #include "platform/network/ResourceResponse.h" |
| 11 #include "platform/testing/TestingPlatformSupport.h" | 11 #include "platform/testing/TestingPlatformSupport.h" |
| 12 #include "platform/testing/URLTestHelpers.h" | 12 #include "platform/testing/URLTestHelpers.h" |
| 13 #include "public/platform/Platform.h" | 13 #include "public/platform/Platform.h" |
| 14 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
| 15 #include "wtf/Vector.h" | 15 #include "wtf/Vector.h" |
| 16 | 16 |
| 17 namespace blink { | 17 namespace blink { |
| 18 | 18 |
| 19 namespace { | 19 namespace { |
| 20 | 20 |
| 21 class UnlockableResource : public Resource { | 21 class UnlockableResource : public Resource { |
| 22 public: | 22 public: |
| 23 static RefPtrWillBeRawPtr<UnlockableResource> create(const KURL& url) | 23 static RawPtr<UnlockableResource> create(const KURL& url) |
| 24 { | 24 { |
| 25 return adoptRefWillBeNoop(new UnlockableResource(ResourceRequest(url), R
esource::Raw)); | 25 return new UnlockableResource(ResourceRequest(url), Resource::Raw); |
| 26 } | 26 } |
| 27 | 27 |
| 28 private: | 28 private: |
| 29 UnlockableResource(const ResourceRequest& request, Type type) | 29 UnlockableResource(const ResourceRequest& request, Type type) |
| 30 : Resource(request, type, ResourceLoaderOptions()) | 30 : Resource(request, type, ResourceLoaderOptions()) |
| 31 { | 31 { |
| 32 } | 32 } |
| 33 | 33 |
| 34 bool isSafeToUnlock() const override { return true; } | 34 bool isSafeToUnlock() const override { return true; } |
| 35 }; | 35 }; |
| (...skipping 22 matching lines...) Expand all Loading... |
| 58 { | 58 { |
| 59 ResourceResponse response; | 59 ResourceResponse response; |
| 60 response.setURL(URLTestHelpers::toKURL("https://example.com/")); | 60 response.setURL(URLTestHelpers::toKURL("https://example.com/")); |
| 61 response.setHTTPStatusCode(200); | 61 response.setHTTPStatusCode(200); |
| 62 return response; | 62 return response; |
| 63 } | 63 } |
| 64 | 64 |
| 65 void createTestResourceAndSetCachedMetadata(const ResourceResponse& response) | 65 void createTestResourceAndSetCachedMetadata(const ResourceResponse& response) |
| 66 { | 66 { |
| 67 const char testData[] = "test data"; | 67 const char testData[] = "test data"; |
| 68 RefPtrWillBeRawPtr<Resource> resource = Resource::create(ResourceRequest(res
ponse.url()), Resource::Raw); | 68 RawPtr<Resource> resource = Resource::create(ResourceRequest(response.url())
, Resource::Raw); |
| 69 resource->setResponse(response); | 69 resource->setResponse(response); |
| 70 resource->cacheHandler()->setCachedMetadata(100, testData, sizeof(testData),
CachedMetadataHandler::SendToPlatform); | 70 resource->cacheHandler()->setCachedMetadata(100, testData, sizeof(testData),
CachedMetadataHandler::SendToPlatform); |
| 71 return; | 71 return; |
| 72 } | 72 } |
| 73 | 73 |
| 74 } // anonymous namespace | 74 } // anonymous namespace |
| 75 | 75 |
| 76 TEST(ResourceTest, SetCachedMetadata_SendsMetadataToPlatform) | 76 TEST(ResourceTest, SetCachedMetadata_SendsMetadataToPlatform) |
| 77 { | 77 { |
| 78 MockPlatform mock; | 78 MockPlatform mock; |
| 79 ResourceResponse response(createTestResourceResponse()); | 79 ResourceResponse response(createTestResourceResponse()); |
| 80 createTestResourceAndSetCachedMetadata(response); | 80 createTestResourceAndSetCachedMetadata(response); |
| 81 EXPECT_EQ(1u, mock.cachedURLs().size()); | 81 EXPECT_EQ(1u, mock.cachedURLs().size()); |
| 82 } | 82 } |
| 83 | 83 |
| 84 TEST(ResourceTest, SetCachedMetadata_DoesNotSendMetadataToPlatformWhenFetchedVia
ServiceWorker) | 84 TEST(ResourceTest, SetCachedMetadata_DoesNotSendMetadataToPlatformWhenFetchedVia
ServiceWorker) |
| 85 { | 85 { |
| 86 MockPlatform mock; | 86 MockPlatform mock; |
| 87 ResourceResponse response(createTestResourceResponse()); | 87 ResourceResponse response(createTestResourceResponse()); |
| 88 response.setWasFetchedViaServiceWorker(true); | 88 response.setWasFetchedViaServiceWorker(true); |
| 89 createTestResourceAndSetCachedMetadata(response); | 89 createTestResourceAndSetCachedMetadata(response); |
| 90 EXPECT_EQ(0u, mock.cachedURLs().size()); | 90 EXPECT_EQ(0u, mock.cachedURLs().size()); |
| 91 } | 91 } |
| 92 | 92 |
| 93 TEST(ResourceTest, LockFailureNoCrash) | 93 TEST(ResourceTest, LockFailureNoCrash) |
| 94 { | 94 { |
| 95 ResourceResponse response(createTestResourceResponse()); | 95 ResourceResponse response(createTestResourceResponse()); |
| 96 RefPtrWillBeRawPtr<UnlockableResource> resource = UnlockableResource::create
(response.url()); | 96 RawPtr<UnlockableResource> resource = UnlockableResource::create(response.ur
l()); |
| 97 memoryCache()->add(resource.get()); | 97 memoryCache()->add(resource.get()); |
| 98 resource->setResponse(response); | 98 resource->setResponse(response); |
| 99 | 99 |
| 100 // A Resource won't be put in DiscardableMemory unless it is at least 16KiB. | 100 // A Resource won't be put in DiscardableMemory unless it is at least 16KiB. |
| 101 Vector<char> dataVector(4*4096); | 101 Vector<char> dataVector(4*4096); |
| 102 for (int i = 0; i < 4096; i++) | 102 for (int i = 0; i < 4096; i++) |
| 103 dataVector.append("test", 4); | 103 dataVector.append("test", 4); |
| 104 resource->setResourceBuffer(SharedBuffer::adoptVector(dataVector)); | 104 resource->setResourceBuffer(SharedBuffer::adoptVector(dataVector)); |
| 105 | 105 |
| 106 resource->setLoadFinishTime(currentTime()); | 106 resource->setLoadFinishTime(currentTime()); |
| 107 resource->finish(); | 107 resource->finish(); |
| 108 resource->prune(); | 108 resource->prune(); |
| 109 ASSERT_TRUE(resource->isPurgeable()); | 109 ASSERT_TRUE(resource->isPurgeable()); |
| 110 bool didLock = resource->lock(); | 110 bool didLock = resource->lock(); |
| 111 ASSERT_FALSE(didLock); | 111 ASSERT_FALSE(didLock); |
| 112 EXPECT_EQ(nullptr, resource->resourceBuffer()); | 112 EXPECT_EQ(nullptr, resource->resourceBuffer()); |
| 113 EXPECT_EQ(size_t(0), resource->encodedSize()); | 113 EXPECT_EQ(size_t(0), resource->encodedSize()); |
| 114 } | 114 } |
| 115 | 115 |
| 116 } // namespace blink | 116 } // namespace blink |
| OLD | NEW |