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

Unified Diff: base/worker_pool_mac.mm

Issue 338012: About box auto-update improvements (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 11 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/worker_pool_mac.h ('k') | chrome/app/keystone_glue.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/worker_pool_mac.mm
===================================================================
--- base/worker_pool_mac.mm (revision 30049)
+++ base/worker_pool_mac.mm (working copy)
@@ -2,18 +2,26 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "base/worker_pool.h"
+#include "base/worker_pool_mac.h"
-#import <Foundation/Foundation.h>
-
#include "base/logging.h"
+#import "base/scoped_nsautorelease_pool.h"
+#include "base/scoped_ptr.h"
#import "base/singleton_objc.h"
#include "base/task.h"
+@implementation WorkerPoolObjC
+
++ (NSOperationQueue*)sharedOperationQueue {
+ return SingletonObjC<NSOperationQueue>::get();
+}
+
+@end // @implementation WorkerPoolObjC
+
// TaskOperation adapts Task->Run() for use in an NSOperationQueue.
@interface TaskOperation : NSOperation {
@private
- Task* task_; // (strong)
+ scoped_ptr<Task> task_;
}
// Returns an autoreleased instance of TaskOperation. See -initWithTask: for
@@ -24,7 +32,7 @@
// this operation will call when executed.
- (id)initWithTask:(Task*)task;
-@end
+@end // @interface TaskOperation
@implementation TaskOperation
@@ -38,34 +46,45 @@
- (id)initWithTask:(Task*)task {
if ((self = [super init])) {
- task_ = task;
+ task_.reset(task);
}
return self;
}
- (void)main {
- DCHECK(task_) << "-[TaskOperation main] called with no task";
+ DCHECK(task_.get()) << "-[TaskOperation main] called with no task";
+ if (!task_.get()) {
+ return;
+ }
+
+ base::ScopedNSAutoreleasePool autoreleasePool;
+
task_->Run();
- delete task_;
- task_ = NULL;
+ task_.reset(NULL);
}
- (void)dealloc {
- DCHECK(!task_) << "-[TaskOperation dealloc] called on unused TaskOperation";
- delete task_;
+ DCHECK(!task_.get())
+ << "-[TaskOperation dealloc] called without running task";
+
[super dealloc];
}
-@end
+@end // @implementation TaskOperation
bool WorkerPool::PostTask(const tracked_objects::Location& from_here,
Task* task, bool task_is_slow) {
// Ignore |task_is_slow|, it doesn't map directly to any tunable aspect of
// an NSOperation.
+ DCHECK(task) << "WorkerPool::PostTask called with no task";
+ if (!task) {
+ return false;
+ }
+
task->SetBirthPlace(from_here);
- NSOperationQueue* operation_queue = SingletonObjC<NSOperationQueue>::get();
+ NSOperationQueue* operation_queue = [WorkerPoolObjC sharedOperationQueue];
[operation_queue addOperation:[TaskOperation taskOperationWithTask:task]];
return true;
« no previous file with comments | « base/worker_pool_mac.h ('k') | chrome/app/keystone_glue.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698