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

Side by Side Diff: content/browser/notifications/platform_notification_context_impl.cc

Issue 1057573002: Implement the ability to get all notifications in Chromium. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@n-db-Integrate
Patch Set: Created 5 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
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/notifications/platform_notification_context_impl.h" 5 #include "content/browser/notifications/platform_notification_context_impl.h"
6 6
7 #include "base/bind_helpers.h" 7 #include "base/bind_helpers.h"
8 #include "base/files/file_util.h" 8 #include "base/files/file_util.h"
9 #include "base/threading/sequenced_worker_pool.h" 9 #include "base/threading/sequenced_worker_pool.h"
10 #include "content/browser/notifications/notification_database.h" 10 #include "content/browser/notifications/notification_database.h"
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 // Blow away the database if reading data failed due to corruption. 109 // Blow away the database if reading data failed due to corruption.
110 if (status == NotificationDatabase::STATUS_ERROR_CORRUPTED) 110 if (status == NotificationDatabase::STATUS_ERROR_CORRUPTED)
111 DestroyDatabase(); 111 DestroyDatabase();
112 112
113 BrowserThread::PostTask( 113 BrowserThread::PostTask(
114 BrowserThread::IO, 114 BrowserThread::IO,
115 FROM_HERE, 115 FROM_HERE,
116 base::Bind(callback, false /* success */, NotificationDatabaseData())); 116 base::Bind(callback, false /* success */, NotificationDatabaseData()));
117 } 117 }
118 118
119 void PlatformNotificationContextImpl::
120 ReadAllNotificationDataForServiceWorkerRegistration(
121 const GURL& origin,
122 int64_t service_worker_registration_id,
123 const ReadAllResultCallback& callback) {
124 DCHECK_CURRENTLY_ON(BrowserThread::IO);
125 LazyInitialize(
126 base::Bind(&PlatformNotificationContextImpl::
127 DoReadAllNotificationDataForServiceWorkerRegistration,
128 this, origin, service_worker_registration_id, callback),
129 base::Bind(callback,
130 false /* success */,
131 std::vector<NotificationDatabaseData>()));
132 }
133
134 void PlatformNotificationContextImpl::
135 DoReadAllNotificationDataForServiceWorkerRegistration(
136 const GURL& origin,
137 int64_t service_worker_registration_id,
138 const ReadAllResultCallback& callback) {
139 DCHECK(task_runner_->RunsTasksOnCurrentThread());
140
141 std::vector<NotificationDatabaseData> notification_datas;
142
143 NotificationDatabase::Status status =
144 database_->ReadAllNotificationDataForServiceWorkerRegistration(
145 origin, service_worker_registration_id, &notification_datas);
146
147 // TODO(peter): Record UMA on |status| for reading from the database.
johnme 2015/04/08 18:12:41 Since you wrote this patch, the other methods now
Peter Beverloo 2015/04/14 18:01:27 Done.
148
149 if (status == NotificationDatabase::STATUS_OK) {
150 BrowserThread::PostTask(BrowserThread::IO,
151 FROM_HERE,
152 base::Bind(callback,
153 true /* success */,
154 notification_datas));
155 return;
156 }
157
158 // Blow away the database if reading data failed due to corruption.
159 if (status == NotificationDatabase::STATUS_ERROR_CORRUPTED)
160 DestroyDatabase();
161
162 BrowserThread::PostTask(
163 BrowserThread::IO,
164 FROM_HERE,
165 base::Bind(callback,
166 false /* success */,
167 std::vector<NotificationDatabaseData>()));
168 }
169
119 void PlatformNotificationContextImpl::WriteNotificationData( 170 void PlatformNotificationContextImpl::WriteNotificationData(
120 const GURL& origin, 171 const GURL& origin,
121 const NotificationDatabaseData& database_data, 172 const NotificationDatabaseData& database_data,
122 const WriteResultCallback& callback) { 173 const WriteResultCallback& callback) {
123 DCHECK_CURRENTLY_ON(BrowserThread::IO); 174 DCHECK_CURRENTLY_ON(BrowserThread::IO);
124 LazyInitialize( 175 LazyInitialize(
125 base::Bind(&PlatformNotificationContextImpl::DoWriteNotificationData, 176 base::Bind(&PlatformNotificationContextImpl::DoWriteNotificationData,
126 this, origin, database_data, callback), 177 this, origin, database_data, callback),
127 base::Bind(callback, false /* success */, 0 /* notification_id */)); 178 base::Bind(callback, false /* success */, 0 /* notification_id */));
128 } 179 }
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 368
318 return path_.Append(kPlatformNotificationsDirectory); 369 return path_.Append(kPlatformNotificationsDirectory);
319 } 370 }
320 371
321 void PlatformNotificationContextImpl::SetTaskRunnerForTesting( 372 void PlatformNotificationContextImpl::SetTaskRunnerForTesting(
322 const scoped_refptr<base::SequencedTaskRunner>& task_runner) { 373 const scoped_refptr<base::SequencedTaskRunner>& task_runner) {
323 task_runner_ = task_runner; 374 task_runner_ = task_runner;
324 } 375 }
325 376
326 } // namespace content 377 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698