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

Side by Side Diff: ios/web/public/web_thread.h

Issue 1861593005: Convert //ios from scoped_ptr to std::unique_ptr. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase? Created 4 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
« no previous file with comments | « ios/web/public/web_controller_factory.mm ('k') | ios/web/shell/app_delegate.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 #ifndef IOS_WEB_PUBLIC_WEB_THREAD_H_ 5 #ifndef IOS_WEB_PUBLIC_WEB_THREAD_H_
6 #define IOS_WEB_PUBLIC_WEB_THREAD_H_ 6 #define IOS_WEB_PUBLIC_WEB_THREAD_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/callback_forward.h" 10 #include "base/callback_forward.h"
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 // unregistered by providing a nullptr pointer. 210 // unregistered by providing a nullptr pointer.
211 // 211 //
212 // If the caller unregisters a delegate before CleanUp has been 212 // If the caller unregisters a delegate before CleanUp has been
213 // called, it must perform its own locking to ensure the delegate is 213 // called, it must perform its own locking to ensure the delegate is
214 // not deleted while unregistering. 214 // not deleted while unregistering.
215 static void SetDelegate(ID identifier, WebThreadDelegate* delegate); 215 static void SetDelegate(ID identifier, WebThreadDelegate* delegate);
216 216
217 // Returns an appropriate error message for when DCHECK_CURRENTLY_ON() fails. 217 // Returns an appropriate error message for when DCHECK_CURRENTLY_ON() fails.
218 static std::string GetDCheckCurrentlyOnErrorMessage(ID expected); 218 static std::string GetDCheckCurrentlyOnErrorMessage(ID expected);
219 219
220 // Use these templates in conjunction with RefCountedThreadSafe or scoped_ptr 220 // Use these templates in conjunction with RefCountedThreadSafe or
221 // when you want to ensure that an object is deleted on a specific thread. 221 // std::unique_ptr when you want to ensure that an object is deleted on a
222 // This is needed when an object can hop between threads 222 // specific thread. This is needed when an object can hop between threads
223 // (i.e. IO -> FILE -> IO), and thread switching delays can mean that the 223 // (i.e. IO -> FILE -> IO), and thread switching delays can mean that the
224 // final IO tasks executes before the FILE task's stack unwinds. 224 // final IO tasks executes before the FILE task's stack unwinds.
225 // This would lead to the object destructing on the FILE thread, which often 225 // This would lead to the object destructing on the FILE thread, which often
226 // is not what you want (i.e. to unregister from NotificationService, to 226 // is not what you want (i.e. to unregister from NotificationService, to
227 // notify other objects on the creating thread etc). 227 // notify other objects on the creating thread etc).
228 template <ID thread> 228 template <ID thread>
229 struct DeleteOnThread { 229 struct DeleteOnThread {
230 template <typename T> 230 template <typename T>
231 static void Destruct(const T* x) { 231 static void Destruct(const T* x) {
232 if (CurrentlyOn(thread)) { 232 if (CurrentlyOn(thread)) {
(...skipping 17 matching lines...) Expand all
250 // : public base::RefCountedThreadSafe< 250 // : public base::RefCountedThreadSafe<
251 // Foo, web::WebThread::DeleteOnIOThread> { 251 // Foo, web::WebThread::DeleteOnIOThread> {
252 // 252 //
253 // ... 253 // ...
254 // private: 254 // private:
255 // friend struct web::WebThread::DeleteOnThread<web::WebThread::IO>; 255 // friend struct web::WebThread::DeleteOnThread<web::WebThread::IO>;
256 // friend class base::DeleteHelper<Foo>; 256 // friend class base::DeleteHelper<Foo>;
257 // 257 //
258 // ~Foo(); 258 // ~Foo();
259 // 259 //
260 // Sample usage with scoped_ptr: 260 // Sample usage with std::unique_ptr:
261 // scoped_ptr<Foo, web::WebThread::DeleteOnIOThread> ptr; 261 // std::unique_ptr<Foo, web::WebThread::DeleteOnIOThread> ptr;
262 struct DeleteOnUIThread : public DeleteOnThread<UI> {}; 262 struct DeleteOnUIThread : public DeleteOnThread<UI> {};
263 struct DeleteOnIOThread : public DeleteOnThread<IO> {}; 263 struct DeleteOnIOThread : public DeleteOnThread<IO> {};
264 struct DeleteOnFileThread : public DeleteOnThread<FILE> {}; 264 struct DeleteOnFileThread : public DeleteOnThread<FILE> {};
265 struct DeleteOnDBThread : public DeleteOnThread<DB> {}; 265 struct DeleteOnDBThread : public DeleteOnThread<DB> {};
266 266
267 private: 267 private:
268 friend class WebThreadImpl; 268 friend class WebThreadImpl;
269 269
270 WebThread() {} 270 WebThread() {}
271 DISALLOW_COPY_AND_ASSIGN(WebThread); 271 DISALLOW_COPY_AND_ASSIGN(WebThread);
272 }; 272 };
273 273
274 } // namespace web 274 } // namespace web
275 275
276 #endif // IOS_WEB_PUBLIC_WEB_THREAD_H_ 276 #endif // IOS_WEB_PUBLIC_WEB_THREAD_H_
OLDNEW
« no previous file with comments | « ios/web/public/web_controller_factory.mm ('k') | ios/web/shell/app_delegate.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698