// Copyright 2014 PDFium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com

#include "xfa/fxfa/parser/cscript_logpseudomodel.h"

#include "fxjs/cfxjse_arguments.h"
#include "xfa/fxfa/parser/cxfa_document.h"
#include "xfa/fxfa/parser/xfa_localemgr.h"
#include "xfa/fxfa/parser/xfa_object.h"
#include "xfa/fxfa/parser/xfa_utils.h"

CScript_LogPseudoModel::CScript_LogPseudoModel(CXFA_Document* pDocument)
    : CXFA_Object(pDocument,
                  XFA_ObjectType::Object,
                  XFA_Element::LogPseudoModel,
                  CFX_WideStringC(L"logPseudoModel")) {}

CScript_LogPseudoModel::~CScript_LogPseudoModel() {}

void CScript_LogPseudoModel::Message(CFXJSE_Arguments* pArguments) {}

void CScript_LogPseudoModel::TraceEnabled(CFXJSE_Arguments* pArguments) {}

void CScript_LogPseudoModel::TraceActivate(CFXJSE_Arguments* pArguments) {}

void CScript_LogPseudoModel::TraceDeactivate(CFXJSE_Arguments* pArguments) {}

void CScript_LogPseudoModel::Trace(CFXJSE_Arguments* pArguments) {}
