// Copyright (c) 2015 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.
//
// ---------------------------------------------------------------------------
//
// This file was generated by the CEF translator tool. If making changes by
// hand only do so within the body of existing method and function
// implementations. See the translator.README.txt file in the tools directory
// for more information.
//

#include "libcef_dll/cpptoc/completion_callback_cpptoc.h"
#include "libcef_dll/cpptoc/request_context_handler_cpptoc.h"
#include "libcef_dll/cpptoc/scheme_handler_factory_cpptoc.h"
#include "libcef_dll/ctocpp/cookie_manager_ctocpp.h"
#include "libcef_dll/ctocpp/request_context_ctocpp.h"


// STATIC METHODS - Body may be edited by hand.

CefRefPtr<CefRequestContext> CefRequestContext::GetGlobalContext() {
  // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING

  // Execute
  cef_request_context_t* _retval = cef_request_context_get_global_context();

  // Return type: refptr_same
  return CefRequestContextCToCpp::Wrap(_retval);
}

CefRefPtr<CefRequestContext> CefRequestContext::CreateContext(
    const CefRequestContextSettings& settings,
    CefRefPtr<CefRequestContextHandler> handler) {
  // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING

  // Unverified params: handler

  // Execute
  cef_request_context_t* _retval = cef_request_context_create_context(
      &settings,
      CefRequestContextHandlerCppToC::Wrap(handler));

  // Return type: refptr_same
  return CefRequestContextCToCpp::Wrap(_retval);
}

CefRefPtr<CefRequestContext> CefRequestContext::CreateContext(
    CefRefPtr<CefRequestContext> other,
    CefRefPtr<CefRequestContextHandler> handler) {
  // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING

  // Verify param: other; type: refptr_same
  DCHECK(other.get());
  if (!other.get())
    return NULL;
  // Unverified params: handler

  // Execute
  cef_request_context_t* _retval = create_context_shared(
      CefRequestContextCToCpp::Unwrap(other),
      CefRequestContextHandlerCppToC::Wrap(handler));

  // Return type: refptr_same
  return CefRequestContextCToCpp::Wrap(_retval);
}


// VIRTUAL METHODS - Body may be edited by hand.

bool CefRequestContextCToCpp::IsSame(CefRefPtr<CefRequestContext> other) {
  if (CEF_MEMBER_MISSING(struct_, is_same))
    return false;

  // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING

  // Verify param: other; type: refptr_same
  DCHECK(other.get());
  if (!other.get())
    return false;

  // Execute
  int _retval = struct_->is_same(struct_,
      CefRequestContextCToCpp::Unwrap(other));

  // Return type: bool
  return _retval?true:false;
}

bool CefRequestContextCToCpp::IsSharingWith(
    CefRefPtr<CefRequestContext> other) {
  if (CEF_MEMBER_MISSING(struct_, is_sharing_with))
    return false;

  // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING

  // Verify param: other; type: refptr_same
  DCHECK(other.get());
  if (!other.get())
    return false;

  // Execute
  int _retval = struct_->is_sharing_with(struct_,
      CefRequestContextCToCpp::Unwrap(other));

  // Return type: bool
  return _retval?true:false;
}

bool CefRequestContextCToCpp::IsGlobal() {
  if (CEF_MEMBER_MISSING(struct_, is_global))
    return false;

  // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING

  // Execute
  int _retval = struct_->is_global(struct_);

  // Return type: bool
  return _retval?true:false;
}

CefRefPtr<CefRequestContextHandler> CefRequestContextCToCpp::GetHandler() {
  if (CEF_MEMBER_MISSING(struct_, get_handler))
    return NULL;

  // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING

  // Execute
  cef_request_context_handler_t* _retval = struct_->get_handler(struct_);

  // Return type: refptr_diff
  return CefRequestContextHandlerCppToC::Unwrap(_retval);
}

CefString CefRequestContextCToCpp::GetCachePath() {
  if (CEF_MEMBER_MISSING(struct_, get_cache_path))
    return CefString();

  // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING

  // Execute
  cef_string_userfree_t _retval = struct_->get_cache_path(struct_);

  // Return type: string
  CefString _retvalStr;
  _retvalStr.AttachToUserFree(_retval);
  return _retvalStr;
}

CefRefPtr<CefCookieManager> CefRequestContextCToCpp::GetDefaultCookieManager(
    CefRefPtr<CefCompletionCallback> callback) {
  if (CEF_MEMBER_MISSING(struct_, get_default_cookie_manager))
    return NULL;

  // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING

  // Unverified params: callback

  // Execute
  cef_cookie_manager_t* _retval = struct_->get_default_cookie_manager(struct_,
      CefCompletionCallbackCppToC::Wrap(callback));

  // Return type: refptr_same
  return CefCookieManagerCToCpp::Wrap(_retval);
}

bool CefRequestContextCToCpp::RegisterSchemeHandlerFactory(
    const CefString& scheme_name, const CefString& domain_name,
    CefRefPtr<CefSchemeHandlerFactory> factory) {
  if (CEF_MEMBER_MISSING(struct_, register_scheme_handler_factory))
    return false;

  // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING

  // Verify param: scheme_name; type: string_byref_const
  DCHECK(!scheme_name.empty());
  if (scheme_name.empty())
    return false;
  // Unverified params: domain_name, factory

  // Execute
  int _retval = struct_->register_scheme_handler_factory(struct_,
      scheme_name.GetStruct(),
      domain_name.GetStruct(),
      CefSchemeHandlerFactoryCppToC::Wrap(factory));

  // Return type: bool
  return _retval?true:false;
}

bool CefRequestContextCToCpp::ClearSchemeHandlerFactories() {
  if (CEF_MEMBER_MISSING(struct_, clear_scheme_handler_factories))
    return false;

  // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING

  // Execute
  int _retval = struct_->clear_scheme_handler_factories(struct_);

  // Return type: bool
  return _retval?true:false;
}


#ifndef NDEBUG
template<> base::AtomicRefCount CefCToCpp<CefRequestContextCToCpp,
    CefRequestContext, cef_request_context_t>::DebugObjCt = 0;
#endif

