Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(382)

Side by Side Diff: chrome/renderer/net/net_error_helper.cc

Issue 2310583002: Convert some NetError[Tab]Helper messages to mojom (Closed)
Patch Set: rebase Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/renderer/net/net_error_helper.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/renderer/net/net_error_helper.h" 5 #include "chrome/renderer/net/net_error_helper.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 10
11 #include "base/command_line.h" 11 #include "base/command_line.h"
12 #include "base/i18n/rtl.h" 12 #include "base/i18n/rtl.h"
13 #include "base/json/json_writer.h" 13 #include "base/json/json_writer.h"
14 #include "base/metrics/histogram.h" 14 #include "base/metrics/histogram.h"
15 #include "base/strings/utf_string_conversions.h" 15 #include "base/strings/utf_string_conversions.h"
16 #include "base/values.h" 16 #include "base/values.h"
17 #include "build/build_config.h" 17 #include "build/build_config.h"
18 #include "chrome/common/chrome_switches.h" 18 #include "chrome/common/chrome_switches.h"
19 #include "chrome/common/render_messages.h" 19 #include "chrome/common/render_messages.h"
20 #include "components/error_page/common/error_page_params.h" 20 #include "components/error_page/common/error_page_params.h"
21 #include "components/error_page/common/localized_error.h" 21 #include "components/error_page/common/localized_error.h"
22 #include "components/error_page/common/net_error_info.h" 22 #include "components/error_page/common/net_error_info.h"
23 #include "components/grit/components_resources.h" 23 #include "components/grit/components_resources.h"
24 #include "content/public/common/associated_interface_provider.h"
25 #include "content/public/common/associated_interface_registry.h"
24 #include "content/public/common/content_client.h" 26 #include "content/public/common/content_client.h"
25 #include "content/public/common/url_constants.h" 27 #include "content/public/common/url_constants.h"
26 #include "content/public/renderer/content_renderer_client.h" 28 #include "content/public/renderer/content_renderer_client.h"
27 #include "content/public/renderer/document_state.h" 29 #include "content/public/renderer/document_state.h"
28 #include "content/public/renderer/render_frame.h" 30 #include "content/public/renderer/render_frame.h"
29 #include "content/public/renderer/render_thread.h" 31 #include "content/public/renderer/render_thread.h"
30 #include "content/public/renderer/render_view.h" 32 #include "content/public/renderer/render_view.h"
31 #include "content/public/renderer/resource_fetcher.h" 33 #include "content/public/renderer/resource_fetcher.h"
32 #include "ipc/ipc_message.h" 34 #include "ipc/ipc_message.h"
33 #include "ipc/ipc_message_macros.h" 35 #include "ipc/ipc_message_macros.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 if (render_frame->IsMainFrame()) 77 if (render_frame->IsMainFrame())
76 return NetErrorHelperCore::MAIN_FRAME; 78 return NetErrorHelperCore::MAIN_FRAME;
77 return NetErrorHelperCore::SUB_FRAME; 79 return NetErrorHelperCore::SUB_FRAME;
78 } 80 }
79 81
80 } // namespace 82 } // namespace
81 83
82 NetErrorHelper::NetErrorHelper(RenderFrame* render_frame) 84 NetErrorHelper::NetErrorHelper(RenderFrame* render_frame)
83 : RenderFrameObserver(render_frame), 85 : RenderFrameObserver(render_frame),
84 content::RenderFrameObserverTracker<NetErrorHelper>(render_frame), 86 content::RenderFrameObserverTracker<NetErrorHelper>(render_frame),
87 network_diagnostics_client_binding_(this),
85 weak_controller_delegate_factory_(this) { 88 weak_controller_delegate_factory_(this) {
86 RenderThread::Get()->AddObserver(this); 89 RenderThread::Get()->AddObserver(this);
87 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); 90 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
88 bool auto_reload_enabled = 91 bool auto_reload_enabled =
89 command_line->HasSwitch(switches::kEnableOfflineAutoReload); 92 command_line->HasSwitch(switches::kEnableOfflineAutoReload);
90 bool auto_reload_visible_only = 93 bool auto_reload_visible_only =
91 command_line->HasSwitch(switches::kEnableOfflineAutoReloadVisibleOnly); 94 command_line->HasSwitch(switches::kEnableOfflineAutoReloadVisibleOnly);
92 // TODO(mmenke): Consider only creating a NetErrorHelperCore for main frames. 95 // TODO(mmenke): Consider only creating a NetErrorHelperCore for main frames.
93 // subframes don't need any of the NetErrorHelperCore's extra logic. 96 // subframes don't need any of the NetErrorHelperCore's extra logic.
94 core_.reset(new NetErrorHelperCore(this, 97 core_.reset(new NetErrorHelperCore(this,
95 auto_reload_enabled, 98 auto_reload_enabled,
96 auto_reload_visible_only, 99 auto_reload_visible_only,
97 !render_frame->IsHidden())); 100 !render_frame->IsHidden()));
101
102 render_frame->GetAssociatedInterfaceRegistry()->AddInterface(
103 base::Bind(&NetErrorHelper::OnNetworkDiagnosticsClientRequest,
104 base::Unretained(this)));
98 } 105 }
99 106
100 NetErrorHelper::~NetErrorHelper() { 107 NetErrorHelper::~NetErrorHelper() {
101 RenderThread::Get()->RemoveObserver(this); 108 RenderThread::Get()->RemoveObserver(this);
102 } 109 }
103 110
104 void NetErrorHelper::ButtonPressed( 111 void NetErrorHelper::ButtonPressed(
105 error_page::NetErrorHelperCore::Button button) { 112 error_page::NetErrorHelperCore::Button button) {
106 core_->ExecuteButtonPress(button); 113 core_->ExecuteButtonPress(button);
107 } 114 }
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 152
146 void NetErrorHelper::WasHidden() { 153 void NetErrorHelper::WasHidden() {
147 core_->OnWasHidden(); 154 core_->OnWasHidden();
148 } 155 }
149 156
150 bool NetErrorHelper::OnMessageReceived(const IPC::Message& message) { 157 bool NetErrorHelper::OnMessageReceived(const IPC::Message& message) {
151 bool handled = true; 158 bool handled = true;
152 159
153 IPC_BEGIN_MESSAGE_MAP(NetErrorHelper, message) 160 IPC_BEGIN_MESSAGE_MAP(NetErrorHelper, message)
154 IPC_MESSAGE_HANDLER(ChromeViewMsg_NetErrorInfo, OnNetErrorInfo) 161 IPC_MESSAGE_HANDLER(ChromeViewMsg_NetErrorInfo, OnNetErrorInfo)
155 IPC_MESSAGE_HANDLER(ChromeViewMsg_SetCanShowNetworkDiagnosticsDialog,
156 OnSetCanShowNetworkDiagnosticsDialog);
157 IPC_MESSAGE_HANDLER(ChromeViewMsg_SetNavigationCorrectionInfo, 162 IPC_MESSAGE_HANDLER(ChromeViewMsg_SetNavigationCorrectionInfo,
158 OnSetNavigationCorrectionInfo); 163 OnSetNavigationCorrectionInfo);
159 #if defined(OS_ANDROID) 164 #if defined(OS_ANDROID)
160 IPC_MESSAGE_HANDLER(ChromeViewMsg_SetHasOfflinePages, OnSetHasOfflinePages) 165 IPC_MESSAGE_HANDLER(ChromeViewMsg_SetHasOfflinePages, OnSetHasOfflinePages)
161 #endif 166 #endif
162 IPC_MESSAGE_UNHANDLED(handled = false) 167 IPC_MESSAGE_UNHANDLED(handled = false)
163 IPC_END_MESSAGE_MAP() 168 IPC_END_MESSAGE_MAP()
164 169
165 return handled; 170 return handled;
166 } 171 }
(...skipping 11 matching lines...) Expand all
178 bool is_ignoring_cache, 183 bool is_ignoring_cache,
179 std::string* error_html) { 184 std::string* error_html) {
180 core_->GetErrorHTML(GetFrameType(render_frame()), error, is_failed_post, 185 core_->GetErrorHTML(GetFrameType(render_frame()), error, is_failed_post,
181 is_ignoring_cache, error_html); 186 is_ignoring_cache, error_html);
182 } 187 }
183 188
184 bool NetErrorHelper::ShouldSuppressErrorPage(const GURL& url) { 189 bool NetErrorHelper::ShouldSuppressErrorPage(const GURL& url) {
185 return core_->ShouldSuppressErrorPage(GetFrameType(render_frame()), url); 190 return core_->ShouldSuppressErrorPage(GetFrameType(render_frame()), url);
186 } 191 }
187 192
193 mojom::NetworkDiagnostics* NetErrorHelper::GetRemoteNetworkDiagnostics() {
194 if (!remote_network_diagnostics_) {
195 render_frame()->GetRemoteAssociatedInterfaces()
196 ->GetInterface(&remote_network_diagnostics_);
197 }
198 return remote_network_diagnostics_.get();
199 }
200
188 void NetErrorHelper::GenerateLocalizedErrorPage( 201 void NetErrorHelper::GenerateLocalizedErrorPage(
189 const blink::WebURLError& error, 202 const blink::WebURLError& error,
190 bool is_failed_post, 203 bool is_failed_post,
191 bool can_show_network_diagnostics_dialog, 204 bool can_show_network_diagnostics_dialog,
192 bool has_offline_pages, 205 bool has_offline_pages,
193 std::unique_ptr<ErrorPageParams> params, 206 std::unique_ptr<ErrorPageParams> params,
194 bool* reload_button_shown, 207 bool* reload_button_shown,
195 bool* show_saved_copy_button_shown, 208 bool* show_saved_copy_button_shown,
196 bool* show_cached_copy_button_shown, 209 bool* show_cached_copy_button_shown,
197 bool* show_offline_pages_button_shown, 210 bool* show_offline_pages_button_shown,
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 base::StringPiece16(web_frame->dataSource()->request().httpMethod()), 328 base::StringPiece16(web_frame->dataSource()->request().httpMethod()),
316 "POST")); 329 "POST"));
317 330
318 blink::WebURLRequest request(page_url); 331 blink::WebURLRequest request(page_url);
319 request.setCachePolicy(blink::WebCachePolicy::ReturnCacheDataDontLoad); 332 request.setCachePolicy(blink::WebCachePolicy::ReturnCacheDataDontLoad);
320 request.setRequestorOrigin(blink::WebSecurityOrigin::createUnique()); 333 request.setRequestorOrigin(blink::WebSecurityOrigin::createUnique());
321 web_frame->loadRequest(request); 334 web_frame->loadRequest(request);
322 } 335 }
323 336
324 void NetErrorHelper::DiagnoseError(const GURL& page_url) { 337 void NetErrorHelper::DiagnoseError(const GURL& page_url) {
325 render_frame()->Send(new ChromeViewHostMsg_RunNetworkDiagnostics( 338 GetRemoteNetworkDiagnostics()->RunNetworkDiagnostics(page_url);
326 render_frame()->GetRoutingID(), page_url));
327 } 339 }
328 340
329 void NetErrorHelper::ShowOfflinePages() { 341 void NetErrorHelper::ShowOfflinePages() {
330 #if defined(OS_ANDROID) 342 #if defined(OS_ANDROID)
331 render_frame()->Send(new ChromeViewHostMsg_ShowOfflinePages( 343 render_frame()->Send(new ChromeViewHostMsg_ShowOfflinePages(
332 render_frame()->GetRoutingID())); 344 render_frame()->GetRoutingID()));
333 #endif // defined(OS_ANDROID) 345 #endif // defined(OS_ANDROID)
334 } 346 }
335 347
336 void NetErrorHelper::OnNetErrorInfo(int status_num) { 348 void NetErrorHelper::OnNetErrorInfo(int status_num) {
337 DCHECK(status_num >= 0 && status_num < error_page::DNS_PROBE_MAX); 349 DCHECK(status_num >= 0 && status_num < error_page::DNS_PROBE_MAX);
338 350
339 DVLOG(1) << "Received status " << DnsProbeStatusToString(status_num); 351 DVLOG(1) << "Received status " << DnsProbeStatusToString(status_num);
340 352
341 core_->OnNetErrorInfo(static_cast<DnsProbeStatus>(status_num)); 353 core_->OnNetErrorInfo(static_cast<DnsProbeStatus>(status_num));
342 } 354 }
343 355
344 void NetErrorHelper::OnSetCanShowNetworkDiagnosticsDialog(
345 bool can_use_local_diagnostics_service) {
346 core_->OnSetCanShowNetworkDiagnosticsDialog(
347 can_use_local_diagnostics_service);
348 }
349
350 void NetErrorHelper::OnSetNavigationCorrectionInfo( 356 void NetErrorHelper::OnSetNavigationCorrectionInfo(
351 const GURL& navigation_correction_url, 357 const GURL& navigation_correction_url,
352 const std::string& language, 358 const std::string& language,
353 const std::string& country_code, 359 const std::string& country_code,
354 const std::string& api_key, 360 const std::string& api_key,
355 const GURL& search_url) { 361 const GURL& search_url) {
356 core_->OnSetNavigationCorrectionInfo(navigation_correction_url, language, 362 core_->OnSetNavigationCorrectionInfo(navigation_correction_url, language,
357 country_code, api_key, search_url); 363 country_code, api_key, search_url);
358 } 364 }
359 365
360 void NetErrorHelper::OnNavigationCorrectionsFetched( 366 void NetErrorHelper::OnNavigationCorrectionsFetched(
361 const blink::WebURLResponse& response, 367 const blink::WebURLResponse& response,
362 const std::string& data) { 368 const std::string& data) {
363 // The fetcher may only be deleted after |data| is passed to |core_|. Move 369 // The fetcher may only be deleted after |data| is passed to |core_|. Move
364 // it to a temporary to prevent any potential re-entrancy issues. 370 // it to a temporary to prevent any potential re-entrancy issues.
365 std::unique_ptr<content::ResourceFetcher> fetcher( 371 std::unique_ptr<content::ResourceFetcher> fetcher(
366 correction_fetcher_.release()); 372 correction_fetcher_.release());
367 bool success = (!response.isNull() && response.httpStatusCode() == 200); 373 bool success = (!response.isNull() && response.httpStatusCode() == 200);
368 core_->OnNavigationCorrectionsFetched(success ? data : "", 374 core_->OnNavigationCorrectionsFetched(success ? data : "",
369 base::i18n::IsRTL()); 375 base::i18n::IsRTL());
370 } 376 }
371 377
372 void NetErrorHelper::OnTrackingRequestComplete( 378 void NetErrorHelper::OnTrackingRequestComplete(
373 const blink::WebURLResponse& response, 379 const blink::WebURLResponse& response,
374 const std::string& data) { 380 const std::string& data) {
375 tracking_fetcher_.reset(); 381 tracking_fetcher_.reset();
376 } 382 }
377 383
384 void NetErrorHelper::OnNetworkDiagnosticsClientRequest(
385 mojom::NetworkDiagnosticsClientAssociatedRequest request) {
386 DCHECK(!network_diagnostics_client_binding_.is_bound());
387 network_diagnostics_client_binding_.Bind(std::move(request));
388 }
389
390 void NetErrorHelper::SetCanShowNetworkDiagnosticsDialog(bool can_show) {
391 core_->OnSetCanShowNetworkDiagnosticsDialog(can_show);
392 }
393
378 #if defined(OS_ANDROID) 394 #if defined(OS_ANDROID)
379 void NetErrorHelper::OnSetHasOfflinePages(bool has_offline_pages) { 395 void NetErrorHelper::OnSetHasOfflinePages(bool has_offline_pages) {
380 core_->OnSetHasOfflinePages(has_offline_pages); 396 core_->OnSetHasOfflinePages(has_offline_pages);
381 } 397 }
382 #endif // defined(OS_ANDROID) 398 #endif // defined(OS_ANDROID)
OLDNEW
« no previous file with comments | « chrome/renderer/net/net_error_helper.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698