#include "ios/web/content/content_thread_impl.h"
#undef DCHECK_CURRENTLY_ON
#include <string>
#include <utility>
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/lazy_instance.h"
#include "base/run_loop.h"
#include "base/task/single_thread_task_runner.h"
#include "base/time/time.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "ios/web/public/thread/web_task_traits.h"
#include "ios/web/public/thread/web_thread_delegate.h"
namespace web {
scoped_refptr<base::SingleThreadTaskRunner>
ContentThreadImpl::GetUIThreadTaskRunner(const WebTaskTraits& traits) {
content::BrowserTaskTraits browser_traits{base::TaskPriority::BEST_EFFORT};
return content::GetUIThreadTaskRunner(browser_traits);
}
scoped_refptr<base::SingleThreadTaskRunner>
ContentThreadImpl::GetIOThreadTaskRunner(const WebTaskTraits& traits) {
content::BrowserTaskTraits browser_traits{base::TaskPriority::BEST_EFFORT};
return content::GetIOThreadTaskRunner(browser_traits);
}
content::BrowserThread::ID MapWebToBrowserID(WebThread::ID identifier) {
if (identifier == WebThread::UI) {
return content::BrowserThread::UI;
}
if (identifier == WebThread::IO) {
return content::BrowserThread::IO;
}
NOTREACHED();
}
WebThread::ID MapBrowserToWebID(content::BrowserThread::ID identifier) {
if (identifier == content::BrowserThread::UI) {
return WebThread::UI;
}
if (identifier == content::BrowserThread::IO) {
return WebThread::IO;
}
return WebThread::UI;
}
bool ContentThreadImpl::IsThreadInitialized(ID identifier) {
return content::BrowserThread::IsThreadInitialized(
MapWebToBrowserID(identifier));
}
bool ContentThreadImpl::CurrentlyOn(ID identifier) {
return content::BrowserThread::CurrentlyOn(MapWebToBrowserID(identifier));
}
std::string ContentThreadImpl::GetCurrentlyOnErrorMessage(ID expected) {
return content::BrowserThread::GetCurrentlyOnErrorMessage(
MapWebToBrowserID(expected));
}
bool ContentThreadImpl::GetCurrentThreadIdentifier(ID* identifier) {
content::BrowserThread::ID browser_id = content::BrowserThread::UI;
bool result = content::BrowserThread::GetCurrentThreadIdentifier(&browser_id);
*identifier = MapBrowserToWebID(browser_id);
return result;
}
}