mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2024-12-12 09:37:37 +01:00
84f3ff2afd
As part of introducing the Chrome runtime we now need to distinguish between the classes that implement the current CEF runtime and the classes the implement the shared CEF library/runtime structure and public API. We choose the name Alloy for the current CEF runtime because it describes a combination of Chrome and other elements. Shared CEF library/runtime classes will continue to use the Cef prefix. Classes that implement the Alloy or Chrome runtime will use the Alloy or Chrome prefixes respectively. Classes that extend an existing Chrome-prefixed class will add the Cef or Alloy suffix, thereby following the existing naming pattern of Chrome-derived classes. This change applies the new naming pattern to an initial set of runtime-related classes. Additional classes/files will be renamed and moved as the Chrome runtime implementation progresses.
60 lines
1.9 KiB
C++
60 lines
1.9 KiB
C++
// Copyright (c) 2013 The Chromium Embedded Framework Authors. All rights
|
|
// reserved. Use of this source code is governed by a BSD-style license that
|
|
// can be found in the LICENSE file.
|
|
|
|
#ifndef CEF_LIBCEF_RENDERER_THREAD_UTIL_H_
|
|
#define CEF_LIBCEF_RENDERER_THREAD_UTIL_H_
|
|
#pragma once
|
|
|
|
#include "libcef/common/task_runner_manager.h"
|
|
|
|
#include "base/location.h"
|
|
#include "base/logging.h"
|
|
#include "content/public/renderer/render_thread.h"
|
|
|
|
#define CEF_CURRENTLY_ON_RT() (!!content::RenderThread::Get())
|
|
|
|
#define CEF_REQUIRE_RT() DCHECK(CEF_CURRENTLY_ON_RT())
|
|
|
|
#define CEF_REQUIRE_RT_RETURN(var) \
|
|
if (!CEF_CURRENTLY_ON_RT()) { \
|
|
NOTREACHED() << "called on invalid thread"; \
|
|
return var; \
|
|
}
|
|
|
|
#define CEF_REQUIRE_RT_RETURN_VOID() \
|
|
if (!CEF_CURRENTLY_ON_RT()) { \
|
|
NOTREACHED() << "called on invalid thread"; \
|
|
return; \
|
|
}
|
|
|
|
#define CEF_RENDER_TASK_RUNNER() \
|
|
(CefTaskRunnerManager::Get()->GetRenderTaskRunner())
|
|
|
|
#define CEF_POST_TASK_RT(task) \
|
|
CEF_RENDER_TASK_RUNNER()->PostTask(FROM_HERE, task)
|
|
#define CEF_POST_DELAYED_TASK_RT(task, delay_ms) \
|
|
CEF_RENDER_TASK_RUNNER()->PostDelayedTask( \
|
|
FROM_HERE, task, base::TimeDelta::FromMilliseconds(delay_ms))
|
|
|
|
// Use this template in conjuction with RefCountedThreadSafe when you want to
|
|
// ensure that an object is deleted on the render thread.
|
|
struct CefDeleteOnRenderThread {
|
|
template <typename T>
|
|
static void Destruct(const T* x) {
|
|
if (CEF_CURRENTLY_ON_RT()) {
|
|
delete x;
|
|
} else {
|
|
if (!CEF_RENDER_TASK_RUNNER()->DeleteSoon(FROM_HERE, x)) {
|
|
#if defined(UNIT_TEST)
|
|
// Only logged under unit testing because leaks at shutdown
|
|
// are acceptable under normal circumstances.
|
|
LOG(ERROR) << "DeleteSoon failed on thread " << thread;
|
|
#endif // UNIT_TEST
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
#endif // CEF_LIBCEF_RENDERER_THREAD_UTIL_H_
|