// 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.
//
// ---------------------------------------------------------------------------
//
// 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/request_cpptoc.h"
#include "libcef_dll/cpptoc/response_cpptoc.h"
#include "libcef_dll/cpptoc/web_urlrequest_cpptoc.h"
#include "libcef_dll/ctocpp/web_urlrequest_client_ctocpp.h"


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

void CefWebURLRequestClientCToCpp::OnStateChange(
    CefRefPtr<CefWebURLRequest> requester, RequestState state) {
  if (CEF_MEMBER_MISSING(struct_, on_state_change))
    return;

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

  // Verify param: requester; type: refptr_diff
  DCHECK(requester.get());
  if (!requester.get())
    return;

  // Execute
  struct_->on_state_change(struct_,
      CefWebURLRequestCppToC::Wrap(requester),
      state);
}

void CefWebURLRequestClientCToCpp::OnRedirect(
    CefRefPtr<CefWebURLRequest> requester, CefRefPtr<CefRequest> request,
    CefRefPtr<CefResponse> response) {
  if (CEF_MEMBER_MISSING(struct_, on_redirect))
    return;

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

  // Verify param: requester; type: refptr_diff
  DCHECK(requester.get());
  if (!requester.get())
    return;
  // Verify param: request; type: refptr_diff
  DCHECK(request.get());
  if (!request.get())
    return;
  // Verify param: response; type: refptr_diff
  DCHECK(response.get());
  if (!response.get())
    return;

  // Execute
  struct_->on_redirect(struct_,
      CefWebURLRequestCppToC::Wrap(requester),
      CefRequestCppToC::Wrap(request),
      CefResponseCppToC::Wrap(response));
}

void CefWebURLRequestClientCToCpp::OnHeadersReceived(
    CefRefPtr<CefWebURLRequest> requester, CefRefPtr<CefResponse> response) {
  if (CEF_MEMBER_MISSING(struct_, on_headers_received))
    return;

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

  // Verify param: requester; type: refptr_diff
  DCHECK(requester.get());
  if (!requester.get())
    return;
  // Verify param: response; type: refptr_diff
  DCHECK(response.get());
  if (!response.get())
    return;

  // Execute
  struct_->on_headers_received(struct_,
      CefWebURLRequestCppToC::Wrap(requester),
      CefResponseCppToC::Wrap(response));
}

void CefWebURLRequestClientCToCpp::OnProgress(
    CefRefPtr<CefWebURLRequest> requester, uint64 bytesSent,
    uint64 totalBytesToBeSent) {
  if (CEF_MEMBER_MISSING(struct_, on_progress))
    return;

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

  // Verify param: requester; type: refptr_diff
  DCHECK(requester.get());
  if (!requester.get())
    return;

  // Execute
  struct_->on_progress(struct_,
      CefWebURLRequestCppToC::Wrap(requester),
      bytesSent,
      totalBytesToBeSent);
}

void CefWebURLRequestClientCToCpp::OnData(CefRefPtr<CefWebURLRequest> requester,
    const void* data, int dataLength) {
  if (CEF_MEMBER_MISSING(struct_, on_data))
    return;

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

  // Verify param: requester; type: refptr_diff
  DCHECK(requester.get());
  if (!requester.get())
    return;
  // Verify param: data; type: simple_byaddr
  DCHECK(data);
  if (!data)
    return;

  // Execute
  struct_->on_data(struct_,
      CefWebURLRequestCppToC::Wrap(requester),
      data,
      dataLength);
}

void CefWebURLRequestClientCToCpp::OnError(
    CefRefPtr<CefWebURLRequest> requester, ErrorCode errorCode) {
  if (CEF_MEMBER_MISSING(struct_, on_error))
    return;

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

  // Verify param: requester; type: refptr_diff
  DCHECK(requester.get());
  if (!requester.get())
    return;

  // Execute
  struct_->on_error(struct_,
      CefWebURLRequestCppToC::Wrap(requester),
      errorCode);
}


#ifndef NDEBUG
template<> long CefCToCpp<CefWebURLRequestClientCToCpp, CefWebURLRequestClient,
    cef_web_urlrequest_client_t>::DebugObjCt = 0;
#endif

