Web Inspector: Network: show secure certificate details per-request
https://bugs.webkit.org/show_bug.cgi?id=191447
<rdar://problem/30019476>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

Add Security domain to hold security related protocol types.

* CMakeLists.txt:
* DerivedSources.make:
* inspector/protocol/Network.json:
* inspector/protocol/Security.json: Added.
* inspector/scripts/codegen/objc_generator.py:
(ObjCGenerator):

Source/WebCore:

Test: http/tests/inspector/network/resource-response-security.html

* loader/ResourceLoader.h:
(WebCore::ResourceLoader::shouldIncludeCertificateInfo const):
* loader/ResourceLoader.cpp:
(WebCore::ResourceLoader::shouldIncludeCertificateInfo const): Added.
Always save certificate information when WebInspector is open.

* platform/network/CertificateInfoBase.h: Added.
(WebCore::CertificateInfoBase::containsNonRootSHA1SignedCertificate const):
(WebCore::CertificateInfoBase::summaryInfo const):
(WebCore::CertificateInfoBase::isEmpty const):
* platform/network/cf/CertificateInfo.h:
(WebCore::CertificateInfo::summaryInfo const): Added.
* platform/network/cf/CertificateInfoCFNet.cpp: Renamed from Source/WebCore/platform/network/mac/CertificateInfoMac.mm.
(WebCore::CertificateInfo::containsNonRootSHA1SignedCertificate):
(WebCore::CertificateInfo::summaryInfo const): Added.
* platform/network/curl/CertificateInfo.h:
(WebCore::CertificateInfo::summaryInfo const): Added.
(WebCore::CertificateInfo::isEmpty const): Added.
* platform/network/soup/CertificateInfo.h:
(WebCore::CertificateInfo::summaryInfo const): Added.
(WebCore::CertificateInfo::isEmpty const): Added.
Create base class for `CertificateInfo` so that `InspectorNetworkAgent` doesn't need to have
platform-specific code in its implementation.

* platform/network/cocoa/CertificateInfoCocoa.mm: Renamed from Source/WebCore/platform/network/mac/CertificateInfoMac.mm.
* platform/network/curl/CertificateInfoCFNet.cpp: Renamed from Source/WebCore/platform/network/curl/CertificateInfo.cpp.
* platform/network/soup/CertificateInfoSoup.cpp: Renamed from Source/WebCore/platform/network/soup/CertificateInfo.cpp.

* inspector/NetworkResourcesData.h:
(WebCore::NetworkResourcesData::ResourceData::certificateInfo const): Added.
(WebCore::NetworkResourcesData::ResourceData::setCertificateInfo): Added.
* inspector/NetworkResourcesData.cpp:
(WebCore::NetworkResourcesData::responseReceived):

* inspector/agents/InspectorNetworkAgent.cpp:
(WebCore::InspectorNetworkAgent::buildObjectForResourceResponse):

* PlatformAppleWin.cmake:
* PlatformMac.cmake:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/Curl.cmake:
* platform/SourcesSoup.txt:

Source/WebInspectorUI:

* UserInterface/Controllers/NetworkManager.js:
(WI.NetworkManager.prototype.resourceRequestWasServedFromMemoryCache):
(WI.NetworkManager.prototype.resourceRequestDidReceiveResponse):

* UserInterface/Models/Resource.js:
(WI.Resource.prototype.get responseSecurity): Added.
(WI.Resource.prototype.get loadedSecurely): Added.
(WI.Resource.prototype.updateForResponse):

* UserInterface/Views/NetworkResourceDetailView.js:
(WI.NetworkResourceDetailView):
(WI.NetworkResourceDetailView.prototype.initialLayout):
(WI.NetworkResourceDetailView.prototype.showContentViewForIdentifier):
* UserInterface/Views/NetworkResourceDetailView.css:
(.content-view.resource-details .go-to-arrow): Added.
(.content-view.resource-details.showing-find-banner .search-highlight): Added.

* UserInterface/Views/ResourceSecurityContentView.js: Added.
(WI.ResourceSecurityContentView):
(WI.ResourceSecurityContentView.prototype.initialLayout):
(WI.ResourceSecurityContentView.prototype.layout):
(WI.ResourceSecurityContentView.prototype.closed):
(WI.ResourceSecurityContentView.prototype.get supportsSearch):
(WI.ResourceSecurityContentView.prototype.get numberOfSearchResults):
(WI.ResourceSecurityContentView.prototype.get hasPerformedSearch):
(WI.ResourceSecurityContentView.prototype.set automaticallyRevealFirstSearchResult):
(WI.ResourceSecurityContentView.prototype.performSearch):
(WI.ResourceSecurityContentView.prototype.searchCleared):
(WI.ResourceSecurityContentView.prototype.revealPreviousSearchResult):
(WI.ResourceSecurityContentView.prototype.revealNextSearchResult):
(WI.ResourceSecurityContentView.prototype._refreshCetificateSection):
(WI.ResourceSecurityContentView.prototype._perfomSearchOnKeyValuePairs):
(WI.ResourceSecurityContentView.prototype._revealSearchResult):
(WI.ResourceSecurityContentView.prototype._handleResourceResponseReceived):
* UserInterface/Views/ResourceSecurityContentView.css: Added.
(body[dir] .resource-security > section.certificate > .details):
(.resource-security .details .key):
(.resource-security .dns-name + .dns-name > .key,):
(.resource-security .show-more):
(@media (prefers-dark-interface) body[dir] .resource-security > section.certificate > .details):
(@media (prefers-dark-interface) .resource-security .details .key):

* UserInterface/Views/ResourceCookiesContentView.js:
(WI.ResourceCookiesContentView.prototype._refreshRequestCookiesSection):
(WI.ResourceCookiesContentView.prototype._refreshResponseCookiesSection):
(WI.ResourceCookiesContentView.prototype._markIncompleteSectionWithMessage): Deleted.
(WI.ResourceCookiesContentView.prototype._markIncompleteSectionWithLoadingIndicator): Deleted.
* UserInterface/Views/ResourceHeadersContentView.js:
(WI.ResourceHeadersContentView.prototype._refreshSummarySection):
(WI.ResourceHeadersContentView.prototype._refreshRedirectHeadersSections):
(WI.ResourceHeadersContentView.prototype._refreshRequestHeadersSection):
(WI.ResourceHeadersContentView.prototype._refreshResponseHeadersSection):
(WI.ResourceHeadersContentView.prototype._refreshQueryStringSection):
(WI.ResourceHeadersContentView.prototype._refreshRequestDataSection):
(WI.ResourceHeadersContentView.prototype._markIncompleteSectionWithMessage): Deleted.
(WI.ResourceHeadersContentView.prototype._markIncompleteSectionWithLoadingIndicator): Deleted.
(WI.ResourceHeadersContentView.prototype._appendKeyValuePair): Deleted.
* UserInterface/Views/ResourceHeadersContentView.css:
(.resource-headers .h1-status > .key,):
(body[dir] .resource-headers > section.error > .details): Deleted.
(.resource-headers > section.error .key): Deleted.
(.resource-headers .details): Deleted.
(.resource-headers .details .pair): Deleted.
(body[dir=rtl] .resource-headers .details .pair): Deleted.
(.resource-headers .details .key): Deleted.
(.resource-headers .value): Deleted.
(.resource-headers .go-to-arrow): Deleted.
(.resource-headers.showing-find-banner .search-highlight): Deleted.
* UserInterface/Views/ResourceDetailsSection.js:
(WI.ResourceDetailsSection.prototype.markIncompleteSectionWithMessage): Added.
(WI.ResourceDetailsSection.prototype.markIncompleteSectionWithLoadingIndicator): Added.
(WI.ResourceDetailsSection.prototype.appendKeyValuePair): Added.
* UserInterface/Views/ResourceDetailsSection.css:
(.resource-details > section > .details): Added.
(.resource-details > section > .details > .pair): Added.
(body[dir=rtl] .resource-details > section > .details > .pair): Added.
(.resource-details > section > .details > .pair > .key): Added.
(.resource-details > section > .details > .pair > .value): Added.
(body[dir] .resource-details > section.error > .details): Added.
(.resource-details > section.error > .details > .pair > .key): Added.
Move commonly used functions/styles from container classes onto this object.

* UserInterface/Main.html:
* Localizations/en.lproj/localizedStrings.js:

LayoutTests:

* http/tests/inspector/network/resource-response-security-expected.txt: Added.
* http/tests/inspector/network/resource-response-security.html: Added.

* platform/gtk/TestExpectations:
* platform/wincairo/TestExpectations:
* platform/wpe/TestExpectations:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@238122 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebInspectorUI/ChangeLog b/Source/WebInspectorUI/ChangeLog
index 7d849a9..c4198ae 100644
--- a/Source/WebInspectorUI/ChangeLog
+++ b/Source/WebInspectorUI/ChangeLog
@@ -1,3 +1,96 @@
+2018-11-12  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Network: show secure certificate details per-request
+        https://bugs.webkit.org/show_bug.cgi?id=191447
+        <rdar://problem/30019476>
+
+        Reviewed by Joseph Pecoraro.
+
+        * UserInterface/Controllers/NetworkManager.js:
+        (WI.NetworkManager.prototype.resourceRequestWasServedFromMemoryCache):
+        (WI.NetworkManager.prototype.resourceRequestDidReceiveResponse):
+
+        * UserInterface/Models/Resource.js:
+        (WI.Resource.prototype.get responseSecurity): Added.
+        (WI.Resource.prototype.get loadedSecurely): Added.
+        (WI.Resource.prototype.updateForResponse):
+
+        * UserInterface/Views/NetworkResourceDetailView.js:
+        (WI.NetworkResourceDetailView):
+        (WI.NetworkResourceDetailView.prototype.initialLayout):
+        (WI.NetworkResourceDetailView.prototype.showContentViewForIdentifier):
+        * UserInterface/Views/NetworkResourceDetailView.css:
+        (.content-view.resource-details .go-to-arrow): Added.
+        (.content-view.resource-details.showing-find-banner .search-highlight): Added.
+
+        * UserInterface/Views/ResourceSecurityContentView.js: Added.
+        (WI.ResourceSecurityContentView):
+        (WI.ResourceSecurityContentView.prototype.initialLayout):
+        (WI.ResourceSecurityContentView.prototype.layout):
+        (WI.ResourceSecurityContentView.prototype.closed):
+        (WI.ResourceSecurityContentView.prototype.get supportsSearch):
+        (WI.ResourceSecurityContentView.prototype.get numberOfSearchResults):
+        (WI.ResourceSecurityContentView.prototype.get hasPerformedSearch):
+        (WI.ResourceSecurityContentView.prototype.set automaticallyRevealFirstSearchResult):
+        (WI.ResourceSecurityContentView.prototype.performSearch):
+        (WI.ResourceSecurityContentView.prototype.searchCleared):
+        (WI.ResourceSecurityContentView.prototype.revealPreviousSearchResult):
+        (WI.ResourceSecurityContentView.prototype.revealNextSearchResult):
+        (WI.ResourceSecurityContentView.prototype._refreshCetificateSection):
+        (WI.ResourceSecurityContentView.prototype._perfomSearchOnKeyValuePairs):
+        (WI.ResourceSecurityContentView.prototype._revealSearchResult):
+        (WI.ResourceSecurityContentView.prototype._handleResourceResponseReceived):
+        * UserInterface/Views/ResourceSecurityContentView.css: Added.
+        (body[dir] .resource-security > section.certificate > .details):
+        (.resource-security .details .key):
+        (.resource-security .dns-name + .dns-name > .key,):
+        (.resource-security .show-more):
+        (@media (prefers-dark-interface) body[dir] .resource-security > section.certificate > .details):
+        (@media (prefers-dark-interface) .resource-security .details .key):
+
+        * UserInterface/Views/ResourceCookiesContentView.js:
+        (WI.ResourceCookiesContentView.prototype._refreshRequestCookiesSection):
+        (WI.ResourceCookiesContentView.prototype._refreshResponseCookiesSection):
+        (WI.ResourceCookiesContentView.prototype._markIncompleteSectionWithMessage): Deleted.
+        (WI.ResourceCookiesContentView.prototype._markIncompleteSectionWithLoadingIndicator): Deleted.
+        * UserInterface/Views/ResourceHeadersContentView.js:
+        (WI.ResourceHeadersContentView.prototype._refreshSummarySection):
+        (WI.ResourceHeadersContentView.prototype._refreshRedirectHeadersSections):
+        (WI.ResourceHeadersContentView.prototype._refreshRequestHeadersSection):
+        (WI.ResourceHeadersContentView.prototype._refreshResponseHeadersSection):
+        (WI.ResourceHeadersContentView.prototype._refreshQueryStringSection):
+        (WI.ResourceHeadersContentView.prototype._refreshRequestDataSection):
+        (WI.ResourceHeadersContentView.prototype._markIncompleteSectionWithMessage): Deleted.
+        (WI.ResourceHeadersContentView.prototype._markIncompleteSectionWithLoadingIndicator): Deleted.
+        (WI.ResourceHeadersContentView.prototype._appendKeyValuePair): Deleted.
+        * UserInterface/Views/ResourceHeadersContentView.css:
+        (.resource-headers .h1-status > .key,):
+        (body[dir] .resource-headers > section.error > .details): Deleted.
+        (.resource-headers > section.error .key): Deleted.
+        (.resource-headers .details): Deleted.
+        (.resource-headers .details .pair): Deleted.
+        (body[dir=rtl] .resource-headers .details .pair): Deleted.
+        (.resource-headers .details .key): Deleted.
+        (.resource-headers .value): Deleted.
+        (.resource-headers .go-to-arrow): Deleted.
+        (.resource-headers.showing-find-banner .search-highlight): Deleted.
+        * UserInterface/Views/ResourceDetailsSection.js:
+        (WI.ResourceDetailsSection.prototype.markIncompleteSectionWithMessage): Added.
+        (WI.ResourceDetailsSection.prototype.markIncompleteSectionWithLoadingIndicator): Added.
+        (WI.ResourceDetailsSection.prototype.appendKeyValuePair): Added.
+        * UserInterface/Views/ResourceDetailsSection.css:
+        (.resource-details > section > .details): Added.
+        (.resource-details > section > .details > .pair): Added.
+        (body[dir=rtl] .resource-details > section > .details > .pair): Added.
+        (.resource-details > section > .details > .pair > .key): Added.
+        (.resource-details > section > .details > .pair > .value): Added.
+        (body[dir] .resource-details > section.error > .details): Added.
+        (.resource-details > section.error > .details > .pair > .key): Added.
+        Move commonly used functions/styles from container classes onto this object.
+
+        * UserInterface/Main.html:
+        * Localizations/en.lproj/localizedStrings.js:
+
 2018-11-12  Matt Baker  <mattbaker@apple.com>
 
         Web Inspector: Table should support shift-extending the row selection