Index: chrome/renderer/net/net_error_helper.cc |
diff --git a/chrome/renderer/net/net_error_helper.cc b/chrome/renderer/net/net_error_helper.cc |
index d2d98fb1490641947c46eb7c63f41830d585c905..c41b55ad29fe0c4ba4f98e75082985bad2a50bec 100644 |
--- a/chrome/renderer/net/net_error_helper.cc |
+++ b/chrome/renderer/net/net_error_helper.cc |
@@ -21,6 +21,8 @@ |
#include "components/error_page/common/localized_error.h" |
#include "components/error_page/common/net_error_info.h" |
#include "components/grit/components_resources.h" |
+#include "content/public/common/associated_interface_provider.h" |
+#include "content/public/common/associated_interface_registry.h" |
#include "content/public/common/content_client.h" |
#include "content/public/common/url_constants.h" |
#include "content/public/renderer/content_renderer_client.h" |
@@ -82,6 +84,7 @@ NetErrorHelperCore::FrameType GetFrameType(RenderFrame* render_frame) { |
NetErrorHelper::NetErrorHelper(RenderFrame* render_frame) |
: RenderFrameObserver(render_frame), |
content::RenderFrameObserverTracker<NetErrorHelper>(render_frame), |
+ network_diagnostics_client_binding_(this), |
weak_controller_delegate_factory_(this) { |
RenderThread::Get()->AddObserver(this); |
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); |
@@ -95,6 +98,10 @@ NetErrorHelper::NetErrorHelper(RenderFrame* render_frame) |
auto_reload_enabled, |
auto_reload_visible_only, |
!render_frame->IsHidden())); |
+ |
+ render_frame->GetAssociatedInterfaceRegistry()->AddInterface( |
+ base::Bind(&NetErrorHelper::OnNetworkDiagnosticsClientRequest, |
+ base::Unretained(this))); |
} |
NetErrorHelper::~NetErrorHelper() { |
@@ -152,8 +159,6 @@ bool NetErrorHelper::OnMessageReceived(const IPC::Message& message) { |
IPC_BEGIN_MESSAGE_MAP(NetErrorHelper, message) |
IPC_MESSAGE_HANDLER(ChromeViewMsg_NetErrorInfo, OnNetErrorInfo) |
- IPC_MESSAGE_HANDLER(ChromeViewMsg_SetCanShowNetworkDiagnosticsDialog, |
- OnSetCanShowNetworkDiagnosticsDialog); |
IPC_MESSAGE_HANDLER(ChromeViewMsg_SetNavigationCorrectionInfo, |
OnSetNavigationCorrectionInfo); |
#if defined(OS_ANDROID) |
@@ -185,6 +190,14 @@ bool NetErrorHelper::ShouldSuppressErrorPage(const GURL& url) { |
return core_->ShouldSuppressErrorPage(GetFrameType(render_frame()), url); |
} |
+mojom::NetworkDiagnostics* NetErrorHelper::GetRemoteNetworkDiagnostics() { |
+ if (!remote_network_diagnostics_) { |
+ render_frame()->GetRemoteAssociatedInterfaces() |
+ ->GetInterface(&remote_network_diagnostics_); |
+ } |
+ return remote_network_diagnostics_.get(); |
+} |
+ |
void NetErrorHelper::GenerateLocalizedErrorPage( |
const blink::WebURLError& error, |
bool is_failed_post, |
@@ -322,8 +335,7 @@ void NetErrorHelper::LoadPageFromCache(const GURL& page_url) { |
} |
void NetErrorHelper::DiagnoseError(const GURL& page_url) { |
- render_frame()->Send(new ChromeViewHostMsg_RunNetworkDiagnostics( |
- render_frame()->GetRoutingID(), page_url)); |
+ GetRemoteNetworkDiagnostics()->RunNetworkDiagnostics(page_url); |
} |
void NetErrorHelper::ShowOfflinePages() { |
@@ -341,12 +353,6 @@ void NetErrorHelper::OnNetErrorInfo(int status_num) { |
core_->OnNetErrorInfo(static_cast<DnsProbeStatus>(status_num)); |
} |
-void NetErrorHelper::OnSetCanShowNetworkDiagnosticsDialog( |
- bool can_use_local_diagnostics_service) { |
- core_->OnSetCanShowNetworkDiagnosticsDialog( |
- can_use_local_diagnostics_service); |
-} |
- |
void NetErrorHelper::OnSetNavigationCorrectionInfo( |
const GURL& navigation_correction_url, |
const std::string& language, |
@@ -375,6 +381,16 @@ void NetErrorHelper::OnTrackingRequestComplete( |
tracking_fetcher_.reset(); |
} |
+void NetErrorHelper::OnNetworkDiagnosticsClientRequest( |
+ mojom::NetworkDiagnosticsClientAssociatedRequest request) { |
+ DCHECK(!network_diagnostics_client_binding_.is_bound()); |
+ network_diagnostics_client_binding_.Bind(std::move(request)); |
+} |
+ |
+void NetErrorHelper::SetCanShowNetworkDiagnosticsDialog(bool can_show) { |
+ core_->OnSetCanShowNetworkDiagnosticsDialog(can_show); |
+} |
+ |
#if defined(OS_ANDROID) |
void NetErrorHelper::OnSetHasOfflinePages(bool has_offline_pages) { |
core_->OnSetHasOfflinePages(has_offline_pages); |