Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(122)

Unified Diff: tests/fake_browser_ppapi/test_scriptable.cc

Issue 7292002: Remove plugin connection to PPAPI scriptable objects (var deprecated). Also (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client/
Patch Set: '' Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tests/fake_browser_ppapi/test_scriptable.h ('k') | tests/fake_browser_ppapi/utility.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/fake_browser_ppapi/test_scriptable.cc
===================================================================
--- tests/fake_browser_ppapi/test_scriptable.cc (revision 6005)
+++ tests/fake_browser_ppapi/test_scriptable.cc (working copy)
@@ -1,412 +0,0 @@
-/*
- * Copyright (c) 2011 The Native Client Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "native_client/tests/fake_browser_ppapi/test_scriptable.h"
-
-#include <stdio.h>
-#include <string.h>
-
-#include "native_client/src/include/nacl_macros.h"
-#include "native_client/src/include/portability.h"
-#include "native_client/src/shared/platform/nacl_check.h"
-#include "native_client/tests/fake_browser_ppapi/fake_core.h"
-#include "native_client/tests/fake_browser_ppapi/fake_host.h"
-#include "native_client/tests/fake_browser_ppapi/fake_instance.h"
-#include "native_client/tests/fake_browser_ppapi/fake_window.h"
-#include "native_client/tests/fake_browser_ppapi/utility.h"
-#include "ppapi/c/dev/ppb_var_deprecated.h"
-#include "ppapi/c/ppb_core.h"
-#include "ppapi/c/ppb_instance.h"
-#include "ppapi/c/ppp_instance.h"
-#include "ppapi/c/pp_errors.h"
-
-
-namespace {
-
-// Some canonical constants used to initialize properties of various types.
-const PP_Bool kBoolValue = PP_TRUE;
-const int32_t kInt32Value = 144000;
-const double kDoubleValue = 3.1415;
-const char* const kStringValue = "hello, world";
-
-// Some global state.
-const PPB_Var_Deprecated* g_var_interface;
-const PPB_Instance* g_instance_interface;
-PP_Instance g_instance_id;
-PP_Instance g_browser_module_id;
-int64_t g_object_as_id;
-
-// TODO(sehr,polina): add this to the ppapi/c/dev/ppb_var_deprecated.h?
-PP_Var MakeString(const char* str) {
- return g_var_interface->VarFromUtf8(g_browser_module_id,
- str,
- static_cast<uint32_t>(strlen(str)));
-}
-
-// PP_Var of string type that names the property that corresponds to the
-// specified type.
-PP_Var PropertyName(PP_VarType type) {
- switch (type) {
- case PP_VARTYPE_UNDEFINED:
- return MakeString("propUndefined");
- case PP_VARTYPE_NULL:
- return MakeString("propNull");
- case PP_VARTYPE_BOOL:
- return MakeString("propBool");
- case PP_VARTYPE_INT32:
- return MakeString("propInt32");
- case PP_VARTYPE_DOUBLE:
- return MakeString("propDouble");
- case PP_VARTYPE_STRING:
- return MakeString("propString");
- case PP_VARTYPE_OBJECT:
- return MakeString("propObject");
- case PP_VARTYPE_ARRAY:
- case PP_VARTYPE_DICTIONARY:
- break;
- }
- NACL_NOTREACHED();
- return PP_MakeUndefined();
-}
-
-// PP_Var of string type that names a method that corresponds to the
-// specified type. These methods all expect two args of |type|.
-PP_Var MethodNameWith2Args(PP_VarType type) {
- switch (type) {
- case PP_VARTYPE_UNDEFINED:
- return MakeString("methodUndefinedWith2Args");
- case PP_VARTYPE_NULL:
- return MakeString("methodNullWith2Args");
- case PP_VARTYPE_BOOL:
- return MakeString("methodBoolWith2Args");
- case PP_VARTYPE_INT32:
- return MakeString("methodInt32With2Args");
- case PP_VARTYPE_DOUBLE:
- return MakeString("methodDoubleWith2Args");
- case PP_VARTYPE_STRING:
- return MakeString("methodStringWith2Args");
- case PP_VARTYPE_OBJECT:
- return MakeString("methodObjectWith2Args");
- case PP_VARTYPE_ARRAY:
- case PP_VARTYPE_DICTIONARY:
- break;
- }
- NACL_NOTREACHED();
- return PP_MakeUndefined();
-}
-
-// Returns a canonical PP_Var of type.
-PP_Var PropertyValue(PP_VarType type) {
- switch (type) {
- case PP_VARTYPE_UNDEFINED:
- return PP_MakeUndefined();
- case PP_VARTYPE_NULL:
- return PP_MakeNull();
- case PP_VARTYPE_BOOL:
- return PP_MakeBool(kBoolValue);
- case PP_VARTYPE_INT32:
- return PP_MakeInt32(kInt32Value);
- case PP_VARTYPE_DOUBLE:
- return PP_MakeDouble(kDoubleValue);
- case PP_VARTYPE_STRING:
- return MakeString(kStringValue);
- case PP_VARTYPE_OBJECT:
-#ifndef PPAPI_INSTANCE_REMOVE_SCRIPTING
- return g_instance_interface->GetWindowObject(g_instance_id);
-#endif
- case PP_VARTYPE_ARRAY:
- case PP_VARTYPE_DICTIONARY:
- break;
- }
- NACL_NOTREACHED();
- return PP_MakeUndefined();
-}
-
-// Checks that the var matches the canonical var for the specified type.
-PP_Bool PropertyIsValidValue(PP_VarType type, PP_Var value) {
- switch (type) {
- case PP_VARTYPE_UNDEFINED:
- return static_cast<PP_Bool>(value.type == PP_VARTYPE_UNDEFINED);
- case PP_VARTYPE_NULL:
- return static_cast<PP_Bool>(value.type == PP_VARTYPE_NULL);
- case PP_VARTYPE_BOOL:
- return static_cast<PP_Bool>((value.type == PP_VARTYPE_BOOL) &&
- (value.value.as_bool == kBoolValue));
- case PP_VARTYPE_INT32:
- return static_cast<PP_Bool>((value.type == PP_VARTYPE_INT32) &&
- (value.value.as_int == kInt32Value));
- case PP_VARTYPE_DOUBLE:
- return static_cast<PP_Bool>((value.type == PP_VARTYPE_DOUBLE) &&
- (value.value.as_double == kDoubleValue));
- case PP_VARTYPE_STRING: {
- if (value.type != PP_VARTYPE_STRING) {
- return PP_FALSE;
- }
- uint32_t ret_length;
- const char* ret_str = g_var_interface->VarToUtf8(value, &ret_length);
- if (ret_length == 0 || ret_str == NULL) {
- return PP_FALSE;
- }
- return static_cast<PP_Bool>(strcmp(ret_str, kStringValue) == 0);
- }
- case PP_VARTYPE_OBJECT: {
- // TODO(sehr,polina): check that the value is correct also. This is
- // quite complicated with proxies-to-proxies at the moment.
- return static_cast<PP_Bool>(value.type == PP_VARTYPE_OBJECT);
- }
- case PP_VARTYPE_ARRAY:
- case PP_VARTYPE_DICTIONARY:
- break;
- }
- return PP_FALSE;
-}
-
-// Test that the "prop<Type>" property is present on object.
-void CheckPresentProperty(PP_VarType type, PP_Var object) {
- PP_Var exception = PP_MakeUndefined();
- // PropertyName always returns a string PP_Var that names a valid property.
- CHECK(g_var_interface->HasProperty(object, PropertyName(type), &exception));
- CHECK(exception.type == PP_VARTYPE_UNDEFINED);
-}
-
-void CheckAbsentProperty(PP_VarType type, PP_Var object) {
- // PropertyValue returns a PP_Var of the requested type. Only when type
- // == PP_VARTYPE_STRING can HasProperty succeed, and then only for valid
- // property names. PropertyValue(PP_VARTYPE_STRING) returns a string
- // that is not a valid property name.
- PP_Var exception = PP_MakeUndefined();
- CHECK(!g_var_interface->HasProperty(object,
- PropertyValue(type),
- &exception));
- // TODO(sehr): Exception should be raised if type is not int or string.
- CHECK(exception.type == PP_VARTYPE_UNDEFINED);
-}
-
-void TestHasProperty(PP_Var object) {
- CheckAbsentProperty(PP_VARTYPE_UNDEFINED, object);
- CheckAbsentProperty(PP_VARTYPE_NULL, object);
- CheckAbsentProperty(PP_VARTYPE_BOOL, object);
- CheckAbsentProperty(PP_VARTYPE_INT32, object);
- CheckAbsentProperty(PP_VARTYPE_DOUBLE, object);
- CheckAbsentProperty(PP_VARTYPE_STRING, object);
- CheckAbsentProperty(PP_VARTYPE_OBJECT, object);
- CheckPresentProperty(PP_VARTYPE_UNDEFINED, object);
- CheckPresentProperty(PP_VARTYPE_NULL, object);
- CheckPresentProperty(PP_VARTYPE_BOOL, object);
- CheckPresentProperty(PP_VARTYPE_INT32, object);
- CheckPresentProperty(PP_VARTYPE_DOUBLE, object);
- CheckPresentProperty(PP_VARTYPE_STRING, object);
- CheckPresentProperty(PP_VARTYPE_OBJECT, object);
-}
-
-// Test setting the "prop<Property_type>" method on object, passing a value of
-// "value_type".
-void CheckSetProperty(PP_VarType property_type,
- PP_VarType value_type,
- PP_Var object) {
- PP_Var exception = PP_MakeUndefined();
- g_var_interface->SetProperty(object,
- PropertyName(property_type),
- PropertyValue(value_type),
- &exception);
- // Only setting an property to a value of it's intrinsic type should succeed.
- // Success is indicated by the SetProperty returning a void exception.
- if (property_type == value_type) {
- CHECK(exception.type == PP_VARTYPE_UNDEFINED);
- } else {
- CHECK(exception.type != PP_VARTYPE_UNDEFINED);
- }
-}
-
-// Test setting one the "prop<Property_type>" property of object with all
-// argument types.
-void TestSetPropertyForType(PP_VarType property_type, PP_Var object) {
- CheckSetProperty(property_type, PP_VARTYPE_UNDEFINED, object);
- CheckSetProperty(property_type, PP_VARTYPE_NULL, object);
- CheckSetProperty(property_type, PP_VARTYPE_BOOL, object);
- CheckSetProperty(property_type, PP_VARTYPE_INT32, object);
- CheckSetProperty(property_type, PP_VARTYPE_DOUBLE, object);
- CheckSetProperty(property_type, PP_VARTYPE_STRING, object);
- CheckSetProperty(property_type, PP_VARTYPE_OBJECT, object);
-}
-
-// Test setting each type of property of object in succession.
-// The values set in this function are used in TestGetProperty.
-void TestSetProperty(PP_Var object) {
- TestSetPropertyForType(PP_VARTYPE_UNDEFINED, object);
- TestSetPropertyForType(PP_VARTYPE_NULL, object);
- TestSetPropertyForType(PP_VARTYPE_BOOL, object);
- TestSetPropertyForType(PP_VARTYPE_INT32, object);
- TestSetPropertyForType(PP_VARTYPE_DOUBLE, object);
- TestSetPropertyForType(PP_VARTYPE_STRING, object);
- TestSetPropertyForType(PP_VARTYPE_OBJECT, object);
-}
-
-// Invoke the GetProperty method on "object", passing the identifier
-// for "property_type" and checking that the return value agrees in type
-// and value.
-void TestGetPropertyForType(PP_VarType property_type, PP_Var object) {
- PP_Var exception = PP_MakeUndefined();
- PP_Var result = g_var_interface->GetProperty(object,
- PropertyName(property_type),
- &exception);
- CHECK(PropertyIsValidValue(property_type, result));
- CHECK(exception.type == PP_VARTYPE_UNDEFINED);
-}
-
-// Test getting each type of property of object in succession.
-void TestGetProperty(PP_Var object) {
- TestGetPropertyForType(PP_VARTYPE_UNDEFINED, object);
- TestGetPropertyForType(PP_VARTYPE_NULL, object);
- TestGetPropertyForType(PP_VARTYPE_BOOL, object);
- TestGetPropertyForType(PP_VARTYPE_INT32, object);
- TestGetPropertyForType(PP_VARTYPE_DOUBLE, object);
- TestGetPropertyForType(PP_VARTYPE_STRING, object);
- TestGetPropertyForType(PP_VARTYPE_OBJECT, object);
-}
-
-// Invoke the "method2<Type>" method of object with values of types arg1_type
-// and arg2_type as parameters.
-void CheckCallWithArgPair(PP_VarType type,
- PP_VarType arg1_type,
- PP_VarType arg2_type,
- PP_Var object) {
- PP_Var argv[] = { PropertyValue(arg1_type), PropertyValue(arg2_type) };
- uint32_t argc = static_cast<uint32_t>(sizeof argv / sizeof argv[0]);
- PP_Var exception = PP_MakeUndefined();
- PP_Var retval = g_var_interface->Call(object,
- MethodNameWith2Args(type),
- argc,
- argv,
- &exception);
- // A successful call should return a var of "type" and exception should be
- // void. A failing call's exception should be non-void.
- if (type == arg1_type && type == arg2_type) {
- CHECK(PropertyIsValidValue(type, retval));
- CHECK(exception.type == PP_VARTYPE_UNDEFINED);
- } else {
- CHECK(exception.type != PP_VARTYPE_UNDEFINED);
- }
-}
-
-// Invoke the "method<Type>" method of object with first argument type arg1_type
-// and all possibilities of second argument type.
-void TestCallForTypeWithArg1Type(PP_VarType type,
- PP_VarType arg1_type,
- PP_Var object) {
- CheckCallWithArgPair(type, arg1_type, PP_VARTYPE_UNDEFINED, object);
- CheckCallWithArgPair(type, arg1_type, PP_VARTYPE_NULL, object);
- CheckCallWithArgPair(type, arg1_type, PP_VARTYPE_BOOL, object);
- CheckCallWithArgPair(type, arg1_type, PP_VARTYPE_INT32, object);
- CheckCallWithArgPair(type, arg1_type, PP_VARTYPE_DOUBLE, object);
- CheckCallWithArgPair(type, arg1_type, PP_VARTYPE_STRING, object);
- CheckCallWithArgPair(type, arg1_type, PP_VARTYPE_OBJECT, object);
-}
-
-// Invoke the "method<Type>" method of object with one parameter of type "type".
-void CallWithTooFewParameters(PP_VarType type, PP_Var object) {
- PP_Var argv[] = { PropertyValue(type) };
- uint32_t argc = static_cast<uint32_t>(sizeof argv / sizeof argv[0]);
- PP_Var exception = PP_MakeUndefined();
- (void) g_var_interface->Call(object,
- MethodNameWith2Args(type),
- argc,
- argv,
- &exception);
- CHECK(exception.type != PP_VARTYPE_UNDEFINED);
-}
-
-// Invoke the "method<Type>" method of object with three parameters of type
-// "type".
-void CallWithTooManyParameters(PP_VarType type, PP_Var object) {
- PP_Var argv[] = {
- PropertyValue(type),
- PropertyValue(type),
- PropertyValue(type)
- };
- uint32_t argc = static_cast<uint32_t>(sizeof argv / sizeof argv[0]);
- PP_Var exception = PP_MakeUndefined();
- (void) g_var_interface->Call(object,
- MethodNameWith2Args(type),
- argc,
- argv,
- &exception);
- CHECK(exception.type != PP_VARTYPE_UNDEFINED);
-}
-
-// Invoke the "method<Type>" method of object with all combinations of types for
-// the first and second arguments.
-void TestCallForType(PP_VarType method_type, PP_Var object) {
- CallWithTooFewParameters(method_type, object);
- CallWithTooManyParameters(method_type, object);
- // Try with various parameter type combinations.
- TestCallForTypeWithArg1Type(method_type, PP_VARTYPE_UNDEFINED, object);
- TestCallForTypeWithArg1Type(method_type, PP_VARTYPE_NULL, object);
- TestCallForTypeWithArg1Type(method_type, PP_VARTYPE_BOOL, object);
- TestCallForTypeWithArg1Type(method_type, PP_VARTYPE_INT32, object);
- TestCallForTypeWithArg1Type(method_type, PP_VARTYPE_DOUBLE, object);
- TestCallForTypeWithArg1Type(method_type, PP_VARTYPE_STRING, object);
- TestCallForTypeWithArg1Type(method_type, PP_VARTYPE_OBJECT, object);
-}
-
-// Test invoking each method of object in succession.
-void TestCall(PP_Var object) {
- TestCallForType(PP_VARTYPE_UNDEFINED, object);
- TestCallForType(PP_VARTYPE_NULL, object);
- TestCallForType(PP_VARTYPE_BOOL, object);
- TestCallForType(PP_VARTYPE_INT32, object);
- TestCallForType(PP_VARTYPE_DOUBLE, object);
- TestCallForType(PP_VARTYPE_STRING, object);
- TestCallForType(PP_VARTYPE_OBJECT, object);
-}
-
-// Test calling a that scripts the object passed into it. This is the
-// beginning of a test of NaCl to browser scripting.
-void TestWindowScripting(PP_Var object) {
- PP_Var argv = PropertyValue(PP_VARTYPE_OBJECT);
- PP_Var exception = PP_MakeUndefined();
- PP_Var retval = g_var_interface->Call(object,
- MakeString("windowLocation"),
- 1,
- &argv,
- &exception);
- CHECK(PropertyIsValidValue(PP_VARTYPE_BOOL, retval));
- CHECK(exception.type == PP_VARTYPE_UNDEFINED);
-}
-
-} // namespace
-
-// Called from the fake browser. The object needs to have certain
-// attributes. For each PP_VARTYPE variant,
-// 1) There is a property, of PP_VARTYPE_<TYPE>, named "prop<Type>".
-// 2) SetProperty("prop<Type>", value) only succeeds when value.type == type.
-// 3) GetProperty("prop<Type>") only succeeds when value.type == type,
-// and returns the value set by the corresponding call to SetProperty.
-// 4) Call("prop<Type>", { arg1, arg2 }) only succeeds when arg1.type == type,
-// arg2.type == type. It returns arg1.type.
-void TestScriptableObject(PP_Var object,
- const PPB_Instance* browser_instance_interface,
- const PPB_Var_Deprecated* var_interface,
- PP_Instance instance_id,
- PP_Module browser_module_id) {
- // Receiver needs to be a valid scriptable object. We cannot use
- // is_valid_value here because we haven't set g_object_as_id yet.
- CHECK(object.type == PP_VARTYPE_OBJECT);
- // Save g_object_as_id for future object value validity checks.
- g_object_as_id = object.value.as_id;
- // Initialize the global state.
- g_var_interface = var_interface;
- g_instance_interface = browser_instance_interface;
- g_instance_id = instance_id;
- g_browser_module_id = browser_module_id;
- // And test the scriptable object interfaces one-by-one.
- TestHasProperty(object);
- TestSetProperty(object);
- TestGetProperty(object);
- TestCall(object);
- TestWindowScripting(object);
- // TODO(sehr,polina): add other methods such as RemoveProperty.
-}
« no previous file with comments | « tests/fake_browser_ppapi/test_scriptable.h ('k') | tests/fake_browser_ppapi/utility.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698