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

Side by Side Diff: chrome/browser/background_fetch/background_fetch_client_impl.cc

Issue 2777063008: Connect BackgroundFetch to the OfflineItemCollection
Patch Set: Add GetVisualsForItem support Created 3 years, 8 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
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include <sstream>
6 #include <string>
7
8 #include "chrome/browser/background_fetch/background_fetch_client_impl.h"
9
10 #include "chrome/browser/offline_items_collection/offline_content_aggregator_fac tory.h"
11 #include "chrome/browser/profiles/profile.h"
12 #include "components/offline_items_collection/core/offline_content_aggregator.h"
13 #include "components/offline_items_collection/core/offline_item.h"
14
15 namespace {
16
17 const char kBackgroundFetchNamespace[] = "BackgroundFetchNamespace";
18
19 } // namespace
20
21 using offline_items_collection::ContentId;
22 using offline_items_collection::OfflineContentAggregator;
23 using offline_items_collection::OfflineContentAggregatorFactory;
24 using offline_items_collection::OfflineContentProvider;
25 using offline_items_collection::OfflineItem;
26
27 BackgroundFetchClientImpl::BackgroundFetchClientImpl(Profile* profile)
28 : profile_(profile), registered_namespace_name_(kBackgroundFetchNamespace) {
Peter Beverloo 2017/04/18 23:12:08 optional nit: I'd s/registered_namespace_name_/nam
harkness 2017/04/19 09:03:40 Done.
29 DCHECK(profile_);
30 if (profile->IsOffTheRecord()) {
31 std::ostringstream suffix;
32 suffix << "Incognito" << this;
Peter Beverloo 2017/04/18 23:12:08 This needs a comment to explain what's going on he
harkness 2017/04/19 09:03:41 Done.
33 registered_namespace_name_ += suffix.str();
David Trainor- moved to gerrit 2017/04/18 22:15:55 I think this will work with the UI. The UI tracks
harkness 2017/04/19 09:03:41 Acknowledged.
34 }
35
36 OfflineContentAggregator* aggregator =
37 OfflineContentAggregatorFactory::GetForBrowserContext(profile_);
38 if (!aggregator)
39 return;
40 aggregator->RegisterProvider(registered_namespace_name_, this);
41 }
42
43 BackgroundFetchClientImpl::~BackgroundFetchClientImpl() = default;
44
45 void BackgroundFetchClientImpl::Shutdown() {
46 OfflineContentAggregator* aggregator =
47 OfflineContentAggregatorFactory::GetForBrowserContext(profile_);
48 if (!aggregator)
49 return;
50
51 aggregator->UnregisterProvider(registered_namespace_name_);
52
53 // If the profile is an incognito profile, clean up all data.
54 if (delegate_ &&
55 registered_namespace_name_.compare(kBackgroundFetchNamespace))
Peter Beverloo 2017/04/18 23:12:08 Just use operator==. Adding an IsIncognito() helpe
harkness 2017/04/19 09:03:40 Updated to use ==, but since it's the only place i
56 delegate_->CleanupAllTasks();
57 }
58
59 void BackgroundFetchClientImpl::SetDelegate(
60 content::BackgroundFetchClient::Delegate* delegate) {
61 delegate_ = delegate;
62 }
63
64 void BackgroundFetchClientImpl::CancelDownload(const ContentId& content_id) {
65 DCHECK_EQ(content_id.name_space, kBackgroundFetchNamespace);
Peter Beverloo 2017/04/18 23:12:08 But these are not correct anymore, right? We need
harkness 2017/04/19 09:03:40 Good catch, I totally overlooked this. Done.
66
67 if (!delegate_)
68 return;
69
70 delegate_->CancelDownload(content_id.id);
71 }
72
73 void BackgroundFetchClientImpl::PauseDownload(const ContentId& content_id) {
74 DCHECK_EQ(content_id.name_space, kBackgroundFetchNamespace);
75
76 if (!delegate_)
77 return;
78
79 delegate_->PauseDownload(content_id.id);
80 }
81
82 void BackgroundFetchClientImpl::ResumeDownload(const ContentId& content_id) {
83 DCHECK_EQ(content_id.name_space, kBackgroundFetchNamespace);
84
85 if (!delegate_)
86 return;
87
88 delegate_->ResumeDownload(content_id.id);
89 }
90
91 void BackgroundFetchClientImpl::OpenItem(const ContentId& content_id) {
92 // TODO(harkness): Add another call to BackgroundFetchClient::Delegate and
93 // plumb this to 'onclickevent' to the ServiceWorker.
94 }
95
96 void BackgroundFetchClientImpl::GetVisualsForItem(
97 const ContentId& id,
98 const VisualsCallback& callback) {
David Trainor- moved to gerrit 2017/04/18 22:15:55 We cache the icons in the Java layer for now. Not
Peter Beverloo 2017/04/18 23:12:08 I guess we should add the following then (until ic
harkness 2017/04/19 09:03:40 The second argument is a const OfflineItemVisuals*
harkness 2017/04/19 09:03:41 Acknowledged.
99 // TODO(harkness): Either cache the icons here or call into the delegate to
100 // get the icons.
101 }
102
103 void BackgroundFetchClientImpl::AddObserver(Observer* observer) {
104 // TODO(harkness): Add a path for the OfflineContentProvider to observe
David Trainor- moved to gerrit 2017/04/18 22:15:55 Save an base::ObserverList<> of the observers and
harkness 2017/04/19 09:03:40 I'm going to do this and the other observer calls
David Trainor- moved to gerrit 2017/04/19 22:45:12 Acknowledged.
105 // changes in available BackgroundFetch items.
106 }
107
108 void BackgroundFetchClientImpl::RemoveObserver(Observer* observer) {}
109
110 bool BackgroundFetchClientImpl::AreItemsAvailable() {
111 // TODO(harkness): Follow up with dtrainor about what action to take for this.
David Trainor- moved to gerrit 2017/04/18 22:15:55 When it's possible to talk to your delegate_, this
harkness 2017/04/19 09:03:40 Acknowledged.
112 return false;
113 }
114
115 void BackgroundFetchClientImpl::RemoveItem(const ContentId& content_id) {
116 // TODO(harkness): Follow up with dtrainor about what action to take for this.
David Trainor- moved to gerrit 2017/04/18 22:15:55 N/A for your case probably, since the item shouldn
harkness 2017/04/19 09:03:41 Done.
117 }
118
119 const OfflineItem* BackgroundFetchClientImpl::GetItemById(
120 const ContentId& content_id) {
121 // TODO(harkness): Follow up with dtrainor about what action to take for this.
David Trainor- moved to gerrit 2017/04/18 22:15:55 Return the OfflineItem that represents the backgro
harkness 2017/04/19 09:03:40 Acknowledged.
122 return nullptr;
123 }
124
125 OfflineContentProvider::OfflineItemList
126 BackgroundFetchClientImpl::GetAllItems() {
127 // TODO(harkness): Follow up with dtrainor about what action to take for this.
128 return OfflineContentProvider::OfflineItemList();
129 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698