| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2015, Google Inc. All rights reserved. | 2 * Copyright (c) 2015, 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 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 #include "core/page/Page.h" | 43 #include "core/page/Page.h" |
| 44 #include "core/testing/DummyPageHolder.h" | 44 #include "core/testing/DummyPageHolder.h" |
| 45 #include "platform/loader/fetch/FetchInitiatorInfo.h" | 45 #include "platform/loader/fetch/FetchInitiatorInfo.h" |
| 46 #include "platform/loader/fetch/MockResource.h" | 46 #include "platform/loader/fetch/MockResource.h" |
| 47 #include "platform/loader/fetch/UniqueIdentifier.h" | 47 #include "platform/loader/fetch/UniqueIdentifier.h" |
| 48 #include "platform/network/ResourceRequest.h" | 48 #include "platform/network/ResourceRequest.h" |
| 49 #include "platform/weborigin/KURL.h" | 49 #include "platform/weborigin/KURL.h" |
| 50 #include "public/platform/WebAddressSpace.h" | 50 #include "public/platform/WebAddressSpace.h" |
| 51 #include "public/platform/WebCachePolicy.h" | 51 #include "public/platform/WebCachePolicy.h" |
| 52 #include "public/platform/WebDocumentSubresourceFilter.h" | 52 #include "public/platform/WebDocumentSubresourceFilter.h" |
| 53 #include "public/platform/WebDocumentSubresourceFilterLoadPolicy.h" |
| 53 #include "public/platform/WebInsecureRequestPolicy.h" | 54 #include "public/platform/WebInsecureRequestPolicy.h" |
| 54 #include "testing/gmock/include/gmock/gmock.h" | 55 #include "testing/gmock/include/gmock/gmock.h" |
| 55 #include "testing/gtest/include/gtest/gtest.h" | 56 #include "testing/gtest/include/gtest/gtest.h" |
| 56 | 57 |
| 57 namespace blink { | 58 namespace blink { |
| 58 | 59 |
| 59 class StubFrameLoaderClientWithParent final : public EmptyFrameLoaderClient { | 60 class StubFrameLoaderClientWithParent final : public EmptyFrameLoaderClient { |
| 60 public: | 61 public: |
| 61 static StubFrameLoaderClientWithParent* create(Frame* parent) { | 62 static StubFrameLoaderClientWithParent* create(Frame* parent) { |
| 62 return new StubFrameLoaderClientWithParent(parent); | 63 return new StubFrameLoaderClientWithParent(parent); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 78 class MockFrameLoaderClient : public EmptyFrameLoaderClient { | 79 class MockFrameLoaderClient : public EmptyFrameLoaderClient { |
| 79 public: | 80 public: |
| 80 MockFrameLoaderClient() : EmptyFrameLoaderClient() {} | 81 MockFrameLoaderClient() : EmptyFrameLoaderClient() {} |
| 81 MOCK_METHOD1(didDisplayContentWithCertificateErrors, void(const KURL&)); | 82 MOCK_METHOD1(didDisplayContentWithCertificateErrors, void(const KURL&)); |
| 82 MOCK_METHOD2(dispatchDidLoadResourceFromMemoryCache, | 83 MOCK_METHOD2(dispatchDidLoadResourceFromMemoryCache, |
| 83 void(const ResourceRequest&, const ResourceResponse&)); | 84 void(const ResourceRequest&, const ResourceResponse&)); |
| 84 }; | 85 }; |
| 85 | 86 |
| 86 class FixedPolicySubresourceFilter : public WebDocumentSubresourceFilter { | 87 class FixedPolicySubresourceFilter : public WebDocumentSubresourceFilter { |
| 87 public: | 88 public: |
| 88 FixedPolicySubresourceFilter(LoadPolicy policy, int* filteredLoadCounter) | 89 FixedPolicySubresourceFilter(WebDocumentSubresourceFilterLoadPolicy policy, |
| 90 int* filteredLoadCounter) |
| 89 : m_policy(policy), m_filteredLoadCounter(filteredLoadCounter) {} | 91 : m_policy(policy), m_filteredLoadCounter(filteredLoadCounter) {} |
| 90 | 92 |
| 91 LoadPolicy getLoadPolicy(const WebURL& resourceUrl, | 93 WebDocumentSubresourceFilterLoadPolicy getLoadPolicy( |
| 92 WebURLRequest::RequestContext) override { | 94 const WebURL& resourceUrl, |
| 95 WebURLRequest::RequestContext) override { |
| 93 return m_policy; | 96 return m_policy; |
| 94 } | 97 } |
| 95 | 98 |
| 96 void reportDisallowedLoad() override { ++*m_filteredLoadCounter; } | 99 void reportDisallowedLoad() override { ++*m_filteredLoadCounter; } |
| 97 | 100 |
| 98 private: | 101 private: |
| 99 const LoadPolicy m_policy; | 102 const WebDocumentSubresourceFilterLoadPolicy m_policy; |
| 100 int* m_filteredLoadCounter; | 103 int* m_filteredLoadCounter; |
| 101 }; | 104 }; |
| 102 | 105 |
| 103 class FrameFetchContextTest : public ::testing::Test { | 106 class FrameFetchContextTest : public ::testing::Test { |
| 104 protected: | 107 protected: |
| 105 void SetUp() override { | 108 void SetUp() override { |
| 106 dummyPageHolder = DummyPageHolder::create(IntSize(500, 500)); | 109 dummyPageHolder = DummyPageHolder::create(IntSize(500, 500)); |
| 107 dummyPageHolder->page().setDeviceScaleFactor(1.0); | 110 dummyPageHolder->page().setDeviceScaleFactor(1.0); |
| 108 document = &dummyPageHolder->document(); | 111 document = &dummyPageHolder->document(); |
| 109 fetchContext = | 112 fetchContext = |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 151 m_filteredLoadCallbackCounter = 0; | 154 m_filteredLoadCallbackCounter = 0; |
| 152 } | 155 } |
| 153 | 156 |
| 154 void TearDown() override { | 157 void TearDown() override { |
| 155 document->loader()->setSubresourceFilter(nullptr); | 158 document->loader()->setSubresourceFilter(nullptr); |
| 156 FrameFetchContextTest::TearDown(); | 159 FrameFetchContextTest::TearDown(); |
| 157 } | 160 } |
| 158 | 161 |
| 159 int getFilteredLoadCallCount() const { return m_filteredLoadCallbackCounter; } | 162 int getFilteredLoadCallCount() const { return m_filteredLoadCallbackCounter; } |
| 160 | 163 |
| 161 void setFilterPolicy(WebDocumentSubresourceFilter::LoadPolicy policy) { | 164 void setFilterPolicy(WebDocumentSubresourceFilterLoadPolicy policy) { |
| 162 document->loader()->setSubresourceFilter( | 165 document->loader()->setSubresourceFilter( |
| 163 WTF::makeUnique<FixedPolicySubresourceFilter>( | 166 WTF::makeUnique<FixedPolicySubresourceFilter>( |
| 164 policy, &m_filteredLoadCallbackCounter)); | 167 policy, &m_filteredLoadCallbackCounter)); |
| 165 } | 168 } |
| 166 | 169 |
| 167 ResourceRequestBlockedReason canRequest() { | 170 ResourceRequestBlockedReason canRequest() { |
| 168 return canRequestInternal( | 171 return canRequestInternal( |
| 169 FetchContext::SecurityViolationReportingPolicy::Report); | 172 FetchContext::SecurityViolationReportingPolicy::Report); |
| 170 } | 173 } |
| 171 | 174 |
| (...skipping 692 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 864 fetchContext->addAdditionalRequestHeaders(mainRequest, FetchMainResource); | 867 fetchContext->addAdditionalRequestHeaders(mainRequest, FetchMainResource); |
| 865 EXPECT_EQ(test.isExternalExpectation, mainRequest.isExternalRequest()); | 868 EXPECT_EQ(test.isExternalExpectation, mainRequest.isExternalRequest()); |
| 866 | 869 |
| 867 ResourceRequest subRequest(test.url); | 870 ResourceRequest subRequest(test.url); |
| 868 fetchContext->addAdditionalRequestHeaders(subRequest, FetchSubresource); | 871 fetchContext->addAdditionalRequestHeaders(subRequest, FetchSubresource); |
| 869 EXPECT_EQ(test.isExternalExpectation, subRequest.isExternalRequest()); | 872 EXPECT_EQ(test.isExternalExpectation, subRequest.isExternalRequest()); |
| 870 } | 873 } |
| 871 } | 874 } |
| 872 | 875 |
| 873 TEST_F(FrameFetchContextSubresourceFilterTest, Filter) { | 876 TEST_F(FrameFetchContextSubresourceFilterTest, Filter) { |
| 874 setFilterPolicy(WebDocumentSubresourceFilter::Disallow); | 877 setFilterPolicy(WebDocumentSubresourceFilterLoadPolicy::Disallow); |
| 875 | 878 |
| 876 EXPECT_EQ(ResourceRequestBlockedReason::SubresourceFilter, canRequest()); | 879 EXPECT_EQ(ResourceRequestBlockedReason::SubresourceFilter, canRequest()); |
| 877 EXPECT_EQ(1, getFilteredLoadCallCount()); | 880 EXPECT_EQ(1, getFilteredLoadCallCount()); |
| 878 | 881 |
| 879 EXPECT_EQ(ResourceRequestBlockedReason::SubresourceFilter, canRequest()); | 882 EXPECT_EQ(ResourceRequestBlockedReason::SubresourceFilter, canRequest()); |
| 880 EXPECT_EQ(2, getFilteredLoadCallCount()); | 883 EXPECT_EQ(2, getFilteredLoadCallCount()); |
| 881 | 884 |
| 882 EXPECT_EQ(ResourceRequestBlockedReason::SubresourceFilter, | 885 EXPECT_EQ(ResourceRequestBlockedReason::SubresourceFilter, |
| 883 canRequestPreload()); | 886 canRequestPreload()); |
| 884 EXPECT_EQ(2, getFilteredLoadCallCount()); | 887 EXPECT_EQ(2, getFilteredLoadCallCount()); |
| 885 | 888 |
| 886 EXPECT_EQ(ResourceRequestBlockedReason::SubresourceFilter, canRequest()); | 889 EXPECT_EQ(ResourceRequestBlockedReason::SubresourceFilter, canRequest()); |
| 887 EXPECT_EQ(3, getFilteredLoadCallCount()); | 890 EXPECT_EQ(3, getFilteredLoadCallCount()); |
| 888 } | 891 } |
| 889 | 892 |
| 890 TEST_F(FrameFetchContextSubresourceFilterTest, Allow) { | 893 TEST_F(FrameFetchContextSubresourceFilterTest, Allow) { |
| 891 setFilterPolicy(WebDocumentSubresourceFilter::Allow); | 894 setFilterPolicy(WebDocumentSubresourceFilterLoadPolicy::Allow); |
| 892 | 895 |
| 893 EXPECT_EQ(ResourceRequestBlockedReason::None, canRequest()); | 896 EXPECT_EQ(ResourceRequestBlockedReason::None, canRequest()); |
| 894 EXPECT_EQ(0, getFilteredLoadCallCount()); | 897 EXPECT_EQ(0, getFilteredLoadCallCount()); |
| 895 | 898 |
| 896 EXPECT_EQ(ResourceRequestBlockedReason::None, canRequestPreload()); | 899 EXPECT_EQ(ResourceRequestBlockedReason::None, canRequestPreload()); |
| 897 EXPECT_EQ(0, getFilteredLoadCallCount()); | 900 EXPECT_EQ(0, getFilteredLoadCallCount()); |
| 898 } | 901 } |
| 899 | 902 |
| 900 TEST_F(FrameFetchContextSubresourceFilterTest, WouldDisallow) { | 903 TEST_F(FrameFetchContextSubresourceFilterTest, WouldDisallow) { |
| 901 setFilterPolicy(WebDocumentSubresourceFilter::WouldDisallow); | 904 setFilterPolicy(WebDocumentSubresourceFilterLoadPolicy::WouldDisallow); |
| 902 | 905 |
| 903 EXPECT_EQ(ResourceRequestBlockedReason::None, canRequest()); | 906 EXPECT_EQ(ResourceRequestBlockedReason::None, canRequest()); |
| 904 EXPECT_EQ(0, getFilteredLoadCallCount()); | 907 EXPECT_EQ(0, getFilteredLoadCallCount()); |
| 905 | 908 |
| 906 EXPECT_EQ(ResourceRequestBlockedReason::None, canRequestPreload()); | 909 EXPECT_EQ(ResourceRequestBlockedReason::None, canRequestPreload()); |
| 907 EXPECT_EQ(0, getFilteredLoadCallCount()); | 910 EXPECT_EQ(0, getFilteredLoadCallCount()); |
| 908 } | 911 } |
| 909 | 912 |
| 910 } // namespace blink | 913 } // namespace blink |
| OLD | NEW |