cef/include/test/cef_translator_test.h

809 lines
20 KiB
C++

// Copyright (c) 2015 Marshall A. Greenblatt. All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the name Chromium Embedded
// Framework nor the names of its contributors may be used to endorse
// or promote products derived from this software without specific prior
// written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// ---------------------------------------------------------------------------
//
// The contents of this file must follow a specific format in order to
// support the CEF translator tool. See the translator.README.txt file in the
// tools directory for more information.
//
// THIS FILE IS FOR TESTING PURPOSES ONLY.
//
// The APIs defined in this file are for testing purposes only. They should only
// be included from unit test targets.
//
#ifndef CEF_INCLUDE_TEST_CEF_TEST_H_
#define CEF_INCLUDE_TEST_CEF_TEST_H_
#pragma once
#if !defined(BUILDING_CEF_SHARED) && !defined(WRAPPING_CEF_SHARED) && \
!defined(UNIT_TEST)
#error This file can be included for unit tests only
#endif
#include <map>
#include <vector>
#include "include/cef_base.h"
class CefTranslatorTestRefPtrClient;
class CefTranslatorTestRefPtrClientChild;
class CefTranslatorTestRefPtrLibrary;
class CefTranslatorTestRefPtrLibraryChild;
class CefTranslatorTestScopedClient;
class CefTranslatorTestScopedClientChild;
class CefTranslatorTestScopedLibrary;
class CefTranslatorTestScopedLibraryChild;
// Test values.
#define TEST_INT_VAL 5
#define TEST_INT_VAL2 60
#define TEST_BOOL_VAL true
#define TEST_DOUBLE_VAL 4.543
#define TEST_LONG_VAL -65
#define TEST_SIZET_VAL 3U
#define TEST_STRING_VAL "My test string"
#define TEST_STRING_VAL2 "My 2nd test string"
#define TEST_STRING_VAL3 "My 3rd test string"
#define TEST_STRING_KEY "key0"
#define TEST_STRING_KEY2 "key1"
#define TEST_STRING_KEY3 "key2"
#define TEST_X_VAL 44
#define TEST_Y_VAL 754
#define TEST_X_VAL2 900
#define TEST_Y_VAL2 300
///
// Class for testing all of the possible data transfer types.
///
/*--cef(source=library)--*/
class CefTranslatorTest : public CefBaseRefCounted {
public:
///
// Create the test object.
///
/*--cef()--*/
static CefRefPtr<CefTranslatorTest> Create();
// PRIMITIVE VALUES
///
// Return a void value.
///
/*--cef()--*/
virtual void GetVoid() = 0;
///
// Return a bool value.
///
/*--cef()--*/
virtual bool GetBool() = 0;
///
// Return an int value.
///
/*--cef()--*/
virtual int GetInt() = 0;
///
// Return a double value.
///
/*--cef()--*/
virtual double GetDouble() = 0;
///
// Return a long value.
///
/*--cef()--*/
virtual long GetLong() = 0;
///
// Return a size_t value.
///
/*--cef()--*/
virtual size_t GetSizet() = 0;
///
// Set a void value.
///
/*--cef()--*/
virtual bool SetVoid() = 0;
///
// Set a bool value.
///
/*--cef()--*/
virtual bool SetBool(bool val) = 0;
///
// Set an int value.
///
/*--cef()--*/
virtual bool SetInt(int val) = 0;
///
// Set a double value.
///
/*--cef()--*/
virtual bool SetDouble(double val) = 0;
///
// Set a long value.
///
/*--cef()--*/
virtual bool SetLong(long val) = 0;
///
// Set a size_t value.
///
/*--cef()--*/
virtual bool SetSizet(size_t val) = 0;
// PRIMITIVE LIST VALUES
// Test both with and without a typedef.
typedef std::vector<int> IntList;
///
// Set a int list value.
///
/*--cef()--*/
virtual bool SetIntList(const std::vector<int>& val) = 0;
///
// Return an int list value by out-param.
///
/*--cef(count_func=val:GetIntListSize)--*/
virtual bool GetIntListByRef(IntList& val) = 0;
///
// Return the number of points that will be output above.
///
/*--cef()--*/
virtual size_t GetIntListSize() = 0;
// STRING VALUES
///
// Return a string value.
///
/*--cef()--*/
virtual CefString GetString() = 0;
///
// Set a string value.
///
/*--cef()--*/
virtual bool SetString(const CefString& val) = 0;
///
// Return a string value by out-param.
///
/*--cef()--*/
virtual void GetStringByRef(CefString& val) = 0;
// STRING LIST VALUES
// Test both with and without a typedef.
typedef std::vector<CefString> StringList;
///
// Set a string list value.
///
/*--cef()--*/
virtual bool SetStringList(const std::vector<CefString>& val) = 0;
///
// Return a string list value by out-param.
///
/*--cef()--*/
virtual bool GetStringListByRef(StringList& val) = 0;
// STRING MAP VALUES
// Test both with and without a typedef.
typedef std::map<CefString, CefString> StringMap;
///
// Set a string map value.
///
/*--cef()--*/
virtual bool SetStringMap(const StringMap& val) = 0;
///
// Return a string map value by out-param.
///
/*--cef()--*/
virtual bool GetStringMapByRef(std::map<CefString, CefString>& val) = 0;
// STRING MULTIMAP VALUES
// Test both with and without a typedef.
typedef std::multimap<CefString, CefString> StringMultimap;
///
// Set a string multimap value.
///
/*--cef()--*/
virtual bool SetStringMultimap(
const std::multimap<CefString, CefString>& val) = 0;
///
// Return a string multimap value by out-param.
///
/*--cef()--*/
virtual bool GetStringMultimapByRef(StringMultimap& val) = 0;
// STRUCT VALUES
///
// Return a point value.
///
/*--cef()--*/
virtual CefPoint GetPoint() = 0;
///
// Set a point value.
///
/*--cef()--*/
virtual bool SetPoint(const CefPoint& val) = 0;
///
// Return a point value by out-param.
///
/*--cef()--*/
virtual void GetPointByRef(CefPoint& val) = 0;
// STRUCT LIST VALUES
// Test both with and without a typedef.
typedef std::vector<CefPoint> PointList;
///
// Set a point list vlaue.
///
/*--cef()--*/
virtual bool SetPointList(const std::vector<CefPoint>& val) = 0;
///
// Return a point list value by out-param.
///
/*--cef(count_func=val:GetPointListSize)--*/
virtual bool GetPointListByRef(PointList& val) = 0;
///
// Return the number of points that will be output above.
///
/*--cef()--*/
virtual size_t GetPointListSize() = 0;
// LIBRARY-SIDE REFPTR VALUES
///
// Return an new library-side object.
///
/*--cef()--*/
virtual CefRefPtr<CefTranslatorTestRefPtrLibrary> GetRefPtrLibrary(
int val) = 0;
///
// Set an object. Returns the value from
// CefTranslatorTestRefPtrLibrary::GetValue().
// This tests input and execution of a library-side object type.
///
/*--cef()--*/
virtual int SetRefPtrLibrary(
CefRefPtr<CefTranslatorTestRefPtrLibrary> val) = 0;
///
// Set an object. Returns the object passed in. This tests input and output
// of a library-side object type.
///
/*--cef()--*/
virtual CefRefPtr<CefTranslatorTestRefPtrLibrary> SetRefPtrLibraryAndReturn(
CefRefPtr<CefTranslatorTestRefPtrLibrary> val) = 0;
///
// Set a child object. Returns the value from
// CefTranslatorTestRefPtrLibrary::GetValue(). This tests input of a library-
// side child object type and execution as the parent type.
///
/*--cef()--*/
virtual int SetChildRefPtrLibrary(
CefRefPtr<CefTranslatorTestRefPtrLibraryChild> val) = 0;
///
// Set a child object. Returns the object as the parent type. This tests input
// of a library-side child object type and return as the parent type.
///
/*--cef()--*/
virtual CefRefPtr<CefTranslatorTestRefPtrLibrary>
SetChildRefPtrLibraryAndReturnParent(
CefRefPtr<CefTranslatorTestRefPtrLibraryChild> val) = 0;
// LIBRARY-SIDE REFPTR LIST VALUES
// Test both with and without a typedef.
typedef std::vector<CefRefPtr<CefTranslatorTestRefPtrLibrary>>
RefPtrLibraryList;
///
// Set an object list vlaue.
///
/*--cef()--*/
virtual bool SetRefPtrLibraryList(
const std::vector<CefRefPtr<CefTranslatorTestRefPtrLibrary>>& val,
int val1,
int val2) = 0;
///
// Return an object list value by out-param.
///
/*--cef(count_func=val:GetRefPtrLibraryListSize)--*/
virtual bool GetRefPtrLibraryListByRef(RefPtrLibraryList& val,
int val1,
int val2) = 0;
///
// Return the number of object that will be output above.
///
/*--cef()--*/
virtual size_t GetRefPtrLibraryListSize() = 0;
// CLIENT-SIDE REFPTR VALUES
///
// Set an object. Returns the value from
// CefTranslatorTestRefPtrClient::GetValue().
// This tests input and execution of a client-side object type.
///
/*--cef()--*/
virtual int SetRefPtrClient(CefRefPtr<CefTranslatorTestRefPtrClient> val) = 0;
///
// Set an object. Returns the handler passed in. This tests input and output
// of a client-side object type.
///
/*--cef()--*/
virtual CefRefPtr<CefTranslatorTestRefPtrClient> SetRefPtrClientAndReturn(
CefRefPtr<CefTranslatorTestRefPtrClient> val) = 0;
///
// Set a child object. Returns the value from
// CefTranslatorTestRefPtrClient::GetValue(). This tests input of a client-
// side child object type and execution as the parent type.
///
/*--cef()--*/
virtual int SetChildRefPtrClient(
CefRefPtr<CefTranslatorTestRefPtrClientChild> val) = 0;
///
// Set a child object. Returns the object as the parent type. This tests
// input of a client-side child object type and return as the parent type.
///
/*--cef()--*/
virtual CefRefPtr<CefTranslatorTestRefPtrClient>
SetChildRefPtrClientAndReturnParent(
CefRefPtr<CefTranslatorTestRefPtrClientChild> val) = 0;
// CLIENT-SIDE REFPTR LIST VALUES
// Test both with and without a typedef.
typedef std::vector<CefRefPtr<CefTranslatorTestRefPtrClient>>
RefPtrClientList;
///
// Set an object list vlaue.
///
/*--cef()--*/
virtual bool SetRefPtrClientList(
const std::vector<CefRefPtr<CefTranslatorTestRefPtrClient>>& val,
int val1,
int val2) = 0;
///
// Return an object list value by out-param.
///
/*--cef(count_func=val:GetRefPtrLibraryListSize)--*/
virtual bool GetRefPtrClientListByRef(
RefPtrClientList& val,
CefRefPtr<CefTranslatorTestRefPtrClient> val1,
CefRefPtr<CefTranslatorTestRefPtrClient> val2) = 0;
///
// Return the number of object that will be output above.
///
/*--cef()--*/
virtual size_t GetRefPtrClientListSize() = 0;
// LIBRARY-SIDE OWNPTR VALUES
///
// Return an new library-side object.
///
/*--cef()--*/
virtual CefOwnPtr<CefTranslatorTestScopedLibrary> GetOwnPtrLibrary(
int val) = 0;
///
// Set an object. Returns the value from
// CefTranslatorTestScopedLibrary::GetValue().
// This tests input and execution of a library-side object type.
///
/*--cef()--*/
virtual int SetOwnPtrLibrary(
CefOwnPtr<CefTranslatorTestScopedLibrary> val) = 0;
///
// Set an object. Returns the object passed in. This tests input and output
// of a library-side object type.
///
/*--cef()--*/
virtual CefOwnPtr<CefTranslatorTestScopedLibrary> SetOwnPtrLibraryAndReturn(
CefOwnPtr<CefTranslatorTestScopedLibrary> val) = 0;
///
// Set a child object. Returns the value from
// CefTranslatorTestScopedLibrary::GetValue(). This tests input of a library-
// side child object type and execution as the parent type.
///
/*--cef()--*/
virtual int SetChildOwnPtrLibrary(
CefOwnPtr<CefTranslatorTestScopedLibraryChild> val) = 0;
///
// Set a child object. Returns the object as the parent type. This tests input
// of a library-side child object type and return as the parent type.
///
/*--cef()--*/
virtual CefOwnPtr<CefTranslatorTestScopedLibrary>
SetChildOwnPtrLibraryAndReturnParent(
CefOwnPtr<CefTranslatorTestScopedLibraryChild> val) = 0;
// CLIENT-SIDE OWNPTR VALUES
///
// Set an object. Returns the value from
// CefTranslatorTestScopedClient::GetValue().
// This tests input and execution of a client-side object type.
///
/*--cef()--*/
virtual int SetOwnPtrClient(CefOwnPtr<CefTranslatorTestScopedClient> val) = 0;
///
// Set an object. Returns the handler passed in. This tests input and output
// of a client-side object type.
///
/*--cef()--*/
virtual CefOwnPtr<CefTranslatorTestScopedClient> SetOwnPtrClientAndReturn(
CefOwnPtr<CefTranslatorTestScopedClient> val) = 0;
///
// Set a child object. Returns the value from
// CefTranslatorTestScopedClient::GetValue(). This tests input of a client-
// side child object type and execution as the parent type.
///
/*--cef()--*/
virtual int SetChildOwnPtrClient(
CefOwnPtr<CefTranslatorTestScopedClientChild> val) = 0;
///
// Set a child object. Returns the object as the parent type. This tests
// input of a client-side child object type and return as the parent type.
///
/*--cef()--*/
virtual CefOwnPtr<CefTranslatorTestScopedClient>
SetChildOwnPtrClientAndReturnParent(
CefOwnPtr<CefTranslatorTestScopedClientChild> val) = 0;
// LIBRARY-SIDE RAWPTR VALUES
///
// Set an object. Returns the value from
// CefTranslatorTestScopedLibrary::GetValue().
// This tests input and execution of a library-side object type.
///
/*--cef()--*/
virtual int SetRawPtrLibrary(
CefRawPtr<CefTranslatorTestScopedLibrary> val) = 0;
///
// Set a child object. Returns the value from
// CefTranslatorTestScopedLibrary::GetValue(). This tests input of a library-
// side child object type and execution as the parent type.
///
/*--cef()--*/
virtual int SetChildRawPtrLibrary(
CefRawPtr<CefTranslatorTestScopedLibraryChild> val) = 0;
// LIBRARY-SIDE RAWPTR LIST VALUES
// Test both with and without a typedef.
typedef std::vector<CefRawPtr<CefTranslatorTestScopedLibrary>>
RawPtrLibraryList;
///
// Set an object list vlaue.
///
/*--cef()--*/
virtual bool SetRawPtrLibraryList(
const std::vector<CefRawPtr<CefTranslatorTestScopedLibrary>>& val,
int val1,
int val2) = 0;
// CLIENT-SIDE RAWPTR VALUES
///
// Set an object. Returns the value from
// CefTranslatorTestScopedClient::GetValue().
// This tests input and execution of a client-side object type.
///
/*--cef()--*/
virtual int SetRawPtrClient(CefRawPtr<CefTranslatorTestScopedClient> val) = 0;
///
// Set a child object. Returns the value from
// CefTranslatorTestScopedClient::GetValue(). This tests input of a client-
// side child object type and execution as the parent type.
///
/*--cef()--*/
virtual int SetChildRawPtrClient(
CefRawPtr<CefTranslatorTestScopedClientChild> val) = 0;
// CLIENT-SIDE RAWPTR LIST VALUES
// Test both with and without a typedef.
typedef std::vector<CefRawPtr<CefTranslatorTestScopedClient>>
RawPtrClientList;
///
// Set an object list vlaue.
///
/*--cef()--*/
virtual bool SetRawPtrClientList(
const std::vector<CefRawPtr<CefTranslatorTestScopedClient>>& val,
int val1,
int val2) = 0;
};
///
// Library-side test object for RefPtr.
///
/*--cef(source=library)--*/
class CefTranslatorTestRefPtrLibrary : public CefBaseRefCounted {
public:
///
// Create the test object.
///
/*--cef()--*/
static CefRefPtr<CefTranslatorTestRefPtrLibrary> Create(int value);
///
// Return a value.
///
/*--cef()--*/
virtual int GetValue() = 0;
///
// Set a value.
///
/*--cef()--*/
virtual void SetValue(int value) = 0;
};
///
// Library-side child test object for RefPtr.
///
/*--cef(source=library)--*/
class CefTranslatorTestRefPtrLibraryChild
: public CefTranslatorTestRefPtrLibrary {
public:
///
// Create the test object.
///
/*--cef()--*/
static CefRefPtr<CefTranslatorTestRefPtrLibraryChild> Create(int value,
int other_value);
///
// Return a value.
///
/*--cef()--*/
virtual int GetOtherValue() = 0;
///
// Set a value.
///
/*--cef()--*/
virtual void SetOtherValue(int value) = 0;
};
///
// Another library-side child test object for RefPtr.
///
/*--cef(source=library)--*/
class CefTranslatorTestRefPtrLibraryChildChild
: public CefTranslatorTestRefPtrLibraryChild {
public:
///
// Create the test object.
///
/*--cef()--*/
static CefRefPtr<CefTranslatorTestRefPtrLibraryChildChild>
Create(int value, int other_value, int other_other_value);
///
// Return a value.
///
/*--cef()--*/
virtual int GetOtherOtherValue() = 0;
///
// Set a value.
///
/*--cef()--*/
virtual void SetOtherOtherValue(int value) = 0;
};
///
// Client-side test object for RefPtr.
///
/*--cef(source=client)--*/
class CefTranslatorTestRefPtrClient : public virtual CefBaseRefCounted {
public:
///
// Return a value.
///
/*--cef()--*/
virtual int GetValue() = 0;
};
///
// Client-side child test object for RefPtr.
///
/*--cef(source=client)--*/
class CefTranslatorTestRefPtrClientChild
: public CefTranslatorTestRefPtrClient {
public:
///
// Return a value.
///
/*--cef()--*/
virtual int GetOtherValue() = 0;
};
///
// Library-side test object for OwnPtr/RawPtr.
///
/*--cef(source=library)--*/
class CefTranslatorTestScopedLibrary : public CefBaseScoped {
public:
///
// Create the test object.
///
/*--cef()--*/
static CefOwnPtr<CefTranslatorTestScopedLibrary> Create(int value);
///
// Return a value.
///
/*--cef()--*/
virtual int GetValue() = 0;
///
// Set a value.
///
/*--cef()--*/
virtual void SetValue(int value) = 0;
};
///
// Library-side child test object for OwnPtr/RawPtr.
///
/*--cef(source=library)--*/
class CefTranslatorTestScopedLibraryChild
: public CefTranslatorTestScopedLibrary {
public:
///
// Create the test object.
///
/*--cef()--*/
static CefOwnPtr<CefTranslatorTestScopedLibraryChild> Create(int value,
int other_value);
///
// Return a value.
///
/*--cef()--*/
virtual int GetOtherValue() = 0;
///
// Set a value.
///
/*--cef()--*/
virtual void SetOtherValue(int value) = 0;
};
///
// Another library-side child test object for OwnPtr/RawPtr.
///
/*--cef(source=library)--*/
class CefTranslatorTestScopedLibraryChildChild
: public CefTranslatorTestScopedLibraryChild {
public:
///
// Create the test object.
///
/*--cef()--*/
static CefOwnPtr<CefTranslatorTestScopedLibraryChildChild>
Create(int value, int other_value, int other_other_value);
///
// Return a value.
///
/*--cef()--*/
virtual int GetOtherOtherValue() = 0;
///
// Set a value.
///
/*--cef()--*/
virtual void SetOtherOtherValue(int value) = 0;
};
///
// Client-side test object for OwnPtr/RawPtr.
///
/*--cef(source=client)--*/
class CefTranslatorTestScopedClient : public virtual CefBaseScoped {
public:
///
// Return a value.
///
/*--cef()--*/
virtual int GetValue() = 0;
};
///
// Client-side child test object for OwnPtr/RawPtr.
///
/*--cef(source=client)--*/
class CefTranslatorTestScopedClientChild
: public CefTranslatorTestScopedClient {
public:
///
// Return a value.
///
/*--cef()--*/
virtual int GetOtherValue() = 0;
};
#endif // CEF_INCLUDE_TEST_CEF_TEST_H_