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

Side by Side Diff: chrome/browser/android/offline_pages/offline_page_tab_helper.cc

Issue 2462653002: Showing previews UI for Offline Previews (Closed)
Patch Set: fix Created 4 years, 1 month 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/browser/android/offline_pages/offline_page_tab_helper.h" 5 #include "chrome/browser/android/offline_pages/offline_page_tab_helper.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "chrome/browser/android/offline_pages/offline_page_request_job.h" 10 #include "chrome/browser/android/offline_pages/offline_page_request_job.h"
11 #include "chrome/browser/android/offline_pages/offline_page_utils.h" 11 #include "chrome/browser/android/offline_pages/offline_page_utils.h"
12 #include "components/offline_pages/offline_page_item.h" 12 #include "components/offline_pages/offline_page_item.h"
13 #include "content/public/browser/browser_thread.h" 13 #include "content/public/browser/browser_thread.h"
14 #include "content/public/browser/navigation_controller.h" 14 #include "content/public/browser/navigation_controller.h"
15 #include "content/public/browser/navigation_entry.h" 15 #include "content/public/browser/navigation_entry.h"
16 #include "content/public/browser/navigation_handle.h" 16 #include "content/public/browser/navigation_handle.h"
17 #include "content/public/browser/render_frame_host.h" 17 #include "content/public/browser/render_frame_host.h"
18 #include "content/public/browser/web_contents.h" 18 #include "content/public/browser/web_contents.h"
19 #include "ui/base/page_transition_types.h" 19 #include "ui/base/page_transition_types.h"
20 20
21 DEFINE_WEB_CONTENTS_USER_DATA_KEY(offline_pages::OfflinePageTabHelper); 21 DEFINE_WEB_CONTENTS_USER_DATA_KEY(offline_pages::OfflinePageTabHelper);
22 22
23 namespace offline_pages { 23 namespace offline_pages {
24 24
25 OfflinePageTabHelper::LoadedOfflinePageInfo::LoadedOfflinePageInfo() {} 25 OfflinePageTabHelper::LoadedOfflinePageInfo::LoadedOfflinePageInfo()
26 : is_showing_offline_preview(false) {}
26 27
27 OfflinePageTabHelper::LoadedOfflinePageInfo::~LoadedOfflinePageInfo() {} 28 OfflinePageTabHelper::LoadedOfflinePageInfo::~LoadedOfflinePageInfo() {}
28 29
29 void OfflinePageTabHelper::LoadedOfflinePageInfo::Clear() { 30 void OfflinePageTabHelper::LoadedOfflinePageInfo::Clear() {
30 offline_page.reset(); 31 offline_page.reset();
31 offline_header.Clear(); 32 offline_header.Clear();
32 is_offline_preview = false; 33 is_showing_offline_preview = false;
33 } 34 }
34 35
35 OfflinePageTabHelper::OfflinePageTabHelper(content::WebContents* web_contents) 36 OfflinePageTabHelper::OfflinePageTabHelper(content::WebContents* web_contents)
36 : content::WebContentsObserver(web_contents), 37 : content::WebContentsObserver(web_contents),
37 weak_ptr_factory_(this) { 38 weak_ptr_factory_(this) {
38 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); 39 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
39 } 40 }
40 41
41 OfflinePageTabHelper::~OfflinePageTabHelper() {} 42 OfflinePageTabHelper::~OfflinePageTabHelper() {}
42 43
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 } else { 81 } else {
81 // The provisional offline info can now be committed if the navigation is 82 // The provisional offline info can now be committed if the navigation is
82 // done without error. 83 // done without error.
83 DCHECK(!provisional_offline_info_.offline_page || 84 DCHECK(!provisional_offline_info_.offline_page ||
84 OfflinePageUtils::EqualsIgnoringFragment( 85 OfflinePageUtils::EqualsIgnoringFragment(
85 navigated_url, 86 navigated_url,
86 provisional_offline_info_.offline_page->url)); 87 provisional_offline_info_.offline_page->url));
87 offline_info_.offline_page = 88 offline_info_.offline_page =
88 std::move(provisional_offline_info_.offline_page); 89 std::move(provisional_offline_info_.offline_page);
89 offline_info_.offline_header = provisional_offline_info_.offline_header; 90 offline_info_.offline_header = provisional_offline_info_.offline_header;
90 offline_info_.is_offline_preview = 91 offline_info_.is_showing_offline_preview =
91 provisional_offline_info_.is_offline_preview; 92 provisional_offline_info_.is_showing_offline_preview;
92 } 93 }
93 provisional_offline_info_.Clear(); 94 provisional_offline_info_.Clear();
94 95
95 // If the offline page has been loaded successfully, nothing more to do. 96 // If the offline page has been loaded successfully, nothing more to do.
96 net::Error error_code = navigation_handle->GetNetErrorCode(); 97 net::Error error_code = navigation_handle->GetNetErrorCode();
97 if (error_code == net::OK) 98 if (error_code == net::OK)
98 return; 99 return;
99 100
100 // We might be reloading the URL in order to fetch the offline page. 101 // We might be reloading the URL in order to fetch the offline page.
101 // * If successful, nothing to do. 102 // * If successful, nothing to do.
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 164
164 // This is a callback from network request interceptor. It happens between 165 // This is a callback from network request interceptor. It happens between
165 // DidStartNavigation and DidFinishNavigation calls on this tab helper. 166 // DidStartNavigation and DidFinishNavigation calls on this tab helper.
166 void OfflinePageTabHelper::SetOfflinePage( 167 void OfflinePageTabHelper::SetOfflinePage(
167 const OfflinePageItem& offline_page, 168 const OfflinePageItem& offline_page,
168 const OfflinePageHeader& offline_header, 169 const OfflinePageHeader& offline_header,
169 bool is_offline_preview) { 170 bool is_offline_preview) {
170 provisional_offline_info_.offline_page = 171 provisional_offline_info_.offline_page =
171 base::MakeUnique<OfflinePageItem>(offline_page); 172 base::MakeUnique<OfflinePageItem>(offline_page);
172 provisional_offline_info_.offline_header = offline_header; 173 provisional_offline_info_.offline_header = offline_header;
173 provisional_offline_info_.is_offline_preview = is_offline_preview; 174 provisional_offline_info_.is_showing_offline_preview = is_offline_preview;
174 } 175 }
175 176
176 const OfflinePageItem* OfflinePageTabHelper::GetOfflinePageForTest() const { 177 const OfflinePageItem* OfflinePageTabHelper::GetOfflinePageForTest() const {
177 return provisional_offline_info_.offline_page.get(); 178 return provisional_offline_info_.offline_page.get();
178 } 179 }
179 180
181 bool OfflinePageTabHelper::IsShowingOfflinePreview() const {
182 // TODO: Change this once offline pages infrastructure uses NavigationHandle
fgorski 2016/10/28 16:16:29 put your ldap next to the TODO(ryan...), please.
183 // instead of a back channel. crbug.com/658899
184 return provisional_offline_info_.is_showing_offline_preview ||
185 offline_info_.is_showing_offline_preview;
186 }
187
180 } // namespace offline_pages 188 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698