Index: extensions/browser/api/networking_private/networking_private_event_router_chromeos.cc |
diff --git a/extensions/browser/api/networking_private/networking_private_event_router_chromeos.cc b/extensions/browser/api/networking_private/networking_private_event_router_chromeos.cc |
index a05de423be011e2b8ef06bbf3428bacd87510dba..a6ec94278b8a9cd475af402e464065004439b4c9 100644 |
--- a/extensions/browser/api/networking_private/networking_private_event_router_chromeos.cc |
+++ b/extensions/browser/api/networking_private/networking_private_event_router_chromeos.cc |
@@ -7,6 +7,7 @@ |
#include "base/json/json_writer.h" |
#include "base/macros.h" |
#include "chromeos/network/device_state.h" |
+#include "chromeos/network/network_certificate_handler.h" |
#include "chromeos/network/network_event_log.h" |
#include "chromeos/network/network_state.h" |
#include "chromeos/network/network_state_handler.h" |
@@ -33,6 +34,7 @@ namespace extensions { |
class NetworkingPrivateEventRouterImpl |
: public NetworkingPrivateEventRouter, |
public chromeos::NetworkStateHandlerObserver, |
+ public chromeos::NetworkCertificateHandler::Observer, |
public NetworkPortalDetector::Observer { |
public: |
explicit NetworkingPrivateEventRouterImpl(content::BrowserContext* context); |
@@ -52,6 +54,9 @@ class NetworkingPrivateEventRouterImpl |
void NetworkPropertiesUpdated(const NetworkState* network) override; |
void DevicePropertiesUpdated(const DeviceState* device) override; |
+ // NetworkCertificateHandler::Observer overrides: |
+ void OnCertificatesChanged() override; |
+ |
// NetworkPortalDetector::Observer overrides: |
void OnPortalDetectionCompleted( |
const NetworkState* network, |
@@ -87,6 +92,8 @@ NetworkingPrivateEventRouterImpl::NetworkingPrivateEventRouterImpl( |
this, api::networking_private::OnDeviceStateListChanged::kEventName); |
event_router->RegisterObserver( |
this, api::networking_private::OnPortalDetectionCompleted::kEventName); |
+ event_router->RegisterObserver( |
+ this, api::networking_private::OnCertificateListsChanged::kEventName); |
StartOrStopListeningForNetworkChanges(); |
} |
} |
@@ -133,16 +140,20 @@ void NetworkingPrivateEventRouterImpl::StartOrStopListeningForNetworkChanges() { |
event_router->HasEventListener( |
api::networking_private::OnDeviceStateListChanged::kEventName) || |
event_router->HasEventListener( |
- api::networking_private::OnPortalDetectionCompleted::kEventName); |
+ api::networking_private::OnPortalDetectionCompleted::kEventName) || |
+ event_router->HasEventListener( |
+ api::networking_private::OnCertificateListsChanged::kEventName); |
if (should_listen && !listening_) { |
NetworkHandler::Get()->network_state_handler()->AddObserver(this, |
FROM_HERE); |
+ NetworkHandler::Get()->network_certificate_handler()->AddObserver(this); |
if (chromeos::network_portal_detector::IsInitialized()) |
chromeos::network_portal_detector::GetInstance()->AddObserver(this); |
} else if (!should_listen && listening_) { |
NetworkHandler::Get()->network_state_handler()->RemoveObserver(this, |
FROM_HERE); |
+ NetworkHandler::Get()->network_certificate_handler()->RemoveObserver(this); |
if (chromeos::network_portal_detector::IsInitialized()) |
chromeos::network_portal_detector::GetInstance()->RemoveObserver(this); |
} |
@@ -225,6 +236,24 @@ void NetworkingPrivateEventRouterImpl::DevicePropertiesUpdated( |
} |
} |
+void NetworkingPrivateEventRouterImpl::OnCertificatesChanged() { |
+ EventRouter* event_router = EventRouter::Get(context_); |
+ if (!event_router->HasEventListener( |
+ api::networking_private::OnCertificateListsChanged::kEventName)) { |
+ NET_LOG_EVENT("NetworkingPrivate.OnCertificatesChanged: No Listeners", ""); |
+ return; |
+ } |
+ NET_LOG_EVENT("NetworkingPrivate.OnCertificatesChanged", ""); |
+ |
+ std::unique_ptr<base::ListValue> args( |
+ api::networking_private::OnCertificateListsChanged::Create()); |
+ std::unique_ptr<Event> extension_event( |
+ new Event(events::NETWORKING_PRIVATE_ON_CERTIFICATE_LISTS_CHANGED, |
+ api::networking_private::OnCertificateListsChanged::kEventName, |
+ std::move(args))); |
+ event_router->BroadcastEvent(std::move(extension_event)); |
+} |
+ |
void NetworkingPrivateEventRouterImpl::OnPortalDetectionCompleted( |
const NetworkState* network, |
const NetworkPortalDetector::CaptivePortalState& state) { |