Index: third_party/WebKit/Source/core/loader/MixedContentCheckerTest.cpp |
diff --git a/third_party/WebKit/Source/core/loader/MixedContentCheckerTest.cpp b/third_party/WebKit/Source/core/loader/MixedContentCheckerTest.cpp |
index 4291c0a03516b53846084ec96ce98ac6a4231384..45c2f5a4dae9930ef657a7bc0bdd2b14038ee0f2 100644 |
--- a/third_party/WebKit/Source/core/loader/MixedContentCheckerTest.cpp |
+++ b/third_party/WebKit/Source/core/loader/MixedContentCheckerTest.cpp |
@@ -5,6 +5,7 @@ |
#include "config.h" |
#include "core/loader/MixedContentChecker.h" |
+#include "core/loader/EmptyClients.h" |
#include "core/testing/DummyPageHolder.h" |
#include "platform/weborigin/KURL.h" |
#include "platform/weborigin/SecurityOrigin.h" |
@@ -67,4 +68,88 @@ TEST(MixedContentCheckerTest, ContextTypeForInspector) |
EXPECT_EQ(MixedContentChecker::ContextTypeOptionallyBlockable, MixedContentChecker::contextTypeForInspector(&dummyPageHolder->frame(), blockableMixedContent)); |
} |
+namespace { |
+ |
+ enum CertErrorsContentType { |
Mike West
2015/11/27 05:30:38
Nit: No indentation.
estark
2015/11/28 02:46:56
Hmm, `git cl format` seems to like it this way.
|
+ DisplayedContentWithCertErrors, |
+ RanContentWithCertErrors |
+ }; |
+ |
+ struct ContentWithCertErrorsInfo { |
+ KURL url; |
+ KURL mainResourceUrl; |
+ CertErrorsContentType contentType; |
+ }; |
+ |
+ class CertErrorsTracker { |
+ public: |
+ CertErrorsTracker() {} |
+ ~CertErrorsTracker() {} |
+ |
+ const ContentWithCertErrorsInfo& contentWithCertErrorsInfo() { return m_contentWithCertErrors; } |
+ |
+ void didDisplayContentWithCertificateErrors(const KURL& url, const WebURL& mainResourceUrl) |
+ { |
+ m_contentWithCertErrors.url = url; |
+ m_contentWithCertErrors.mainResourceUrl = mainResourceUrl; |
+ m_contentWithCertErrors.contentType = DisplayedContentWithCertErrors; |
+ } |
+ |
+ void didRunContentWithCertificateErrors(const KURL& url, const WebURL& mainResourceUrl) |
+ { |
+ m_contentWithCertErrors.url = url; |
+ m_contentWithCertErrors.mainResourceUrl = mainResourceUrl; |
+ m_contentWithCertErrors.contentType = RanContentWithCertErrors; |
+ } |
+ |
+ private: |
+ ContentWithCertErrorsInfo m_contentWithCertErrors; |
+ }; |
+ |
+ class TestCertErrorsFrameLoaderClient : public EmptyFrameLoaderClient { |
+ public: |
+ ~TestCertErrorsFrameLoaderClient() {} |
+ |
+ static PassOwnPtrWillBeRawPtr<TestCertErrorsFrameLoaderClient> create(CertErrorsTracker* tracker) { return adoptPtrWillBeNoop(new TestCertErrorsFrameLoaderClient(tracker)); } |
+ |
+ void didDisplayContentWithCertificateErrors(const KURL& url, const CString& securityInfo, const WebURL& mainResourceUrl, const CString& mainResourceSecurityInfo) |
+ { |
+ m_tracker->didDisplayContentWithCertificateErrors(url, mainResourceUrl); |
+ } |
+ |
+ void didRunContentWithCertificateErrors(const KURL& url, const CString& securityInfo, const WebURL& mainResourceUrl, const CString& mainResourceSecurityInfo) |
+ { |
+ m_tracker->didRunContentWithCertificateErrors(url, mainResourceUrl); |
+ } |
+ |
+ private: |
+ TestCertErrorsFrameLoaderClient(CertErrorsTracker* tracker) |
+ : m_tracker(tracker) |
+ { |
+ } |
+ CertErrorsTracker* m_tracker; |
+ }; |
Mike West
2015/11/27 05:30:38
This is fine, but I suspect you could do it more s
estark
2015/11/28 02:46:56
Ah, that is much better, thanks!
|
+ |
+} // namespace |
+ |
+TEST(MixedContentCheckerTest, HandleCertificateError) |
+{ |
+ CertErrorsTracker certErrorsTracker; |
+ OwnPtr<DummyPageHolder> dummyPageHolder = DummyPageHolder::create(IntSize(1, 1), nullptr, TestCertErrorsFrameLoaderClient::create(&certErrorsTracker)); |
+ |
+ KURL mainResourceUrl(KURL(), "https://example.test"); |
+ KURL displayedUrl(KURL(), "https://example-displayed.test"); |
+ KURL ranUrl(KURL(), "https://example-ran.test"); |
+ |
+ dummyPageHolder->frame().document()->setURL(mainResourceUrl); |
+ EXPECT_EQ(KURL(), certErrorsTracker.contentWithCertErrorsInfo().url); |
+ MixedContentChecker::handleCertificateError(&dummyPageHolder->frame(), ranUrl, WebURLRequest::RequestContextScript, WebURLRequest::FrameTypeNone, ""); |
+ EXPECT_EQ(ranUrl, certErrorsTracker.contentWithCertErrorsInfo().url); |
+ EXPECT_EQ(mainResourceUrl, certErrorsTracker.contentWithCertErrorsInfo().mainResourceUrl); |
+ |
+ MixedContentChecker::handleCertificateError(&dummyPageHolder->frame(), displayedUrl, WebURLRequest::RequestContextImage, WebURLRequest::FrameTypeNone, ""); |
Mike West
2015/11/27 05:30:38
In a magical future world where we've blocked all
estark
2015/11/28 02:46:56
Done.
|
+ EXPECT_EQ(displayedUrl, certErrorsTracker.contentWithCertErrorsInfo().url); |
+ EXPECT_EQ(mainResourceUrl, certErrorsTracker.contentWithCertErrorsInfo().mainResourceUrl); |
+} |
+ |
} // namespace blink |