| Index: chrome/browser/extensions/api/api_function.cc
|
| diff --git a/chrome/browser/extensions/api/api_function.cc b/chrome/browser/extensions/api/api_function.cc
|
| index c61c82ac641a4613bdcfa67b1ffb8562525683a2..18f53204ee3cbf7a9a6f0296a4b9c578777ae32e 100644
|
| --- a/chrome/browser/extensions/api/api_function.cc
|
| +++ b/chrome/browser/extensions/api/api_function.cc
|
| @@ -15,6 +15,49 @@ using content::BrowserThread;
|
|
|
| namespace extensions {
|
|
|
| +bool AsyncIOAPIFunction::RunImpl() {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + extension_service_ = profile()->GetExtensionService();
|
| +
|
| + if (!Prepare()) {
|
| + return false;
|
| + }
|
| + bool rv = BrowserThread::PostTask(
|
| + BrowserThread::IO, FROM_HERE,
|
| + base::Bind(&AsyncIOAPIFunction::WorkOnIOThread, this));
|
| + DCHECK(rv);
|
| + return true;
|
| +}
|
| +
|
| +void AsyncIOAPIFunction::Work() {
|
| +}
|
| +
|
| +void AsyncIOAPIFunction::AsyncWorkStart() {
|
| + Work();
|
| + AsyncWorkCompleted();
|
| +}
|
| +
|
| +void AsyncIOAPIFunction::AsyncWorkCompleted() {
|
| + if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) {
|
| + bool rv = BrowserThread::PostTask(
|
| + BrowserThread::UI, FROM_HERE,
|
| + base::Bind(&AsyncIOAPIFunction::RespondOnUIThread, this));
|
| + DCHECK(rv);
|
| + } else {
|
| + SendResponse(Respond());
|
| + }
|
| +}
|
| +
|
| +void AsyncIOAPIFunction::WorkOnIOThread() {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| + AsyncWorkStart();
|
| +}
|
| +
|
| +void AsyncIOAPIFunction::RespondOnUIThread() {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + SendResponse(Respond());
|
| +}
|
| +
|
| int AsyncIOAPIFunction::ExtractSrcId(size_t argument_position) {
|
| scoped_ptr<DictionaryValue> options(new DictionaryValue());
|
| if (args_->GetSize() > argument_position) {
|
| @@ -47,32 +90,4 @@ APIResourceController* AsyncIOAPIFunction::controller() {
|
| return extension_service_->api_resource_controller();
|
| }
|
|
|
| -bool AsyncIOAPIFunction::RunImpl() {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| - extension_service_ = profile()->GetExtensionService();
|
| -
|
| - if (!Prepare()) {
|
| - return false;
|
| - }
|
| - bool rv = BrowserThread::PostTask(
|
| - BrowserThread::IO, FROM_HERE,
|
| - base::Bind(&AsyncIOAPIFunction::WorkOnIOThread, this));
|
| - DCHECK(rv);
|
| - return true;
|
| -}
|
| -
|
| -void AsyncIOAPIFunction::WorkOnIOThread() {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| - Work();
|
| - bool rv = BrowserThread::PostTask(
|
| - BrowserThread::UI, FROM_HERE,
|
| - base::Bind(&AsyncIOAPIFunction::RespondOnUIThread, this));
|
| - DCHECK(rv);
|
| -}
|
| -
|
| -void AsyncIOAPIFunction::RespondOnUIThread() {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| - SendResponse(Respond());
|
| -}
|
| -
|
| } // namespace extensions
|
|
|