// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "ios/web/web_thread_adapter.h" #include "content/public/browser/browser_thread.h" namespace web { namespace { WebThread::ID WebThreadIDFromBrowserThreadID( content::BrowserThread::ID identifier) { switch (identifier) { case content::BrowserThread::UI: return WebThread::UI; case content::BrowserThread::DB: return WebThread::DB; case content::BrowserThread::FILE: return WebThread::FILE; case content::BrowserThread::FILE_USER_BLOCKING: return WebThread::FILE_USER_BLOCKING; case content::BrowserThread::CACHE: return WebThread::CACHE; case content::BrowserThread::IO: return WebThread::IO; default: NOTREACHED() << "Unknown content::BrowserThread::ID: " << identifier; return WebThread::UI; } } } // namespace content::BrowserThread::ID BrowserThreadIDFromWebThreadID( WebThread::ID identifier) { switch (identifier) { case WebThread::UI: return content::BrowserThread::UI; case WebThread::DB: return content::BrowserThread::DB; case WebThread::FILE: return content::BrowserThread::FILE; case WebThread::FILE_USER_BLOCKING: return content::BrowserThread::FILE_USER_BLOCKING; case WebThread::CACHE: return content::BrowserThread::CACHE; case WebThread::IO: return content::BrowserThread::IO; default: NOTREACHED() << "Unknown web::WebThread::ID: " << identifier; return content::BrowserThread::UI; } } #pragma mark - web_thread.h implementation // static bool WebThread::PostTask(ID identifier, const tracked_objects::Location& from_here, const base::Closure& task) { return content::BrowserThread::PostTask( BrowserThreadIDFromWebThreadID(identifier), from_here, task); } // static bool WebThread::PostDelayedTask(ID identifier, const tracked_objects::Location& from_here, const base::Closure& task, base::TimeDelta delay) { return content::BrowserThread::PostDelayedTask( BrowserThreadIDFromWebThreadID(identifier), from_here, task, delay); } // static bool WebThread::PostNonNestableTask(ID identifier, const tracked_objects::Location& from_here, const base::Closure& task) { return content::BrowserThread::PostNonNestableTask( BrowserThreadIDFromWebThreadID(identifier), from_here, task); } // static bool WebThread::PostNonNestableDelayedTask( ID identifier, const tracked_objects::Location& from_here, const base::Closure& task, base::TimeDelta delay) { return content::BrowserThread::PostNonNestableDelayedTask( BrowserThreadIDFromWebThreadID(identifier), from_here, task, delay); } // static bool WebThread::PostTaskAndReply(ID identifier, const tracked_objects::Location& from_here, const base::Closure& task, const base::Closure& reply) { return content::BrowserThread::PostTaskAndReply( BrowserThreadIDFromWebThreadID(identifier), from_here, task, reply); } // static bool WebThread::PostBlockingPoolTask(const tracked_objects::Location& from_here, const base::Closure& task) { return content::BrowserThread::PostBlockingPoolTask(from_here, task); } // static bool WebThread::PostBlockingPoolTaskAndReply( const tracked_objects::Location& from_here, const base::Closure& task, const base::Closure& reply) { return content::BrowserThread::PostBlockingPoolTaskAndReply(from_here, task, reply); } // static bool WebThread::PostBlockingPoolSequencedTask( const std::string& sequence_token_name, const tracked_objects::Location& from_here, const base::Closure& task) { return content::BrowserThread::PostBlockingPoolSequencedTask( sequence_token_name, from_here, task); } // static base::SequencedWorkerPool* WebThread::GetBlockingPool() { return content::BrowserThread::GetBlockingPool(); } // static base::MessageLoop* WebThread::UnsafeGetMessageLoopForThread(ID identifier) { return content::BrowserThread::UnsafeGetMessageLoopForThread( BrowserThreadIDFromWebThreadID(identifier)); } // static bool WebThread::IsThreadInitialized(ID identifier) { return content::BrowserThread::IsThreadInitialized( BrowserThreadIDFromWebThreadID(identifier)); } // static bool WebThread::CurrentlyOn(ID identifier) { return content::BrowserThread::CurrentlyOn( BrowserThreadIDFromWebThreadID(identifier)); } // static bool WebThread::IsMessageLoopValid(ID identifier) { return content::BrowserThread::IsMessageLoopValid( BrowserThreadIDFromWebThreadID(identifier)); } // static bool WebThread::GetCurrentThreadIdentifier(ID* identifier) { content::BrowserThread::ID content_identifier; bool result = content::BrowserThread::GetCurrentThreadIdentifier(&content_identifier); if (result) *identifier = WebThreadIDFromBrowserThreadID(content_identifier); return result; } // static scoped_refptr WebThread::GetTaskRunnerForThread( ID identifier) { return content::BrowserThread::GetMessageLoopProxyForThread( BrowserThreadIDFromWebThreadID(identifier)); } // static std::string WebThread::GetDCheckCurrentlyOnErrorMessage(ID expected) { return content::BrowserThread::GetDCheckCurrentlyOnErrorMessage( BrowserThreadIDFromWebThreadID(expected)); } } // namespace web