Chromium Code Reviews| Index: chrome/browser/net/net_error_tab_helper.cc |
| diff --git a/chrome/browser/net/net_error_tab_helper.cc b/chrome/browser/net/net_error_tab_helper.cc |
| index 8e325f9be01b1103ffc5f6c8a10b0606006b6049..8e422ddfdecb7affeecbd7d843498ab8b6297613 100644 |
| --- a/chrome/browser/net/net_error_tab_helper.cc |
| +++ b/chrome/browser/net/net_error_tab_helper.cc |
| @@ -22,6 +22,10 @@ |
| #include "net/base/net_errors.h" |
| #include "url/gurl.h" |
| +#if defined(OS_ANDROID) |
| +#include "chrome/browser/android/tab_android.h" |
| +#endif |
| + |
| using content::BrowserContext; |
| using content::BrowserThread; |
| using content::WebContents; |
| @@ -118,6 +122,8 @@ void NetErrorTabHelper::DidStartProvisionalLoadForFrame( |
| return; |
| is_error_page_ = is_error_page; |
| + |
| + SetHasOfflinePages(render_frame_host); |
| } |
| void NetErrorTabHelper::DidCommitProvisionalLoadForFrame( |
| @@ -167,6 +173,7 @@ bool NetErrorTabHelper::OnMessageReceived( |
| IPC_BEGIN_MESSAGE_MAP(NetErrorTabHelper, message) |
| IPC_MESSAGE_HANDLER(ChromeViewHostMsg_RunNetworkDiagnostics, |
| RunNetworkDiagnostics) |
| + IPC_MESSAGE_HANDLER(ChromeViewHostMsg_ShowOfflinePages, ShowOfflinePages) |
| IPC_MESSAGE_UNHANDLED(handled = false) |
| IPC_END_MESSAGE_MAP() |
| @@ -274,4 +281,26 @@ void NetErrorTabHelper::RunNetworkDiagnosticsHelper( |
| ShowNetworkDiagnosticsDialog(web_contents(), sanitized_url); |
| } |
| +void NetErrorTabHelper::SetHasOfflinePages( |
|
newt (away)
2015/11/09 22:15:13
Does this get called on every page load, or only w
jianli
2015/11/09 23:08:56
Good catch. Added is_error_page_ check to bail out
mmenke
2015/11/09 23:11:47
Hrm...Does that actually work? Won't the message
jianli
2015/11/10 00:14:26
You're right. |is_error_page_| is only set when th
|
| + content::RenderFrameHost* render_frame_host) { |
| +#if defined(OS_ANDROID) |
| + TabAndroid* tab = |
| + web_contents() ? TabAndroid::FromWebContents(web_contents()) : nullptr; |
| + bool has_offline_pages = (tab && tab->HasOfflinePages()); |
| + render_frame_host->Send( |
| + new ChromeViewMsg_SetHasOfflinePages( |
| + render_frame_host->GetRoutingID(), |
| + has_offline_pages)); |
| +#endif |
| +} |
| + |
| +void NetErrorTabHelper::ShowOfflinePages() { |
| +#if defined(OS_ANDROID) |
| + TabAndroid* tab = |
| + web_contents() ? TabAndroid::FromWebContents(web_contents()) : nullptr; |
| + if (tab) |
| + tab->ShowOfflinePages(); |
| +#endif |
| +} |
| + |
| } // namespace chrome_browser_net |