mirror of
				https://bitbucket.org/chromiumembedded/cef
				synced 2025-06-05 21:39:12 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			72 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
// Copyright (c) 2012 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_BROWSER_THREAD_UTIL_H_
 | 
						|
#define CEF_LIBCEF_BROWSER_THREAD_UTIL_H_
 | 
						|
#pragma once
 | 
						|
 | 
						|
#include "base/location.h"
 | 
						|
#include "base/logging.h"
 | 
						|
#include "content/public/browser/browser_thread.h"
 | 
						|
 | 
						|
#define CEF_UIT content::BrowserThread::UI
 | 
						|
#define CEF_IOT content::BrowserThread::IO
 | 
						|
#define CEF_FILET content::BrowserThread::FILE
 | 
						|
 | 
						|
#define CEF_CURRENTLY_ON(id) content::BrowserThread::CurrentlyOn(id)
 | 
						|
#define CEF_CURRENTLY_ON_UIT() CEF_CURRENTLY_ON(CEF_UIT)
 | 
						|
#define CEF_CURRENTLY_ON_IOT() CEF_CURRENTLY_ON(CEF_IOT)
 | 
						|
#define CEF_CURRENTLY_ON_FILET() CEF_CURRENTLY_ON(CEF_FILET)
 | 
						|
 | 
						|
#define CEF_REQUIRE(id) DCHECK(CEF_CURRENTLY_ON(id))
 | 
						|
#define CEF_REQUIRE_UIT() CEF_REQUIRE(CEF_UIT)
 | 
						|
#define CEF_REQUIRE_IOT() CEF_REQUIRE(CEF_IOT)
 | 
						|
#define CEF_REQUIRE_FILET() CEF_REQUIRE(CEF_FILET)
 | 
						|
 | 
						|
#define CEF_REQUIRE_RETURN(id, var)             \
 | 
						|
  if (!CEF_CURRENTLY_ON(id)) {                  \
 | 
						|
    NOTREACHED() << "called on invalid thread"; \
 | 
						|
    return var;                                 \
 | 
						|
  }
 | 
						|
#define CEF_REQUIRE_UIT_RETURN(var) CEF_REQUIRE_RETURN(CEF_UIT, var)
 | 
						|
#define CEF_REQUIRE_IOT_RETURN(var) CEF_REQUIRE_RETURN(CEF_IOT, var)
 | 
						|
 | 
						|
#define CEF_REQUIRE_RETURN_VOID(id)             \
 | 
						|
  if (!CEF_CURRENTLY_ON(id)) {                  \
 | 
						|
    NOTREACHED() << "called on invalid thread"; \
 | 
						|
    return;                                     \
 | 
						|
  }
 | 
						|
#define CEF_REQUIRE_UIT_RETURN_VOID() CEF_REQUIRE_RETURN_VOID(CEF_UIT)
 | 
						|
#define CEF_REQUIRE_IOT_RETURN_VOID() CEF_REQUIRE_RETURN_VOID(CEF_IOT)
 | 
						|
 | 
						|
#define CEF_POST_TASK(id, task) \
 | 
						|
  content::BrowserThread::PostTask(id, FROM_HERE, task)
 | 
						|
#define CEF_POST_DELAYED_TASK(id, task, delay_ms) \
 | 
						|
  content::BrowserThread::PostDelayedTask(        \
 | 
						|
      id, FROM_HERE, task, base::TimeDelta::FromMilliseconds(delay_ms))
 | 
						|
 | 
						|
// Same as IMPLEMENT_REFCOUNTING() but using the specified Destructor.
 | 
						|
#define IMPLEMENT_REFCOUNTING_EX(ClassName, Destructor)              \
 | 
						|
 public:                                                             \
 | 
						|
  void AddRef() const OVERRIDE { ref_count_.AddRef(); }              \
 | 
						|
  bool Release() const OVERRIDE {                                    \
 | 
						|
    if (ref_count_.Release()) {                                      \
 | 
						|
      Destructor::Destruct(this);                                    \
 | 
						|
      return true;                                                   \
 | 
						|
    }                                                                \
 | 
						|
    return false;                                                    \
 | 
						|
  }                                                                  \
 | 
						|
  bool HasOneRef() const OVERRIDE { return ref_count_.HasOneRef(); } \
 | 
						|
                                                                     \
 | 
						|
 private:                                                            \
 | 
						|
  CefRefCount ref_count_;
 | 
						|
 | 
						|
#define IMPLEMENT_REFCOUNTING_DELETE_ON_UIT(ClassName) \
 | 
						|
  IMPLEMENT_REFCOUNTING_EX(ClassName, content::BrowserThread::DeleteOnUIThread)
 | 
						|
 | 
						|
#define IMPLEMENT_REFCOUNTING_DELETE_ON_IOT(ClassName) \
 | 
						|
  IMPLEMENT_REFCOUNTING_EX(ClassName, content::BrowserThread::DeleteOnIOThread)
 | 
						|
 | 
						|
#endif  // CEF_LIBCEF_BROWSER_THREAD_UTIL_H_
 |