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

Side by Side Diff: content/browser/background_sync/background_sync_service_impl.cc

Issue 1763123002: [BackgroundSync] Remove BackgroundSyncRegistrationHandle (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments from PS7 Created 4 years, 9 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
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "content/browser/background_sync/background_sync_service_impl.h" 5 #include "content/browser/background_sync/background_sync_service_impl.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "background_sync_registration_handle.h"
10 #include "base/memory/weak_ptr.h" 9 #include "base/memory/weak_ptr.h"
11 #include "base/stl_util.h" 10 #include "base/stl_util.h"
12 #include "content/browser/background_sync/background_sync_context_impl.h" 11 #include "content/browser/background_sync/background_sync_context_impl.h"
13 #include "content/public/browser/browser_thread.h" 12 #include "content/public/browser/browser_thread.h"
14 13
15 namespace content { 14 namespace content {
16 15
17 namespace { 16 namespace {
18 17
19 // TODO(iclelland): Move these converters to mojo::TypeConverter template 18 // TODO(iclelland): Move these converters to mojo::TypeConverter template
20 // specializations. 19 // specializations.
21 20
22 BackgroundSyncRegistrationOptions ToBackgroundSyncRegistrationOptions( 21 BackgroundSyncRegistrationOptions ToBackgroundSyncRegistrationOptions(
23 const SyncRegistrationPtr& in) { 22 const SyncRegistrationPtr& in) {
24 BackgroundSyncRegistrationOptions out; 23 BackgroundSyncRegistrationOptions out;
25 24
26 out.tag = in->tag; 25 out.tag = in->tag;
27 out.network_state = static_cast<SyncNetworkState>(in->network_state); 26 out.network_state = static_cast<SyncNetworkState>(in->network_state);
28 return out; 27 return out;
29 } 28 }
30 29
31 SyncRegistrationPtr ToMojoRegistration( 30 SyncRegistrationPtr ToMojoRegistration(const BackgroundSyncRegistration& in) {
32 const BackgroundSyncRegistrationHandle& in) {
33 SyncRegistrationPtr out(content::SyncRegistration::New()); 31 SyncRegistrationPtr out(content::SyncRegistration::New());
34 out->handle_id = in.handle_id(); 32 out->id = in.id();
35 out->tag = in.options()->tag; 33 out->tag = in.options()->tag;
36 out->network_state = static_cast<content::BackgroundSyncNetworkState>( 34 out->network_state = static_cast<content::BackgroundSyncNetworkState>(
37 in.options()->network_state); 35 in.options()->network_state);
38 return out; 36 return out;
39 } 37 }
40 38
41 } // namespace 39 } // namespace
42 40
43 #define COMPILE_ASSERT_MATCHING_ENUM(mojo_name, manager_name) \ 41 #define COMPILE_ASSERT_MATCHING_ENUM(mojo_name, manager_name) \
44 static_assert(static_cast<int>(content::mojo_name) == \ 42 static_assert(static_cast<int>(content::mojo_name) == \
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 DCHECK_CURRENTLY_ON(BrowserThread::IO); 114 DCHECK_CURRENTLY_ON(BrowserThread::IO);
117 BackgroundSyncManager* background_sync_manager = 115 BackgroundSyncManager* background_sync_manager =
118 background_sync_context_->background_sync_manager(); 116 background_sync_context_->background_sync_manager();
119 DCHECK(background_sync_manager); 117 DCHECK(background_sync_manager);
120 background_sync_manager->GetRegistrations( 118 background_sync_manager->GetRegistrations(
121 sw_registration_id, 119 sw_registration_id,
122 base::Bind(&BackgroundSyncServiceImpl::OnGetRegistrationsResult, 120 base::Bind(&BackgroundSyncServiceImpl::OnGetRegistrationsResult,
123 weak_ptr_factory_.GetWeakPtr(), callback)); 121 weak_ptr_factory_.GetWeakPtr(), callback));
124 } 122 }
125 123
126 void BackgroundSyncServiceImpl::DuplicateRegistrationHandle(
127 BackgroundSyncRegistrationHandle::HandleId handle_id,
128 const DuplicateRegistrationHandleCallback& callback) {
129 DCHECK_CURRENTLY_ON(BrowserThread::IO);
130 BackgroundSyncManager* background_sync_manager =
131 background_sync_context_->background_sync_manager();
132 DCHECK(background_sync_manager);
133
134 scoped_ptr<BackgroundSyncRegistrationHandle> registration_handle =
135 background_sync_manager->DuplicateRegistrationHandle(handle_id);
136
137 BackgroundSyncRegistrationHandle* handle_ptr = registration_handle.get();
138
139 if (!registration_handle) {
140 callback.Run(BackgroundSyncError::NOT_FOUND,
141 SyncRegistrationPtr(content::SyncRegistration::New()));
142 return;
143 }
144
145 active_handles_.AddWithID(registration_handle.release(),
146 handle_ptr->handle_id());
147 SyncRegistrationPtr mojoResult = ToMojoRegistration(*handle_ptr);
148 callback.Run(BackgroundSyncError::NONE, std::move(mojoResult));
149 }
150
151 void BackgroundSyncServiceImpl::ReleaseRegistration(
152 BackgroundSyncRegistrationHandle::HandleId handle_id) {
153 if (!active_handles_.Lookup(handle_id)) {
154 // TODO(jkarlin): Abort client.
155 LOG(WARNING) << "Client attempted to release non-existing registration";
156 return;
157 }
158
159 active_handles_.Remove(handle_id);
160 }
161
162 void BackgroundSyncServiceImpl::OnRegisterResult( 124 void BackgroundSyncServiceImpl::OnRegisterResult(
163 const RegisterCallback& callback, 125 const RegisterCallback& callback,
164 BackgroundSyncStatus status, 126 BackgroundSyncStatus status,
165 scoped_ptr<BackgroundSyncRegistrationHandle> result) { 127 scoped_ptr<BackgroundSyncRegistration> result) {
166 DCHECK_CURRENTLY_ON(BrowserThread::IO); 128 DCHECK_CURRENTLY_ON(BrowserThread::IO);
167 BackgroundSyncRegistrationHandle* result_ptr = result.get();
168 129
169 if (status != BACKGROUND_SYNC_STATUS_OK) { 130 if (status != BACKGROUND_SYNC_STATUS_OK) {
170 callback.Run(static_cast<content::BackgroundSyncError>(status), 131 callback.Run(static_cast<content::BackgroundSyncError>(status),
171 SyncRegistrationPtr(content::SyncRegistration::New())); 132 SyncRegistrationPtr(content::SyncRegistration::New()));
172 return; 133 return;
173 } 134 }
174 135
175 DCHECK(result); 136 DCHECK(result);
176 active_handles_.AddWithID(result.release(), result_ptr->handle_id()); 137 SyncRegistrationPtr mojoResult = ToMojoRegistration(*result);
177 SyncRegistrationPtr mojoResult = ToMojoRegistration(*result_ptr);
178 callback.Run(static_cast<content::BackgroundSyncError>(status), 138 callback.Run(static_cast<content::BackgroundSyncError>(status),
179 std::move(mojoResult)); 139 std::move(mojoResult));
180 } 140 }
181 141
182 void BackgroundSyncServiceImpl::OnGetRegistrationsResult( 142 void BackgroundSyncServiceImpl::OnGetRegistrationsResult(
183 const GetRegistrationsCallback& callback, 143 const GetRegistrationsCallback& callback,
184 BackgroundSyncStatus status, 144 BackgroundSyncStatus status,
185 scoped_ptr<ScopedVector<BackgroundSyncRegistrationHandle>> 145 scoped_ptr<ScopedVector<BackgroundSyncRegistration>> result_registrations) {
186 result_registrations) {
187 DCHECK_CURRENTLY_ON(BrowserThread::IO); 146 DCHECK_CURRENTLY_ON(BrowserThread::IO);
188 DCHECK(result_registrations); 147 DCHECK(result_registrations);
189 148
190 mojo::Array<content::SyncRegistrationPtr> mojo_registrations; 149 mojo::Array<content::SyncRegistrationPtr> mojo_registrations;
191 for (BackgroundSyncRegistrationHandle* registration : *result_registrations) { 150 for (const BackgroundSyncRegistration* registration : *result_registrations)
192 active_handles_.AddWithID(registration, registration->handle_id());
193 mojo_registrations.push_back(ToMojoRegistration(*registration)); 151 mojo_registrations.push_back(ToMojoRegistration(*registration));
194 }
195
196 result_registrations->weak_clear();
197 152
198 callback.Run(static_cast<content::BackgroundSyncError>(status), 153 callback.Run(static_cast<content::BackgroundSyncError>(status),
199 std::move(mojo_registrations)); 154 std::move(mojo_registrations));
200 } 155 }
201 156
202 } // namespace content 157 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698