From ca0aefe11f827d2b110561d5343e768804beac4d Mon Sep 17 00:00:00 2001 From: yan Date: Tue, 8 Nov 2016 17:27:28 -0800 Subject: [PATCH] Add webview event for security state changes Needed to address https://github.com/brave/browser-laptop/issues/5490 and https://github.com/brave/browser-laptop/issues/5238 Auditors: @bsclifton @bbondy --- atom/browser/api/atom_api_web_contents.cc | 20 ++++++++++++++++++++ atom/browser/api/atom_api_web_contents.h | 3 +++ lib/browser/guest-view-manager.js | 1 + lib/renderer/web-view/guest-view-internal.js | 1 + 4 files changed, 25 insertions(+) diff --git a/atom/browser/api/atom_api_web_contents.cc b/atom/browser/api/atom_api_web_contents.cc index a6d1a433d..0993537ca 100644 --- a/atom/browser/api/atom_api_web_contents.cc +++ b/atom/browser/api/atom_api_web_contents.cc @@ -890,6 +890,26 @@ void WebContents::DidFinishNavigation( } } +void WebContents::SecurityStyleChanged( + content::SecurityStyle security_style, + const content::SecurityStyleExplanations& explanations) { + std::string type = "unknown"; + switch (security_style) { + case content::SECURITY_STYLE_UNAUTHENTICATED: + case content::SECURITY_STYLE_AUTHENTICATION_BROKEN: + type = "insecure"; + break; + case content::SECURITY_STYLE_WARNING: + type = "warning"; + break; + case content::SECURITY_STYLE_AUTHENTICATED: + type = "secure"; + break; + default: break; + } + Emit("did-change-security", type); +} + void WebContents::TitleWasSet(content::NavigationEntry* entry, bool explicit_set) { if (entry) diff --git a/atom/browser/api/atom_api_web_contents.h b/atom/browser/api/atom_api_web_contents.h index 34ffccc3b..c8f33738a 100644 --- a/atom/browser/api/atom_api_web_contents.h +++ b/atom/browser/api/atom_api_web_contents.h @@ -372,6 +372,9 @@ class WebContents : public mate::TrackableObject, void WebContentsDestroyed() override; void NavigationEntryCommitted( const content::LoadCommittedDetails& load_details) override; + void SecurityStyleChanged( + content::SecurityStyle security_style, + const content::SecurityStyleExplanations& explanations) override; void TitleWasSet(content::NavigationEntry* entry, bool explicit_set) override; void DidUpdateFaviconURL( const std::vector& urls) override; diff --git a/lib/browser/guest-view-manager.js b/lib/browser/guest-view-manager.js index 72bd9e232..127713dda 100644 --- a/lib/browser/guest-view-manager.js +++ b/lib/browser/guest-view-manager.js @@ -33,6 +33,7 @@ let supportedWebViewEvents = [ 'will-navigate', 'did-navigate', 'did-navigate-in-page', + 'did-change-security', 'close', 'crashed', 'gpu-crashed', diff --git a/lib/renderer/web-view/guest-view-internal.js b/lib/renderer/web-view/guest-view-internal.js index 68b12c0aa..10f132769 100644 --- a/lib/renderer/web-view/guest-view-internal.js +++ b/lib/renderer/web-view/guest-view-internal.js @@ -35,6 +35,7 @@ var WEB_VIEW_EVENTS = { 'gpu-crashed': [], 'plugin-crashed': ['name', 'version'], 'destroyed': [], + 'did-change-security': ['securityState'], 'page-title-updated': ['title', 'explicitSet'], 'page-favicon-updated': ['favicons'], 'enter-html-full-screen': [],