Import Cobalt 13.97306
Change-Id: I020449eacf32503499df667c9ca6df3d3ea2b715
diff --git a/src/base/debug/debugger_starboard.cc b/src/base/debug/debugger_starboard.cc
index ee9e762..6945358 100644
--- a/src/base/debug/debugger_starboard.cc
+++ b/src/base/debug/debugger_starboard.cc
@@ -26,7 +26,7 @@
}
bool BeingDebugged() {
-#if defined(__LB_SHELL__FOR_RELEASE__)
+#if defined(COBALT_BUILD_TYPE_GOLD)
return false;
#else
return SbSystemIsDebuggerAttached();
diff --git a/src/base/logging.h b/src/base/logging.h
index 238db8c..0f665ca 100644
--- a/src/base/logging.h
+++ b/src/base/logging.h
@@ -471,7 +471,7 @@
// defined.
#if ( defined(OS_WIN) && defined(OFFICIAL_BUILD)) || \
(!defined(OS_WIN) && defined(NDEBUG) && defined(GOOGLE_CHROME_BUILD)) || \
- defined(__LB_SHELL__FOR_RELEASE__)
+ defined(COBALT_BUILD_TYPE_GOLD)
#define LOGGING_IS_OFFICIAL_BUILD 1
#else
#define LOGGING_IS_OFFICIAL_BUILD 0
@@ -618,7 +618,7 @@
#define CHECK_GT(val1, val2) CHECK_OP(GT, > , val1, val2)
#if LOGGING_IS_OFFICIAL_BUILD || \
- (defined(__LB_SHELL__FOR_QA__) && !defined(__LB_SHELL__FORCE_LOGGING__))
+ (defined(COBALT_BUILD_TYPE_QA) && !defined(__LB_SHELL__FORCE_LOGGING__))
// In order to have optimized code for official builds, remove DLOGs and
// DCHECKs.
#define ENABLE_DLOG 0
@@ -1052,7 +1052,7 @@
#ifndef NOTIMPLEMENTED_POLICY
#if (defined(OS_ANDROID) && defined(OFFICIAL_BUILD)) || \
- defined(__LB_SHELL__FOR_RELEASE__)
+ defined(COBALT_BUILD_TYPE_GOLD)
#define NOTIMPLEMENTED_POLICY 0
#elif defined (__LB_SHELL__) || defined(COBALT)
// Only print each message once.
diff --git a/src/base/logging_unittest.cc b/src/base/logging_unittest.cc
index f0e9f56..8fbe9c7 100644
--- a/src/base/logging_unittest.cc
+++ b/src/base/logging_unittest.cc
@@ -215,7 +215,7 @@
}
TEST_F(LoggingTest, Dcheck) {
-#if LOGGING_IS_OFFICIAL_BUILD
+#if LOGGING_IS_OFFICIAL_BUILD || defined(COBALT_BUILD_TYPE_QA)
// Official build.
EXPECT_FALSE(DCHECK_IS_ON());
EXPECT_FALSE(DLOG_IS_ON(DCHECK));
diff --git a/src/base/metrics/histogram.h b/src/base/metrics/histogram.h
index 74474f3..9fbe631 100644
--- a/src/base/metrics/histogram.h
+++ b/src/base/metrics/histogram.h
@@ -285,7 +285,7 @@
// to record histogram data, and have the data submitted/uploaded via UMA.
// Not all systems support such UMA, but if they do, the following macros
// should work with the service.
-#if defined(__LB_SHELL__FOR_RELEASE__)
+#if defined(COBALT_BUILD_TYPE_GOLD)
#define UMA_HISTOGRAM_TIMES(name, sample) DISCARD_2_ARGUMENTS(name, sample)
#define UMA_HISTOGRAM_MEDIUM_TIMES(name, sample) \
@@ -372,7 +372,7 @@
STATIC_HISTOGRAM_POINTER_BLOCK(name, Add(sample), \
base::CustomHistogram::FactoryGet(name, custom_ranges, \
base::Histogram::kUmaTargetedHistogramFlag))
-#endif // defined(__LB_SHELL__FOR_RELEASE__)
+#endif // defined(COBALT_BUILD_TYPE_GOLD)
//------------------------------------------------------------------------------
diff --git a/src/base/test/main_hook.cc b/src/base/test/main_hook.cc
index d385198..e8e6db0 100644
--- a/src/base/test/main_hook.cc
+++ b/src/base/test/main_hook.cc
@@ -9,7 +9,7 @@
#include "base/command_line.h"
#endif
-#if defined(__LB_SHELL__FOR_RELEASE__)
+#if defined(COBALT_BUILD_TYPE_GOLD)
#error You cannot build unit tests in gold builds.
#endif
diff --git a/src/base/tracked_objects.cc b/src/base/tracked_objects.cc
index 9165169..b4ceb23 100644
--- a/src/base/tracked_objects.cc
+++ b/src/base/tracked_objects.cc
@@ -22,7 +22,7 @@
namespace {
// Flag to compile out almost all of the task tracking code.
-#if defined(__LB_SHELL__FOR_RELEASE__)
+#if defined(COBALT_BUILD_TYPE_GOLD)
const bool kTrackAllTaskObjects = false;
#else
const bool kTrackAllTaskObjects = true;
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/derived_dictionary.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/derived_dictionary.h
deleted file mode 100644
index cd27ab6..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/derived_dictionary.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright 2017 Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/templates/dictionary.h.template
-
-#ifndef DerivedDictionary_h
-#define DerivedDictionary_h
-
-#include <string>
-
-#include "base/optional.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/script/sequence.h"
-#include "cobalt/script/value_handle.h"
-#include "cobalt/bindings/testing/test_dictionary.h"
-
-using cobalt::bindings::testing::TestDictionary;
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class DerivedDictionary : public cobalt::bindings::testing::TestDictionary {
- public:
- DerivedDictionary() {
- additional_member_ = false;
- }
-
- DerivedDictionary(const DerivedDictionary& other)
- : cobalt::bindings::testing::TestDictionary(other) {
- additional_member_ = other.additional_member_;
- }
-
- DerivedDictionary& operator=(const DerivedDictionary& other) {
- cobalt::bindings::testing::TestDictionary::operator=(other);
- additional_member_ = other.additional_member_;
- return *this;
- }
-
- bool has_additional_member() const {
- return true;
- }
- bool additional_member() const {
- return additional_member_;
- }
- void set_additional_member(bool value) {
- additional_member_ = value;
- }
-
- private:
- bool additional_member_;
-};
-
-// This ostream override is necessary for MOCK_METHODs commonly used
-// in idl test code
-inline std::ostream& operator<<(
- std::ostream& stream, const cobalt::bindings::testing::DerivedDictionary& in) {
- UNREFERENCED_PARAMETER(in);
- stream << "[DerivedDictionary]";
- return stream;
-}
-
-} // namespace cobalt
-} // namespace bindings
-} // namespace testing
-
-#endif // DerivedDictionary_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/dictionary_with_dictionary_member.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/dictionary_with_dictionary_member.h
deleted file mode 100644
index 02dbce6..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/dictionary_with_dictionary_member.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright 2017 Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/templates/dictionary.h.template
-
-#ifndef DictionaryWithDictionaryMember_h
-#define DictionaryWithDictionaryMember_h
-
-#include <string>
-
-#include "base/optional.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/script/sequence.h"
-#include "cobalt/script/value_handle.h"
-#include "cobalt/bindings/testing/test_dictionary.h"
-
-using cobalt::bindings::testing::TestDictionary;
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class DictionaryWithDictionaryMember {
- public:
- DictionaryWithDictionaryMember() {
- has_nested_dictionary_ = false;
- nested_dictionary_ = TestDictionary();
- }
-
- DictionaryWithDictionaryMember(const DictionaryWithDictionaryMember& other) {
- has_nested_dictionary_ = other.has_nested_dictionary_;
- nested_dictionary_ = other.nested_dictionary_;
- }
-
- DictionaryWithDictionaryMember& operator=(const DictionaryWithDictionaryMember& other) {
- has_nested_dictionary_ = other.has_nested_dictionary_;
- nested_dictionary_ = other.nested_dictionary_;
- return *this;
- }
-
- bool has_nested_dictionary() const {
- return has_nested_dictionary_;
- }
- TestDictionary nested_dictionary() const {
- DCHECK(has_nested_dictionary_);
- return nested_dictionary_;
- }
- void set_nested_dictionary(TestDictionary value) {
- has_nested_dictionary_ = true;
- nested_dictionary_ = value;
- }
-
- private:
- bool has_nested_dictionary_;
- TestDictionary nested_dictionary_;
-};
-
-// This ostream override is necessary for MOCK_METHODs commonly used
-// in idl test code
-inline std::ostream& operator<<(
- std::ostream& stream, const cobalt::bindings::testing::DictionaryWithDictionaryMember& in) {
- UNREFERENCED_PARAMETER(in);
- stream << "[DictionaryWithDictionaryMember]";
- return stream;
-}
-
-} // namespace cobalt
-} // namespace bindings
-} // namespace testing
-
-#endif // DictionaryWithDictionaryMember_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_anonymous_indexed_getter_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_anonymous_indexed_getter_interface.cc
deleted file mode 100644
index 806ac70..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_anonymous_indexed_getter_interface.cc
+++ /dev/null
@@ -1,507 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_anonymous_indexed_getter_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::AnonymousIndexedGetterInterface;
-using cobalt::bindings::testing::MozjsAnonymousIndexedGetterInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-bool IsSupportedIndexProperty(JSContext* context, JS::HandleObject object,
- uint32_t index) {
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- AnonymousIndexedGetterInterface* impl =
- wrapper_private->wrappable<AnonymousIndexedGetterInterface>().get();
- return index < impl->length();
-}
-
-void EnumerateSupportedIndexes(JSContext* context, JS::HandleObject object,
- JS::AutoIdVector* properties) {
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- AnonymousIndexedGetterInterface* impl =
- wrapper_private->wrappable<AnonymousIndexedGetterInterface>().get();
- const uint32_t kNumIndexedProperties = impl->length();
- for (uint32_t i = 0; i < kNumIndexedProperties; ++i) {
- properties->append(INT_TO_JSID(i));
- }
-}
-
-JSBool GetIndexedProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- JS::RootedValue id_value(context);
- if (!JS_IdToValue(context, id, id_value.address())) {
- NOTREACHED();
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- AnonymousIndexedGetterInterface* impl =
- wrapper_private->wrappable<AnonymousIndexedGetterInterface>().get();
- uint32_t index;
- FromJSValue(context, id_value, kNoConversionFlags, &exception_state, &index);
- if (exception_state.is_exception_set()) {
- // The ID should be an integer or a string, so we shouldn't have any
- // exceptions converting to string.
- NOTREACHED();
- return false;
- }
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->AnonymousIndexedGetter(index),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool SetIndexedProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- JS::RootedValue id_value(context);
- if (!JS_IdToValue(context, id, id_value.address())) {
- NOTREACHED();
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- AnonymousIndexedGetterInterface* impl =
- wrapper_private->wrappable<AnonymousIndexedGetterInterface>().get();
- uint32_t index;
- FromJSValue(context, id_value, kNoConversionFlags, &exception_state, &index);
- if(exception_state.is_exception_set()) {
- // The ID should be an integer or a string, so we shouldn't have any
- // exceptions converting to string.
- NOTREACHED();
- return false;
- }
- TypeTraits<uint32_t >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags,
- &exception_state, &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->AnonymousIndexedSetter(index, value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-class MozjsAnonymousIndexedGetterInterfaceHandler : public ProxyHandler {
- public:
- MozjsAnonymousIndexedGetterInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsAnonymousIndexedGetterInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsAnonymousIndexedGetterInterfaceHandler::indexed_property_hooks = {
- IsSupportedIndexProperty,
- EnumerateSupportedIndexes,
- GetIndexedProperty,
- SetIndexedProperty,
- NULL,
-};
-
-static base::LazyInstance<MozjsAnonymousIndexedGetterInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsAnonymousIndexedGetterInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "AnonymousIndexedGetterInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "AnonymousIndexedGetterInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "AnonymousIndexedGetterInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-JSBool get_length(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsAnonymousIndexedGetterInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<AnonymousIndexedGetterInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- AnonymousIndexedGetterInterface* impl =
- wrapper_private->wrappable<AnonymousIndexedGetterInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->length(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- { // Readonly attribute
- "length", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE | JSPROP_READONLY,
- JSOP_WRAPPER(&get_length),
- JSOP_NULLWRAPPER,
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "AnonymousIndexedGetterInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsAnonymousIndexedGetterInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsAnonymousIndexedGetterInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsAnonymousIndexedGetterInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsAnonymousIndexedGetterInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_anonymous_indexed_getter_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_anonymous_indexed_getter_interface.h
deleted file mode 100644
index e00f429..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_anonymous_indexed_getter_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsAnonymousIndexedGetterInterface_h
-#define MozjsAnonymousIndexedGetterInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/anonymous_indexed_getter_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsAnonymousIndexedGetterInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsAnonymousIndexedGetterInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_anonymous_named_getter_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_anonymous_named_getter_interface.cc
deleted file mode 100644
index a0d23a1..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_anonymous_named_getter_interface.cc
+++ /dev/null
@@ -1,461 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_anonymous_named_getter_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::AnonymousNamedGetterInterface;
-using cobalt::bindings::testing::MozjsAnonymousNamedGetterInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-bool IsSupportedNamedProperty(JSContext* context, JS::HandleObject object,
- const std::string& property_name) {
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- AnonymousNamedGetterInterface* impl =
- wrapper_private->wrappable<AnonymousNamedGetterInterface>().get();
- return impl->CanQueryNamedProperty(property_name);
-}
-
-void EnumerateSupportedNames(JSContext* context, JS::HandleObject object,
- JS::AutoIdVector* properties) {
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- AnonymousNamedGetterInterface* impl =
- wrapper_private->wrappable<AnonymousNamedGetterInterface>().get();
- MozjsPropertyEnumerator enumerator(context, properties);
- impl->EnumerateNamedProperties(&enumerator);
-}
-
-JSBool GetNamedProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- JS::RootedValue id_value(context);
- if (!JS_IdToValue(context, id, id_value.address())) {
- NOTREACHED();
- return false;
- }
-
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- AnonymousNamedGetterInterface* impl =
- wrapper_private->wrappable<AnonymousNamedGetterInterface>().get();
- std::string property_name;
- FromJSValue(context, id_value, kNoConversionFlags, &exception_state,
- &property_name);
- if (exception_state.is_exception_set()) {
- // The ID should be an integer or a string, so we shouldn't have any
- // exceptions converting to string.
- NOTREACHED();
- return false;
- }
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->AnonymousNamedGetter(property_name),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool SetNamedProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- JS::RootedValue id_value(context);
- if (!JS_IdToValue(context, id, id_value.address())) {
- NOTREACHED();
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- AnonymousNamedGetterInterface* impl =
- wrapper_private->wrappable<AnonymousNamedGetterInterface>().get();
- std::string property_name;
- FromJSValue(context, id_value, kNoConversionFlags, &exception_state,
- &property_name);
- if (exception_state.is_exception_set()) {
- // The ID should be an integer or a string, so we shouldn't have any
- // exceptions converting to string.
- NOTREACHED();
- return false;
- }
- TypeTraits<std::string >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags,
- &exception_state, &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->AnonymousNamedSetter(property_name, value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-class MozjsAnonymousNamedGetterInterfaceHandler : public ProxyHandler {
- public:
- MozjsAnonymousNamedGetterInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsAnonymousNamedGetterInterfaceHandler::named_property_hooks = {
- IsSupportedNamedProperty,
- EnumerateSupportedNames,
- GetNamedProperty,
- SetNamedProperty,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsAnonymousNamedGetterInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsAnonymousNamedGetterInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsAnonymousNamedGetterInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "AnonymousNamedGetterInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "AnonymousNamedGetterInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "AnonymousNamedGetterInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "AnonymousNamedGetterInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsAnonymousNamedGetterInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsAnonymousNamedGetterInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsAnonymousNamedGetterInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsAnonymousNamedGetterInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_anonymous_named_getter_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_anonymous_named_getter_interface.h
deleted file mode 100644
index 4084d40..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_anonymous_named_getter_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsAnonymousNamedGetterInterface_h
-#define MozjsAnonymousNamedGetterInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/anonymous_named_getter_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsAnonymousNamedGetterInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsAnonymousNamedGetterInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_anonymous_named_indexed_getter_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_anonymous_named_indexed_getter_interface.cc
deleted file mode 100644
index 717863b..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_anonymous_named_indexed_getter_interface.cc
+++ /dev/null
@@ -1,599 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_anonymous_named_indexed_getter_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::AnonymousNamedIndexedGetterInterface;
-using cobalt::bindings::testing::MozjsAnonymousNamedIndexedGetterInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-bool IsSupportedNamedProperty(JSContext* context, JS::HandleObject object,
- const std::string& property_name) {
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- AnonymousNamedIndexedGetterInterface* impl =
- wrapper_private->wrappable<AnonymousNamedIndexedGetterInterface>().get();
- return impl->CanQueryNamedProperty(property_name);
-}
-
-void EnumerateSupportedNames(JSContext* context, JS::HandleObject object,
- JS::AutoIdVector* properties) {
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- AnonymousNamedIndexedGetterInterface* impl =
- wrapper_private->wrappable<AnonymousNamedIndexedGetterInterface>().get();
- MozjsPropertyEnumerator enumerator(context, properties);
- impl->EnumerateNamedProperties(&enumerator);
-}
-
-JSBool GetNamedProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- JS::RootedValue id_value(context);
- if (!JS_IdToValue(context, id, id_value.address())) {
- NOTREACHED();
- return false;
- }
-
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- AnonymousNamedIndexedGetterInterface* impl =
- wrapper_private->wrappable<AnonymousNamedIndexedGetterInterface>().get();
- std::string property_name;
- FromJSValue(context, id_value, kNoConversionFlags, &exception_state,
- &property_name);
- if (exception_state.is_exception_set()) {
- // The ID should be an integer or a string, so we shouldn't have any
- // exceptions converting to string.
- NOTREACHED();
- return false;
- }
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->AnonymousNamedGetter(property_name),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool SetNamedProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- JS::RootedValue id_value(context);
- if (!JS_IdToValue(context, id, id_value.address())) {
- NOTREACHED();
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- AnonymousNamedIndexedGetterInterface* impl =
- wrapper_private->wrappable<AnonymousNamedIndexedGetterInterface>().get();
- std::string property_name;
- FromJSValue(context, id_value, kNoConversionFlags, &exception_state,
- &property_name);
- if (exception_state.is_exception_set()) {
- // The ID should be an integer or a string, so we shouldn't have any
- // exceptions converting to string.
- NOTREACHED();
- return false;
- }
- TypeTraits<std::string >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags,
- &exception_state, &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->AnonymousNamedSetter(property_name, value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-bool IsSupportedIndexProperty(JSContext* context, JS::HandleObject object,
- uint32_t index) {
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- AnonymousNamedIndexedGetterInterface* impl =
- wrapper_private->wrappable<AnonymousNamedIndexedGetterInterface>().get();
- return index < impl->length();
-}
-
-void EnumerateSupportedIndexes(JSContext* context, JS::HandleObject object,
- JS::AutoIdVector* properties) {
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- AnonymousNamedIndexedGetterInterface* impl =
- wrapper_private->wrappable<AnonymousNamedIndexedGetterInterface>().get();
- const uint32_t kNumIndexedProperties = impl->length();
- for (uint32_t i = 0; i < kNumIndexedProperties; ++i) {
- properties->append(INT_TO_JSID(i));
- }
-}
-
-JSBool GetIndexedProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- JS::RootedValue id_value(context);
- if (!JS_IdToValue(context, id, id_value.address())) {
- NOTREACHED();
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- AnonymousNamedIndexedGetterInterface* impl =
- wrapper_private->wrappable<AnonymousNamedIndexedGetterInterface>().get();
- uint32_t index;
- FromJSValue(context, id_value, kNoConversionFlags, &exception_state, &index);
- if (exception_state.is_exception_set()) {
- // The ID should be an integer or a string, so we shouldn't have any
- // exceptions converting to string.
- NOTREACHED();
- return false;
- }
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->AnonymousIndexedGetter(index),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool SetIndexedProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- JS::RootedValue id_value(context);
- if (!JS_IdToValue(context, id, id_value.address())) {
- NOTREACHED();
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- AnonymousNamedIndexedGetterInterface* impl =
- wrapper_private->wrappable<AnonymousNamedIndexedGetterInterface>().get();
- uint32_t index;
- FromJSValue(context, id_value, kNoConversionFlags, &exception_state, &index);
- if(exception_state.is_exception_set()) {
- // The ID should be an integer or a string, so we shouldn't have any
- // exceptions converting to string.
- NOTREACHED();
- return false;
- }
- TypeTraits<uint32_t >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags,
- &exception_state, &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->AnonymousIndexedSetter(index, value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-class MozjsAnonymousNamedIndexedGetterInterfaceHandler : public ProxyHandler {
- public:
- MozjsAnonymousNamedIndexedGetterInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsAnonymousNamedIndexedGetterInterfaceHandler::named_property_hooks = {
- IsSupportedNamedProperty,
- EnumerateSupportedNames,
- GetNamedProperty,
- SetNamedProperty,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsAnonymousNamedIndexedGetterInterfaceHandler::indexed_property_hooks = {
- IsSupportedIndexProperty,
- EnumerateSupportedIndexes,
- GetIndexedProperty,
- SetIndexedProperty,
- NULL,
-};
-
-static base::LazyInstance<MozjsAnonymousNamedIndexedGetterInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsAnonymousNamedIndexedGetterInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "AnonymousNamedIndexedGetterInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "AnonymousNamedIndexedGetterInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "AnonymousNamedIndexedGetterInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-JSBool get_length(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsAnonymousNamedIndexedGetterInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<AnonymousNamedIndexedGetterInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- AnonymousNamedIndexedGetterInterface* impl =
- wrapper_private->wrappable<AnonymousNamedIndexedGetterInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->length(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- { // Readonly attribute
- "length", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE | JSPROP_READONLY,
- JSOP_WRAPPER(&get_length),
- JSOP_NULLWRAPPER,
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "AnonymousNamedIndexedGetterInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsAnonymousNamedIndexedGetterInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsAnonymousNamedIndexedGetterInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsAnonymousNamedIndexedGetterInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsAnonymousNamedIndexedGetterInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_anonymous_named_indexed_getter_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_anonymous_named_indexed_getter_interface.h
deleted file mode 100644
index c615c45..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_anonymous_named_indexed_getter_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsAnonymousNamedIndexedGetterInterface_h
-#define MozjsAnonymousNamedIndexedGetterInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/anonymous_named_indexed_getter_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsAnonymousNamedIndexedGetterInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsAnonymousNamedIndexedGetterInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_arbitrary_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_arbitrary_interface.cc
deleted file mode 100644
index 9c7df9d..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_arbitrary_interface.cc
+++ /dev/null
@@ -1,535 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_arbitrary_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::ArbitraryInterface;
-using cobalt::bindings::testing::MozjsArbitraryInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsArbitraryInterfaceHandler : public ProxyHandler {
- public:
- MozjsArbitraryInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsArbitraryInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsArbitraryInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsArbitraryInterfaceHandler>
- proxy_handler;
-
-JSBool Constructor(JSContext* context, unsigned int argc, JS::Value* vp);
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsArbitraryInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "ArbitraryInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "ArbitraryInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "ArbitraryInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- interface_object_class->construct = Constructor;
- return interface_data;
-}
-
-JSBool get_arbitraryProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsArbitraryInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ArbitraryInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- ArbitraryInterface* impl =
- wrapper_private->wrappable<ArbitraryInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->arbitrary_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_arbitraryProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsArbitraryInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ArbitraryInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- ArbitraryInterface* impl =
- wrapper_private->wrappable<ArbitraryInterface>().get();
- TypeTraits<std::string >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_arbitrary_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_arbitraryFunction(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsArbitraryInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ArbitraryInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- ArbitraryInterface* impl =
- wrapper_private->wrappable<ArbitraryInterface>().get();
-
- impl->ArbitraryFunction();
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- { // Read/Write property
- "arbitraryProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_arbitraryProperty),
- JSOP_WRAPPER(&set_arbitraryProperty),
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- {
- "arbitraryFunction",
- JSOP_WRAPPER(&fcn_arbitraryFunction),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "ArbitraryInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Add the InterfaceObject.length property. It is set to the length of the
- // shortest argument list of all overload constructors.
- JS::RootedValue length_value(context);
- length_value.setInt32(0);
- success =
- JS_DefineProperty(context, rooted_interface_object, "length",
- length_value, JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsArbitraryInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsArbitraryInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsArbitraryInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsArbitraryInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-JSBool Constructor(JSContext* context, unsigned int argc, JS::Value* vp) {
- MozjsExceptionState exception_state(context);
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-
- scoped_refptr<ArbitraryInterface> new_object =
- new ArbitraryInterface();
- JS::RootedValue result_value(context);
- ToJSValue(context, new_object, &result_value);
- DCHECK(result_value.isObject());
- JS::RootedObject result_object(context, JSVAL_TO_OBJECT(result_value));
- args.rval().setObject(*result_object);
- return true;
-}
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_arbitrary_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_arbitrary_interface.h
deleted file mode 100644
index e88e87b..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_arbitrary_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsArbitraryInterface_h
-#define MozjsArbitraryInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/arbitrary_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsArbitraryInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsArbitraryInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_base_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_base_interface.cc
deleted file mode 100644
index a810666..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_base_interface.cc
+++ /dev/null
@@ -1,494 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_base_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::BaseInterface;
-using cobalt::bindings::testing::MozjsBaseInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsBaseInterfaceHandler : public ProxyHandler {
- public:
- MozjsBaseInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsBaseInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsBaseInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsBaseInterfaceHandler>
- proxy_handler;
-
-JSBool Constructor(JSContext* context, unsigned int argc, JS::Value* vp);
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsBaseInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "BaseInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "BaseInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "BaseInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- interface_object_class->construct = Constructor;
- return interface_data;
-}
-
-JSBool get_baseAttribute(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsBaseInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<BaseInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- BaseInterface* impl =
- wrapper_private->wrappable<BaseInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->base_attribute(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_baseOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsBaseInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<BaseInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- BaseInterface* impl =
- wrapper_private->wrappable<BaseInterface>().get();
-
- impl->BaseOperation();
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- { // Readonly attribute
- "baseAttribute", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE | JSPROP_READONLY,
- JSOP_WRAPPER(&get_baseAttribute),
- JSOP_NULLWRAPPER,
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- {
- "baseOperation",
- JSOP_WRAPPER(&fcn_baseOperation),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "BaseInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Add the InterfaceObject.length property. It is set to the length of the
- // shortest argument list of all overload constructors.
- JS::RootedValue length_value(context);
- length_value.setInt32(0);
- success =
- JS_DefineProperty(context, rooted_interface_object, "length",
- length_value, JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsBaseInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsBaseInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsBaseInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsBaseInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-JSBool Constructor(JSContext* context, unsigned int argc, JS::Value* vp) {
- MozjsExceptionState exception_state(context);
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-
- scoped_refptr<BaseInterface> new_object =
- new BaseInterface();
- JS::RootedValue result_value(context);
- ToJSValue(context, new_object, &result_value);
- DCHECK(result_value.isObject());
- JS::RootedObject result_object(context, JSVAL_TO_OBJECT(result_value));
- args.rval().setObject(*result_object);
- return true;
-}
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_base_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_base_interface.h
deleted file mode 100644
index 735658e..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_base_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsBaseInterface_h
-#define MozjsBaseInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/base_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsBaseInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsBaseInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_boolean_type_test_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_boolean_type_test_interface.cc
deleted file mode 100644
index a972552..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_boolean_type_test_interface.cc
+++ /dev/null
@@ -1,587 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_boolean_type_test_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::BooleanTypeTestInterface;
-using cobalt::bindings::testing::MozjsBooleanTypeTestInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsBooleanTypeTestInterfaceHandler : public ProxyHandler {
- public:
- MozjsBooleanTypeTestInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsBooleanTypeTestInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsBooleanTypeTestInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsBooleanTypeTestInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsBooleanTypeTestInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "BooleanTypeTestInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "BooleanTypeTestInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "BooleanTypeTestInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-JSBool get_booleanProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsBooleanTypeTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<BooleanTypeTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- BooleanTypeTestInterface* impl =
- wrapper_private->wrappable<BooleanTypeTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->boolean_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_booleanProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsBooleanTypeTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<BooleanTypeTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- BooleanTypeTestInterface* impl =
- wrapper_private->wrappable<BooleanTypeTestInterface>().get();
- TypeTraits<bool >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_boolean_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_booleanArgumentOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsBooleanTypeTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<BooleanTypeTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- BooleanTypeTestInterface* impl =
- wrapper_private->wrappable<BooleanTypeTestInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<bool >::ConversionType arg1;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &arg1);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->BooleanArgumentOperation(arg1);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_booleanReturnOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsBooleanTypeTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<BooleanTypeTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- BooleanTypeTestInterface* impl =
- wrapper_private->wrappable<BooleanTypeTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->BooleanReturnOperation(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- { // Read/Write property
- "booleanProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_booleanProperty),
- JSOP_WRAPPER(&set_booleanProperty),
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- {
- "booleanArgumentOperation",
- JSOP_WRAPPER(&fcn_booleanArgumentOperation),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "booleanReturnOperation",
- JSOP_WRAPPER(&fcn_booleanReturnOperation),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "BooleanTypeTestInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsBooleanTypeTestInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsBooleanTypeTestInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsBooleanTypeTestInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsBooleanTypeTestInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_boolean_type_test_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_boolean_type_test_interface.h
deleted file mode 100644
index 18e3077..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_boolean_type_test_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsBooleanTypeTestInterface_h
-#define MozjsBooleanTypeTestInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/boolean_type_test_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsBooleanTypeTestInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsBooleanTypeTestInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_callback_function_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_callback_function_interface.cc
deleted file mode 100644
index 5c0218b..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_callback_function_interface.cc
+++ /dev/null
@@ -1,904 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_callback_function_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/bindings/testing/arbitrary_interface.h"
-#include "cobalt/bindings/testing/mozjs_arbitrary_interface.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::CallbackFunctionInterface;
-using cobalt::bindings::testing::MozjsCallbackFunctionInterface;
-using cobalt::bindings::testing::ArbitraryInterface;
-using cobalt::bindings::testing::MozjsArbitraryInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsCallbackFunctionInterfaceHandler : public ProxyHandler {
- public:
- MozjsCallbackFunctionInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsCallbackFunctionInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsCallbackFunctionInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsCallbackFunctionInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsCallbackFunctionInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "CallbackFunctionInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "CallbackFunctionInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "CallbackFunctionInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-JSBool get_callbackAttribute(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsCallbackFunctionInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<CallbackFunctionInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- CallbackFunctionInterface* impl =
- wrapper_private->wrappable<CallbackFunctionInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->callback_attribute(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_callbackAttribute(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsCallbackFunctionInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<CallbackFunctionInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- CallbackFunctionInterface* impl =
- wrapper_private->wrappable<CallbackFunctionInterface>().get();
- TypeTraits<CallbackFunctionInterface::VoidFunction >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_callback_attribute(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_nullableCallbackAttribute(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsCallbackFunctionInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<CallbackFunctionInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- CallbackFunctionInterface* impl =
- wrapper_private->wrappable<CallbackFunctionInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->nullable_callback_attribute(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_nullableCallbackAttribute(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsCallbackFunctionInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<CallbackFunctionInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- CallbackFunctionInterface* impl =
- wrapper_private->wrappable<CallbackFunctionInterface>().get();
- TypeTraits<CallbackFunctionInterface::VoidFunction >::ConversionType value;
- FromJSValue(context, vp, (kConversionFlagNullable), &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_nullable_callback_attribute(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_takesFunctionThatReturnsString(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsCallbackFunctionInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<CallbackFunctionInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- CallbackFunctionInterface* impl =
- wrapper_private->wrappable<CallbackFunctionInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<CallbackFunctionInterface::FunctionThatReturnsString >::ConversionType cb;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &cb);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->TakesFunctionThatReturnsString(cb);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_takesFunctionWithNullableParameters(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsCallbackFunctionInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<CallbackFunctionInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- CallbackFunctionInterface* impl =
- wrapper_private->wrappable<CallbackFunctionInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<CallbackFunctionInterface::FunctionWithNullableParameters >::ConversionType cb;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &cb);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->TakesFunctionWithNullableParameters(cb);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_takesFunctionWithOneParameter(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsCallbackFunctionInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<CallbackFunctionInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- CallbackFunctionInterface* impl =
- wrapper_private->wrappable<CallbackFunctionInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<CallbackFunctionInterface::FunctionWithOneParameter >::ConversionType cb;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &cb);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->TakesFunctionWithOneParameter(cb);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_takesFunctionWithSeveralParameters(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsCallbackFunctionInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<CallbackFunctionInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- CallbackFunctionInterface* impl =
- wrapper_private->wrappable<CallbackFunctionInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<CallbackFunctionInterface::FunctionWithSeveralParameters >::ConversionType cb;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &cb);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->TakesFunctionWithSeveralParameters(cb);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_takesVoidFunction(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsCallbackFunctionInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<CallbackFunctionInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- CallbackFunctionInterface* impl =
- wrapper_private->wrappable<CallbackFunctionInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<CallbackFunctionInterface::VoidFunction >::ConversionType cb;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &cb);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->TakesVoidFunction(cb);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- { // Read/Write property
- "callbackAttribute", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_callbackAttribute),
- JSOP_WRAPPER(&set_callbackAttribute),
- },
- { // Read/Write property
- "nullableCallbackAttribute", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_nullableCallbackAttribute),
- JSOP_WRAPPER(&set_nullableCallbackAttribute),
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- {
- "takesFunctionThatReturnsString",
- JSOP_WRAPPER(&fcn_takesFunctionThatReturnsString),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "takesFunctionWithNullableParameters",
- JSOP_WRAPPER(&fcn_takesFunctionWithNullableParameters),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "takesFunctionWithOneParameter",
- JSOP_WRAPPER(&fcn_takesFunctionWithOneParameter),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "takesFunctionWithSeveralParameters",
- JSOP_WRAPPER(&fcn_takesFunctionWithSeveralParameters),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "takesVoidFunction",
- JSOP_WRAPPER(&fcn_takesVoidFunction),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "CallbackFunctionInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsCallbackFunctionInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsCallbackFunctionInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsCallbackFunctionInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsCallbackFunctionInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_callback_function_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_callback_function_interface.h
deleted file mode 100644
index 8a34743..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_callback_function_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsCallbackFunctionInterface_h
-#define MozjsCallbackFunctionInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/callback_function_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsCallbackFunctionInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsCallbackFunctionInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_callback_interface_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_callback_interface_interface.cc
deleted file mode 100644
index 045f8e2..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_callback_interface_interface.cc
+++ /dev/null
@@ -1,585 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_callback_interface_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/bindings/testing/mozjs_single_operation_interface.h"
-#include "cobalt/bindings/testing/single_operation_interface.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::CallbackInterfaceInterface;
-using cobalt::bindings::testing::MozjsCallbackInterfaceInterface;
-using cobalt::bindings::testing::MozjsSingleOperationInterface;
-using cobalt::bindings::testing::SingleOperationInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsCallbackInterfaceInterfaceHandler : public ProxyHandler {
- public:
- MozjsCallbackInterfaceInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsCallbackInterfaceInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsCallbackInterfaceInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsCallbackInterfaceInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsCallbackInterfaceInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "CallbackInterfaceInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "CallbackInterfaceInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "CallbackInterfaceInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-JSBool get_callbackAttribute(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsCallbackInterfaceInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<CallbackInterfaceInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- CallbackInterfaceInterface* impl =
- wrapper_private->wrappable<CallbackInterfaceInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->callback_attribute(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_callbackAttribute(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsCallbackInterfaceInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<CallbackInterfaceInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- CallbackInterfaceInterface* impl =
- wrapper_private->wrappable<CallbackInterfaceInterface>().get();
- TypeTraits<::cobalt::script::CallbackInterfaceTraits<SingleOperationInterface > >::ConversionType value;
- FromJSValue(context, vp, (kConversionFlagNullable), &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_callback_attribute(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_registerCallback(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsCallbackInterfaceInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<CallbackInterfaceInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- CallbackInterfaceInterface* impl =
- wrapper_private->wrappable<CallbackInterfaceInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<::cobalt::script::CallbackInterfaceTraits<SingleOperationInterface > >::ConversionType callback_interface;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &callback_interface);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->RegisterCallback(callback_interface);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_someOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsCallbackInterfaceInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<CallbackInterfaceInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- CallbackInterfaceInterface* impl =
- wrapper_private->wrappable<CallbackInterfaceInterface>().get();
-
- impl->SomeOperation();
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- { // Read/Write property
- "callbackAttribute", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_callbackAttribute),
- JSOP_WRAPPER(&set_callbackAttribute),
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- {
- "registerCallback",
- JSOP_WRAPPER(&fcn_registerCallback),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "someOperation",
- JSOP_WRAPPER(&fcn_someOperation),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "CallbackInterfaceInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsCallbackInterfaceInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsCallbackInterfaceInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsCallbackInterfaceInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsCallbackInterfaceInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_callback_interface_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_callback_interface_interface.h
deleted file mode 100644
index 98a8b45..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_callback_interface_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsCallbackInterfaceInterface_h
-#define MozjsCallbackInterfaceInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/callback_interface_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsCallbackInterfaceInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsCallbackInterfaceInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_conditional_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_conditional_interface.cc
deleted file mode 100644
index fc0d3f4..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_conditional_interface.cc
+++ /dev/null
@@ -1,670 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#if defined(ENABLE_CONDITIONAL_INTERFACE)
-
-#include "cobalt/bindings/testing/mozjs_conditional_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::ConditionalInterface;
-using cobalt::bindings::testing::MozjsConditionalInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsConditionalInterfaceHandler : public ProxyHandler {
- public:
- MozjsConditionalInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsConditionalInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsConditionalInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsConditionalInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsConditionalInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "ConditionalInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "ConditionalInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "ConditionalInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-#if defined(ENABLE_CONDITIONAL_PROPERTY)
-JSBool get_enabledAttribute(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsConditionalInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ConditionalInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- ConditionalInterface* impl =
- wrapper_private->wrappable<ConditionalInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->enabled_attribute(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_enabledAttribute(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsConditionalInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ConditionalInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- ConditionalInterface* impl =
- wrapper_private->wrappable<ConditionalInterface>().get();
- TypeTraits<int32_t >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_enabled_attribute(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-#endif // ENABLE_CONDITIONAL_PROPERTY
-#if defined(NO_ENABLE_CONDITIONAL_PROPERTY)
-JSBool get_disabledAttribute(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsConditionalInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ConditionalInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- ConditionalInterface* impl =
- wrapper_private->wrappable<ConditionalInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->disabled_attribute(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_disabledAttribute(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsConditionalInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ConditionalInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- ConditionalInterface* impl =
- wrapper_private->wrappable<ConditionalInterface>().get();
- TypeTraits<int32_t >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_disabled_attribute(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-#endif // NO_ENABLE_CONDITIONAL_PROPERTY
-#if defined(NO_ENABLE_CONDITIONAL_PROPERTY)
-JSBool fcn_disabledOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsConditionalInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ConditionalInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- ConditionalInterface* impl =
- wrapper_private->wrappable<ConditionalInterface>().get();
-
- impl->DisabledOperation();
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-#endif // NO_ENABLE_CONDITIONAL_PROPERTY
-#if defined(ENABLE_CONDITIONAL_PROPERTY)
-JSBool fcn_enabledOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsConditionalInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ConditionalInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- ConditionalInterface* impl =
- wrapper_private->wrappable<ConditionalInterface>().get();
-
- impl->EnabledOperation();
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-#endif // ENABLE_CONDITIONAL_PROPERTY
-
-const JSPropertySpec prototype_properties[] = {
-#if defined(ENABLE_CONDITIONAL_PROPERTY)
- { // Read/Write property
- "enabledAttribute", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_enabledAttribute),
- JSOP_WRAPPER(&set_enabledAttribute),
- },
-#endif // ENABLE_CONDITIONAL_PROPERTY
-#if defined(NO_ENABLE_CONDITIONAL_PROPERTY)
- { // Read/Write property
- "disabledAttribute", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_disabledAttribute),
- JSOP_WRAPPER(&set_disabledAttribute),
- },
-#endif // NO_ENABLE_CONDITIONAL_PROPERTY
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
-#if defined(NO_ENABLE_CONDITIONAL_PROPERTY)
- {
- "disabledOperation",
- JSOP_WRAPPER(&fcn_disabledOperation),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
-#endif // NO_ENABLE_CONDITIONAL_PROPERTY
-#if defined(ENABLE_CONDITIONAL_PROPERTY)
- {
- "enabledOperation",
- JSOP_WRAPPER(&fcn_enabledOperation),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
-#endif // ENABLE_CONDITIONAL_PROPERTY
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "ConditionalInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsConditionalInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsConditionalInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsConditionalInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsConditionalInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-#endif // defined(ENABLE_CONDITIONAL_INTERFACE)
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_conditional_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_conditional_interface.h
deleted file mode 100644
index fd13293..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_conditional_interface.h
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsConditionalInterface_h
-#define MozjsConditionalInterface_h
-
-#if defined(ENABLE_CONDITIONAL_INTERFACE)
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/conditional_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsConditionalInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // defined(ENABLE_CONDITIONAL_INTERFACE)
-
-#endif // MozjsConditionalInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_constants_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_constants_interface.cc
deleted file mode 100644
index 589bf2c..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_constants_interface.cc
+++ /dev/null
@@ -1,422 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_constants_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::ConstantsInterface;
-using cobalt::bindings::testing::MozjsConstantsInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsConstantsInterfaceHandler : public ProxyHandler {
- public:
- MozjsConstantsInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsConstantsInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsConstantsInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsConstantsInterfaceHandler>
- proxy_handler;
-
-JSBool get_INTEGER_CONSTANT(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- COMPILE_ASSERT(ConstantsInterface::kIntegerConstant == 5,
- ValueForConstantsInterface_kIntegerConstantDoesNotMatchIDL);
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
- ToJSValue(context, 5, &result_value);
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool get_DOUBLE_CONSTANT(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- DCHECK_EQ(2.718, ConstantsInterface::kDoubleConstant) <<
- "The value for ConstantsInterface::kDoubleConstant does not match "
- "the value in the interface definition.";
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
- ToJSValue(context, 2.718, &result_value);
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsConstantsInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "ConstantsInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "ConstantsInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "ConstantsInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- {
- "INTEGER_CONSTANT", 0,
- JSPROP_PERMANENT | JSPROP_READONLY | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_INTEGER_CONSTANT),
- JSOP_NULLWRAPPER,
- },
- {
- "DOUBLE_CONSTANT", 0,
- JSPROP_PERMANENT | JSPROP_READONLY | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_DOUBLE_CONSTANT),
- JSOP_NULLWRAPPER,
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- {
- "INTEGER_CONSTANT", 0,
- JSPROP_PERMANENT | JSPROP_READONLY | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_INTEGER_CONSTANT),
- JSOP_NULLWRAPPER,
- },
- {
- "DOUBLE_CONSTANT", 0,
- JSPROP_PERMANENT | JSPROP_READONLY | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_DOUBLE_CONSTANT),
- JSOP_NULLWRAPPER,
- },
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "ConstantsInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsConstantsInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsConstantsInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsConstantsInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsConstantsInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_constants_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_constants_interface.h
deleted file mode 100644
index 7bc86ba..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_constants_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsConstantsInterface_h
-#define MozjsConstantsInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/constants_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsConstantsInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsConstantsInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_constructor_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_constructor_interface.cc
deleted file mode 100644
index cbe05b6..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_constructor_interface.cc
+++ /dev/null
@@ -1,458 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_constructor_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::ConstructorInterface;
-using cobalt::bindings::testing::MozjsConstructorInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsConstructorInterfaceHandler : public ProxyHandler {
- public:
- MozjsConstructorInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsConstructorInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsConstructorInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsConstructorInterfaceHandler>
- proxy_handler;
-
-JSBool Constructor(JSContext* context, unsigned int argc, JS::Value* vp);
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsConstructorInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "ConstructorInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "ConstructorInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "ConstructorInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- interface_object_class->construct = Constructor;
- return interface_data;
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "ConstructorInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Add the InterfaceObject.length property. It is set to the length of the
- // shortest argument list of all overload constructors.
- JS::RootedValue length_value(context);
- length_value.setInt32(0);
- success =
- JS_DefineProperty(context, rooted_interface_object, "length",
- length_value, JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsConstructorInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsConstructorInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsConstructorInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsConstructorInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-JSBool Constructor1(
- JSContext* context, unsigned int argc, JS::Value* vp) {
- MozjsExceptionState exception_state(context);
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-
- scoped_refptr<ConstructorInterface> new_object =
- new ConstructorInterface();
- JS::RootedValue result_value(context);
- ToJSValue(context, new_object, &result_value);
- DCHECK(result_value.isObject());
- JS::RootedObject result_object(context, JSVAL_TO_OBJECT(result_value));
- args.rval().setObject(*result_object);
- return true;
-}
-
-JSBool Constructor2(
- JSContext* context, unsigned int argc, JS::Value* vp) {
- MozjsExceptionState exception_state(context);
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<bool >::ConversionType arg;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &arg);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- scoped_refptr<ConstructorInterface> new_object =
- new ConstructorInterface(arg);
- JS::RootedValue result_value(context);
- ToJSValue(context, new_object, &result_value);
- DCHECK(result_value.isObject());
- JS::RootedObject result_object(context, JSVAL_TO_OBJECT(result_value));
- args.rval().setObject(*result_object);
- return true;
-}
-
-JSBool Constructor(JSContext* context, unsigned int argc, JS::Value* vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- switch(argc) {
- case(0): {
- // Overload resolution algorithm details found here:
- // http://heycam.github.io/webidl/#dfn-overload-resolution-algorithm
- if (true) {
- return Constructor1(
- context, argc, vp);
- }
- break;
- }
- case(1): {
- // Overload resolution algorithm details found here:
- // http://heycam.github.io/webidl/#dfn-overload-resolution-algorithm
- if (true) {
- return Constructor2(
- context, argc, vp);
- }
- break;
- }
- }
- // Invalid number of args
- // http://heycam.github.io/webidl/#dfn-overload-resolution-algorithm
- // 4. If S is empty, then throw a TypeError.
- MozjsExceptionState exception_state(context);
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
-}
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_constructor_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_constructor_interface.h
deleted file mode 100644
index 93f4a10..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_constructor_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsConstructorInterface_h
-#define MozjsConstructorInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/constructor_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsConstructorInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsConstructorInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_constructor_with_arguments_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_constructor_with_arguments_interface.cc
deleted file mode 100644
index 754e7d5..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_constructor_with_arguments_interface.cc
+++ /dev/null
@@ -1,581 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_constructor_with_arguments_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::ConstructorWithArgumentsInterface;
-using cobalt::bindings::testing::MozjsConstructorWithArgumentsInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsConstructorWithArgumentsInterfaceHandler : public ProxyHandler {
- public:
- MozjsConstructorWithArgumentsInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsConstructorWithArgumentsInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsConstructorWithArgumentsInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsConstructorWithArgumentsInterfaceHandler>
- proxy_handler;
-
-JSBool Constructor(JSContext* context, unsigned int argc, JS::Value* vp);
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsConstructorWithArgumentsInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "ConstructorWithArgumentsInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "ConstructorWithArgumentsInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "ConstructorWithArgumentsInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- interface_object_class->construct = Constructor;
- return interface_data;
-}
-
-JSBool get_longArg(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsConstructorWithArgumentsInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ConstructorWithArgumentsInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- ConstructorWithArgumentsInterface* impl =
- wrapper_private->wrappable<ConstructorWithArgumentsInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->long_arg(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool get_booleanArg(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsConstructorWithArgumentsInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ConstructorWithArgumentsInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- ConstructorWithArgumentsInterface* impl =
- wrapper_private->wrappable<ConstructorWithArgumentsInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->boolean_arg(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool get_stringArg(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsConstructorWithArgumentsInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ConstructorWithArgumentsInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- ConstructorWithArgumentsInterface* impl =
- wrapper_private->wrappable<ConstructorWithArgumentsInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->string_arg(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- { // Readonly attribute
- "longArg", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE | JSPROP_READONLY,
- JSOP_WRAPPER(&get_longArg),
- JSOP_NULLWRAPPER,
- },
- { // Readonly attribute
- "booleanArg", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE | JSPROP_READONLY,
- JSOP_WRAPPER(&get_booleanArg),
- JSOP_NULLWRAPPER,
- },
- { // Readonly attribute
- "stringArg", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE | JSPROP_READONLY,
- JSOP_WRAPPER(&get_stringArg),
- JSOP_NULLWRAPPER,
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "ConstructorWithArgumentsInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Add the InterfaceObject.length property. It is set to the length of the
- // shortest argument list of all overload constructors.
- JS::RootedValue length_value(context);
- length_value.setInt32(2);
- success =
- JS_DefineProperty(context, rooted_interface_object, "length",
- length_value, JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsConstructorWithArgumentsInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsConstructorWithArgumentsInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsConstructorWithArgumentsInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsConstructorWithArgumentsInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-JSBool Constructor(JSContext* context, unsigned int argc, JS::Value* vp) {
- MozjsExceptionState exception_state(context);
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- const size_t kMinArguments = 2;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<int32_t >::ConversionType arg1;
- TypeTraits<bool >::ConversionType arg2;
- // Optional arguments with default values
- TypeTraits<std::string >::ConversionType default_arg =
- "default";
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &arg1);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- DCHECK_LT(1, args.length());
- JS::RootedValue non_optional_value1(
- context, args[1]);
- FromJSValue(context,
- non_optional_value1,
- kNoConversionFlags,
- &exception_state, &arg2);
- if (exception_state.is_exception_set()) {
- return false;
- }
- size_t num_set_arguments = 3;
- if (args.length() > 2) {
- JS::RootedValue optional_value0(
- context, args[2]);
- FromJSValue(context,
- optional_value0,
- kNoConversionFlags,
- &exception_state,
- &default_arg);
- if (exception_state.is_exception_set()) {
- return false;
- }
- }
-
- scoped_refptr<ConstructorWithArgumentsInterface> new_object =
- new ConstructorWithArgumentsInterface(arg1, arg2, default_arg);
- JS::RootedValue result_value(context);
- ToJSValue(context, new_object, &result_value);
- DCHECK(result_value.isObject());
- JS::RootedObject result_object(context, JSVAL_TO_OBJECT(result_value));
- args.rval().setObject(*result_object);
- return true;
-}
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_constructor_with_arguments_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_constructor_with_arguments_interface.h
deleted file mode 100644
index 058d6c4..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_constructor_with_arguments_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsConstructorWithArgumentsInterface_h
-#define MozjsConstructorWithArgumentsInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/constructor_with_arguments_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsConstructorWithArgumentsInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsConstructorWithArgumentsInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_derived_dictionary.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_derived_dictionary.cc
deleted file mode 100644
index 6c23574..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_derived_dictionary.cc
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright 2017 Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/dictionary-conversion.cc.template
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "cobalt/bindings/testing/derived_dictionary.h"
-
-#include "cobalt/script/exception_state.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "cobalt/bindings/testing/test_dictionary.h"
-
-using cobalt::bindings::testing::DerivedDictionary;
-using cobalt::bindings::testing::TestDictionary;
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-void ToJSValue(
- JSContext* context,
- const DerivedDictionary& in_dictionary,
- JS::MutableHandleValue out_value) {
- // Create a new object that will hold the dictionary values.
- JS::RootedObject dictionary_object(
- context, JS_NewObject(context, NULL, NULL, NULL));
- const int kPropertyAttributes = JSPROP_ENUMERATE;
- if (in_dictionary.has_additional_member()) {
- JS::RootedValue member_value(context);
- ToJSValue(context, in_dictionary.additional_member(), &member_value);
- if (!JS_DefineProperty(context, dictionary_object,
- "additionalMember",
- member_value, NULL, NULL, kPropertyAttributes)) {
- // Some internal error occurred.
- NOTREACHED();
- return;
- }
- }
- out_value.set(OBJECT_TO_JSVAL(dictionary_object));
-}
-
-void FromJSValue(JSContext* context, JS::HandleValue value,
- int conversion_flags, ExceptionState* exception_state,
- DerivedDictionary* out_dictionary) {
- DCHECK_EQ(0, conversion_flags) << "Unexpected conversion flags.";
- FromJSValue(context, value, conversion_flags, exception_state,
- static_cast<cobalt::bindings::testing::TestDictionary*>(out_dictionary));
- // https://heycam.github.io/webidl/#es-dictionary
-
- if (value.isUndefined() || value.isNull()) {
- // The default constructor will assign appropriate values to dictionary
- // members with default values and leave the others unset.
- *out_dictionary = DerivedDictionary();
- return;
- }
- if (!value.isObject()) {
- // 1. If Type(V) is not Undefined, Null or Object, then throw a TypeError.
- exception_state->SetSimpleException(kNotObjectType);
- return;
- }
- JS::RootedObject dictionary_object(context, JSVAL_TO_OBJECT(value));
- JS::RootedValue additional_member(context);
- if (!JS_GetProperty(context, dictionary_object,
- "additionalMember",
- additional_member.address())) {
- exception_state->SetSimpleException(kSimpleError);
- return;
- }
- if (!additional_member.isUndefined()) {
- bool converted_value;
- FromJSValue(context,
- additional_member,
- kNoConversionFlags,
- exception_state,
- &converted_value);
- if (context->isExceptionPending()) {
- return;
- }
- out_dictionary->set_additional_member(converted_value);
- }
-}
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_derived_getter_setter_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_derived_getter_setter_interface.cc
deleted file mode 100644
index ed56d9f..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_derived_getter_setter_interface.cc
+++ /dev/null
@@ -1,904 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_derived_getter_setter_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/bindings/testing/mozjs_named_indexed_getter_interface.h"
-#include "cobalt/bindings/testing/named_indexed_getter_interface.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::DerivedGetterSetterInterface;
-using cobalt::bindings::testing::MozjsDerivedGetterSetterInterface;
-using cobalt::bindings::testing::MozjsNamedIndexedGetterInterface;
-using cobalt::bindings::testing::NamedIndexedGetterInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-bool IsSupportedNamedProperty(JSContext* context, JS::HandleObject object,
- const std::string& property_name) {
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DerivedGetterSetterInterface* impl =
- wrapper_private->wrappable<DerivedGetterSetterInterface>().get();
- return impl->CanQueryNamedProperty(property_name);
-}
-
-void EnumerateSupportedNames(JSContext* context, JS::HandleObject object,
- JS::AutoIdVector* properties) {
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DerivedGetterSetterInterface* impl =
- wrapper_private->wrappable<DerivedGetterSetterInterface>().get();
- MozjsPropertyEnumerator enumerator(context, properties);
- impl->EnumerateNamedProperties(&enumerator);
-}
-
-JSBool GetNamedProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- JS::RootedValue id_value(context);
- if (!JS_IdToValue(context, id, id_value.address())) {
- NOTREACHED();
- return false;
- }
-
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DerivedGetterSetterInterface* impl =
- wrapper_private->wrappable<DerivedGetterSetterInterface>().get();
- std::string property_name;
- FromJSValue(context, id_value, kNoConversionFlags, &exception_state,
- &property_name);
- if (exception_state.is_exception_set()) {
- // The ID should be an integer or a string, so we shouldn't have any
- // exceptions converting to string.
- NOTREACHED();
- return false;
- }
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->AnonymousNamedGetter(property_name),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool SetNamedProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- JS::RootedValue id_value(context);
- if (!JS_IdToValue(context, id, id_value.address())) {
- NOTREACHED();
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DerivedGetterSetterInterface* impl =
- wrapper_private->wrappable<DerivedGetterSetterInterface>().get();
- std::string property_name;
- FromJSValue(context, id_value, kNoConversionFlags, &exception_state,
- &property_name);
- if (exception_state.is_exception_set()) {
- // The ID should be an integer or a string, so we shouldn't have any
- // exceptions converting to string.
- NOTREACHED();
- return false;
- }
- TypeTraits<std::string >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags,
- &exception_state, &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->AnonymousNamedSetter(property_name, value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-bool IsSupportedIndexProperty(JSContext* context, JS::HandleObject object,
- uint32_t index) {
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DerivedGetterSetterInterface* impl =
- wrapper_private->wrappable<DerivedGetterSetterInterface>().get();
- return index < impl->length();
-}
-
-void EnumerateSupportedIndexes(JSContext* context, JS::HandleObject object,
- JS::AutoIdVector* properties) {
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DerivedGetterSetterInterface* impl =
- wrapper_private->wrappable<DerivedGetterSetterInterface>().get();
- const uint32_t kNumIndexedProperties = impl->length();
- for (uint32_t i = 0; i < kNumIndexedProperties; ++i) {
- properties->append(INT_TO_JSID(i));
- }
-}
-
-JSBool GetIndexedProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- JS::RootedValue id_value(context);
- if (!JS_IdToValue(context, id, id_value.address())) {
- NOTREACHED();
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DerivedGetterSetterInterface* impl =
- wrapper_private->wrappable<DerivedGetterSetterInterface>().get();
- uint32_t index;
- FromJSValue(context, id_value, kNoConversionFlags, &exception_state, &index);
- if (exception_state.is_exception_set()) {
- // The ID should be an integer or a string, so we shouldn't have any
- // exceptions converting to string.
- NOTREACHED();
- return false;
- }
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->DerivedIndexedGetter(index),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool SetIndexedProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- JS::RootedValue id_value(context);
- if (!JS_IdToValue(context, id, id_value.address())) {
- NOTREACHED();
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DerivedGetterSetterInterface* impl =
- wrapper_private->wrappable<DerivedGetterSetterInterface>().get();
- uint32_t index;
- FromJSValue(context, id_value, kNoConversionFlags, &exception_state, &index);
- if(exception_state.is_exception_set()) {
- // The ID should be an integer or a string, so we shouldn't have any
- // exceptions converting to string.
- NOTREACHED();
- return false;
- }
- TypeTraits<uint32_t >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags,
- &exception_state, &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->DerivedIndexedSetter(index, value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-class MozjsDerivedGetterSetterInterfaceHandler : public ProxyHandler {
- public:
- MozjsDerivedGetterSetterInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsDerivedGetterSetterInterfaceHandler::named_property_hooks = {
- IsSupportedNamedProperty,
- EnumerateSupportedNames,
- GetNamedProperty,
- SetNamedProperty,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsDerivedGetterSetterInterfaceHandler::indexed_property_hooks = {
- IsSupportedIndexProperty,
- EnumerateSupportedIndexes,
- GetIndexedProperty,
- SetIndexedProperty,
- NULL,
-};
-
-static base::LazyInstance<MozjsDerivedGetterSetterInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsDerivedGetterSetterInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "DerivedGetterSetterInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "DerivedGetterSetterInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "DerivedGetterSetterInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-JSBool get_length(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsDerivedGetterSetterInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<DerivedGetterSetterInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DerivedGetterSetterInterface* impl =
- wrapper_private->wrappable<DerivedGetterSetterInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->length(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool get_propertyOnDerivedClass(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsDerivedGetterSetterInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<DerivedGetterSetterInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DerivedGetterSetterInterface* impl =
- wrapper_private->wrappable<DerivedGetterSetterInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->property_on_derived_class(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_propertyOnDerivedClass(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsDerivedGetterSetterInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<DerivedGetterSetterInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DerivedGetterSetterInterface* impl =
- wrapper_private->wrappable<DerivedGetterSetterInterface>().get();
- TypeTraits<bool >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_property_on_derived_class(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_derivedIndexedGetter(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsDerivedGetterSetterInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<DerivedGetterSetterInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DerivedGetterSetterInterface* impl =
- wrapper_private->wrappable<DerivedGetterSetterInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<uint32_t >::ConversionType index;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &index);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->DerivedIndexedGetter(index),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_derivedIndexedSetter(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsDerivedGetterSetterInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<DerivedGetterSetterInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DerivedGetterSetterInterface* impl =
- wrapper_private->wrappable<DerivedGetterSetterInterface>().get();
- const size_t kMinArguments = 2;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<uint32_t >::ConversionType index;
- TypeTraits<uint32_t >::ConversionType value;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &index);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- DCHECK_LT(1, args.length());
- JS::RootedValue non_optional_value1(
- context, args[1]);
- FromJSValue(context,
- non_optional_value1,
- kNoConversionFlags,
- &exception_state, &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->DerivedIndexedSetter(index, value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_operationOnDerivedClass(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsDerivedGetterSetterInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<DerivedGetterSetterInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DerivedGetterSetterInterface* impl =
- wrapper_private->wrappable<DerivedGetterSetterInterface>().get();
-
- impl->OperationOnDerivedClass();
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- { // Readonly attribute
- "length", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE | JSPROP_READONLY,
- JSOP_WRAPPER(&get_length),
- JSOP_NULLWRAPPER,
- },
- { // Read/Write property
- "propertyOnDerivedClass", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_propertyOnDerivedClass),
- JSOP_WRAPPER(&set_propertyOnDerivedClass),
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- {
- "derivedIndexedGetter",
- JSOP_WRAPPER(&fcn_derivedIndexedGetter),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "derivedIndexedSetter",
- JSOP_WRAPPER(&fcn_derivedIndexedSetter),
- 2,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "operationOnDerivedClass",
- JSOP_WRAPPER(&fcn_operationOnDerivedClass),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, MozjsNamedIndexedGetterInterface::GetPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "DerivedGetterSetterInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsDerivedGetterSetterInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsDerivedGetterSetterInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsDerivedGetterSetterInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsDerivedGetterSetterInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_derived_getter_setter_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_derived_getter_setter_interface.h
deleted file mode 100644
index 8d25c7a..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_derived_getter_setter_interface.h
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsDerivedGetterSetterInterface_h
-#define MozjsDerivedGetterSetterInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/derived_getter_setter_interface.h"
-#include "cobalt/bindings/testing/mozjs_named_indexed_getter_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsDerivedGetterSetterInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsDerivedGetterSetterInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_derived_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_derived_interface.cc
deleted file mode 100644
index ca7f7ce..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_derived_interface.cc
+++ /dev/null
@@ -1,498 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_derived_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/bindings/testing/base_interface.h"
-#include "cobalt/bindings/testing/mozjs_base_interface.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::DerivedInterface;
-using cobalt::bindings::testing::MozjsDerivedInterface;
-using cobalt::bindings::testing::BaseInterface;
-using cobalt::bindings::testing::MozjsBaseInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsDerivedInterfaceHandler : public ProxyHandler {
- public:
- MozjsDerivedInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsDerivedInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsDerivedInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsDerivedInterfaceHandler>
- proxy_handler;
-
-JSBool Constructor(JSContext* context, unsigned int argc, JS::Value* vp);
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsDerivedInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "DerivedInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "DerivedInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "DerivedInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- interface_object_class->construct = Constructor;
- return interface_data;
-}
-
-JSBool get_derivedAttribute(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsDerivedInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<DerivedInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DerivedInterface* impl =
- wrapper_private->wrappable<DerivedInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->derived_attribute(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_derivedOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsDerivedInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<DerivedInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DerivedInterface* impl =
- wrapper_private->wrappable<DerivedInterface>().get();
-
- impl->DerivedOperation();
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- { // Readonly attribute
- "derivedAttribute", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE | JSPROP_READONLY,
- JSOP_WRAPPER(&get_derivedAttribute),
- JSOP_NULLWRAPPER,
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- {
- "derivedOperation",
- JSOP_WRAPPER(&fcn_derivedOperation),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, MozjsBaseInterface::GetPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "DerivedInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Add the InterfaceObject.length property. It is set to the length of the
- // shortest argument list of all overload constructors.
- JS::RootedValue length_value(context);
- length_value.setInt32(0);
- success =
- JS_DefineProperty(context, rooted_interface_object, "length",
- length_value, JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsDerivedInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsDerivedInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsDerivedInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsDerivedInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-JSBool Constructor(JSContext* context, unsigned int argc, JS::Value* vp) {
- MozjsExceptionState exception_state(context);
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-
- scoped_refptr<DerivedInterface> new_object =
- new DerivedInterface();
- JS::RootedValue result_value(context);
- ToJSValue(context, new_object, &result_value);
- DCHECK(result_value.isObject());
- JS::RootedObject result_object(context, JSVAL_TO_OBJECT(result_value));
- args.rval().setObject(*result_object);
- return true;
-}
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_derived_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_derived_interface.h
deleted file mode 100644
index 0fd2ca4..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_derived_interface.h
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsDerivedInterface_h
-#define MozjsDerivedInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/derived_interface.h"
-#include "cobalt/bindings/testing/mozjs_base_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsDerivedInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsDerivedInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_dictionary_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_dictionary_interface.cc
deleted file mode 100644
index 1a32edc..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_dictionary_interface.cc
+++ /dev/null
@@ -1,676 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_dictionary_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/bindings/testing/derived_dictionary.h"
-#include "cobalt/bindings/testing/dictionary_with_dictionary_member.h"
-#include "cobalt/bindings/testing/test_dictionary.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::DictionaryInterface;
-using cobalt::bindings::testing::MozjsDictionaryInterface;
-using cobalt::bindings::testing::DerivedDictionary;
-using cobalt::bindings::testing::DictionaryWithDictionaryMember;
-using cobalt::bindings::testing::TestDictionary;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsDictionaryInterfaceHandler : public ProxyHandler {
- public:
- MozjsDictionaryInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsDictionaryInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsDictionaryInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsDictionaryInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsDictionaryInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "DictionaryInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "DictionaryInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "DictionaryInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-JSBool get_dictionarySequence(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsDictionaryInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<DictionaryInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DictionaryInterface* impl =
- wrapper_private->wrappable<DictionaryInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->dictionary_sequence(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_dictionarySequence(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsDictionaryInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<DictionaryInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DictionaryInterface* impl =
- wrapper_private->wrappable<DictionaryInterface>().get();
- TypeTraits<::cobalt::script::Sequence< TestDictionary > >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_dictionary_sequence(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_derivedDictionaryOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsDictionaryInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<DictionaryInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DictionaryInterface* impl =
- wrapper_private->wrappable<DictionaryInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<DerivedDictionary >::ConversionType dictionary;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &dictionary);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->DerivedDictionaryOperation(dictionary);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_dictionaryOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsDictionaryInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<DictionaryInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DictionaryInterface* impl =
- wrapper_private->wrappable<DictionaryInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<TestDictionary >::ConversionType dictionary;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &dictionary);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->DictionaryOperation(dictionary);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_testOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsDictionaryInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<DictionaryInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DictionaryInterface* impl =
- wrapper_private->wrappable<DictionaryInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<DictionaryWithDictionaryMember >::ConversionType dict;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &dict);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->TestOperation(dict);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- { // Read/Write property
- "dictionarySequence", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_dictionarySequence),
- JSOP_WRAPPER(&set_dictionarySequence),
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- {
- "derivedDictionaryOperation",
- JSOP_WRAPPER(&fcn_derivedDictionaryOperation),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "dictionaryOperation",
- JSOP_WRAPPER(&fcn_dictionaryOperation),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "testOperation",
- JSOP_WRAPPER(&fcn_testOperation),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "DictionaryInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsDictionaryInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsDictionaryInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsDictionaryInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsDictionaryInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_dictionary_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_dictionary_interface.h
deleted file mode 100644
index 3fdd54b..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_dictionary_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsDictionaryInterface_h
-#define MozjsDictionaryInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/dictionary_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsDictionaryInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsDictionaryInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_dictionary_with_dictionary_member.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_dictionary_with_dictionary_member.cc
deleted file mode 100644
index 50e5fde..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_dictionary_with_dictionary_member.cc
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright 2017 Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/dictionary-conversion.cc.template
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "cobalt/bindings/testing/dictionary_with_dictionary_member.h"
-
-#include "cobalt/script/exception_state.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "cobalt/bindings/testing/test_dictionary.h"
-
-using cobalt::bindings::testing::DictionaryWithDictionaryMember;
-using cobalt::bindings::testing::TestDictionary;
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-void ToJSValue(
- JSContext* context,
- const DictionaryWithDictionaryMember& in_dictionary,
- JS::MutableHandleValue out_value) {
- // Create a new object that will hold the dictionary values.
- JS::RootedObject dictionary_object(
- context, JS_NewObject(context, NULL, NULL, NULL));
- const int kPropertyAttributes = JSPROP_ENUMERATE;
- if (in_dictionary.has_nested_dictionary()) {
- JS::RootedValue member_value(context);
- ToJSValue(context, in_dictionary.nested_dictionary(), &member_value);
- if (!JS_DefineProperty(context, dictionary_object,
- "nestedDictionary",
- member_value, NULL, NULL, kPropertyAttributes)) {
- // Some internal error occurred.
- NOTREACHED();
- return;
- }
- }
- out_value.set(OBJECT_TO_JSVAL(dictionary_object));
-}
-
-void FromJSValue(JSContext* context, JS::HandleValue value,
- int conversion_flags, ExceptionState* exception_state,
- DictionaryWithDictionaryMember* out_dictionary) {
- DCHECK_EQ(0, conversion_flags) << "Unexpected conversion flags.";
- // https://heycam.github.io/webidl/#es-dictionary
-
- if (value.isUndefined() || value.isNull()) {
- // The default constructor will assign appropriate values to dictionary
- // members with default values and leave the others unset.
- *out_dictionary = DictionaryWithDictionaryMember();
- return;
- }
- if (!value.isObject()) {
- // 1. If Type(V) is not Undefined, Null or Object, then throw a TypeError.
- exception_state->SetSimpleException(kNotObjectType);
- return;
- }
- JS::RootedObject dictionary_object(context, JSVAL_TO_OBJECT(value));
- JS::RootedValue nested_dictionary(context);
- if (!JS_GetProperty(context, dictionary_object,
- "nestedDictionary",
- nested_dictionary.address())) {
- exception_state->SetSimpleException(kSimpleError);
- return;
- }
- if (!nested_dictionary.isUndefined()) {
- TestDictionary converted_value;
- FromJSValue(context,
- nested_dictionary,
- kNoConversionFlags,
- exception_state,
- &converted_value);
- if (context->isExceptionPending()) {
- return;
- }
- out_dictionary->set_nested_dictionary(converted_value);
- }
-}
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_disabled_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_disabled_interface.cc
deleted file mode 100644
index c3cbbef..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_disabled_interface.cc
+++ /dev/null
@@ -1,513 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#if defined(NO_ENABLE_CONDITIONAL_INTERFACE)
-
-#include "cobalt/bindings/testing/mozjs_disabled_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::DisabledInterface;
-using cobalt::bindings::testing::MozjsDisabledInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsDisabledInterfaceHandler : public ProxyHandler {
- public:
- MozjsDisabledInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsDisabledInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsDisabledInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsDisabledInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsDisabledInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "DisabledInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "DisabledInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "DisabledInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-JSBool get_disabledProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsDisabledInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<DisabledInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DisabledInterface* impl =
- wrapper_private->wrappable<DisabledInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->disabled_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_disabledProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsDisabledInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<DisabledInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DisabledInterface* impl =
- wrapper_private->wrappable<DisabledInterface>().get();
- TypeTraits<int32_t >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_disabled_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_disabledFunction(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsDisabledInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<DisabledInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DisabledInterface* impl =
- wrapper_private->wrappable<DisabledInterface>().get();
-
- impl->DisabledFunction();
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- { // Read/Write property
- "disabledProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_disabledProperty),
- JSOP_WRAPPER(&set_disabledProperty),
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- {
- "disabledFunction",
- JSOP_WRAPPER(&fcn_disabledFunction),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "DisabledInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsDisabledInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsDisabledInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsDisabledInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsDisabledInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-#endif // defined(NO_ENABLE_CONDITIONAL_INTERFACE)
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_disabled_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_disabled_interface.h
deleted file mode 100644
index 70574a4..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_disabled_interface.h
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsDisabledInterface_h
-#define MozjsDisabledInterface_h
-
-#if defined(NO_ENABLE_CONDITIONAL_INTERFACE)
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/disabled_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsDisabledInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // defined(NO_ENABLE_CONDITIONAL_INTERFACE)
-
-#endif // MozjsDisabledInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_dom_string_test_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_dom_string_test_interface.cc
deleted file mode 100644
index 68fa836..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_dom_string_test_interface.cc
+++ /dev/null
@@ -1,815 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_dom_string_test_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::DOMStringTestInterface;
-using cobalt::bindings::testing::MozjsDOMStringTestInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsDOMStringTestInterfaceHandler : public ProxyHandler {
- public:
- MozjsDOMStringTestInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsDOMStringTestInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsDOMStringTestInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsDOMStringTestInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsDOMStringTestInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "DOMStringTestInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "DOMStringTestInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "DOMStringTestInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-JSBool get_property(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsDOMStringTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<DOMStringTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DOMStringTestInterface* impl =
- wrapper_private->wrappable<DOMStringTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_property(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsDOMStringTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<DOMStringTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DOMStringTestInterface* impl =
- wrapper_private->wrappable<DOMStringTestInterface>().get();
- TypeTraits<std::string >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_readOnlyProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsDOMStringTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<DOMStringTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DOMStringTestInterface* impl =
- wrapper_private->wrappable<DOMStringTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->read_only_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool get_readOnlyTokenProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsDOMStringTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<DOMStringTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DOMStringTestInterface* impl =
- wrapper_private->wrappable<DOMStringTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->read_only_token_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool get_nullIsEmptyProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsDOMStringTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<DOMStringTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DOMStringTestInterface* impl =
- wrapper_private->wrappable<DOMStringTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->null_is_empty_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_nullIsEmptyProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsDOMStringTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<DOMStringTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DOMStringTestInterface* impl =
- wrapper_private->wrappable<DOMStringTestInterface>().get();
- TypeTraits<std::string >::ConversionType value;
- FromJSValue(context, vp, (kConversionFlagTreatNullAsEmptyString), &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_null_is_empty_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_undefinedIsEmptyProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsDOMStringTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<DOMStringTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DOMStringTestInterface* impl =
- wrapper_private->wrappable<DOMStringTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->undefined_is_empty_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_undefinedIsEmptyProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsDOMStringTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<DOMStringTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DOMStringTestInterface* impl =
- wrapper_private->wrappable<DOMStringTestInterface>().get();
- TypeTraits<std::string >::ConversionType value;
- FromJSValue(context, vp, (kConversionFlagTreatUndefinedAsEmptyString), &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_undefined_is_empty_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_nullableUndefinedIsEmptyProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsDOMStringTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<DOMStringTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DOMStringTestInterface* impl =
- wrapper_private->wrappable<DOMStringTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->nullable_undefined_is_empty_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_nullableUndefinedIsEmptyProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsDOMStringTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<DOMStringTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- DOMStringTestInterface* impl =
- wrapper_private->wrappable<DOMStringTestInterface>().get();
- TypeTraits<base::optional<std::string > >::ConversionType value;
- FromJSValue(context, vp, (kConversionFlagNullable | kConversionFlagTreatUndefinedAsEmptyString), &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_nullable_undefined_is_empty_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- { // Read/Write property
- "property", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_property),
- JSOP_WRAPPER(&set_property),
- },
- { // Readonly attribute
- "readOnlyProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE | JSPROP_READONLY,
- JSOP_WRAPPER(&get_readOnlyProperty),
- JSOP_NULLWRAPPER,
- },
- { // Readonly attribute
- "readOnlyTokenProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE | JSPROP_READONLY,
- JSOP_WRAPPER(&get_readOnlyTokenProperty),
- JSOP_NULLWRAPPER,
- },
- { // Read/Write property
- "nullIsEmptyProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_nullIsEmptyProperty),
- JSOP_WRAPPER(&set_nullIsEmptyProperty),
- },
- { // Read/Write property
- "undefinedIsEmptyProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_undefinedIsEmptyProperty),
- JSOP_WRAPPER(&set_undefinedIsEmptyProperty),
- },
- { // Read/Write property
- "nullableUndefinedIsEmptyProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_nullableUndefinedIsEmptyProperty),
- JSOP_WRAPPER(&set_nullableUndefinedIsEmptyProperty),
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "DOMStringTestInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsDOMStringTestInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsDOMStringTestInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsDOMStringTestInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsDOMStringTestInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_dom_string_test_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_dom_string_test_interface.h
deleted file mode 100644
index 8145570..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_dom_string_test_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsDOMStringTestInterface_h
-#define MozjsDOMStringTestInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/dom_string_test_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsDOMStringTestInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsDOMStringTestInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_enumeration_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_enumeration_interface.cc
deleted file mode 100644
index 17e8569..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_enumeration_interface.cc
+++ /dev/null
@@ -1,553 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_enumeration_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/bindings/testing/test_enum.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::EnumerationInterface;
-using cobalt::bindings::testing::MozjsEnumerationInterface;
-using cobalt::bindings::testing::TestEnum;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsEnumerationInterfaceHandler : public ProxyHandler {
- public:
- MozjsEnumerationInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsEnumerationInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsEnumerationInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsEnumerationInterfaceHandler>
- proxy_handler;
-
-JSBool Constructor(JSContext* context, unsigned int argc, JS::Value* vp);
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsEnumerationInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "EnumerationInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "EnumerationInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "EnumerationInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- interface_object_class->construct = Constructor;
- return interface_data;
-}
-
-JSBool get_enumProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsEnumerationInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<EnumerationInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- EnumerationInterface* impl =
- wrapper_private->wrappable<EnumerationInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->enum_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_enumProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsEnumerationInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<EnumerationInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- EnumerationInterface* impl =
- wrapper_private->wrappable<EnumerationInterface>().get();
- TypeTraits<TestEnum >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_enum_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_optionalEnumWithDefault(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsEnumerationInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<EnumerationInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- EnumerationInterface* impl =
- wrapper_private->wrappable<EnumerationInterface>().get();
- // Optional arguments with default values
- TypeTraits<TestEnum >::ConversionType value =
- kTestEnumBeta;
- size_t num_set_arguments = 1;
- if (args.length() > 0) {
- JS::RootedValue optional_value0(
- context, args[0]);
- FromJSValue(context,
- optional_value0,
- kNoConversionFlags,
- &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
- }
-
- impl->OptionalEnumWithDefault(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- { // Read/Write property
- "enumProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_enumProperty),
- JSOP_WRAPPER(&set_enumProperty),
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- {
- "optionalEnumWithDefault",
- JSOP_WRAPPER(&fcn_optionalEnumWithDefault),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "EnumerationInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Add the InterfaceObject.length property. It is set to the length of the
- // shortest argument list of all overload constructors.
- JS::RootedValue length_value(context);
- length_value.setInt32(0);
- success =
- JS_DefineProperty(context, rooted_interface_object, "length",
- length_value, JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsEnumerationInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsEnumerationInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsEnumerationInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsEnumerationInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-JSBool Constructor(JSContext* context, unsigned int argc, JS::Value* vp) {
- MozjsExceptionState exception_state(context);
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-
- scoped_refptr<EnumerationInterface> new_object =
- new EnumerationInterface();
- JS::RootedValue result_value(context);
- ToJSValue(context, new_object, &result_value);
- DCHECK(result_value.isObject());
- JS::RootedObject result_object(context, JSVAL_TO_OBJECT(result_value));
- args.rval().setObject(*result_object);
- return true;
-}
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_enumeration_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_enumeration_interface.h
deleted file mode 100644
index b30fe69..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_enumeration_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsEnumerationInterface_h
-#define MozjsEnumerationInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/enumeration_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsEnumerationInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsEnumerationInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_exception_object_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_exception_object_interface.cc
deleted file mode 100644
index 9b4ff43..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_exception_object_interface.cc
+++ /dev/null
@@ -1,467 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_exception_object_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsexn.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::ExceptionObjectInterface;
-using cobalt::bindings::testing::MozjsExceptionObjectInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsExceptionObjectInterfaceHandler : public ProxyHandler {
- public:
- MozjsExceptionObjectInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsExceptionObjectInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsExceptionObjectInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsExceptionObjectInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsExceptionObjectInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "ExceptionObjectInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "ExceptionObjectInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "ExceptionObjectInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-JSBool get_error(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsExceptionObjectInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ExceptionObjectInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- ExceptionObjectInterface* impl =
- wrapper_private->wrappable<ExceptionObjectInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->error(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool get_message(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsExceptionObjectInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ExceptionObjectInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- ExceptionObjectInterface* impl =
- wrapper_private->wrappable<ExceptionObjectInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->message(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- { // Readonly attribute
- "error", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE | JSPROP_READONLY,
- JSOP_WRAPPER(&get_error),
- JSOP_NULLWRAPPER,
- },
- { // Readonly attribute
- "message", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE | JSPROP_READONLY,
- JSOP_WRAPPER(&get_message),
- JSOP_NULLWRAPPER,
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- // Get Error prototype.
- JS::RootedObject parent_prototype(context);
- bool success_check = js_GetClassPrototype(
- context, GetExceptionProtoKey(JSEXN_ERR), &parent_prototype);
- DCHECK(success_check);
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "ExceptionObjectInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsExceptionObjectInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsExceptionObjectInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsExceptionObjectInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsExceptionObjectInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_exception_object_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_exception_object_interface.h
deleted file mode 100644
index 9f38fbe..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_exception_object_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsExceptionObjectInterface_h
-#define MozjsExceptionObjectInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/exception_object_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsExceptionObjectInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsExceptionObjectInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_exceptions_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_exceptions_interface.cc
deleted file mode 100644
index f4b2722..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_exceptions_interface.cc
+++ /dev/null
@@ -1,539 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_exceptions_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::ExceptionsInterface;
-using cobalt::bindings::testing::MozjsExceptionsInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsExceptionsInterfaceHandler : public ProxyHandler {
- public:
- MozjsExceptionsInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsExceptionsInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsExceptionsInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsExceptionsInterfaceHandler>
- proxy_handler;
-
-JSBool Constructor(JSContext* context, unsigned int argc, JS::Value* vp);
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsExceptionsInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "ExceptionsInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "ExceptionsInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "ExceptionsInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- interface_object_class->construct = Constructor;
- return interface_data;
-}
-
-JSBool get_attributeThrowsException(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsExceptionsInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ExceptionsInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- ExceptionsInterface* impl =
- wrapper_private->wrappable<ExceptionsInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->attribute_throws_exception(&exception_state),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_attributeThrowsException(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsExceptionsInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ExceptionsInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- ExceptionsInterface* impl =
- wrapper_private->wrappable<ExceptionsInterface>().get();
- TypeTraits<bool >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_attribute_throws_exception(value, &exception_state);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_functionThrowsException(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsExceptionsInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ExceptionsInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- ExceptionsInterface* impl =
- wrapper_private->wrappable<ExceptionsInterface>().get();
-
- impl->FunctionThrowsException(&exception_state);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- { // Read/Write property
- "attributeThrowsException", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_attributeThrowsException),
- JSOP_WRAPPER(&set_attributeThrowsException),
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- {
- "functionThrowsException",
- JSOP_WRAPPER(&fcn_functionThrowsException),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "ExceptionsInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Add the InterfaceObject.length property. It is set to the length of the
- // shortest argument list of all overload constructors.
- JS::RootedValue length_value(context);
- length_value.setInt32(0);
- success =
- JS_DefineProperty(context, rooted_interface_object, "length",
- length_value, JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsExceptionsInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsExceptionsInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsExceptionsInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsExceptionsInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-JSBool Constructor(JSContext* context, unsigned int argc, JS::Value* vp) {
- MozjsExceptionState exception_state(context);
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-
- scoped_refptr<ExceptionsInterface> new_object =
- new ExceptionsInterface(&exception_state);
- // In case that an exception is thrown from constructor.
- if (exception_state.is_exception_set()) {
- return false;
- }
- JS::RootedValue result_value(context);
- ToJSValue(context, new_object, &result_value);
- DCHECK(result_value.isObject());
- JS::RootedObject result_object(context, JSVAL_TO_OBJECT(result_value));
- args.rval().setObject(*result_object);
- return true;
-}
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_exceptions_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_exceptions_interface.h
deleted file mode 100644
index 49f9a24..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_exceptions_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsExceptionsInterface_h
-#define MozjsExceptionsInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/exceptions_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsExceptionsInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsExceptionsInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_extended_idl_attributes_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_extended_idl_attributes_interface.cc
deleted file mode 100644
index 1ff02f5..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_extended_idl_attributes_interface.cc
+++ /dev/null
@@ -1,583 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_extended_idl_attributes_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::ExtendedIDLAttributesInterface;
-using cobalt::bindings::testing::MozjsExtendedIDLAttributesInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsExtendedIDLAttributesInterfaceHandler : public ProxyHandler {
- public:
- MozjsExtendedIDLAttributesInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsExtendedIDLAttributesInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsExtendedIDLAttributesInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsExtendedIDLAttributesInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsExtendedIDLAttributesInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "ExtendedIDLAttributesInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "ExtendedIDLAttributesInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "ExtendedIDLAttributesInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-JSBool get_default(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsExtendedIDLAttributesInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ExtendedIDLAttributesInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- ExtendedIDLAttributesInterface* impl =
- wrapper_private->wrappable<ExtendedIDLAttributesInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->attribute_default(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_default(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsExtendedIDLAttributesInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ExtendedIDLAttributesInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- ExtendedIDLAttributesInterface* impl =
- wrapper_private->wrappable<ExtendedIDLAttributesInterface>().get();
- TypeTraits<bool >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_attribute_default(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_callWithSettings(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsExtendedIDLAttributesInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ExtendedIDLAttributesInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- ExtendedIDLAttributesInterface* impl =
- wrapper_private->wrappable<ExtendedIDLAttributesInterface>().get();
- MozjsGlobalEnvironment* callwith_global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-
- impl->CallWithSettings(callwith_global_environment->GetEnvironmentSettings());
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_clampArgument(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsExtendedIDLAttributesInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ExtendedIDLAttributesInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- ExtendedIDLAttributesInterface* impl =
- wrapper_private->wrappable<ExtendedIDLAttributesInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<uint16_t >::ConversionType arg;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- (kConversionFlagClamped),
- &exception_state, &arg);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->ClampArgument(arg);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- { // Read/Write property
- "default", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_default),
- JSOP_WRAPPER(&set_default),
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- {
- "callWithSettings",
- JSOP_WRAPPER(&fcn_callWithSettings),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "clampArgument",
- JSOP_WRAPPER(&fcn_clampArgument),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "ExtendedIDLAttributesInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsExtendedIDLAttributesInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsExtendedIDLAttributesInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsExtendedIDLAttributesInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsExtendedIDLAttributesInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_extended_idl_attributes_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_extended_idl_attributes_interface.h
deleted file mode 100644
index 6d676fb..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_extended_idl_attributes_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsExtendedIDLAttributesInterface_h
-#define MozjsExtendedIDLAttributesInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/extended_idl_attributes_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsExtendedIDLAttributesInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsExtendedIDLAttributesInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_garbage_collection_test_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_garbage_collection_test_interface.cc
deleted file mode 100644
index eb0a945..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_garbage_collection_test_interface.cc
+++ /dev/null
@@ -1,574 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_garbage_collection_test_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/bindings/testing/garbage_collection_test_interface.h"
-#include "cobalt/bindings/testing/mozjs_garbage_collection_test_interface.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::GarbageCollectionTestInterface;
-using cobalt::bindings::testing::MozjsGarbageCollectionTestInterface;
-using cobalt::bindings::testing::GarbageCollectionTestInterface;
-using cobalt::bindings::testing::MozjsGarbageCollectionTestInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsGarbageCollectionTestInterfaceHandler : public ProxyHandler {
- public:
- MozjsGarbageCollectionTestInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsGarbageCollectionTestInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsGarbageCollectionTestInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsGarbageCollectionTestInterfaceHandler>
- proxy_handler;
-
-JSBool Constructor(JSContext* context, unsigned int argc, JS::Value* vp);
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsGarbageCollectionTestInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "GarbageCollectionTestInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "GarbageCollectionTestInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "GarbageCollectionTestInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- interface_object_class->construct = Constructor;
- return interface_data;
-}
-
-JSBool get_previous(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsGarbageCollectionTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<GarbageCollectionTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- GarbageCollectionTestInterface* impl =
- wrapper_private->wrappable<GarbageCollectionTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->previous(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_previous(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsGarbageCollectionTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<GarbageCollectionTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- GarbageCollectionTestInterface* impl =
- wrapper_private->wrappable<GarbageCollectionTestInterface>().get();
- TypeTraits<scoped_refptr<GarbageCollectionTestInterface> >::ConversionType value;
- FromJSValue(context, vp, (kConversionFlagNullable), &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_previous(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_next(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsGarbageCollectionTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<GarbageCollectionTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- GarbageCollectionTestInterface* impl =
- wrapper_private->wrappable<GarbageCollectionTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->next(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_next(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsGarbageCollectionTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<GarbageCollectionTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- GarbageCollectionTestInterface* impl =
- wrapper_private->wrappable<GarbageCollectionTestInterface>().get();
- TypeTraits<scoped_refptr<GarbageCollectionTestInterface> >::ConversionType value;
- FromJSValue(context, vp, (kConversionFlagNullable), &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_next(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- { // Read/Write property
- "previous", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_previous),
- JSOP_WRAPPER(&set_previous),
- },
- { // Read/Write property
- "next", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_next),
- JSOP_WRAPPER(&set_next),
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "GarbageCollectionTestInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Add the InterfaceObject.length property. It is set to the length of the
- // shortest argument list of all overload constructors.
- JS::RootedValue length_value(context);
- length_value.setInt32(0);
- success =
- JS_DefineProperty(context, rooted_interface_object, "length",
- length_value, JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsGarbageCollectionTestInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsGarbageCollectionTestInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsGarbageCollectionTestInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsGarbageCollectionTestInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-JSBool Constructor(JSContext* context, unsigned int argc, JS::Value* vp) {
- MozjsExceptionState exception_state(context);
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-
- scoped_refptr<GarbageCollectionTestInterface> new_object =
- new GarbageCollectionTestInterface();
- JS::RootedValue result_value(context);
- ToJSValue(context, new_object, &result_value);
- DCHECK(result_value.isObject());
- JS::RootedObject result_object(context, JSVAL_TO_OBJECT(result_value));
- args.rval().setObject(*result_object);
- return true;
-}
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_garbage_collection_test_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_garbage_collection_test_interface.h
deleted file mode 100644
index 3dec722..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_garbage_collection_test_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsGarbageCollectionTestInterface_h
-#define MozjsGarbageCollectionTestInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/garbage_collection_test_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsGarbageCollectionTestInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsGarbageCollectionTestInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_global_interface_parent.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_global_interface_parent.cc
deleted file mode 100644
index acafd45..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_global_interface_parent.cc
+++ /dev/null
@@ -1,422 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_global_interface_parent.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::GlobalInterfaceParent;
-using cobalt::bindings::testing::MozjsGlobalInterfaceParent;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsGlobalInterfaceParentHandler : public ProxyHandler {
- public:
- MozjsGlobalInterfaceParentHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsGlobalInterfaceParentHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsGlobalInterfaceParentHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsGlobalInterfaceParentHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsGlobalInterfaceParent::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "GlobalInterfaceParent";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "GlobalInterfaceParentPrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "GlobalInterfaceParentConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-JSBool fcn_parentOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsGlobalInterfaceParent::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<GlobalInterfaceParent>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- GlobalInterfaceParent* impl =
- wrapper_private->wrappable<GlobalInterfaceParent>().get();
-
- impl->ParentOperation();
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- {
- "parentOperation",
- JSOP_WRAPPER(&fcn_parentOperation),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "GlobalInterfaceParent";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsGlobalInterfaceParent::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsGlobalInterfaceParent::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsGlobalInterfaceParent::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsGlobalInterfaceParent::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_global_interface_parent.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_global_interface_parent.h
deleted file mode 100644
index 106063b..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_global_interface_parent.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsGlobalInterfaceParent_h
-#define MozjsGlobalInterfaceParent_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/global_interface_parent.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsGlobalInterfaceParent {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsGlobalInterfaceParent_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_indexed_getter_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_indexed_getter_interface.cc
deleted file mode 100644
index a884585..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_indexed_getter_interface.cc
+++ /dev/null
@@ -1,753 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_indexed_getter_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::IndexedGetterInterface;
-using cobalt::bindings::testing::MozjsIndexedGetterInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-bool IsSupportedIndexProperty(JSContext* context, JS::HandleObject object,
- uint32_t index) {
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- IndexedGetterInterface* impl =
- wrapper_private->wrappable<IndexedGetterInterface>().get();
- return index < impl->length();
-}
-
-void EnumerateSupportedIndexes(JSContext* context, JS::HandleObject object,
- JS::AutoIdVector* properties) {
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- IndexedGetterInterface* impl =
- wrapper_private->wrappable<IndexedGetterInterface>().get();
- const uint32_t kNumIndexedProperties = impl->length();
- for (uint32_t i = 0; i < kNumIndexedProperties; ++i) {
- properties->append(INT_TO_JSID(i));
- }
-}
-
-JSBool GetIndexedProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- JS::RootedValue id_value(context);
- if (!JS_IdToValue(context, id, id_value.address())) {
- NOTREACHED();
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- IndexedGetterInterface* impl =
- wrapper_private->wrappable<IndexedGetterInterface>().get();
- uint32_t index;
- FromJSValue(context, id_value, kNoConversionFlags, &exception_state, &index);
- if (exception_state.is_exception_set()) {
- // The ID should be an integer or a string, so we shouldn't have any
- // exceptions converting to string.
- NOTREACHED();
- return false;
- }
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->IndexedGetter(index),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool SetIndexedProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- JS::RootedValue id_value(context);
- if (!JS_IdToValue(context, id, id_value.address())) {
- NOTREACHED();
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- IndexedGetterInterface* impl =
- wrapper_private->wrappable<IndexedGetterInterface>().get();
- uint32_t index;
- FromJSValue(context, id_value, kNoConversionFlags, &exception_state, &index);
- if(exception_state.is_exception_set()) {
- // The ID should be an integer or a string, so we shouldn't have any
- // exceptions converting to string.
- NOTREACHED();
- return false;
- }
- TypeTraits<uint32_t >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags,
- &exception_state, &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->IndexedSetter(index, value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-bool DeleteIndexedProperty(
- JSContext* context, JS::HandleObject object, uint32_t index) {
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- IndexedGetterInterface* impl =
- wrapper_private->wrappable<IndexedGetterInterface>().get();
-
- impl->IndexedDeleter(index);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-class MozjsIndexedGetterInterfaceHandler : public ProxyHandler {
- public:
- MozjsIndexedGetterInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsIndexedGetterInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsIndexedGetterInterfaceHandler::indexed_property_hooks = {
- IsSupportedIndexProperty,
- EnumerateSupportedIndexes,
- GetIndexedProperty,
- SetIndexedProperty,
- DeleteIndexedProperty,
-};
-
-static base::LazyInstance<MozjsIndexedGetterInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsIndexedGetterInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "IndexedGetterInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "IndexedGetterInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "IndexedGetterInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-JSBool get_length(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsIndexedGetterInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<IndexedGetterInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- IndexedGetterInterface* impl =
- wrapper_private->wrappable<IndexedGetterInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->length(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_indexedDeleter(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsIndexedGetterInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<IndexedGetterInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- IndexedGetterInterface* impl =
- wrapper_private->wrappable<IndexedGetterInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<uint32_t >::ConversionType index;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &index);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->IndexedDeleter(index);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_indexedGetter(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsIndexedGetterInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<IndexedGetterInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- IndexedGetterInterface* impl =
- wrapper_private->wrappable<IndexedGetterInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<uint32_t >::ConversionType index;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &index);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->IndexedGetter(index),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_indexedSetter(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsIndexedGetterInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<IndexedGetterInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- IndexedGetterInterface* impl =
- wrapper_private->wrappable<IndexedGetterInterface>().get();
- const size_t kMinArguments = 2;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<uint32_t >::ConversionType index;
- TypeTraits<uint32_t >::ConversionType value;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &index);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- DCHECK_LT(1, args.length());
- JS::RootedValue non_optional_value1(
- context, args[1]);
- FromJSValue(context,
- non_optional_value1,
- kNoConversionFlags,
- &exception_state, &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->IndexedSetter(index, value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- { // Readonly attribute
- "length", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE | JSPROP_READONLY,
- JSOP_WRAPPER(&get_length),
- JSOP_NULLWRAPPER,
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- {
- "indexedDeleter",
- JSOP_WRAPPER(&fcn_indexedDeleter),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "indexedGetter",
- JSOP_WRAPPER(&fcn_indexedGetter),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "indexedSetter",
- JSOP_WRAPPER(&fcn_indexedSetter),
- 2,
- JSPROP_ENUMERATE,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "IndexedGetterInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsIndexedGetterInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsIndexedGetterInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsIndexedGetterInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsIndexedGetterInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_indexed_getter_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_indexed_getter_interface.h
deleted file mode 100644
index 37311fe..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_indexed_getter_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsIndexedGetterInterface_h
-#define MozjsIndexedGetterInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/indexed_getter_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsIndexedGetterInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsIndexedGetterInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_interface_with_any.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_interface_with_any.cc
deleted file mode 100644
index e5b69e4..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_interface_with_any.cc
+++ /dev/null
@@ -1,524 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_interface_with_any.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::InterfaceWithAny;
-using cobalt::bindings::testing::MozjsInterfaceWithAny;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsInterfaceWithAnyHandler : public ProxyHandler {
- public:
- MozjsInterfaceWithAnyHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsInterfaceWithAnyHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsInterfaceWithAnyHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsInterfaceWithAnyHandler>
- proxy_handler;
-
-JSBool Constructor(JSContext* context, unsigned int argc, JS::Value* vp);
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsInterfaceWithAny::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "InterfaceWithAny";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "InterfaceWithAnyPrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "InterfaceWithAnyConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- interface_object_class->construct = Constructor;
- return interface_data;
-}
-
-JSBool fcn_getAny(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsInterfaceWithAny::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<InterfaceWithAny>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- InterfaceWithAny* impl =
- wrapper_private->wrappable<InterfaceWithAny>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->GetAny(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_setAny(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsInterfaceWithAny::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<InterfaceWithAny>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- InterfaceWithAny* impl =
- wrapper_private->wrappable<InterfaceWithAny>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<::cobalt::script::ValueHandle >::ConversionType value;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->SetAny(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- {
- "getAny",
- JSOP_WRAPPER(&fcn_getAny),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "setAny",
- JSOP_WRAPPER(&fcn_setAny),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "InterfaceWithAny";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Add the InterfaceObject.length property. It is set to the length of the
- // shortest argument list of all overload constructors.
- JS::RootedValue length_value(context);
- length_value.setInt32(0);
- success =
- JS_DefineProperty(context, rooted_interface_object, "length",
- length_value, JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsInterfaceWithAny::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsInterfaceWithAny::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsInterfaceWithAny::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsInterfaceWithAny::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-JSBool Constructor(JSContext* context, unsigned int argc, JS::Value* vp) {
- MozjsExceptionState exception_state(context);
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-
- scoped_refptr<InterfaceWithAny> new_object =
- new InterfaceWithAny();
- JS::RootedValue result_value(context);
- ToJSValue(context, new_object, &result_value);
- DCHECK(result_value.isObject());
- JS::RootedObject result_object(context, JSVAL_TO_OBJECT(result_value));
- args.rval().setObject(*result_object);
- return true;
-}
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_interface_with_any.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_interface_with_any.h
deleted file mode 100644
index 88c1219..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_interface_with_any.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsInterfaceWithAny_h
-#define MozjsInterfaceWithAny_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/interface_with_any.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsInterfaceWithAny {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsInterfaceWithAny_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_interface_with_any_dictionary.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_interface_with_any_dictionary.cc
deleted file mode 100644
index 3fce4bc..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_interface_with_any_dictionary.cc
+++ /dev/null
@@ -1,642 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_interface_with_any_dictionary.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::InterfaceWithAnyDictionary;
-using cobalt::bindings::testing::MozjsInterfaceWithAnyDictionary;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsInterfaceWithAnyDictionaryHandler : public ProxyHandler {
- public:
- MozjsInterfaceWithAnyDictionaryHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsInterfaceWithAnyDictionaryHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsInterfaceWithAnyDictionaryHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsInterfaceWithAnyDictionaryHandler>
- proxy_handler;
-
-JSBool Constructor(JSContext* context, unsigned int argc, JS::Value* vp);
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsInterfaceWithAnyDictionary::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "InterfaceWithAnyDictionary";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "InterfaceWithAnyDictionaryPrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "InterfaceWithAnyDictionaryConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- interface_object_class->construct = Constructor;
- return interface_data;
-}
-
-JSBool fcn_getAny(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsInterfaceWithAnyDictionary::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<InterfaceWithAnyDictionary>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- InterfaceWithAnyDictionary* impl =
- wrapper_private->wrappable<InterfaceWithAnyDictionary>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->GetAny(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_hasAny(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsInterfaceWithAnyDictionary::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<InterfaceWithAnyDictionary>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- InterfaceWithAnyDictionary* impl =
- wrapper_private->wrappable<InterfaceWithAnyDictionary>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->HasAny(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_hasAnyDefault(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsInterfaceWithAnyDictionary::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<InterfaceWithAnyDictionary>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- InterfaceWithAnyDictionary* impl =
- wrapper_private->wrappable<InterfaceWithAnyDictionary>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->HasAnyDefault(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_setAny(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsInterfaceWithAnyDictionary::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<InterfaceWithAnyDictionary>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- InterfaceWithAnyDictionary* impl =
- wrapper_private->wrappable<InterfaceWithAnyDictionary>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<::cobalt::script::ValueHandle >::ConversionType value;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->SetAny(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- {
- "getAny",
- JSOP_WRAPPER(&fcn_getAny),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "hasAny",
- JSOP_WRAPPER(&fcn_hasAny),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "hasAnyDefault",
- JSOP_WRAPPER(&fcn_hasAnyDefault),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "setAny",
- JSOP_WRAPPER(&fcn_setAny),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "InterfaceWithAnyDictionary";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Add the InterfaceObject.length property. It is set to the length of the
- // shortest argument list of all overload constructors.
- JS::RootedValue length_value(context);
- length_value.setInt32(0);
- success =
- JS_DefineProperty(context, rooted_interface_object, "length",
- length_value, JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsInterfaceWithAnyDictionary::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsInterfaceWithAnyDictionary::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsInterfaceWithAnyDictionary::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsInterfaceWithAnyDictionary::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-JSBool Constructor(JSContext* context, unsigned int argc, JS::Value* vp) {
- MozjsExceptionState exception_state(context);
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-
- scoped_refptr<InterfaceWithAnyDictionary> new_object =
- new InterfaceWithAnyDictionary();
- JS::RootedValue result_value(context);
- ToJSValue(context, new_object, &result_value);
- DCHECK(result_value.isObject());
- JS::RootedObject result_object(context, JSVAL_TO_OBJECT(result_value));
- args.rval().setObject(*result_object);
- return true;
-}
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_interface_with_any_dictionary.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_interface_with_any_dictionary.h
deleted file mode 100644
index 185dcbc..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_interface_with_any_dictionary.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsInterfaceWithAnyDictionary_h
-#define MozjsInterfaceWithAnyDictionary_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/interface_with_any_dictionary.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsInterfaceWithAnyDictionary {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsInterfaceWithAnyDictionary_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_interface_with_unsupported_properties.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_interface_with_unsupported_properties.cc
deleted file mode 100644
index 2f323de..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_interface_with_unsupported_properties.cc
+++ /dev/null
@@ -1,416 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_interface_with_unsupported_properties.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::InterfaceWithUnsupportedProperties;
-using cobalt::bindings::testing::MozjsInterfaceWithUnsupportedProperties;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsInterfaceWithUnsupportedPropertiesHandler : public ProxyHandler {
- public:
- MozjsInterfaceWithUnsupportedPropertiesHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsInterfaceWithUnsupportedPropertiesHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsInterfaceWithUnsupportedPropertiesHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsInterfaceWithUnsupportedPropertiesHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsInterfaceWithUnsupportedProperties::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "InterfaceWithUnsupportedProperties";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "InterfaceWithUnsupportedPropertiesPrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "InterfaceWithUnsupportedPropertiesConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-JSBool get_supportedAttribute(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsInterfaceWithUnsupportedProperties::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<InterfaceWithUnsupportedProperties>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- InterfaceWithUnsupportedProperties* impl =
- wrapper_private->wrappable<InterfaceWithUnsupportedProperties>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->supported_attribute(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- { // Readonly attribute
- "supportedAttribute", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE | JSPROP_READONLY,
- JSOP_WRAPPER(&get_supportedAttribute),
- JSOP_NULLWRAPPER,
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "InterfaceWithUnsupportedProperties";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsInterfaceWithUnsupportedProperties::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsInterfaceWithUnsupportedProperties::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsInterfaceWithUnsupportedProperties::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsInterfaceWithUnsupportedProperties::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_interface_with_unsupported_properties.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_interface_with_unsupported_properties.h
deleted file mode 100644
index 922145a..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_interface_with_unsupported_properties.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsInterfaceWithUnsupportedProperties_h
-#define MozjsInterfaceWithUnsupportedProperties_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/interface_with_unsupported_properties.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsInterfaceWithUnsupportedProperties {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsInterfaceWithUnsupportedProperties_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_named_constructor_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_named_constructor_interface.cc
deleted file mode 100644
index 052f2186..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_named_constructor_interface.cc
+++ /dev/null
@@ -1,394 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_named_constructor_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::NamedConstructorInterface;
-using cobalt::bindings::testing::MozjsNamedConstructorInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsNamedConstructorInterfaceHandler : public ProxyHandler {
- public:
- MozjsNamedConstructorInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsNamedConstructorInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsNamedConstructorInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsNamedConstructorInterfaceHandler>
- proxy_handler;
-
-JSBool Constructor(JSContext* context, unsigned int argc, JS::Value* vp);
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsNamedConstructorInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "NamedConstructorInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "NamedConstructorInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "NamedConstructorInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- interface_object_class->construct = Constructor;
- return interface_data;
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "SomeNamedConstructor";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Add the InterfaceObject.length property. It is set to the length of the
- // shortest argument list of all overload constructors.
- JS::RootedValue length_value(context);
- length_value.setInt32(0);
- success =
- JS_DefineProperty(context, rooted_interface_object, "length",
- length_value, JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsNamedConstructorInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsNamedConstructorInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsNamedConstructorInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsNamedConstructorInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-JSBool Constructor(JSContext* context, unsigned int argc, JS::Value* vp) {
- MozjsExceptionState exception_state(context);
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-
- scoped_refptr<NamedConstructorInterface> new_object =
- new NamedConstructorInterface();
- JS::RootedValue result_value(context);
- ToJSValue(context, new_object, &result_value);
- DCHECK(result_value.isObject());
- JS::RootedObject result_object(context, JSVAL_TO_OBJECT(result_value));
- args.rval().setObject(*result_object);
- return true;
-}
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_named_constructor_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_named_constructor_interface.h
deleted file mode 100644
index d2a5804..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_named_constructor_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsNamedConstructorInterface_h
-#define MozjsNamedConstructorInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/named_constructor_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsNamedConstructorInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsNamedConstructorInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_named_getter_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_named_getter_interface.cc
deleted file mode 100644
index 81ab465..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_named_getter_interface.cc
+++ /dev/null
@@ -1,707 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_named_getter_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::NamedGetterInterface;
-using cobalt::bindings::testing::MozjsNamedGetterInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-bool IsSupportedNamedProperty(JSContext* context, JS::HandleObject object,
- const std::string& property_name) {
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NamedGetterInterface* impl =
- wrapper_private->wrappable<NamedGetterInterface>().get();
- return impl->CanQueryNamedProperty(property_name);
-}
-
-void EnumerateSupportedNames(JSContext* context, JS::HandleObject object,
- JS::AutoIdVector* properties) {
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NamedGetterInterface* impl =
- wrapper_private->wrappable<NamedGetterInterface>().get();
- MozjsPropertyEnumerator enumerator(context, properties);
- impl->EnumerateNamedProperties(&enumerator);
-}
-
-JSBool GetNamedProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- JS::RootedValue id_value(context);
- if (!JS_IdToValue(context, id, id_value.address())) {
- NOTREACHED();
- return false;
- }
-
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NamedGetterInterface* impl =
- wrapper_private->wrappable<NamedGetterInterface>().get();
- std::string property_name;
- FromJSValue(context, id_value, kNoConversionFlags, &exception_state,
- &property_name);
- if (exception_state.is_exception_set()) {
- // The ID should be an integer or a string, so we shouldn't have any
- // exceptions converting to string.
- NOTREACHED();
- return false;
- }
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->NamedGetter(property_name),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool SetNamedProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- JS::RootedValue id_value(context);
- if (!JS_IdToValue(context, id, id_value.address())) {
- NOTREACHED();
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NamedGetterInterface* impl =
- wrapper_private->wrappable<NamedGetterInterface>().get();
- std::string property_name;
- FromJSValue(context, id_value, kNoConversionFlags, &exception_state,
- &property_name);
- if (exception_state.is_exception_set()) {
- // The ID should be an integer or a string, so we shouldn't have any
- // exceptions converting to string.
- NOTREACHED();
- return false;
- }
- TypeTraits<std::string >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags,
- &exception_state, &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->NamedSetter(property_name, value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-bool DeleteNamedProperty(JSContext* context, JS::HandleObject object,
- const std::string& property_name) {
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NamedGetterInterface* impl =
- wrapper_private->wrappable<NamedGetterInterface>().get();
-
- impl->NamedDeleter(property_name);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-class MozjsNamedGetterInterfaceHandler : public ProxyHandler {
- public:
- MozjsNamedGetterInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsNamedGetterInterfaceHandler::named_property_hooks = {
- IsSupportedNamedProperty,
- EnumerateSupportedNames,
- GetNamedProperty,
- SetNamedProperty,
- DeleteNamedProperty,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsNamedGetterInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsNamedGetterInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsNamedGetterInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "NamedGetterInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "NamedGetterInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "NamedGetterInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-JSBool fcn_namedDeleter(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNamedGetterInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NamedGetterInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NamedGetterInterface* impl =
- wrapper_private->wrappable<NamedGetterInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<std::string >::ConversionType name;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &name);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->NamedDeleter(name);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_namedGetter(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNamedGetterInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NamedGetterInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NamedGetterInterface* impl =
- wrapper_private->wrappable<NamedGetterInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<std::string >::ConversionType name;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &name);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->NamedGetter(name),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_namedSetter(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNamedGetterInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NamedGetterInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NamedGetterInterface* impl =
- wrapper_private->wrappable<NamedGetterInterface>().get();
- const size_t kMinArguments = 2;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<std::string >::ConversionType name;
- TypeTraits<std::string >::ConversionType value;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &name);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- DCHECK_LT(1, args.length());
- JS::RootedValue non_optional_value1(
- context, args[1]);
- FromJSValue(context,
- non_optional_value1,
- kNoConversionFlags,
- &exception_state, &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->NamedSetter(name, value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- {
- "namedDeleter",
- JSOP_WRAPPER(&fcn_namedDeleter),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "namedGetter",
- JSOP_WRAPPER(&fcn_namedGetter),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "namedSetter",
- JSOP_WRAPPER(&fcn_namedSetter),
- 2,
- JSPROP_ENUMERATE,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "NamedGetterInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsNamedGetterInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsNamedGetterInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsNamedGetterInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsNamedGetterInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_named_getter_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_named_getter_interface.h
deleted file mode 100644
index a89d5de..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_named_getter_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsNamedGetterInterface_h
-#define MozjsNamedGetterInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/named_getter_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsNamedGetterInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsNamedGetterInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_named_indexed_getter_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_named_indexed_getter_interface.cc
deleted file mode 100644
index e242258..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_named_indexed_getter_interface.cc
+++ /dev/null
@@ -1,1060 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_named_indexed_getter_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::NamedIndexedGetterInterface;
-using cobalt::bindings::testing::MozjsNamedIndexedGetterInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-bool IsSupportedNamedProperty(JSContext* context, JS::HandleObject object,
- const std::string& property_name) {
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NamedIndexedGetterInterface* impl =
- wrapper_private->wrappable<NamedIndexedGetterInterface>().get();
- return impl->CanQueryNamedProperty(property_name);
-}
-
-void EnumerateSupportedNames(JSContext* context, JS::HandleObject object,
- JS::AutoIdVector* properties) {
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NamedIndexedGetterInterface* impl =
- wrapper_private->wrappable<NamedIndexedGetterInterface>().get();
- MozjsPropertyEnumerator enumerator(context, properties);
- impl->EnumerateNamedProperties(&enumerator);
-}
-
-JSBool GetNamedProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- JS::RootedValue id_value(context);
- if (!JS_IdToValue(context, id, id_value.address())) {
- NOTREACHED();
- return false;
- }
-
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NamedIndexedGetterInterface* impl =
- wrapper_private->wrappable<NamedIndexedGetterInterface>().get();
- std::string property_name;
- FromJSValue(context, id_value, kNoConversionFlags, &exception_state,
- &property_name);
- if (exception_state.is_exception_set()) {
- // The ID should be an integer or a string, so we shouldn't have any
- // exceptions converting to string.
- NOTREACHED();
- return false;
- }
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->NamedGetter(property_name),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool SetNamedProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- JS::RootedValue id_value(context);
- if (!JS_IdToValue(context, id, id_value.address())) {
- NOTREACHED();
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NamedIndexedGetterInterface* impl =
- wrapper_private->wrappable<NamedIndexedGetterInterface>().get();
- std::string property_name;
- FromJSValue(context, id_value, kNoConversionFlags, &exception_state,
- &property_name);
- if (exception_state.is_exception_set()) {
- // The ID should be an integer or a string, so we shouldn't have any
- // exceptions converting to string.
- NOTREACHED();
- return false;
- }
- TypeTraits<std::string >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags,
- &exception_state, &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->NamedSetter(property_name, value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-bool IsSupportedIndexProperty(JSContext* context, JS::HandleObject object,
- uint32_t index) {
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NamedIndexedGetterInterface* impl =
- wrapper_private->wrappable<NamedIndexedGetterInterface>().get();
- return index < impl->length();
-}
-
-void EnumerateSupportedIndexes(JSContext* context, JS::HandleObject object,
- JS::AutoIdVector* properties) {
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NamedIndexedGetterInterface* impl =
- wrapper_private->wrappable<NamedIndexedGetterInterface>().get();
- const uint32_t kNumIndexedProperties = impl->length();
- for (uint32_t i = 0; i < kNumIndexedProperties; ++i) {
- properties->append(INT_TO_JSID(i));
- }
-}
-
-JSBool GetIndexedProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- JS::RootedValue id_value(context);
- if (!JS_IdToValue(context, id, id_value.address())) {
- NOTREACHED();
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NamedIndexedGetterInterface* impl =
- wrapper_private->wrappable<NamedIndexedGetterInterface>().get();
- uint32_t index;
- FromJSValue(context, id_value, kNoConversionFlags, &exception_state, &index);
- if (exception_state.is_exception_set()) {
- // The ID should be an integer or a string, so we shouldn't have any
- // exceptions converting to string.
- NOTREACHED();
- return false;
- }
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->IndexedGetter(index),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool SetIndexedProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- JS::RootedValue id_value(context);
- if (!JS_IdToValue(context, id, id_value.address())) {
- NOTREACHED();
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NamedIndexedGetterInterface* impl =
- wrapper_private->wrappable<NamedIndexedGetterInterface>().get();
- uint32_t index;
- FromJSValue(context, id_value, kNoConversionFlags, &exception_state, &index);
- if(exception_state.is_exception_set()) {
- // The ID should be an integer or a string, so we shouldn't have any
- // exceptions converting to string.
- NOTREACHED();
- return false;
- }
- TypeTraits<uint32_t >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags,
- &exception_state, &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->IndexedSetter(index, value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-class MozjsNamedIndexedGetterInterfaceHandler : public ProxyHandler {
- public:
- MozjsNamedIndexedGetterInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsNamedIndexedGetterInterfaceHandler::named_property_hooks = {
- IsSupportedNamedProperty,
- EnumerateSupportedNames,
- GetNamedProperty,
- SetNamedProperty,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsNamedIndexedGetterInterfaceHandler::indexed_property_hooks = {
- IsSupportedIndexProperty,
- EnumerateSupportedIndexes,
- GetIndexedProperty,
- SetIndexedProperty,
- NULL,
-};
-
-static base::LazyInstance<MozjsNamedIndexedGetterInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsNamedIndexedGetterInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "NamedIndexedGetterInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "NamedIndexedGetterInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "NamedIndexedGetterInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-JSBool get_length(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNamedIndexedGetterInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NamedIndexedGetterInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NamedIndexedGetterInterface* impl =
- wrapper_private->wrappable<NamedIndexedGetterInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->length(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool get_propertyOnBaseClass(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNamedIndexedGetterInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NamedIndexedGetterInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NamedIndexedGetterInterface* impl =
- wrapper_private->wrappable<NamedIndexedGetterInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->property_on_base_class(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_propertyOnBaseClass(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNamedIndexedGetterInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NamedIndexedGetterInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NamedIndexedGetterInterface* impl =
- wrapper_private->wrappable<NamedIndexedGetterInterface>().get();
- TypeTraits<bool >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_property_on_base_class(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_indexedGetter(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNamedIndexedGetterInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NamedIndexedGetterInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NamedIndexedGetterInterface* impl =
- wrapper_private->wrappable<NamedIndexedGetterInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<uint32_t >::ConversionType index;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &index);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->IndexedGetter(index),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_indexedSetter(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNamedIndexedGetterInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NamedIndexedGetterInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NamedIndexedGetterInterface* impl =
- wrapper_private->wrappable<NamedIndexedGetterInterface>().get();
- const size_t kMinArguments = 2;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<uint32_t >::ConversionType index;
- TypeTraits<uint32_t >::ConversionType value;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &index);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- DCHECK_LT(1, args.length());
- JS::RootedValue non_optional_value1(
- context, args[1]);
- FromJSValue(context,
- non_optional_value1,
- kNoConversionFlags,
- &exception_state, &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->IndexedSetter(index, value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_namedGetter(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNamedIndexedGetterInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NamedIndexedGetterInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NamedIndexedGetterInterface* impl =
- wrapper_private->wrappable<NamedIndexedGetterInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<std::string >::ConversionType name;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &name);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->NamedGetter(name),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_namedSetter(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNamedIndexedGetterInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NamedIndexedGetterInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NamedIndexedGetterInterface* impl =
- wrapper_private->wrappable<NamedIndexedGetterInterface>().get();
- const size_t kMinArguments = 2;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<std::string >::ConversionType name;
- TypeTraits<std::string >::ConversionType value;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &name);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- DCHECK_LT(1, args.length());
- JS::RootedValue non_optional_value1(
- context, args[1]);
- FromJSValue(context,
- non_optional_value1,
- kNoConversionFlags,
- &exception_state, &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->NamedSetter(name, value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_operationOnBaseClass(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNamedIndexedGetterInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NamedIndexedGetterInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NamedIndexedGetterInterface* impl =
- wrapper_private->wrappable<NamedIndexedGetterInterface>().get();
-
- impl->OperationOnBaseClass();
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- { // Readonly attribute
- "length", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE | JSPROP_READONLY,
- JSOP_WRAPPER(&get_length),
- JSOP_NULLWRAPPER,
- },
- { // Read/Write property
- "propertyOnBaseClass", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_propertyOnBaseClass),
- JSOP_WRAPPER(&set_propertyOnBaseClass),
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- {
- "indexedGetter",
- JSOP_WRAPPER(&fcn_indexedGetter),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "indexedSetter",
- JSOP_WRAPPER(&fcn_indexedSetter),
- 2,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "namedGetter",
- JSOP_WRAPPER(&fcn_namedGetter),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "namedSetter",
- JSOP_WRAPPER(&fcn_namedSetter),
- 2,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "operationOnBaseClass",
- JSOP_WRAPPER(&fcn_operationOnBaseClass),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "NamedIndexedGetterInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsNamedIndexedGetterInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsNamedIndexedGetterInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsNamedIndexedGetterInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsNamedIndexedGetterInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_named_indexed_getter_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_named_indexed_getter_interface.h
deleted file mode 100644
index 8f2793d..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_named_indexed_getter_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsNamedIndexedGetterInterface_h
-#define MozjsNamedIndexedGetterInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/named_indexed_getter_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsNamedIndexedGetterInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsNamedIndexedGetterInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_nested_put_forwards_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_nested_put_forwards_interface.cc
deleted file mode 100644
index 6ba2f03..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_nested_put_forwards_interface.cc
+++ /dev/null
@@ -1,483 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_nested_put_forwards_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/bindings/testing/mozjs_put_forwards_interface.h"
-#include "cobalt/bindings/testing/put_forwards_interface.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::NestedPutForwardsInterface;
-using cobalt::bindings::testing::MozjsNestedPutForwardsInterface;
-using cobalt::bindings::testing::MozjsPutForwardsInterface;
-using cobalt::bindings::testing::PutForwardsInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsNestedPutForwardsInterfaceHandler : public ProxyHandler {
- public:
- MozjsNestedPutForwardsInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsNestedPutForwardsInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsNestedPutForwardsInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsNestedPutForwardsInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsNestedPutForwardsInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "NestedPutForwardsInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "NestedPutForwardsInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "NestedPutForwardsInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-JSBool get_nestedForwardingAttribute(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNestedPutForwardsInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NestedPutForwardsInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NestedPutForwardsInterface* impl =
- wrapper_private->wrappable<NestedPutForwardsInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->nested_forwarding_attribute(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_nestedForwardingAttribute(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNestedPutForwardsInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NestedPutForwardsInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NestedPutForwardsInterface* impl =
- wrapper_private->wrappable<NestedPutForwardsInterface>().get();
- { // Begin scope of scoped_refptr<PutForwardsInterface> forwarded_impl.
- scoped_refptr<PutForwardsInterface> forwarded_impl =
- impl->nested_forwarding_attribute();
- if (!forwarded_impl) {
- NOTREACHED();
- return false;
- }
- if (!exception_state.is_exception_set()) {
- { // Begin scope of scoped_refptr<ArbitraryInterface> forwarded_forwarded_impl.
- scoped_refptr<ArbitraryInterface> forwarded_forwarded_impl =
- forwarded_impl->forwarding_attribute();
- if (!forwarded_forwarded_impl) {
- NOTREACHED();
- return false;
- }
- if (!exception_state.is_exception_set()) {
- TypeTraits<std::string >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- forwarded_forwarded_impl->set_arbitrary_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
- return !exception_state.is_exception_set();
- } // End scope of scoped_refptr<ArbitraryInterface> forwarded_forwarded_impl.
-}
- return !exception_state.is_exception_set();
- } // End scope of scoped_refptr<PutForwardsInterface> forwarded_impl.
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- { // Read/Write property
- "nestedForwardingAttribute", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_nestedForwardingAttribute),
- JSOP_WRAPPER(&set_nestedForwardingAttribute),
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "NestedPutForwardsInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsNestedPutForwardsInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsNestedPutForwardsInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsNestedPutForwardsInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsNestedPutForwardsInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_nested_put_forwards_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_nested_put_forwards_interface.h
deleted file mode 100644
index 6eeb237..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_nested_put_forwards_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsNestedPutForwardsInterface_h
-#define MozjsNestedPutForwardsInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/nested_put_forwards_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsNestedPutForwardsInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsNestedPutForwardsInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_no_constructor_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_no_constructor_interface.cc
deleted file mode 100644
index a3ca932..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_no_constructor_interface.cc
+++ /dev/null
@@ -1,369 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_no_constructor_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::NoConstructorInterface;
-using cobalt::bindings::testing::MozjsNoConstructorInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsNoConstructorInterfaceHandler : public ProxyHandler {
- public:
- MozjsNoConstructorInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsNoConstructorInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsNoConstructorInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsNoConstructorInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsNoConstructorInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "NoConstructorInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "NoConstructorInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "NoConstructorInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "NoConstructorInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsNoConstructorInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsNoConstructorInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsNoConstructorInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsNoConstructorInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_no_constructor_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_no_constructor_interface.h
deleted file mode 100644
index 776bbfc..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_no_constructor_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsNoConstructorInterface_h
-#define MozjsNoConstructorInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/no_constructor_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsNoConstructorInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsNoConstructorInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_no_interface_object_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_no_interface_object_interface.cc
deleted file mode 100644
index 23a7a5d..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_no_interface_object_interface.cc
+++ /dev/null
@@ -1,315 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_no_interface_object_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::NoInterfaceObjectInterface;
-using cobalt::bindings::testing::MozjsNoInterfaceObjectInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsNoInterfaceObjectInterfaceHandler : public ProxyHandler {
- public:
- MozjsNoInterfaceObjectInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsNoInterfaceObjectInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsNoInterfaceObjectInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsNoInterfaceObjectInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsNoInterfaceObjectInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "NoInterfaceObjectInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "NoInterfaceObjectInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "NoInterfaceObjectInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsNoInterfaceObjectInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsNoInterfaceObjectInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsNoInterfaceObjectInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_no_interface_object_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_no_interface_object_interface.h
deleted file mode 100644
index 3fcf40c..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_no_interface_object_interface.h
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsNoInterfaceObjectInterface_h
-#define MozjsNoInterfaceObjectInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/no_interface_object_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsNoInterfaceObjectInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsNoInterfaceObjectInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_nullable_types_test_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_nullable_types_test_interface.cc
deleted file mode 100644
index b9144d2..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_nullable_types_test_interface.cc
+++ /dev/null
@@ -1,1245 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_nullable_types_test_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/bindings/testing/arbitrary_interface.h"
-#include "cobalt/bindings/testing/mozjs_arbitrary_interface.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::NullableTypesTestInterface;
-using cobalt::bindings::testing::MozjsNullableTypesTestInterface;
-using cobalt::bindings::testing::ArbitraryInterface;
-using cobalt::bindings::testing::MozjsArbitraryInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsNullableTypesTestInterfaceHandler : public ProxyHandler {
- public:
- MozjsNullableTypesTestInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsNullableTypesTestInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsNullableTypesTestInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsNullableTypesTestInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsNullableTypesTestInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "NullableTypesTestInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "NullableTypesTestInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "NullableTypesTestInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-JSBool get_nullableBooleanProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNullableTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NullableTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NullableTypesTestInterface* impl =
- wrapper_private->wrappable<NullableTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->nullable_boolean_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_nullableBooleanProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNullableTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NullableTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NullableTypesTestInterface* impl =
- wrapper_private->wrappable<NullableTypesTestInterface>().get();
- TypeTraits<base::optional<bool > >::ConversionType value;
- FromJSValue(context, vp, (kConversionFlagNullable), &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_nullable_boolean_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_nullableNumericProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNullableTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NullableTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NullableTypesTestInterface* impl =
- wrapper_private->wrappable<NullableTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->nullable_numeric_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_nullableNumericProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNullableTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NullableTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NullableTypesTestInterface* impl =
- wrapper_private->wrappable<NullableTypesTestInterface>().get();
- TypeTraits<base::optional<int32_t > >::ConversionType value;
- FromJSValue(context, vp, (kConversionFlagNullable), &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_nullable_numeric_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_nullableStringProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNullableTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NullableTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NullableTypesTestInterface* impl =
- wrapper_private->wrappable<NullableTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->nullable_string_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_nullableStringProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNullableTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NullableTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NullableTypesTestInterface* impl =
- wrapper_private->wrappable<NullableTypesTestInterface>().get();
- TypeTraits<base::optional<std::string > >::ConversionType value;
- FromJSValue(context, vp, (kConversionFlagNullable), &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_nullable_string_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_nullableObjectProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNullableTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NullableTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NullableTypesTestInterface* impl =
- wrapper_private->wrappable<NullableTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->nullable_object_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_nullableObjectProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNullableTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NullableTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NullableTypesTestInterface* impl =
- wrapper_private->wrappable<NullableTypesTestInterface>().get();
- TypeTraits<scoped_refptr<ArbitraryInterface> >::ConversionType value;
- FromJSValue(context, vp, (kConversionFlagNullable), &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_nullable_object_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_nullableBooleanArgument(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNullableTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NullableTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NullableTypesTestInterface* impl =
- wrapper_private->wrappable<NullableTypesTestInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<base::optional<bool > >::ConversionType arg;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- (kConversionFlagNullable),
- &exception_state, &arg);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->NullableBooleanArgument(arg);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_nullableBooleanOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNullableTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NullableTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NullableTypesTestInterface* impl =
- wrapper_private->wrappable<NullableTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->NullableBooleanOperation(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_nullableNumericArgument(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNullableTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NullableTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NullableTypesTestInterface* impl =
- wrapper_private->wrappable<NullableTypesTestInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<base::optional<int32_t > >::ConversionType arg;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- (kConversionFlagNullable),
- &exception_state, &arg);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->NullableNumericArgument(arg);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_nullableNumericOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNullableTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NullableTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NullableTypesTestInterface* impl =
- wrapper_private->wrappable<NullableTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->NullableNumericOperation(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_nullableObjectArgument(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNullableTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NullableTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NullableTypesTestInterface* impl =
- wrapper_private->wrappable<NullableTypesTestInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<scoped_refptr<ArbitraryInterface> >::ConversionType arg;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- (kConversionFlagNullable),
- &exception_state, &arg);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->NullableObjectArgument(arg);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_nullableObjectOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNullableTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NullableTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NullableTypesTestInterface* impl =
- wrapper_private->wrappable<NullableTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->NullableObjectOperation(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_nullableStringArgument(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNullableTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NullableTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NullableTypesTestInterface* impl =
- wrapper_private->wrappable<NullableTypesTestInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<base::optional<std::string > >::ConversionType arg;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- (kConversionFlagNullable),
- &exception_state, &arg);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->NullableStringArgument(arg);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_nullableStringOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNullableTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NullableTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NullableTypesTestInterface* impl =
- wrapper_private->wrappable<NullableTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->NullableStringOperation(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- { // Read/Write property
- "nullableBooleanProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_nullableBooleanProperty),
- JSOP_WRAPPER(&set_nullableBooleanProperty),
- },
- { // Read/Write property
- "nullableNumericProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_nullableNumericProperty),
- JSOP_WRAPPER(&set_nullableNumericProperty),
- },
- { // Read/Write property
- "nullableStringProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_nullableStringProperty),
- JSOP_WRAPPER(&set_nullableStringProperty),
- },
- { // Read/Write property
- "nullableObjectProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_nullableObjectProperty),
- JSOP_WRAPPER(&set_nullableObjectProperty),
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- {
- "nullableBooleanArgument",
- JSOP_WRAPPER(&fcn_nullableBooleanArgument),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "nullableBooleanOperation",
- JSOP_WRAPPER(&fcn_nullableBooleanOperation),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "nullableNumericArgument",
- JSOP_WRAPPER(&fcn_nullableNumericArgument),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "nullableNumericOperation",
- JSOP_WRAPPER(&fcn_nullableNumericOperation),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "nullableObjectArgument",
- JSOP_WRAPPER(&fcn_nullableObjectArgument),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "nullableObjectOperation",
- JSOP_WRAPPER(&fcn_nullableObjectOperation),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "nullableStringArgument",
- JSOP_WRAPPER(&fcn_nullableStringArgument),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "nullableStringOperation",
- JSOP_WRAPPER(&fcn_nullableStringOperation),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "NullableTypesTestInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsNullableTypesTestInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsNullableTypesTestInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsNullableTypesTestInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsNullableTypesTestInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_nullable_types_test_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_nullable_types_test_interface.h
deleted file mode 100644
index bac50bf..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_nullable_types_test_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsNullableTypesTestInterface_h
-#define MozjsNullableTypesTestInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/nullable_types_test_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsNullableTypesTestInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsNullableTypesTestInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_numeric_types_test_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_numeric_types_test_interface.cc
deleted file mode 100644
index 5a27ac4..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_numeric_types_test_interface.cc
+++ /dev/null
@@ -1,3253 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_numeric_types_test_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::NumericTypesTestInterface;
-using cobalt::bindings::testing::MozjsNumericTypesTestInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsNumericTypesTestInterfaceHandler : public ProxyHandler {
- public:
- MozjsNumericTypesTestInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsNumericTypesTestInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsNumericTypesTestInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsNumericTypesTestInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsNumericTypesTestInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "NumericTypesTestInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "NumericTypesTestInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "NumericTypesTestInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-JSBool get_byteProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->byte_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_byteProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
- TypeTraits<int8_t >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_byte_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_byteClampProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->byte_clamp_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_byteClampProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
- TypeTraits<int8_t >::ConversionType value;
- FromJSValue(context, vp, (kConversionFlagClamped), &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_byte_clamp_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_octetProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->octet_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_octetProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
- TypeTraits<uint8_t >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_octet_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_octetClampProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->octet_clamp_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_octetClampProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
- TypeTraits<uint8_t >::ConversionType value;
- FromJSValue(context, vp, (kConversionFlagClamped), &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_octet_clamp_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_shortProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->short_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_shortProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
- TypeTraits<int16_t >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_short_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_shortClampProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->short_clamp_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_shortClampProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
- TypeTraits<int16_t >::ConversionType value;
- FromJSValue(context, vp, (kConversionFlagClamped), &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_short_clamp_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_unsignedShortProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->unsigned_short_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_unsignedShortProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
- TypeTraits<uint16_t >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_unsigned_short_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_unsignedShortClampProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->unsigned_short_clamp_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_unsignedShortClampProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
- TypeTraits<uint16_t >::ConversionType value;
- FromJSValue(context, vp, (kConversionFlagClamped), &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_unsigned_short_clamp_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_longProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->long_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_longProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
- TypeTraits<int32_t >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_long_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_longClampProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->long_clamp_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_longClampProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
- TypeTraits<int32_t >::ConversionType value;
- FromJSValue(context, vp, (kConversionFlagClamped), &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_long_clamp_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_unsignedLongProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->unsigned_long_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_unsignedLongProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
- TypeTraits<uint32_t >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_unsigned_long_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_unsignedLongClampProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->unsigned_long_clamp_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_unsignedLongClampProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
- TypeTraits<uint32_t >::ConversionType value;
- FromJSValue(context, vp, (kConversionFlagClamped), &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_unsigned_long_clamp_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_longLongProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->long_long_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_longLongProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
- TypeTraits<int64_t >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_long_long_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_longLongClampProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->long_long_clamp_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_longLongClampProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
- TypeTraits<int64_t >::ConversionType value;
- FromJSValue(context, vp, (kConversionFlagClamped), &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_long_long_clamp_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_unsignedLongLongProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->unsigned_long_long_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_unsignedLongLongProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
- TypeTraits<uint64_t >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_unsigned_long_long_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_unsignedLongLongClampProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->unsigned_long_long_clamp_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_unsignedLongLongClampProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
- TypeTraits<uint64_t >::ConversionType value;
- FromJSValue(context, vp, (kConversionFlagClamped), &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_unsigned_long_long_clamp_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_doubleProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->double_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_doubleProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
- TypeTraits<double >::ConversionType value;
- FromJSValue(context, vp, (kConversionFlagRestricted), &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_double_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_unrestrictedDoubleProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->unrestricted_double_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_unrestrictedDoubleProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
- TypeTraits<double >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_unrestricted_double_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_byteArgumentOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<int8_t >::ConversionType arg1;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &arg1);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->ByteArgumentOperation(arg1);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_byteReturnOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->ByteReturnOperation(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_doubleArgumentOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<double >::ConversionType arg1;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- (kConversionFlagRestricted),
- &exception_state, &arg1);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->DoubleArgumentOperation(arg1);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_doubleReturnOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->DoubleReturnOperation(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_longArgumentOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<int32_t >::ConversionType arg1;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &arg1);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->LongArgumentOperation(arg1);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_longLongArgumentOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<int64_t >::ConversionType arg1;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &arg1);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->LongLongArgumentOperation(arg1);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_longLongReturnOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->LongLongReturnOperation(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_longReturnOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->LongReturnOperation(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_octetArgumentOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<uint8_t >::ConversionType arg1;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &arg1);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->OctetArgumentOperation(arg1);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_octetReturnOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->OctetReturnOperation(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_shortArgumentOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<int16_t >::ConversionType arg1;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &arg1);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->ShortArgumentOperation(arg1);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_shortReturnOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->ShortReturnOperation(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_unrestrictedDoubleArgumentOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<double >::ConversionType arg1;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &arg1);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->UnrestrictedDoubleArgumentOperation(arg1);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_unrestrictedDoubleReturnOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->UnrestrictedDoubleReturnOperation(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_unsignedLongArgumentOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<uint32_t >::ConversionType arg1;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &arg1);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->UnsignedLongArgumentOperation(arg1);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_unsignedLongLongArgumentOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<uint64_t >::ConversionType arg1;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &arg1);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->UnsignedLongLongArgumentOperation(arg1);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_unsignedLongLongReturnOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->UnsignedLongLongReturnOperation(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_unsignedLongReturnOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->UnsignedLongReturnOperation(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_unsignedShortArgumentOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<uint16_t >::ConversionType arg1;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &arg1);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->UnsignedShortArgumentOperation(arg1);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_unsignedShortReturnOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsNumericTypesTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<NumericTypesTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- NumericTypesTestInterface* impl =
- wrapper_private->wrappable<NumericTypesTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->UnsignedShortReturnOperation(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- { // Read/Write property
- "byteProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_byteProperty),
- JSOP_WRAPPER(&set_byteProperty),
- },
- { // Read/Write property
- "byteClampProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_byteClampProperty),
- JSOP_WRAPPER(&set_byteClampProperty),
- },
- { // Read/Write property
- "octetProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_octetProperty),
- JSOP_WRAPPER(&set_octetProperty),
- },
- { // Read/Write property
- "octetClampProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_octetClampProperty),
- JSOP_WRAPPER(&set_octetClampProperty),
- },
- { // Read/Write property
- "shortProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_shortProperty),
- JSOP_WRAPPER(&set_shortProperty),
- },
- { // Read/Write property
- "shortClampProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_shortClampProperty),
- JSOP_WRAPPER(&set_shortClampProperty),
- },
- { // Read/Write property
- "unsignedShortProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_unsignedShortProperty),
- JSOP_WRAPPER(&set_unsignedShortProperty),
- },
- { // Read/Write property
- "unsignedShortClampProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_unsignedShortClampProperty),
- JSOP_WRAPPER(&set_unsignedShortClampProperty),
- },
- { // Read/Write property
- "longProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_longProperty),
- JSOP_WRAPPER(&set_longProperty),
- },
- { // Read/Write property
- "longClampProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_longClampProperty),
- JSOP_WRAPPER(&set_longClampProperty),
- },
- { // Read/Write property
- "unsignedLongProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_unsignedLongProperty),
- JSOP_WRAPPER(&set_unsignedLongProperty),
- },
- { // Read/Write property
- "unsignedLongClampProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_unsignedLongClampProperty),
- JSOP_WRAPPER(&set_unsignedLongClampProperty),
- },
- { // Read/Write property
- "longLongProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_longLongProperty),
- JSOP_WRAPPER(&set_longLongProperty),
- },
- { // Read/Write property
- "longLongClampProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_longLongClampProperty),
- JSOP_WRAPPER(&set_longLongClampProperty),
- },
- { // Read/Write property
- "unsignedLongLongProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_unsignedLongLongProperty),
- JSOP_WRAPPER(&set_unsignedLongLongProperty),
- },
- { // Read/Write property
- "unsignedLongLongClampProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_unsignedLongLongClampProperty),
- JSOP_WRAPPER(&set_unsignedLongLongClampProperty),
- },
- { // Read/Write property
- "doubleProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_doubleProperty),
- JSOP_WRAPPER(&set_doubleProperty),
- },
- { // Read/Write property
- "unrestrictedDoubleProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_unrestrictedDoubleProperty),
- JSOP_WRAPPER(&set_unrestrictedDoubleProperty),
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- {
- "byteArgumentOperation",
- JSOP_WRAPPER(&fcn_byteArgumentOperation),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "byteReturnOperation",
- JSOP_WRAPPER(&fcn_byteReturnOperation),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "doubleArgumentOperation",
- JSOP_WRAPPER(&fcn_doubleArgumentOperation),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "doubleReturnOperation",
- JSOP_WRAPPER(&fcn_doubleReturnOperation),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "longArgumentOperation",
- JSOP_WRAPPER(&fcn_longArgumentOperation),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "longLongArgumentOperation",
- JSOP_WRAPPER(&fcn_longLongArgumentOperation),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "longLongReturnOperation",
- JSOP_WRAPPER(&fcn_longLongReturnOperation),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "longReturnOperation",
- JSOP_WRAPPER(&fcn_longReturnOperation),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "octetArgumentOperation",
- JSOP_WRAPPER(&fcn_octetArgumentOperation),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "octetReturnOperation",
- JSOP_WRAPPER(&fcn_octetReturnOperation),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "shortArgumentOperation",
- JSOP_WRAPPER(&fcn_shortArgumentOperation),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "shortReturnOperation",
- JSOP_WRAPPER(&fcn_shortReturnOperation),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "unrestrictedDoubleArgumentOperation",
- JSOP_WRAPPER(&fcn_unrestrictedDoubleArgumentOperation),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "unrestrictedDoubleReturnOperation",
- JSOP_WRAPPER(&fcn_unrestrictedDoubleReturnOperation),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "unsignedLongArgumentOperation",
- JSOP_WRAPPER(&fcn_unsignedLongArgumentOperation),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "unsignedLongLongArgumentOperation",
- JSOP_WRAPPER(&fcn_unsignedLongLongArgumentOperation),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "unsignedLongLongReturnOperation",
- JSOP_WRAPPER(&fcn_unsignedLongLongReturnOperation),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "unsignedLongReturnOperation",
- JSOP_WRAPPER(&fcn_unsignedLongReturnOperation),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "unsignedShortArgumentOperation",
- JSOP_WRAPPER(&fcn_unsignedShortArgumentOperation),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "unsignedShortReturnOperation",
- JSOP_WRAPPER(&fcn_unsignedShortReturnOperation),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "NumericTypesTestInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsNumericTypesTestInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsNumericTypesTestInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsNumericTypesTestInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsNumericTypesTestInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_numeric_types_test_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_numeric_types_test_interface.h
deleted file mode 100644
index 0fdabbe..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_numeric_types_test_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsNumericTypesTestInterface_h
-#define MozjsNumericTypesTestInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/numeric_types_test_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsNumericTypesTestInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsNumericTypesTestInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_object_type_bindings_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_object_type_bindings_interface.cc
deleted file mode 100644
index 7541b5b..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_object_type_bindings_interface.cc
+++ /dev/null
@@ -1,692 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_object_type_bindings_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/bindings/testing/arbitrary_interface.h"
-#include "cobalt/bindings/testing/base_interface.h"
-#include "cobalt/bindings/testing/derived_interface.h"
-#include "cobalt/bindings/testing/mozjs_arbitrary_interface.h"
-#include "cobalt/bindings/testing/mozjs_base_interface.h"
-#include "cobalt/bindings/testing/mozjs_derived_interface.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::ObjectTypeBindingsInterface;
-using cobalt::bindings::testing::MozjsObjectTypeBindingsInterface;
-using cobalt::bindings::testing::ArbitraryInterface;
-using cobalt::bindings::testing::BaseInterface;
-using cobalt::bindings::testing::DerivedInterface;
-using cobalt::bindings::testing::MozjsArbitraryInterface;
-using cobalt::bindings::testing::MozjsBaseInterface;
-using cobalt::bindings::testing::MozjsDerivedInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsObjectTypeBindingsInterfaceHandler : public ProxyHandler {
- public:
- MozjsObjectTypeBindingsInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsObjectTypeBindingsInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsObjectTypeBindingsInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsObjectTypeBindingsInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsObjectTypeBindingsInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "ObjectTypeBindingsInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "ObjectTypeBindingsInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "ObjectTypeBindingsInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-JSBool get_arbitraryObject(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsObjectTypeBindingsInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ObjectTypeBindingsInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- ObjectTypeBindingsInterface* impl =
- wrapper_private->wrappable<ObjectTypeBindingsInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->arbitrary_object(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_arbitraryObject(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsObjectTypeBindingsInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ObjectTypeBindingsInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- ObjectTypeBindingsInterface* impl =
- wrapper_private->wrappable<ObjectTypeBindingsInterface>().get();
- TypeTraits<scoped_refptr<ArbitraryInterface> >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_arbitrary_object(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_baseInterface(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsObjectTypeBindingsInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ObjectTypeBindingsInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- ObjectTypeBindingsInterface* impl =
- wrapper_private->wrappable<ObjectTypeBindingsInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->base_interface(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool get_derivedInterface(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsObjectTypeBindingsInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ObjectTypeBindingsInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- ObjectTypeBindingsInterface* impl =
- wrapper_private->wrappable<ObjectTypeBindingsInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->derived_interface(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_derivedInterface(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsObjectTypeBindingsInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ObjectTypeBindingsInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- ObjectTypeBindingsInterface* impl =
- wrapper_private->wrappable<ObjectTypeBindingsInterface>().get();
- TypeTraits<scoped_refptr<DerivedInterface> >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_derived_interface(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_objectProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsObjectTypeBindingsInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ObjectTypeBindingsInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- ObjectTypeBindingsInterface* impl =
- wrapper_private->wrappable<ObjectTypeBindingsInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->object_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_objectProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsObjectTypeBindingsInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ObjectTypeBindingsInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- ObjectTypeBindingsInterface* impl =
- wrapper_private->wrappable<ObjectTypeBindingsInterface>().get();
- TypeTraits<::cobalt::script::OpaqueHandle >::ConversionType value;
- FromJSValue(context, vp, (kConversionFlagNullable), &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_object_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- { // Read/Write property
- "arbitraryObject", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_arbitraryObject),
- JSOP_WRAPPER(&set_arbitraryObject),
- },
- { // Readonly attribute
- "baseInterface", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE | JSPROP_READONLY,
- JSOP_WRAPPER(&get_baseInterface),
- JSOP_NULLWRAPPER,
- },
- { // Read/Write property
- "derivedInterface", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_derivedInterface),
- JSOP_WRAPPER(&set_derivedInterface),
- },
- { // Read/Write property
- "objectProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_objectProperty),
- JSOP_WRAPPER(&set_objectProperty),
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "ObjectTypeBindingsInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsObjectTypeBindingsInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsObjectTypeBindingsInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsObjectTypeBindingsInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsObjectTypeBindingsInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_object_type_bindings_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_object_type_bindings_interface.h
deleted file mode 100644
index 45475b4..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_object_type_bindings_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsObjectTypeBindingsInterface_h
-#define MozjsObjectTypeBindingsInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/object_type_bindings_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsObjectTypeBindingsInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsObjectTypeBindingsInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_operations_test_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_operations_test_interface.cc
deleted file mode 100644
index 838dd0b..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_operations_test_interface.cc
+++ /dev/null
@@ -1,1981 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_operations_test_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/bindings/testing/arbitrary_interface.h"
-#include "cobalt/bindings/testing/mozjs_arbitrary_interface.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::OperationsTestInterface;
-using cobalt::bindings::testing::MozjsOperationsTestInterface;
-using cobalt::bindings::testing::ArbitraryInterface;
-using cobalt::bindings::testing::MozjsArbitraryInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsOperationsTestInterfaceHandler : public ProxyHandler {
- public:
- MozjsOperationsTestInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsOperationsTestInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsOperationsTestInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsOperationsTestInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsOperationsTestInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "OperationsTestInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "OperationsTestInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "OperationsTestInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-JSBool fcn_longFunctionNoArgs(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsOperationsTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<OperationsTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- OperationsTestInterface* impl =
- wrapper_private->wrappable<OperationsTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->LongFunctionNoArgs(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_objectFunctionNoArgs(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsOperationsTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<OperationsTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- OperationsTestInterface* impl =
- wrapper_private->wrappable<OperationsTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->ObjectFunctionNoArgs(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_optionalArgumentWithDefault(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsOperationsTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<OperationsTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- OperationsTestInterface* impl =
- wrapper_private->wrappable<OperationsTestInterface>().get();
- // Optional arguments with default values
- TypeTraits<double >::ConversionType arg1 =
- 2.718;
- size_t num_set_arguments = 1;
- if (args.length() > 0) {
- JS::RootedValue optional_value0(
- context, args[0]);
- FromJSValue(context,
- optional_value0,
- (kConversionFlagRestricted),
- &exception_state,
- &arg1);
- if (exception_state.is_exception_set()) {
- return false;
- }
- }
-
- impl->OptionalArgumentWithDefault(arg1);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_optionalArguments(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsOperationsTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<OperationsTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- OperationsTestInterface* impl =
- wrapper_private->wrappable<OperationsTestInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<int32_t >::ConversionType arg1;
- // Optional arguments
- TypeTraits<int32_t >::ConversionType arg2;
- TypeTraits<int32_t >::ConversionType arg3;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &arg1);
- if (exception_state.is_exception_set()) {
- return false;
- }
- size_t num_set_arguments = 1;
- if (args.length() > 1) {
- JS::RootedValue optional_value0(
- context, args[1]);
- FromJSValue(context,
- optional_value0,
- kNoConversionFlags,
- &exception_state,
- &arg2);
- if (exception_state.is_exception_set()) {
- return false;
- }
- ++num_set_arguments;
- }
- if (args.length() > 2) {
- JS::RootedValue optional_value1(
- context, args[2]);
- FromJSValue(context,
- optional_value1,
- kNoConversionFlags,
- &exception_state,
- &arg3);
- if (exception_state.is_exception_set()) {
- return false;
- }
- ++num_set_arguments;
- }
- switch (num_set_arguments) {
- case 1:
- {
- impl->OptionalArguments(arg1);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
- }
- break;
- case 2:
- {
- impl->OptionalArguments(arg1, arg2);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
- }
- break;
- case 3:
- {
- impl->OptionalArguments(arg1, arg2, arg3);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
- }
- break;
- default:
- NOTREACHED();
- return false;
- }
-}
-
-JSBool fcn_optionalNullableArgumentsWithDefaults(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsOperationsTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<OperationsTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- OperationsTestInterface* impl =
- wrapper_private->wrappable<OperationsTestInterface>().get();
- // Optional arguments with default values
- TypeTraits<base::optional<bool > >::ConversionType arg1 =
- base::nullopt;
- TypeTraits<scoped_refptr<ArbitraryInterface> >::ConversionType arg2 =
- NULL;
- size_t num_set_arguments = 2;
- if (args.length() > 0) {
- JS::RootedValue optional_value0(
- context, args[0]);
- FromJSValue(context,
- optional_value0,
- (kConversionFlagNullable),
- &exception_state,
- &arg1);
- if (exception_state.is_exception_set()) {
- return false;
- }
- }
- if (args.length() > 1) {
- JS::RootedValue optional_value1(
- context, args[1]);
- FromJSValue(context,
- optional_value1,
- (kConversionFlagNullable),
- &exception_state,
- &arg2);
- if (exception_state.is_exception_set()) {
- return false;
- }
- }
-
- impl->OptionalNullableArgumentsWithDefaults(arg1, arg2);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_overloadedFunction1(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsOperationsTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<OperationsTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- OperationsTestInterface* impl =
- wrapper_private->wrappable<OperationsTestInterface>().get();
-
- impl->OverloadedFunction();
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_overloadedFunction2(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsOperationsTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<OperationsTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- OperationsTestInterface* impl =
- wrapper_private->wrappable<OperationsTestInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<int32_t >::ConversionType arg;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &arg);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->OverloadedFunction(arg);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_overloadedFunction3(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsOperationsTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<OperationsTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- OperationsTestInterface* impl =
- wrapper_private->wrappable<OperationsTestInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<std::string >::ConversionType arg;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &arg);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->OverloadedFunction(arg);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_overloadedFunction4(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsOperationsTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<OperationsTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- OperationsTestInterface* impl =
- wrapper_private->wrappable<OperationsTestInterface>().get();
- const size_t kMinArguments = 3;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<int32_t >::ConversionType arg1;
- TypeTraits<int32_t >::ConversionType arg2;
- TypeTraits<int32_t >::ConversionType arg3;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &arg1);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- DCHECK_LT(1, args.length());
- JS::RootedValue non_optional_value1(
- context, args[1]);
- FromJSValue(context,
- non_optional_value1,
- kNoConversionFlags,
- &exception_state, &arg2);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- DCHECK_LT(2, args.length());
- JS::RootedValue non_optional_value2(
- context, args[2]);
- FromJSValue(context,
- non_optional_value2,
- kNoConversionFlags,
- &exception_state, &arg3);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->OverloadedFunction(arg1, arg2, arg3);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_overloadedFunction5(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsOperationsTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<OperationsTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- OperationsTestInterface* impl =
- wrapper_private->wrappable<OperationsTestInterface>().get();
- const size_t kMinArguments = 3;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<int32_t >::ConversionType arg1;
- TypeTraits<int32_t >::ConversionType arg2;
- TypeTraits<scoped_refptr<ArbitraryInterface> >::ConversionType arg3;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &arg1);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- DCHECK_LT(1, args.length());
- JS::RootedValue non_optional_value1(
- context, args[1]);
- FromJSValue(context,
- non_optional_value1,
- kNoConversionFlags,
- &exception_state, &arg2);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- DCHECK_LT(2, args.length());
- JS::RootedValue non_optional_value2(
- context, args[2]);
- FromJSValue(context,
- non_optional_value2,
- kNoConversionFlags,
- &exception_state, &arg3);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->OverloadedFunction(arg1, arg2, arg3);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_overloadedFunction(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- switch(argc) {
- case(0): {
- // Overload resolution algorithm details found here:
- // http://heycam.github.io/webidl/#dfn-overload-resolution-algorithm
- if (true) {
- return fcn_overloadedFunction1(
- context, argc, vp);
- }
- break;
- }
- case(1): {
- // Overload resolution algorithm details found here:
- // http://heycam.github.io/webidl/#dfn-overload-resolution-algorithm
- JS::RootedValue arg(context, args[0]);
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- JS::RootedObject object(context);
- if (arg.isObject()) {
- object = JSVAL_TO_OBJECT(arg);
- }
- if (arg.isNumber()) {
- return fcn_overloadedFunction2(
- context, argc, vp);
- }
- if (true) {
- return fcn_overloadedFunction3(
- context, argc, vp);
- }
- if (true) {
- return fcn_overloadedFunction2(
- context, argc, vp);
- }
- break;
- }
- case(3): {
- // Overload resolution algorithm details found here:
- // http://heycam.github.io/webidl/#dfn-overload-resolution-algorithm
- JS::RootedValue arg(context, args[2]);
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- JS::RootedObject object(context);
- if (arg.isObject()) {
- object = JSVAL_TO_OBJECT(arg);
- }
- if (arg.isObject() ? wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ArbitraryInterface>()) :
- false) {
- return fcn_overloadedFunction5(
- context, argc, vp);
- }
- if (true) {
- return fcn_overloadedFunction4(
- context, argc, vp);
- }
- break;
- }
- }
- // Invalid number of args
- // http://heycam.github.io/webidl/#dfn-overload-resolution-algorithm
- // 4. If S is empty, then throw a TypeError.
- MozjsExceptionState exception_state(context);
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
-}
-
-JSBool fcn_overloadedNullable1(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsOperationsTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<OperationsTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- OperationsTestInterface* impl =
- wrapper_private->wrappable<OperationsTestInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<int32_t >::ConversionType arg;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &arg);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->OverloadedNullable(arg);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_overloadedNullable2(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsOperationsTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<OperationsTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- OperationsTestInterface* impl =
- wrapper_private->wrappable<OperationsTestInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<base::optional<bool > >::ConversionType arg;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- (kConversionFlagNullable),
- &exception_state, &arg);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->OverloadedNullable(arg);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_overloadedNullable(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- switch(argc) {
- case(1): {
- // Overload resolution algorithm details found here:
- // http://heycam.github.io/webidl/#dfn-overload-resolution-algorithm
- JS::RootedValue arg(context, args[0]);
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- JS::RootedObject object(context);
- if (arg.isObject()) {
- object = JSVAL_TO_OBJECT(arg);
- }
- if (arg.isNullOrUndefined()) {
- return fcn_overloadedNullable2(
- context, argc, vp);
- }
- if (true) {
- return fcn_overloadedNullable1(
- context, argc, vp);
- }
- break;
- }
- }
- // Invalid number of args
- // http://heycam.github.io/webidl/#dfn-overload-resolution-algorithm
- // 4. If S is empty, then throw a TypeError.
- MozjsExceptionState exception_state(context);
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
-}
-
-JSBool fcn_stringFunctionNoArgs(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsOperationsTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<OperationsTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- OperationsTestInterface* impl =
- wrapper_private->wrappable<OperationsTestInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->StringFunctionNoArgs(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_variadicPrimitiveArguments(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsOperationsTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<OperationsTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- OperationsTestInterface* impl =
- wrapper_private->wrappable<OperationsTestInterface>().get();
- // Variadic argument
- TypeTraits<std::vector<int32_t> >::ConversionType bools;
-
- // Get variadic arguments.
- const size_t kFirstVariadicArgIndex = 0;
- if (args.length() > kFirstVariadicArgIndex) {
- bools.resize(args.length() - kFirstVariadicArgIndex);
- for (int i = 0; i + kFirstVariadicArgIndex < args.length(); ++i) {
- JS::RootedValue variadic_argument_value(
- context, args[i + kFirstVariadicArgIndex]);
- FromJSValue(context,
- variadic_argument_value,
- kNoConversionFlags,
- &exception_state,
- &bools[i]);
- if (exception_state.is_exception_set()) {
- return false;
- }
- }
- }
-
- impl->VariadicPrimitiveArguments(bools);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_variadicStringArgumentsAfterOptionalArgument(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsOperationsTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<OperationsTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- OperationsTestInterface* impl =
- wrapper_private->wrappable<OperationsTestInterface>().get();
- // Optional arguments
- TypeTraits<bool >::ConversionType optional_arg;
- // Variadic argument
- TypeTraits<std::vector<std::string> >::ConversionType strings;
- size_t num_set_arguments = 0;
- if (args.length() > 0) {
- JS::RootedValue optional_value0(
- context, args[0]);
- FromJSValue(context,
- optional_value0,
- kNoConversionFlags,
- &exception_state,
- &optional_arg);
- if (exception_state.is_exception_set()) {
- return false;
- }
- ++num_set_arguments;
- }
-
- // Get variadic arguments.
- const size_t kLastOptionalArgIndex = 1;
- if (num_set_arguments == kLastOptionalArgIndex) {
- // If the last optional argument has been set, we will call the overload
- // that takes the variadic argument, possibly with an empty vector in the
- // case that there are no more arguments left.
- ++num_set_arguments;
- }
- const size_t kFirstVariadicArgIndex = 1;
- if (args.length() > kFirstVariadicArgIndex) {
- strings.resize(args.length() - kFirstVariadicArgIndex);
- for (int i = 0; i + kFirstVariadicArgIndex < args.length(); ++i) {
- JS::RootedValue variadic_argument_value(
- context, args[i + kFirstVariadicArgIndex]);
- FromJSValue(context,
- variadic_argument_value,
- kNoConversionFlags,
- &exception_state,
- &strings[i]);
- if (exception_state.is_exception_set()) {
- return false;
- }
- }
- }
- switch (num_set_arguments) {
- case 0:
- {
- impl->VariadicStringArgumentsAfterOptionalArgument();
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
- }
- break;
- case 2:
- {
- impl->VariadicStringArgumentsAfterOptionalArgument(optional_arg, strings);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
- }
- break;
- default:
- NOTREACHED();
- return false;
- }
-}
-
-JSBool fcn_voidFunctionLongArg(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsOperationsTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<OperationsTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- OperationsTestInterface* impl =
- wrapper_private->wrappable<OperationsTestInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<int32_t >::ConversionType arg;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &arg);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->VoidFunctionLongArg(arg);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_voidFunctionNoArgs(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsOperationsTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<OperationsTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- OperationsTestInterface* impl =
- wrapper_private->wrappable<OperationsTestInterface>().get();
-
- impl->VoidFunctionNoArgs();
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_voidFunctionObjectArg(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsOperationsTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<OperationsTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- OperationsTestInterface* impl =
- wrapper_private->wrappable<OperationsTestInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<scoped_refptr<ArbitraryInterface> >::ConversionType arg;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &arg);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->VoidFunctionObjectArg(arg);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_voidFunctionStringArg(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsOperationsTestInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<OperationsTestInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- OperationsTestInterface* impl =
- wrapper_private->wrappable<OperationsTestInterface>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<std::string >::ConversionType arg;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &arg);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->VoidFunctionStringArg(arg);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool staticfcn_overloadedFunction1(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<double >::ConversionType arg;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- (kConversionFlagRestricted),
- &exception_state, &arg);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- OperationsTestInterface::OverloadedFunction(arg);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool staticfcn_overloadedFunction2(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- const size_t kMinArguments = 2;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<double >::ConversionType arg1;
- TypeTraits<double >::ConversionType arg2;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- (kConversionFlagRestricted),
- &exception_state, &arg1);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- DCHECK_LT(1, args.length());
- JS::RootedValue non_optional_value1(
- context, args[1]);
- FromJSValue(context,
- non_optional_value1,
- (kConversionFlagRestricted),
- &exception_state, &arg2);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- OperationsTestInterface::OverloadedFunction(arg1, arg2);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool staticfcn_overloadedFunction(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- switch(argc) {
- case(1): {
- // Overload resolution algorithm details found here:
- // http://heycam.github.io/webidl/#dfn-overload-resolution-algorithm
- if (true) {
- return staticfcn_overloadedFunction1(
- context, argc, vp);
- }
- break;
- }
- case(2): {
- // Overload resolution algorithm details found here:
- // http://heycam.github.io/webidl/#dfn-overload-resolution-algorithm
- if (true) {
- return staticfcn_overloadedFunction2(
- context, argc, vp);
- }
- break;
- }
- }
- // Invalid number of args
- // http://heycam.github.io/webidl/#dfn-overload-resolution-algorithm
- // 4. If S is empty, then throw a TypeError.
- MozjsExceptionState exception_state(context);
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- {
- "longFunctionNoArgs",
- JSOP_WRAPPER(&fcn_longFunctionNoArgs),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "objectFunctionNoArgs",
- JSOP_WRAPPER(&fcn_objectFunctionNoArgs),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "optionalArgumentWithDefault",
- JSOP_WRAPPER(&fcn_optionalArgumentWithDefault),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "optionalArguments",
- JSOP_WRAPPER(&fcn_optionalArguments),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "optionalNullableArgumentsWithDefaults",
- JSOP_WRAPPER(&fcn_optionalNullableArgumentsWithDefaults),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "overloadedFunction",
- JSOP_WRAPPER(&fcn_overloadedFunction),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "overloadedNullable",
- JSOP_WRAPPER(&fcn_overloadedNullable),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "stringFunctionNoArgs",
- JSOP_WRAPPER(&fcn_stringFunctionNoArgs),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "variadicPrimitiveArguments",
- JSOP_WRAPPER(&fcn_variadicPrimitiveArguments),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "variadicStringArgumentsAfterOptionalArgument",
- JSOP_WRAPPER(&fcn_variadicStringArgumentsAfterOptionalArgument),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "voidFunctionLongArg",
- JSOP_WRAPPER(&fcn_voidFunctionLongArg),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "voidFunctionNoArgs",
- JSOP_WRAPPER(&fcn_voidFunctionNoArgs),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "voidFunctionObjectArg",
- JSOP_WRAPPER(&fcn_voidFunctionObjectArg),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "voidFunctionStringArg",
- JSOP_WRAPPER(&fcn_voidFunctionStringArg),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- {
- "overloadedFunction",
- JSOP_WRAPPER(&staticfcn_overloadedFunction),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "OperationsTestInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsOperationsTestInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsOperationsTestInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsOperationsTestInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsOperationsTestInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_operations_test_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_operations_test_interface.h
deleted file mode 100644
index 6167f2c..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_operations_test_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsOperationsTestInterface_h
-#define MozjsOperationsTestInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/operations_test_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsOperationsTestInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsOperationsTestInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_promise_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_promise_interface.cc
deleted file mode 100644
index 4993d19..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_promise_interface.cc
+++ /dev/null
@@ -1,658 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_promise_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::PromiseInterface;
-using cobalt::bindings::testing::MozjsPromiseInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsPromiseInterfaceHandler : public ProxyHandler {
- public:
- MozjsPromiseInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsPromiseInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsPromiseInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsPromiseInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsPromiseInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "PromiseInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "PromiseInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "PromiseInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-JSBool fcn_onSuccess(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsPromiseInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<PromiseInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- PromiseInterface* impl =
- wrapper_private->wrappable<PromiseInterface>().get();
-
- impl->OnSuccess();
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_returnBooleanPromise(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsPromiseInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<PromiseInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- PromiseInterface* impl =
- wrapper_private->wrappable<PromiseInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->ReturnBooleanPromise(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_returnInterfacePromise(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsPromiseInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<PromiseInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- PromiseInterface* impl =
- wrapper_private->wrappable<PromiseInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->ReturnInterfacePromise(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_returnStringPromise(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsPromiseInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<PromiseInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- PromiseInterface* impl =
- wrapper_private->wrappable<PromiseInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->ReturnStringPromise(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_returnVoidPromise(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsPromiseInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<PromiseInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- PromiseInterface* impl =
- wrapper_private->wrappable<PromiseInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->ReturnVoidPromise(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- {
- "onSuccess",
- JSOP_WRAPPER(&fcn_onSuccess),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "returnBooleanPromise",
- JSOP_WRAPPER(&fcn_returnBooleanPromise),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "returnInterfacePromise",
- JSOP_WRAPPER(&fcn_returnInterfacePromise),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "returnStringPromise",
- JSOP_WRAPPER(&fcn_returnStringPromise),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "returnVoidPromise",
- JSOP_WRAPPER(&fcn_returnVoidPromise),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "PromiseInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsPromiseInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsPromiseInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsPromiseInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsPromiseInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_promise_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_promise_interface.h
deleted file mode 100644
index 6c2e10f..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_promise_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsPromiseInterface_h
-#define MozjsPromiseInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/promise_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsPromiseInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsPromiseInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_put_forwards_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_put_forwards_interface.cc
deleted file mode 100644
index 0e4090d..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_put_forwards_interface.cc
+++ /dev/null
@@ -1,524 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_put_forwards_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/bindings/testing/arbitrary_interface.h"
-#include "cobalt/bindings/testing/mozjs_arbitrary_interface.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::PutForwardsInterface;
-using cobalt::bindings::testing::MozjsPutForwardsInterface;
-using cobalt::bindings::testing::ArbitraryInterface;
-using cobalt::bindings::testing::MozjsArbitraryInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsPutForwardsInterfaceHandler : public ProxyHandler {
- public:
- MozjsPutForwardsInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsPutForwardsInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsPutForwardsInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsPutForwardsInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsPutForwardsInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "PutForwardsInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "PutForwardsInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "PutForwardsInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-JSBool get_forwardingAttribute(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsPutForwardsInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<PutForwardsInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- PutForwardsInterface* impl =
- wrapper_private->wrappable<PutForwardsInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->forwarding_attribute(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_forwardingAttribute(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsPutForwardsInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<PutForwardsInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- PutForwardsInterface* impl =
- wrapper_private->wrappable<PutForwardsInterface>().get();
- { // Begin scope of scoped_refptr<ArbitraryInterface> forwarded_impl.
- scoped_refptr<ArbitraryInterface> forwarded_impl =
- impl->forwarding_attribute();
- if (!forwarded_impl) {
- NOTREACHED();
- return false;
- }
- if (!exception_state.is_exception_set()) {
- TypeTraits<std::string >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- forwarded_impl->set_arbitrary_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
- return !exception_state.is_exception_set();
- } // End scope of scoped_refptr<ArbitraryInterface> forwarded_impl.
-}
-
-JSBool staticget_staticForwardingAttribute(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- PutForwardsInterface::static_forwarding_attribute(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool staticset_staticForwardingAttribute(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- { // Begin scope of scoped_refptr<ArbitraryInterface> forwarded_impl.
- scoped_refptr<ArbitraryInterface> forwarded_impl =
- PutForwardsInterface::static_forwarding_attribute();
- if (!forwarded_impl) {
- NOTREACHED();
- return false;
- }
- if (!exception_state.is_exception_set()) {
- TypeTraits<std::string >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- forwarded_impl->set_arbitrary_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
- return !exception_state.is_exception_set();
- } // End scope of scoped_refptr<ArbitraryInterface> forwarded_impl.
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- { // Read/Write property
- "forwardingAttribute", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_forwardingAttribute),
- JSOP_WRAPPER(&set_forwardingAttribute),
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- { // Static read/write attribute.
- "staticForwardingAttribute", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&staticget_staticForwardingAttribute),
- JSOP_WRAPPER(&staticset_staticForwardingAttribute),
- },
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "PutForwardsInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsPutForwardsInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsPutForwardsInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsPutForwardsInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsPutForwardsInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_put_forwards_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_put_forwards_interface.h
deleted file mode 100644
index 57cf3b6..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_put_forwards_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsPutForwardsInterface_h
-#define MozjsPutForwardsInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/put_forwards_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsPutForwardsInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsPutForwardsInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_sequence_user.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_sequence_user.cc
deleted file mode 100644
index 0ddaaeb..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_sequence_user.cc
+++ /dev/null
@@ -1,1308 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_sequence_user.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/bindings/testing/arbitrary_interface.h"
-#include "cobalt/bindings/testing/mozjs_arbitrary_interface.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::SequenceUser;
-using cobalt::bindings::testing::MozjsSequenceUser;
-using cobalt::bindings::testing::ArbitraryInterface;
-using cobalt::bindings::testing::MozjsArbitraryInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsSequenceUserHandler : public ProxyHandler {
- public:
- MozjsSequenceUserHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsSequenceUserHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsSequenceUserHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsSequenceUserHandler>
- proxy_handler;
-
-JSBool Constructor(JSContext* context, unsigned int argc, JS::Value* vp);
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsSequenceUser::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "SequenceUser";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "SequenceUserPrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "SequenceUserConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- interface_object_class->construct = Constructor;
- return interface_data;
-}
-
-JSBool fcn_getInterfaceSequence(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsSequenceUser::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<SequenceUser>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- SequenceUser* impl =
- wrapper_private->wrappable<SequenceUser>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->GetInterfaceSequence(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_getInterfaceSequenceSequenceSequence(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsSequenceUser::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<SequenceUser>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- SequenceUser* impl =
- wrapper_private->wrappable<SequenceUser>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->GetInterfaceSequenceSequenceSequence(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_getLongSequence(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsSequenceUser::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<SequenceUser>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- SequenceUser* impl =
- wrapper_private->wrappable<SequenceUser>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->GetLongSequence(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_getStringSequence(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsSequenceUser::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<SequenceUser>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- SequenceUser* impl =
- wrapper_private->wrappable<SequenceUser>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->GetStringSequence(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_getStringSequenceSequence(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsSequenceUser::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<SequenceUser>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- SequenceUser* impl =
- wrapper_private->wrappable<SequenceUser>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->GetStringSequenceSequence(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_getUnionOfStringAndStringSequence(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsSequenceUser::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<SequenceUser>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- SequenceUser* impl =
- wrapper_private->wrappable<SequenceUser>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->GetUnionOfStringAndStringSequence(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_getUnionSequence(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsSequenceUser::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<SequenceUser>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- SequenceUser* impl =
- wrapper_private->wrappable<SequenceUser>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->GetUnionSequence(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_setInterfaceSequence(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsSequenceUser::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<SequenceUser>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- SequenceUser* impl =
- wrapper_private->wrappable<SequenceUser>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<::cobalt::script::Sequence< scoped_refptr<ArbitraryInterface> > >::ConversionType elements;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &elements);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->SetInterfaceSequence(elements);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_setInterfaceSequenceSequenceSequence(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsSequenceUser::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<SequenceUser>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- SequenceUser* impl =
- wrapper_private->wrappable<SequenceUser>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<::cobalt::script::Sequence< ::cobalt::script::Sequence< ::cobalt::script::Sequence< scoped_refptr<ArbitraryInterface> > > > >::ConversionType elements;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &elements);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->SetInterfaceSequenceSequenceSequence(elements);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_setLongSequence(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsSequenceUser::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<SequenceUser>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- SequenceUser* impl =
- wrapper_private->wrappable<SequenceUser>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<::cobalt::script::Sequence< int32_t > >::ConversionType elements;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &elements);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->SetLongSequence(elements);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_setStringSequence(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsSequenceUser::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<SequenceUser>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- SequenceUser* impl =
- wrapper_private->wrappable<SequenceUser>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<::cobalt::script::Sequence< std::string > >::ConversionType elements;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &elements);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->SetStringSequence(elements);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_setStringSequenceSequence(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsSequenceUser::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<SequenceUser>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- SequenceUser* impl =
- wrapper_private->wrappable<SequenceUser>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<::cobalt::script::Sequence< ::cobalt::script::Sequence< std::string > > >::ConversionType elements;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &elements);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->SetStringSequenceSequence(elements);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_setUnionOfStringAndStringSequence(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsSequenceUser::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<SequenceUser>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- SequenceUser* impl =
- wrapper_private->wrappable<SequenceUser>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<::cobalt::script::UnionType2<std::string, ::cobalt::script::Sequence< std::string > > >::ConversionType elements;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &elements);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->SetUnionOfStringAndStringSequence(elements);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_setUnionSequence(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsSequenceUser::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<SequenceUser>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- SequenceUser* impl =
- wrapper_private->wrappable<SequenceUser>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<::cobalt::script::Sequence< ::cobalt::script::UnionType2<std::string, scoped_refptr<ArbitraryInterface> > > >::ConversionType elements;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &elements);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->SetUnionSequence(elements);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- {
- "getInterfaceSequence",
- JSOP_WRAPPER(&fcn_getInterfaceSequence),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "getInterfaceSequenceSequenceSequence",
- JSOP_WRAPPER(&fcn_getInterfaceSequenceSequenceSequence),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "getLongSequence",
- JSOP_WRAPPER(&fcn_getLongSequence),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "getStringSequence",
- JSOP_WRAPPER(&fcn_getStringSequence),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "getStringSequenceSequence",
- JSOP_WRAPPER(&fcn_getStringSequenceSequence),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "getUnionOfStringAndStringSequence",
- JSOP_WRAPPER(&fcn_getUnionOfStringAndStringSequence),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "getUnionSequence",
- JSOP_WRAPPER(&fcn_getUnionSequence),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "setInterfaceSequence",
- JSOP_WRAPPER(&fcn_setInterfaceSequence),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "setInterfaceSequenceSequenceSequence",
- JSOP_WRAPPER(&fcn_setInterfaceSequenceSequenceSequence),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "setLongSequence",
- JSOP_WRAPPER(&fcn_setLongSequence),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "setStringSequence",
- JSOP_WRAPPER(&fcn_setStringSequence),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "setStringSequenceSequence",
- JSOP_WRAPPER(&fcn_setStringSequenceSequence),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "setUnionOfStringAndStringSequence",
- JSOP_WRAPPER(&fcn_setUnionOfStringAndStringSequence),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "setUnionSequence",
- JSOP_WRAPPER(&fcn_setUnionSequence),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "SequenceUser";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Add the InterfaceObject.length property. It is set to the length of the
- // shortest argument list of all overload constructors.
- JS::RootedValue length_value(context);
- length_value.setInt32(0);
- success =
- JS_DefineProperty(context, rooted_interface_object, "length",
- length_value, JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsSequenceUser::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsSequenceUser::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsSequenceUser::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsSequenceUser::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-JSBool Constructor(JSContext* context, unsigned int argc, JS::Value* vp) {
- MozjsExceptionState exception_state(context);
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-
- scoped_refptr<SequenceUser> new_object =
- new SequenceUser();
- JS::RootedValue result_value(context);
- ToJSValue(context, new_object, &result_value);
- DCHECK(result_value.isObject());
- JS::RootedObject result_object(context, JSVAL_TO_OBJECT(result_value));
- args.rval().setObject(*result_object);
- return true;
-}
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_sequence_user.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_sequence_user.h
deleted file mode 100644
index 9283327..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_sequence_user.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsSequenceUser_h
-#define MozjsSequenceUser_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/sequence_user.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsSequenceUser {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsSequenceUser_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_single_operation_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_single_operation_interface.cc
deleted file mode 100644
index 56b185e..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_single_operation_interface.cc
+++ /dev/null
@@ -1,122 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/callback-interface.cc.template
-
-
-#include "cobalt/bindings/testing/mozjs_single_operation_interface.h"
-#include "cobalt/bindings/testing/arbitrary_interface.h"
-#include "cobalt/bindings/testing/mozjs_arbitrary_interface.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "cobalt/script/logging_exception_state.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_interface.h"
-#include "cobalt/script/mozjs/util/exception_helpers.h"
-#include "cobalt/script/mozjs/util/stack_trace_helpers.h"
-#include "third_party/mozjs/js/jsd/jsd.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jscntxt.h"
-
-namespace {
-using cobalt::bindings::testing::SingleOperationInterface;
-using cobalt::bindings::testing::MozjsSingleOperationInterface;
-using cobalt::bindings::testing::ArbitraryInterface;
-using cobalt::bindings::testing::MozjsArbitraryInterface;
-
-using cobalt::script::LoggingExceptionState;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::GetCallableForCallbackInterface;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::util::GetExceptionString;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-MozjsSingleOperationInterface::MozjsSingleOperationInterface(
- JSContext* context,
- JS::HandleObject implementing_object)
- : context_(context),
- implementing_object_(context, implementing_object) { }
-
-MozjsSingleOperationInterface::MozjsSingleOperationInterface(
- JSContext* context,
- JS::HandleValue implementing_object_value)
- : context_(context),
- implementing_object_(context, implementing_object_value) { }
-
-base::optional<int32_t > MozjsSingleOperationInterface::HandleCallback(
- const scoped_refptr<script::Wrappable>& callback_this,
- const scoped_refptr<ArbitraryInterface>& value,
- bool* had_exception) const {
- bool success = false;
- base::optional<int32_t > cobalt_return_value;
- JSAutoRequest auto_request(context_);
- AutoSaveExceptionState auto_save_exception_state(context_);
- ENABLE_JS_STACK_TRACE_IN_SCOPE(context_);
-
- // This could be set to NULL if it was garbage collected.
- JS::RootedObject implementing_object(context_, implementing_object_.GetObject());
- DLOG_IF(WARNING, !implementing_object) << "Implementing object is NULL.";
- if (implementing_object) {
- JSAutoCompartment auto_compartment(context_, implementing_object);
-
- // Get callable object.
- JS::RootedValue callable(context_);
- if (GetCallableForCallbackInterface(context_, implementing_object,
- "handleCallback", &callable)) {
- // Convert the callback_this to a JSValue.
- JS::RootedValue this_value(context_);
- ToJSValue(context_, callback_this, &this_value);
-
- // Convert arguments.
- const int kNumArguments = 1;
- JS::Value args[kNumArguments];
- js::SetValueRangeToNull(args, kNumArguments);
- js::AutoValueArray auto_array_rooter(context_, args, kNumArguments);
- ToJSValue(context_, value,
- auto_array_rooter.handleAt(0));
-
- // Call the function.
- JS::RootedValue return_value(context_);
- JS::RootedFunction function(
- context_, JS_ValueToFunction(context_, callable));
- DCHECK(function);
- success = JS::Call(context_, this_value, function, kNumArguments, args,
- return_value.address());
- DLOG_IF(WARNING, !success) << "Exception in callback: "
- << GetExceptionString(context_);
- if (success) {
- LoggingExceptionState exception_state;
- FromJSValue(context_, return_value, 0, &exception_state,
- &cobalt_return_value);
- success = !exception_state.is_exception_set();
- }
- }
- }
-
- *had_exception = !success;
- return cobalt_return_value;
-}
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_single_operation_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_single_operation_interface.h
deleted file mode 100644
index 87fbcde..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_single_operation_interface.h
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/callback-interface.h.template
-
-#ifndef MozjsSingleOperationInterface_h
-#define MozjsSingleOperationInterface_h
-
-#include "cobalt/script/callback_interface_traits.h"
-// Headers for other bindings wrapper classes
-#include "cobalt/bindings/testing/single_operation_interface.h"
-
-#include "cobalt/script/mozjs/weak_heap_object.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsSingleOperationInterface : public SingleOperationInterface {
- public:
- typedef SingleOperationInterface BaseType;
-
- MozjsSingleOperationInterface(
- JSContext* context, JS::HandleObject implementing_object);
- MozjsSingleOperationInterface(
- JSContext* context, JS::HandleValue implementing_object_value);
- base::optional<int32_t > HandleCallback(
- const scoped_refptr<script::Wrappable>& callback_this,
- const scoped_refptr<ArbitraryInterface>& value,
- bool* had_exception) const OVERRIDE;
- JSObject* handle() const { return implementing_object_.GetObject(); }
- const JS::Value& value() const { return implementing_object_.GetValue(); }
- bool WasCollected() const { return implementing_object_.WasCollected(); }
-
- private:
- JSContext* context_;
- script::mozjs::WeakHeapObject implementing_object_;
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-namespace cobalt {
-namespace script {
-// Explicit instantiation of CallbackInterfaceTraits struct so we can infer
-// the type of the generated class from the type of the callback interface.
-template<>
-struct CallbackInterfaceTraits<cobalt::bindings::testing::SingleOperationInterface> {
- typedef cobalt::bindings::testing::MozjsSingleOperationInterface MozjsCallbackInterfaceClass;
-};
-} // namespace script
-} // namespace cobalt
-
-#endif // MozjsSingleOperationInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_static_properties_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_static_properties_interface.cc
deleted file mode 100644
index 47a2a55..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_static_properties_interface.cc
+++ /dev/null
@@ -1,671 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_static_properties_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/bindings/testing/arbitrary_interface.h"
-#include "cobalt/bindings/testing/mozjs_arbitrary_interface.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::StaticPropertiesInterface;
-using cobalt::bindings::testing::MozjsStaticPropertiesInterface;
-using cobalt::bindings::testing::ArbitraryInterface;
-using cobalt::bindings::testing::MozjsArbitraryInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsStaticPropertiesInterfaceHandler : public ProxyHandler {
- public:
- MozjsStaticPropertiesInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsStaticPropertiesInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsStaticPropertiesInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsStaticPropertiesInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsStaticPropertiesInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "StaticPropertiesInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "StaticPropertiesInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "StaticPropertiesInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-JSBool staticget_staticAttribute(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- StaticPropertiesInterface::static_attribute(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool staticset_staticAttribute(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- TypeTraits<std::string >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- StaticPropertiesInterface::set_static_attribute(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool staticfcn_staticFunction1(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
-
- StaticPropertiesInterface::StaticFunction();
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool staticfcn_staticFunction2(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<int32_t >::ConversionType arg;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &arg);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- StaticPropertiesInterface::StaticFunction(arg);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool staticfcn_staticFunction3(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<std::string >::ConversionType arg;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &arg);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- StaticPropertiesInterface::StaticFunction(arg);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool staticfcn_staticFunction4(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- const size_t kMinArguments = 3;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<int32_t >::ConversionType arg1;
- TypeTraits<int32_t >::ConversionType arg2;
- TypeTraits<int32_t >::ConversionType arg3;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &arg1);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- DCHECK_LT(1, args.length());
- JS::RootedValue non_optional_value1(
- context, args[1]);
- FromJSValue(context,
- non_optional_value1,
- kNoConversionFlags,
- &exception_state, &arg2);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- DCHECK_LT(2, args.length());
- JS::RootedValue non_optional_value2(
- context, args[2]);
- FromJSValue(context,
- non_optional_value2,
- kNoConversionFlags,
- &exception_state, &arg3);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- StaticPropertiesInterface::StaticFunction(arg1, arg2, arg3);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool staticfcn_staticFunction5(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- const size_t kMinArguments = 3;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<int32_t >::ConversionType arg1;
- TypeTraits<int32_t >::ConversionType arg2;
- TypeTraits<scoped_refptr<ArbitraryInterface> >::ConversionType arg3;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &arg1);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- DCHECK_LT(1, args.length());
- JS::RootedValue non_optional_value1(
- context, args[1]);
- FromJSValue(context,
- non_optional_value1,
- kNoConversionFlags,
- &exception_state, &arg2);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- DCHECK_LT(2, args.length());
- JS::RootedValue non_optional_value2(
- context, args[2]);
- FromJSValue(context,
- non_optional_value2,
- kNoConversionFlags,
- &exception_state, &arg3);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- StaticPropertiesInterface::StaticFunction(arg1, arg2, arg3);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool staticfcn_staticFunction(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- switch(argc) {
- case(0): {
- // Overload resolution algorithm details found here:
- // http://heycam.github.io/webidl/#dfn-overload-resolution-algorithm
- if (true) {
- return staticfcn_staticFunction1(
- context, argc, vp);
- }
- break;
- }
- case(1): {
- // Overload resolution algorithm details found here:
- // http://heycam.github.io/webidl/#dfn-overload-resolution-algorithm
- JS::RootedValue arg(context, args[0]);
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- JS::RootedObject object(context);
- if (arg.isObject()) {
- object = JSVAL_TO_OBJECT(arg);
- }
- if (arg.isNumber()) {
- return staticfcn_staticFunction2(
- context, argc, vp);
- }
- if (true) {
- return staticfcn_staticFunction3(
- context, argc, vp);
- }
- if (true) {
- return staticfcn_staticFunction2(
- context, argc, vp);
- }
- break;
- }
- case(3): {
- // Overload resolution algorithm details found here:
- // http://heycam.github.io/webidl/#dfn-overload-resolution-algorithm
- JS::RootedValue arg(context, args[2]);
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- JS::RootedObject object(context);
- if (arg.isObject()) {
- object = JSVAL_TO_OBJECT(arg);
- }
- if (arg.isObject() ? wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<ArbitraryInterface>()) :
- false) {
- return staticfcn_staticFunction5(
- context, argc, vp);
- }
- if (true) {
- return staticfcn_staticFunction4(
- context, argc, vp);
- }
- break;
- }
- }
- // Invalid number of args
- // http://heycam.github.io/webidl/#dfn-overload-resolution-algorithm
- // 4. If S is empty, then throw a TypeError.
- MozjsExceptionState exception_state(context);
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- { // Static read/write attribute.
- "staticAttribute", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&staticget_staticAttribute),
- JSOP_WRAPPER(&staticset_staticAttribute),
- },
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- {
- "staticFunction",
- JSOP_WRAPPER(&staticfcn_staticFunction),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "StaticPropertiesInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsStaticPropertiesInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsStaticPropertiesInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsStaticPropertiesInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsStaticPropertiesInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_static_properties_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_static_properties_interface.h
deleted file mode 100644
index 8a7adb2..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_static_properties_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsStaticPropertiesInterface_h
-#define MozjsStaticPropertiesInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/static_properties_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsStaticPropertiesInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsStaticPropertiesInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_stringifier_anonymous_operation_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_stringifier_anonymous_operation_interface.cc
deleted file mode 100644
index 5813a8f..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_stringifier_anonymous_operation_interface.cc
+++ /dev/null
@@ -1,435 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_stringifier_anonymous_operation_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::StringifierAnonymousOperationInterface;
-using cobalt::bindings::testing::MozjsStringifierAnonymousOperationInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsStringifierAnonymousOperationInterfaceHandler : public ProxyHandler {
- public:
- MozjsStringifierAnonymousOperationInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsStringifierAnonymousOperationInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsStringifierAnonymousOperationInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsStringifierAnonymousOperationInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsStringifierAnonymousOperationInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "StringifierAnonymousOperationInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "StringifierAnonymousOperationInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "StringifierAnonymousOperationInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-
-JSBool Stringifier(JSContext* context, unsigned argc, JS::Value *vp) {
- MozjsExceptionState exception_state(context);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
-
- const JSClass* proto_class =
- MozjsStringifierAnonymousOperationInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<StringifierAnonymousOperationInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
-
- // |WrapperPrivate::GetFromObject| can fail if |object| is not a |Wrapper|
- // object.
- if (!wrapper_private) {
- exception_state.SetSimpleException(cobalt::script::kStringifierProblem);
- return false;
- }
-
- StringifierAnonymousOperationInterface* impl =
- wrapper_private->wrappable<StringifierAnonymousOperationInterface>().get();
- if (!impl) {
- exception_state.SetSimpleException(cobalt::script::kStringifierProblem);
- NOTREACHED();
- return false;
- }
- std::string stringified = impl->AnonymousStringifier();
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- JS::RootedString rooted_string(context,
- JS_NewStringCopyN(context, stringified.c_str(), stringified.length()));
- args.rval().set(JS::StringValue(rooted_string));
- return true;
-}
-
-const JSPropertySpec prototype_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- {
- "toString",
- JSOP_WRAPPER(&Stringifier),
- 0,
- JSPROP_PERMANENT,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "StringifierAnonymousOperationInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsStringifierAnonymousOperationInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsStringifierAnonymousOperationInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsStringifierAnonymousOperationInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsStringifierAnonymousOperationInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_stringifier_anonymous_operation_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_stringifier_anonymous_operation_interface.h
deleted file mode 100644
index be33621..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_stringifier_anonymous_operation_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsStringifierAnonymousOperationInterface_h
-#define MozjsStringifierAnonymousOperationInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/stringifier_anonymous_operation_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsStringifierAnonymousOperationInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsStringifierAnonymousOperationInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_stringifier_attribute_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_stringifier_attribute_interface.cc
deleted file mode 100644
index 8dc7f73..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_stringifier_attribute_interface.cc
+++ /dev/null
@@ -1,523 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_stringifier_attribute_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::StringifierAttributeInterface;
-using cobalt::bindings::testing::MozjsStringifierAttributeInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsStringifierAttributeInterfaceHandler : public ProxyHandler {
- public:
- MozjsStringifierAttributeInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsStringifierAttributeInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsStringifierAttributeInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsStringifierAttributeInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsStringifierAttributeInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "StringifierAttributeInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "StringifierAttributeInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "StringifierAttributeInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-JSBool get_theStringifierAttribute(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsStringifierAttributeInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<StringifierAttributeInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- StringifierAttributeInterface* impl =
- wrapper_private->wrappable<StringifierAttributeInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->the_stringifier_attribute(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_theStringifierAttribute(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsStringifierAttributeInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<StringifierAttributeInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- StringifierAttributeInterface* impl =
- wrapper_private->wrappable<StringifierAttributeInterface>().get();
- TypeTraits<std::string >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_the_stringifier_attribute(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-
-JSBool Stringifier(JSContext* context, unsigned argc, JS::Value *vp) {
- MozjsExceptionState exception_state(context);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
-
- const JSClass* proto_class =
- MozjsStringifierAttributeInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<StringifierAttributeInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
-
- // |WrapperPrivate::GetFromObject| can fail if |object| is not a |Wrapper|
- // object.
- if (!wrapper_private) {
- exception_state.SetSimpleException(cobalt::script::kStringifierProblem);
- return false;
- }
-
- StringifierAttributeInterface* impl =
- wrapper_private->wrappable<StringifierAttributeInterface>().get();
- if (!impl) {
- exception_state.SetSimpleException(cobalt::script::kStringifierProblem);
- NOTREACHED();
- return false;
- }
- std::string stringified = impl->the_stringifier_attribute();
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- JS::RootedString rooted_string(context,
- JS_NewStringCopyN(context, stringified.c_str(), stringified.length()));
- args.rval().set(JS::StringValue(rooted_string));
- return true;
-}
-
-const JSPropertySpec prototype_properties[] = {
- { // Read/Write property
- "theStringifierAttribute", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_theStringifierAttribute),
- JSOP_WRAPPER(&set_theStringifierAttribute),
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- {
- "toString",
- JSOP_WRAPPER(&Stringifier),
- 0,
- JSPROP_PERMANENT,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "StringifierAttributeInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsStringifierAttributeInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsStringifierAttributeInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsStringifierAttributeInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsStringifierAttributeInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_stringifier_attribute_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_stringifier_attribute_interface.h
deleted file mode 100644
index b16f977..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_stringifier_attribute_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsStringifierAttributeInterface_h
-#define MozjsStringifierAttributeInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/stringifier_attribute_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsStringifierAttributeInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsStringifierAttributeInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_stringifier_operation_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_stringifier_operation_interface.cc
deleted file mode 100644
index d9fa758..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_stringifier_operation_interface.cc
+++ /dev/null
@@ -1,494 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_stringifier_operation_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::StringifierOperationInterface;
-using cobalt::bindings::testing::MozjsStringifierOperationInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsStringifierOperationInterfaceHandler : public ProxyHandler {
- public:
- MozjsStringifierOperationInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsStringifierOperationInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsStringifierOperationInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsStringifierOperationInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsStringifierOperationInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "StringifierOperationInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "StringifierOperationInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "StringifierOperationInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-JSBool fcn_theStringifierOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsStringifierOperationInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<StringifierOperationInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- StringifierOperationInterface* impl =
- wrapper_private->wrappable<StringifierOperationInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->TheStringifierOperation(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-
-JSBool Stringifier(JSContext* context, unsigned argc, JS::Value *vp) {
- MozjsExceptionState exception_state(context);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
-
- const JSClass* proto_class =
- MozjsStringifierOperationInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<StringifierOperationInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
-
- // |WrapperPrivate::GetFromObject| can fail if |object| is not a |Wrapper|
- // object.
- if (!wrapper_private) {
- exception_state.SetSimpleException(cobalt::script::kStringifierProblem);
- return false;
- }
-
- StringifierOperationInterface* impl =
- wrapper_private->wrappable<StringifierOperationInterface>().get();
- if (!impl) {
- exception_state.SetSimpleException(cobalt::script::kStringifierProblem);
- NOTREACHED();
- return false;
- }
- std::string stringified = impl->TheStringifierOperation();
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- JS::RootedString rooted_string(context,
- JS_NewStringCopyN(context, stringified.c_str(), stringified.length()));
- args.rval().set(JS::StringValue(rooted_string));
- return true;
-}
-
-const JSPropertySpec prototype_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- {
- "toString",
- JSOP_WRAPPER(&Stringifier),
- 0,
- JSPROP_PERMANENT,
- NULL,
- },
- {
- "theStringifierOperation",
- JSOP_WRAPPER(&fcn_theStringifierOperation),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "StringifierOperationInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsStringifierOperationInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsStringifierOperationInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsStringifierOperationInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsStringifierOperationInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_stringifier_operation_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_stringifier_operation_interface.h
deleted file mode 100644
index 9f3e049..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_stringifier_operation_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsStringifierOperationInterface_h
-#define MozjsStringifierOperationInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/stringifier_operation_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsStringifierOperationInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsStringifierOperationInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_target_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_target_interface.cc
deleted file mode 100644
index c509b91..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_target_interface.cc
+++ /dev/null
@@ -1,475 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_target_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::TargetInterface;
-using cobalt::bindings::testing::MozjsTargetInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsTargetInterfaceHandler : public ProxyHandler {
- public:
- MozjsTargetInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsTargetInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsTargetInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsTargetInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsTargetInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "TargetInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "TargetInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "TargetInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-JSBool fcn_implementedInterfaceFunction(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsTargetInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<TargetInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- TargetInterface* impl =
- wrapper_private->wrappable<TargetInterface>().get();
-
- impl->ImplementedInterfaceFunction();
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_partialInterfaceFunction(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsTargetInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<TargetInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- TargetInterface* impl =
- wrapper_private->wrappable<TargetInterface>().get();
-
- impl->PartialInterfaceFunction();
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- {
- "implementedInterfaceFunction",
- JSOP_WRAPPER(&fcn_implementedInterfaceFunction),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "partialInterfaceFunction",
- JSOP_WRAPPER(&fcn_partialInterfaceFunction),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "TargetInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsTargetInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsTargetInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsTargetInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsTargetInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_target_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_target_interface.h
deleted file mode 100644
index b3c99a7..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_target_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsTargetInterface_h
-#define MozjsTargetInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/target_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsTargetInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsTargetInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_test_dictionary.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_test_dictionary.cc
deleted file mode 100644
index 071d45a..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_test_dictionary.cc
+++ /dev/null
@@ -1,373 +0,0 @@
-/*
- * Copyright 2017 Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/dictionary-conversion.cc.template
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "cobalt/bindings/testing/test_dictionary.h"
-
-#include "cobalt/script/exception_state.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "cobalt/bindings/testing/arbitrary_interface.h"
-#include "cobalt/bindings/testing/mozjs_arbitrary_interface.h"
-
-using cobalt::bindings::testing::TestDictionary;
-using cobalt::bindings::testing::ArbitraryInterface;
-using cobalt::bindings::testing::MozjsArbitraryInterface;
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-void ToJSValue(
- JSContext* context,
- const TestDictionary& in_dictionary,
- JS::MutableHandleValue out_value) {
- // Create a new object that will hold the dictionary values.
- JS::RootedObject dictionary_object(
- context, JS_NewObject(context, NULL, NULL, NULL));
- const int kPropertyAttributes = JSPROP_ENUMERATE;
- if (in_dictionary.has_boolean_member()) {
- JS::RootedValue member_value(context);
- ToJSValue(context, in_dictionary.boolean_member(), &member_value);
- if (!JS_DefineProperty(context, dictionary_object,
- "booleanMember",
- member_value, NULL, NULL, kPropertyAttributes)) {
- // Some internal error occurred.
- NOTREACHED();
- return;
- }
- }
- if (in_dictionary.has_short_clamp_member()) {
- JS::RootedValue member_value(context);
- ToJSValue(context, in_dictionary.short_clamp_member(), &member_value);
- if (!JS_DefineProperty(context, dictionary_object,
- "shortClampMember",
- member_value, NULL, NULL, kPropertyAttributes)) {
- // Some internal error occurred.
- NOTREACHED();
- return;
- }
- }
- if (in_dictionary.has_long_member()) {
- JS::RootedValue member_value(context);
- ToJSValue(context, in_dictionary.long_member(), &member_value);
- if (!JS_DefineProperty(context, dictionary_object,
- "longMember",
- member_value, NULL, NULL, kPropertyAttributes)) {
- // Some internal error occurred.
- NOTREACHED();
- return;
- }
- }
- if (in_dictionary.has_double_member()) {
- JS::RootedValue member_value(context);
- ToJSValue(context, in_dictionary.double_member(), &member_value);
- if (!JS_DefineProperty(context, dictionary_object,
- "doubleMember",
- member_value, NULL, NULL, kPropertyAttributes)) {
- // Some internal error occurred.
- NOTREACHED();
- return;
- }
- }
- if (in_dictionary.has_string_member()) {
- JS::RootedValue member_value(context);
- ToJSValue(context, in_dictionary.string_member(), &member_value);
- if (!JS_DefineProperty(context, dictionary_object,
- "stringMember",
- member_value, NULL, NULL, kPropertyAttributes)) {
- // Some internal error occurred.
- NOTREACHED();
- return;
- }
- }
- if (in_dictionary.has_interface_member()) {
- JS::RootedValue member_value(context);
- ToJSValue(context, in_dictionary.interface_member(), &member_value);
- if (!JS_DefineProperty(context, dictionary_object,
- "interfaceMember",
- member_value, NULL, NULL, kPropertyAttributes)) {
- // Some internal error occurred.
- NOTREACHED();
- return;
- }
- }
- if (in_dictionary.has_member_with_default()) {
- JS::RootedValue member_value(context);
- ToJSValue(context, in_dictionary.member_with_default(), &member_value);
- if (!JS_DefineProperty(context, dictionary_object,
- "memberWithDefault",
- member_value, NULL, NULL, kPropertyAttributes)) {
- // Some internal error occurred.
- NOTREACHED();
- return;
- }
- }
- if (in_dictionary.has_non_default_member()) {
- JS::RootedValue member_value(context);
- ToJSValue(context, in_dictionary.non_default_member(), &member_value);
- if (!JS_DefineProperty(context, dictionary_object,
- "nonDefaultMember",
- member_value, NULL, NULL, kPropertyAttributes)) {
- // Some internal error occurred.
- NOTREACHED();
- return;
- }
- }
- if (in_dictionary.has_any_member_with_default()) {
- JS::RootedValue member_value(context);
- ToJSValue(context, in_dictionary.any_member_with_default(), &member_value);
- if (!JS_DefineProperty(context, dictionary_object,
- "anyMemberWithDefault",
- member_value, NULL, NULL, kPropertyAttributes)) {
- // Some internal error occurred.
- NOTREACHED();
- return;
- }
- }
- if (in_dictionary.has_any_member()) {
- JS::RootedValue member_value(context);
- ToJSValue(context, in_dictionary.any_member(), &member_value);
- if (!JS_DefineProperty(context, dictionary_object,
- "anyMember",
- member_value, NULL, NULL, kPropertyAttributes)) {
- // Some internal error occurred.
- NOTREACHED();
- return;
- }
- }
- out_value.set(OBJECT_TO_JSVAL(dictionary_object));
-}
-
-void FromJSValue(JSContext* context, JS::HandleValue value,
- int conversion_flags, ExceptionState* exception_state,
- TestDictionary* out_dictionary) {
- DCHECK_EQ(0, conversion_flags) << "Unexpected conversion flags.";
- // https://heycam.github.io/webidl/#es-dictionary
-
- if (value.isUndefined() || value.isNull()) {
- // The default constructor will assign appropriate values to dictionary
- // members with default values and leave the others unset.
- *out_dictionary = TestDictionary();
- return;
- }
- if (!value.isObject()) {
- // 1. If Type(V) is not Undefined, Null or Object, then throw a TypeError.
- exception_state->SetSimpleException(kNotObjectType);
- return;
- }
- JS::RootedObject dictionary_object(context, JSVAL_TO_OBJECT(value));
- JS::RootedValue boolean_member(context);
- if (!JS_GetProperty(context, dictionary_object,
- "booleanMember",
- boolean_member.address())) {
- exception_state->SetSimpleException(kSimpleError);
- return;
- }
- if (!boolean_member.isUndefined()) {
- bool converted_value;
- FromJSValue(context,
- boolean_member,
- kNoConversionFlags,
- exception_state,
- &converted_value);
- if (context->isExceptionPending()) {
- return;
- }
- out_dictionary->set_boolean_member(converted_value);
- }
- JS::RootedValue short_clamp_member(context);
- if (!JS_GetProperty(context, dictionary_object,
- "shortClampMember",
- short_clamp_member.address())) {
- exception_state->SetSimpleException(kSimpleError);
- return;
- }
- if (!short_clamp_member.isUndefined()) {
- int16_t converted_value;
- FromJSValue(context,
- short_clamp_member,
- (kConversionFlagClamped),
- exception_state,
- &converted_value);
- if (context->isExceptionPending()) {
- return;
- }
- out_dictionary->set_short_clamp_member(converted_value);
- }
- JS::RootedValue long_member(context);
- if (!JS_GetProperty(context, dictionary_object,
- "longMember",
- long_member.address())) {
- exception_state->SetSimpleException(kSimpleError);
- return;
- }
- if (!long_member.isUndefined()) {
- int32_t converted_value;
- FromJSValue(context,
- long_member,
- kNoConversionFlags,
- exception_state,
- &converted_value);
- if (context->isExceptionPending()) {
- return;
- }
- out_dictionary->set_long_member(converted_value);
- }
- JS::RootedValue double_member(context);
- if (!JS_GetProperty(context, dictionary_object,
- "doubleMember",
- double_member.address())) {
- exception_state->SetSimpleException(kSimpleError);
- return;
- }
- if (!double_member.isUndefined()) {
- double converted_value;
- FromJSValue(context,
- double_member,
- (kConversionFlagRestricted),
- exception_state,
- &converted_value);
- if (context->isExceptionPending()) {
- return;
- }
- out_dictionary->set_double_member(converted_value);
- }
- JS::RootedValue string_member(context);
- if (!JS_GetProperty(context, dictionary_object,
- "stringMember",
- string_member.address())) {
- exception_state->SetSimpleException(kSimpleError);
- return;
- }
- if (!string_member.isUndefined()) {
- std::string converted_value;
- FromJSValue(context,
- string_member,
- kNoConversionFlags,
- exception_state,
- &converted_value);
- if (context->isExceptionPending()) {
- return;
- }
- out_dictionary->set_string_member(converted_value);
- }
- JS::RootedValue interface_member(context);
- if (!JS_GetProperty(context, dictionary_object,
- "interfaceMember",
- interface_member.address())) {
- exception_state->SetSimpleException(kSimpleError);
- return;
- }
- if (!interface_member.isUndefined()) {
- scoped_refptr<ArbitraryInterface> converted_value;
- FromJSValue(context,
- interface_member,
- kNoConversionFlags,
- exception_state,
- &converted_value);
- if (context->isExceptionPending()) {
- return;
- }
- out_dictionary->set_interface_member(converted_value);
- }
- JS::RootedValue member_with_default(context);
- if (!JS_GetProperty(context, dictionary_object,
- "memberWithDefault",
- member_with_default.address())) {
- exception_state->SetSimpleException(kSimpleError);
- return;
- }
- if (!member_with_default.isUndefined()) {
- int32_t converted_value;
- FromJSValue(context,
- member_with_default,
- kNoConversionFlags,
- exception_state,
- &converted_value);
- if (context->isExceptionPending()) {
- return;
- }
- out_dictionary->set_member_with_default(converted_value);
- }
- JS::RootedValue non_default_member(context);
- if (!JS_GetProperty(context, dictionary_object,
- "nonDefaultMember",
- non_default_member.address())) {
- exception_state->SetSimpleException(kSimpleError);
- return;
- }
- if (!non_default_member.isUndefined()) {
- int32_t converted_value;
- FromJSValue(context,
- non_default_member,
- kNoConversionFlags,
- exception_state,
- &converted_value);
- if (context->isExceptionPending()) {
- return;
- }
- out_dictionary->set_non_default_member(converted_value);
- }
- JS::RootedValue any_member_with_default(context);
- if (!JS_GetProperty(context, dictionary_object,
- "anyMemberWithDefault",
- any_member_with_default.address())) {
- exception_state->SetSimpleException(kSimpleError);
- return;
- }
- if (!any_member_with_default.isUndefined()) {
- TypeTraits<::cobalt::script::ValueHandle >::ConversionType converted_value;
- FromJSValue(context,
- any_member_with_default,
- kNoConversionFlags,
- exception_state,
- &converted_value);
- if (context->isExceptionPending()) {
- return;
- }
- out_dictionary->set_any_member_with_default(&converted_value);
- }
- JS::RootedValue any_member(context);
- if (!JS_GetProperty(context, dictionary_object,
- "anyMember",
- any_member.address())) {
- exception_state->SetSimpleException(kSimpleError);
- return;
- }
- if (!any_member.isUndefined()) {
- TypeTraits<::cobalt::script::ValueHandle >::ConversionType converted_value;
- FromJSValue(context,
- any_member,
- kNoConversionFlags,
- exception_state,
- &converted_value);
- if (context->isExceptionPending()) {
- return;
- }
- out_dictionary->set_any_member(&converted_value);
- }
-}
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_test_enum.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_test_enum.cc
deleted file mode 100644
index 445ddbc..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_test_enum.cc
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright 2017 Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/enumeration-conversion.cc.template
-
-#include "cobalt/bindings/testing/test_enum.h"
-
-#include "mozjs_gen_type_conversion.h"
-#include "cobalt/script/exception_state.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-
-using cobalt::bindings::testing::TestEnum;
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-void ToJSValue(
- JSContext* context,
- TestEnum in_enum,
- JS::MutableHandleValue out_value) {
- switch (in_enum) {
- case cobalt::bindings::testing::kTestEnumAlpha:
- ToJSValue(context, std::string("alpha"), out_value);
- return;
- case cobalt::bindings::testing::kTestEnumBeta:
- ToJSValue(context, std::string("beta"), out_value);
- return;
- case cobalt::bindings::testing::kTestEnumGamma:
- ToJSValue(context, std::string("gamma"), out_value);
- return;
- case cobalt::bindings::testing::kTestEnumEnumWithDashes:
- ToJSValue(context, std::string("enum-with-dashes"), out_value);
- return;
- case cobalt::bindings::testing::kTestEnumEnumWithSpaces:
- ToJSValue(context, std::string("enum with spaces"), out_value);
- return;
- case cobalt::bindings::testing::kTestEnumTerribleEnum:
- ToJSValue(context, std::string("terrible----enum"), out_value);
- return;
- case cobalt::bindings::testing::kTestEnumThisIsATerribleEnum:
- ToJSValue(context, std::string("this is a terrible @#$%#$% enum"), out_value);
- return;
- default:
- NOTREACHED();
- out_value.set(JS::UndefinedValue());
- }
-}
-
-void FromJSValue(JSContext* context, JS::HandleValue value,
- int conversion_flags, ExceptionState* exception_state,
- TestEnum* out_enum) {
- DCHECK_EQ(0, conversion_flags) << "Unexpected conversion flags.";
- // JSValue -> IDL enum algorithm described here:
- // http://heycam.github.io/webidl/#es-enumeration
- // 1. Let S be the result of calling ToString(V).
- JS::RootedString rooted_string(context, JS_ValueToString(context, value));
-
- JSBool match = JS_FALSE;
-// 3. Return the enumeration value of type E that is equal to S.
-if (JS_StringEqualsAscii(
- context, rooted_string, "alpha", &match)
- && match) {
- *out_enum = cobalt::bindings::testing::kTestEnumAlpha;
- } else if (JS_StringEqualsAscii(
- context, rooted_string, "beta", &match)
- && match) {
- *out_enum = cobalt::bindings::testing::kTestEnumBeta;
- } else if (JS_StringEqualsAscii(
- context, rooted_string, "gamma", &match)
- && match) {
- *out_enum = cobalt::bindings::testing::kTestEnumGamma;
- } else if (JS_StringEqualsAscii(
- context, rooted_string, "enum-with-dashes", &match)
- && match) {
- *out_enum = cobalt::bindings::testing::kTestEnumEnumWithDashes;
- } else if (JS_StringEqualsAscii(
- context, rooted_string, "enum with spaces", &match)
- && match) {
- *out_enum = cobalt::bindings::testing::kTestEnumEnumWithSpaces;
- } else if (JS_StringEqualsAscii(
- context, rooted_string, "terrible----enum", &match)
- && match) {
- *out_enum = cobalt::bindings::testing::kTestEnumTerribleEnum;
- } else if (JS_StringEqualsAscii(
- context, rooted_string, "this is a terrible @#$%#$% enum", &match)
- && match) {
- *out_enum = cobalt::bindings::testing::kTestEnumThisIsATerribleEnum;
- } else {
- // 2. If S is not one of E's enumeration values, then throw a TypeError.
- exception_state->SetSimpleException(cobalt::script::kConvertToEnumFailed);
- return;
- }
-}
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_union_types_interface.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_union_types_interface.cc
deleted file mode 100644
index 4529e86..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_union_types_interface.cc
+++ /dev/null
@@ -1,729 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_union_types_interface.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/bindings/testing/arbitrary_interface.h"
-#include "cobalt/bindings/testing/base_interface.h"
-#include "cobalt/bindings/testing/mozjs_arbitrary_interface.h"
-#include "cobalt/bindings/testing/mozjs_base_interface.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::UnionTypesInterface;
-using cobalt::bindings::testing::MozjsUnionTypesInterface;
-using cobalt::bindings::testing::ArbitraryInterface;
-using cobalt::bindings::testing::BaseInterface;
-using cobalt::bindings::testing::MozjsArbitraryInterface;
-using cobalt::bindings::testing::MozjsBaseInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsUnionTypesInterfaceHandler : public ProxyHandler {
- public:
- MozjsUnionTypesInterfaceHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsUnionTypesInterfaceHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsUnionTypesInterfaceHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsUnionTypesInterfaceHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsUnionTypesInterface::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = 0;
- instance_class->name = "UnionTypesInterface";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "UnionTypesInterfacePrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "UnionTypesInterfaceConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-JSBool get_unionProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsUnionTypesInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<UnionTypesInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- UnionTypesInterface* impl =
- wrapper_private->wrappable<UnionTypesInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->union_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_unionProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsUnionTypesInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<UnionTypesInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- UnionTypesInterface* impl =
- wrapper_private->wrappable<UnionTypesInterface>().get();
- TypeTraits<::cobalt::script::UnionType4<std::string, bool, scoped_refptr<ArbitraryInterface>, int32_t > >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_union_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_unionWithNullableMemberProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsUnionTypesInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<UnionTypesInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- UnionTypesInterface* impl =
- wrapper_private->wrappable<UnionTypesInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->union_with_nullable_member_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_unionWithNullableMemberProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsUnionTypesInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<UnionTypesInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- UnionTypesInterface* impl =
- wrapper_private->wrappable<UnionTypesInterface>().get();
- TypeTraits<base::optional<::cobalt::script::UnionType2<double, std::string > > >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_union_with_nullable_member_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_nullableUnionProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsUnionTypesInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<UnionTypesInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- UnionTypesInterface* impl =
- wrapper_private->wrappable<UnionTypesInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->nullable_union_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_nullableUnionProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsUnionTypesInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<UnionTypesInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- UnionTypesInterface* impl =
- wrapper_private->wrappable<UnionTypesInterface>().get();
- TypeTraits<base::optional<::cobalt::script::UnionType2<double, std::string > > >::ConversionType value;
- FromJSValue(context, vp, (kConversionFlagNullable), &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_nullable_union_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_unionBaseProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsUnionTypesInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<UnionTypesInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- UnionTypesInterface* impl =
- wrapper_private->wrappable<UnionTypesInterface>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->union_base_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_unionBaseProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsUnionTypesInterface::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<UnionTypesInterface>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- UnionTypesInterface* impl =
- wrapper_private->wrappable<UnionTypesInterface>().get();
- TypeTraits<::cobalt::script::UnionType2<scoped_refptr<BaseInterface>, std::string > >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_union_base_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- { // Read/Write property
- "unionProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_unionProperty),
- JSOP_WRAPPER(&set_unionProperty),
- },
- { // Read/Write property
- "unionWithNullableMemberProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_unionWithNullableMemberProperty),
- JSOP_WRAPPER(&set_unionWithNullableMemberProperty),
- },
- { // Read/Write property
- "nullableUnionProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_nullableUnionProperty),
- JSOP_WRAPPER(&set_nullableUnionProperty),
- },
- { // Read/Write property
- "unionBaseProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_unionBaseProperty),
- JSOP_WRAPPER(&set_unionBaseProperty),
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "UnionTypesInterface";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-// static
-JSObject* MozjsUnionTypesInterface::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-//static
-const JSClass* MozjsUnionTypesInterface::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsUnionTypesInterface::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsUnionTypesInterface::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_union_types_interface.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_union_types_interface.h
deleted file mode 100644
index e9d11c6..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_union_types_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsUnionTypesInterface_h
-#define MozjsUnionTypesInterface_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/union_types_interface.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsUnionTypesInterface {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsUnionTypesInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_window.cc b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_window.cc
deleted file mode 100644
index b28b493..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_window.cc
+++ /dev/null
@@ -1,1263 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.cc.template
-
-#include "cobalt/bindings/testing/mozjs_window.h"
-
-#include "base/debug/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/opaque_handle.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/bindings/testing/anonymous_indexed_getter_interface.h"
-#include "cobalt/bindings/testing/anonymous_named_getter_interface.h"
-#include "cobalt/bindings/testing/anonymous_named_indexed_getter_interface.h"
-#include "cobalt/bindings/testing/arbitrary_interface.h"
-#include "cobalt/bindings/testing/base_interface.h"
-#include "cobalt/bindings/testing/boolean_type_test_interface.h"
-#include "cobalt/bindings/testing/callback_function_interface.h"
-#include "cobalt/bindings/testing/callback_interface_interface.h"
-#include "cobalt/bindings/testing/conditional_interface.h"
-#include "cobalt/bindings/testing/constants_interface.h"
-#include "cobalt/bindings/testing/constructor_interface.h"
-#include "cobalt/bindings/testing/constructor_with_arguments_interface.h"
-#include "cobalt/bindings/testing/derived_getter_setter_interface.h"
-#include "cobalt/bindings/testing/derived_interface.h"
-#include "cobalt/bindings/testing/dictionary_interface.h"
-#include "cobalt/bindings/testing/disabled_interface.h"
-#include "cobalt/bindings/testing/dom_string_test_interface.h"
-#include "cobalt/bindings/testing/enumeration_interface.h"
-#include "cobalt/bindings/testing/exception_object_interface.h"
-#include "cobalt/bindings/testing/exceptions_interface.h"
-#include "cobalt/bindings/testing/extended_idl_attributes_interface.h"
-#include "cobalt/bindings/testing/garbage_collection_test_interface.h"
-#include "cobalt/bindings/testing/global_interface_parent.h"
-#include "cobalt/bindings/testing/implemented_interface.h"
-#include "cobalt/bindings/testing/indexed_getter_interface.h"
-#include "cobalt/bindings/testing/interface_with_any.h"
-#include "cobalt/bindings/testing/interface_with_any_dictionary.h"
-#include "cobalt/bindings/testing/interface_with_unsupported_properties.h"
-#include "cobalt/bindings/testing/mozjs_anonymous_indexed_getter_interface.h"
-#include "cobalt/bindings/testing/mozjs_anonymous_named_getter_interface.h"
-#include "cobalt/bindings/testing/mozjs_anonymous_named_indexed_getter_interface.h"
-#include "cobalt/bindings/testing/mozjs_arbitrary_interface.h"
-#include "cobalt/bindings/testing/mozjs_base_interface.h"
-#include "cobalt/bindings/testing/mozjs_boolean_type_test_interface.h"
-#include "cobalt/bindings/testing/mozjs_callback_function_interface.h"
-#include "cobalt/bindings/testing/mozjs_callback_interface_interface.h"
-#include "cobalt/bindings/testing/mozjs_conditional_interface.h"
-#include "cobalt/bindings/testing/mozjs_constants_interface.h"
-#include "cobalt/bindings/testing/mozjs_constructor_interface.h"
-#include "cobalt/bindings/testing/mozjs_constructor_with_arguments_interface.h"
-#include "cobalt/bindings/testing/mozjs_derived_getter_setter_interface.h"
-#include "cobalt/bindings/testing/mozjs_derived_interface.h"
-#include "cobalt/bindings/testing/mozjs_dictionary_interface.h"
-#include "cobalt/bindings/testing/mozjs_disabled_interface.h"
-#include "cobalt/bindings/testing/mozjs_dom_string_test_interface.h"
-#include "cobalt/bindings/testing/mozjs_enumeration_interface.h"
-#include "cobalt/bindings/testing/mozjs_exception_object_interface.h"
-#include "cobalt/bindings/testing/mozjs_exceptions_interface.h"
-#include "cobalt/bindings/testing/mozjs_extended_idl_attributes_interface.h"
-#include "cobalt/bindings/testing/mozjs_garbage_collection_test_interface.h"
-#include "cobalt/bindings/testing/mozjs_global_interface_parent.h"
-#include "cobalt/bindings/testing/mozjs_implemented_interface.h"
-#include "cobalt/bindings/testing/mozjs_indexed_getter_interface.h"
-#include "cobalt/bindings/testing/mozjs_interface_with_any.h"
-#include "cobalt/bindings/testing/mozjs_interface_with_any_dictionary.h"
-#include "cobalt/bindings/testing/mozjs_interface_with_unsupported_properties.h"
-#include "cobalt/bindings/testing/mozjs_named_constructor_interface.h"
-#include "cobalt/bindings/testing/mozjs_named_getter_interface.h"
-#include "cobalt/bindings/testing/mozjs_named_indexed_getter_interface.h"
-#include "cobalt/bindings/testing/mozjs_nested_put_forwards_interface.h"
-#include "cobalt/bindings/testing/mozjs_no_constructor_interface.h"
-#include "cobalt/bindings/testing/mozjs_no_interface_object_interface.h"
-#include "cobalt/bindings/testing/mozjs_nullable_types_test_interface.h"
-#include "cobalt/bindings/testing/mozjs_numeric_types_test_interface.h"
-#include "cobalt/bindings/testing/mozjs_object_type_bindings_interface.h"
-#include "cobalt/bindings/testing/mozjs_operations_test_interface.h"
-#include "cobalt/bindings/testing/mozjs_promise_interface.h"
-#include "cobalt/bindings/testing/mozjs_put_forwards_interface.h"
-#include "cobalt/bindings/testing/mozjs_sequence_user.h"
-#include "cobalt/bindings/testing/mozjs_single_operation_interface.h"
-#include "cobalt/bindings/testing/mozjs_static_properties_interface.h"
-#include "cobalt/bindings/testing/mozjs_stringifier_anonymous_operation_interface.h"
-#include "cobalt/bindings/testing/mozjs_stringifier_attribute_interface.h"
-#include "cobalt/bindings/testing/mozjs_stringifier_operation_interface.h"
-#include "cobalt/bindings/testing/mozjs_target_interface.h"
-#include "cobalt/bindings/testing/mozjs_union_types_interface.h"
-#include "cobalt/bindings/testing/mozjs_window.h"
-#include "cobalt/bindings/testing/named_constructor_interface.h"
-#include "cobalt/bindings/testing/named_getter_interface.h"
-#include "cobalt/bindings/testing/named_indexed_getter_interface.h"
-#include "cobalt/bindings/testing/nested_put_forwards_interface.h"
-#include "cobalt/bindings/testing/no_constructor_interface.h"
-#include "cobalt/bindings/testing/no_interface_object_interface.h"
-#include "cobalt/bindings/testing/nullable_types_test_interface.h"
-#include "cobalt/bindings/testing/numeric_types_test_interface.h"
-#include "cobalt/bindings/testing/object_type_bindings_interface.h"
-#include "cobalt/bindings/testing/operations_test_interface.h"
-#include "cobalt/bindings/testing/promise_interface.h"
-#include "cobalt/bindings/testing/put_forwards_interface.h"
-#include "cobalt/bindings/testing/sequence_user.h"
-#include "cobalt/bindings/testing/single_operation_interface.h"
-#include "cobalt/bindings/testing/static_properties_interface.h"
-#include "cobalt/bindings/testing/stringifier_anonymous_operation_interface.h"
-#include "cobalt/bindings/testing/stringifier_attribute_interface.h"
-#include "cobalt/bindings/testing/stringifier_operation_interface.h"
-#include "cobalt/bindings/testing/target_interface.h"
-#include "cobalt/bindings/testing/union_types_interface.h"
-#include "cobalt/bindings/testing/window.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-
-namespace {
-using cobalt::bindings::testing::Window;
-using cobalt::bindings::testing::MozjsWindow;
-using cobalt::bindings::testing::AnonymousIndexedGetterInterface;
-using cobalt::bindings::testing::AnonymousNamedGetterInterface;
-using cobalt::bindings::testing::AnonymousNamedIndexedGetterInterface;
-using cobalt::bindings::testing::ArbitraryInterface;
-using cobalt::bindings::testing::BaseInterface;
-using cobalt::bindings::testing::BooleanTypeTestInterface;
-using cobalt::bindings::testing::CallbackFunctionInterface;
-using cobalt::bindings::testing::CallbackInterfaceInterface;
-#if defined(ENABLE_CONDITIONAL_INTERFACE)
-using cobalt::bindings::testing::ConditionalInterface;
-#endif // defined(ENABLE_CONDITIONAL_INTERFACE)
-using cobalt::bindings::testing::ConstantsInterface;
-using cobalt::bindings::testing::ConstructorInterface;
-using cobalt::bindings::testing::ConstructorWithArgumentsInterface;
-using cobalt::bindings::testing::DOMStringTestInterface;
-using cobalt::bindings::testing::DerivedGetterSetterInterface;
-using cobalt::bindings::testing::DerivedInterface;
-using cobalt::bindings::testing::DictionaryInterface;
-#if defined(NO_ENABLE_CONDITIONAL_INTERFACE)
-using cobalt::bindings::testing::DisabledInterface;
-#endif // defined(NO_ENABLE_CONDITIONAL_INTERFACE)
-using cobalt::bindings::testing::EnumerationInterface;
-using cobalt::bindings::testing::ExceptionObjectInterface;
-using cobalt::bindings::testing::ExceptionsInterface;
-using cobalt::bindings::testing::ExtendedIDLAttributesInterface;
-using cobalt::bindings::testing::GarbageCollectionTestInterface;
-using cobalt::bindings::testing::GlobalInterfaceParent;
-using cobalt::bindings::testing::ImplementedInterface;
-using cobalt::bindings::testing::IndexedGetterInterface;
-using cobalt::bindings::testing::InterfaceWithAny;
-using cobalt::bindings::testing::InterfaceWithAnyDictionary;
-using cobalt::bindings::testing::InterfaceWithUnsupportedProperties;
-using cobalt::bindings::testing::MozjsAnonymousIndexedGetterInterface;
-using cobalt::bindings::testing::MozjsAnonymousNamedGetterInterface;
-using cobalt::bindings::testing::MozjsAnonymousNamedIndexedGetterInterface;
-using cobalt::bindings::testing::MozjsArbitraryInterface;
-using cobalt::bindings::testing::MozjsBaseInterface;
-using cobalt::bindings::testing::MozjsBooleanTypeTestInterface;
-using cobalt::bindings::testing::MozjsCallbackFunctionInterface;
-using cobalt::bindings::testing::MozjsCallbackInterfaceInterface;
-#if defined(ENABLE_CONDITIONAL_INTERFACE)
-using cobalt::bindings::testing::MozjsConditionalInterface;
-#endif // defined(ENABLE_CONDITIONAL_INTERFACE)
-using cobalt::bindings::testing::MozjsConstantsInterface;
-using cobalt::bindings::testing::MozjsConstructorInterface;
-using cobalt::bindings::testing::MozjsConstructorWithArgumentsInterface;
-using cobalt::bindings::testing::MozjsDOMStringTestInterface;
-using cobalt::bindings::testing::MozjsDerivedGetterSetterInterface;
-using cobalt::bindings::testing::MozjsDerivedInterface;
-using cobalt::bindings::testing::MozjsDictionaryInterface;
-#if defined(NO_ENABLE_CONDITIONAL_INTERFACE)
-using cobalt::bindings::testing::MozjsDisabledInterface;
-#endif // defined(NO_ENABLE_CONDITIONAL_INTERFACE)
-using cobalt::bindings::testing::MozjsEnumerationInterface;
-using cobalt::bindings::testing::MozjsExceptionObjectInterface;
-using cobalt::bindings::testing::MozjsExceptionsInterface;
-using cobalt::bindings::testing::MozjsExtendedIDLAttributesInterface;
-using cobalt::bindings::testing::MozjsGarbageCollectionTestInterface;
-using cobalt::bindings::testing::MozjsGlobalInterfaceParent;
-using cobalt::bindings::testing::MozjsImplementedInterface;
-using cobalt::bindings::testing::MozjsIndexedGetterInterface;
-using cobalt::bindings::testing::MozjsInterfaceWithAny;
-using cobalt::bindings::testing::MozjsInterfaceWithAnyDictionary;
-using cobalt::bindings::testing::MozjsInterfaceWithUnsupportedProperties;
-using cobalt::bindings::testing::MozjsNamedConstructorInterface;
-using cobalt::bindings::testing::MozjsNamedGetterInterface;
-using cobalt::bindings::testing::MozjsNamedIndexedGetterInterface;
-using cobalt::bindings::testing::MozjsNestedPutForwardsInterface;
-using cobalt::bindings::testing::MozjsNoConstructorInterface;
-using cobalt::bindings::testing::MozjsNoInterfaceObjectInterface;
-using cobalt::bindings::testing::MozjsNullableTypesTestInterface;
-using cobalt::bindings::testing::MozjsNumericTypesTestInterface;
-using cobalt::bindings::testing::MozjsObjectTypeBindingsInterface;
-using cobalt::bindings::testing::MozjsOperationsTestInterface;
-using cobalt::bindings::testing::MozjsPromiseInterface;
-using cobalt::bindings::testing::MozjsPutForwardsInterface;
-using cobalt::bindings::testing::MozjsSequenceUser;
-using cobalt::bindings::testing::MozjsSingleOperationInterface;
-using cobalt::bindings::testing::MozjsStaticPropertiesInterface;
-using cobalt::bindings::testing::MozjsStringifierAnonymousOperationInterface;
-using cobalt::bindings::testing::MozjsStringifierAttributeInterface;
-using cobalt::bindings::testing::MozjsStringifierOperationInterface;
-using cobalt::bindings::testing::MozjsTargetInterface;
-using cobalt::bindings::testing::MozjsUnionTypesInterface;
-using cobalt::bindings::testing::MozjsWindow;
-using cobalt::bindings::testing::NamedConstructorInterface;
-using cobalt::bindings::testing::NamedGetterInterface;
-using cobalt::bindings::testing::NamedIndexedGetterInterface;
-using cobalt::bindings::testing::NestedPutForwardsInterface;
-using cobalt::bindings::testing::NoConstructorInterface;
-using cobalt::bindings::testing::NoInterfaceObjectInterface;
-using cobalt::bindings::testing::NullableTypesTestInterface;
-using cobalt::bindings::testing::NumericTypesTestInterface;
-using cobalt::bindings::testing::ObjectTypeBindingsInterface;
-using cobalt::bindings::testing::OperationsTestInterface;
-using cobalt::bindings::testing::PromiseInterface;
-using cobalt::bindings::testing::PutForwardsInterface;
-using cobalt::bindings::testing::SequenceUser;
-using cobalt::bindings::testing::SingleOperationInterface;
-using cobalt::bindings::testing::StaticPropertiesInterface;
-using cobalt::bindings::testing::StringifierAnonymousOperationInterface;
-using cobalt::bindings::testing::StringifierAttributeInterface;
-using cobalt::bindings::testing::StringifierOperationInterface;
-using cobalt::bindings::testing::TargetInterface;
-using cobalt::bindings::testing::UnionTypesInterface;
-using cobalt::bindings::testing::Window;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::OpaqueHandle;
-using cobalt::script::OpaqueHandleHolder;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::Wrappable;
-
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-JSObject* DummyFunctor(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- NOTREACHED();
- return NULL;
-}
-} // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-
-class MozjsWindowHandler : public ProxyHandler {
- public:
- MozjsWindowHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsWindowHandler::named_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-ProxyHandler::IndexedPropertyHooks
-MozjsWindowHandler::indexed_property_hooks = {
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
-
-static base::LazyInstance<MozjsWindowHandler>
- proxy_handler;
-
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, MozjsWindow::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = JSCLASS_GLOBAL_FLAGS;
- instance_class->name = "Window";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "WindowPrototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "WindowConstructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
- return interface_data;
-}
-
-JSBool get_windowProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsWindow::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<Window>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- Window* impl =
- wrapper_private->wrappable<Window>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->window_property(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_windowProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsWindow::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<Window>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- Window* impl =
- wrapper_private->wrappable<Window>().get();
- TypeTraits<std::string >::ConversionType value;
- FromJSValue(context, vp, kNoConversionFlags, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_window_property(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool get_window(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsWindow::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<Window>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- Window* impl =
- wrapper_private->wrappable<Window>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->window(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool get_onEvent(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsWindow::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<Window>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- Window* impl =
- wrapper_private->wrappable<Window>().get();
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->on_event(),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool set_onEvent(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- const JSClass* proto_class =
- MozjsWindow::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<Window>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- Window* impl =
- wrapper_private->wrappable<Window>().get();
- TypeTraits<::cobalt::script::CallbackInterfaceTraits<SingleOperationInterface > >::ConversionType value;
- FromJSValue(context, vp, (kConversionFlagNullable), &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-
- impl->set_on_event(value);
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_getStackTrace(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsWindow::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<Window>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- Window* impl =
- wrapper_private->wrappable<Window>().get();
- MozjsGlobalEnvironment* callwith_global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->GetStackTrace(callwith_global_environment->GetStackTrace()),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-JSBool fcn_setTimeout(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsWindow::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<Window>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- Window* impl =
- wrapper_private->wrappable<Window>().get();
- const size_t kMinArguments = 1;
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
- // Non-optional arguments
- TypeTraits<Window::TimerCallback >::ConversionType handler;
- // Optional arguments
- TypeTraits<int32_t >::ConversionType timeout;
-
- DCHECK_LT(0, args.length());
- JS::RootedValue non_optional_value0(
- context, args[0]);
- FromJSValue(context,
- non_optional_value0,
- kNoConversionFlags,
- &exception_state, &handler);
- if (exception_state.is_exception_set()) {
- return false;
- }
- size_t num_set_arguments = 1;
- if (args.length() > 1) {
- JS::RootedValue optional_value0(
- context, args[1]);
- FromJSValue(context,
- optional_value0,
- kNoConversionFlags,
- &exception_state,
- &timeout);
- if (exception_state.is_exception_set()) {
- return false;
- }
- ++num_set_arguments;
- }
- switch (num_set_arguments) {
- case 1:
- {
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->SetTimeout(handler),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
- }
- break;
- case 2:
- {
- if (!exception_state.is_exception_set()) {
- ToJSValue(context,
- impl->SetTimeout(handler, timeout),
- &result_value);
- }
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
- return !exception_state.is_exception_set();
- }
- break;
- default:
- NOTREACHED();
- return false;
- }
-}
-
-JSBool fcn_windowOperation(
- JSContext* context, uint32_t argc, JS::Value *vp) {
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class =
- MozjsWindow::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<Window>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- Window* impl =
- wrapper_private->wrappable<Window>().get();
-
- impl->WindowOperation();
- result_value.set(JS::UndefinedHandleValue);
- return !exception_state.is_exception_set();
-}
-
-
-const JSPropertySpec prototype_properties[] = {
- { // Read/Write property
- "windowProperty", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_windowProperty),
- JSOP_WRAPPER(&set_windowProperty),
- },
- { // Readonly attribute
- "window", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE | JSPROP_READONLY,
- JSOP_WRAPPER(&get_window),
- JSOP_NULLWRAPPER,
- },
- { // Read/Write property
- "onEvent", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_onEvent),
- JSOP_WRAPPER(&set_onEvent),
- },
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
- {
- "getStackTrace",
- JSOP_WRAPPER(&fcn_getStackTrace),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "setTimeout",
- JSOP_WRAPPER(&fcn_setTimeout),
- 1,
- JSPROP_ENUMERATE,
- NULL,
- },
- {
- "windowOperation",
- JSOP_WRAPPER(&fcn_windowOperation),
- 0,
- JSPROP_ENUMERATE,
- NULL,
- },
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- JS::RootedObject parent_prototype(
- context, MozjsGlobalInterfaceParent::GetPrototype(context, global_object));
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "Window";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-JSObject* MozjsWindow::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject global_object(
- context, JS_NewGlobalObject(context,
- &interface_data->instance_class_definition,
- NULL));
- DCHECK(global_object);
-
- // Initialize standard JS constructors prototypes and top-level functions such
- // as Object, isNan, etc.
- JSAutoCompartment auto_compartment(context, global_object);
- bool success = JS_InitStandardClasses(context, global_object);
-
- JS::RootedObject prototype(
- context, MozjsWindow::GetPrototype(context, global_object));
- DCHECK(prototype);
- JS_SetPrototype(context, global_object, prototype);
-
- // Add own properties.
- success = JS_DefineProperties(context, global_object, own_properties);
- DCHECK(success);
-
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, global_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
-
- // Set the global object proxy pointer, so we can access the standard classes
- // such as the base Object prototype when looking up our prototype.
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- global_environment->SetGlobalObjectProxyAndWrapper(proxy, wrappable);
- return proxy;
-}
-//static
-const JSClass* MozjsWindow::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* MozjsWindow::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-// static
-JSObject* MozjsWindow::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-
-namespace {
-} // namespace
-
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-namespace cobalt {
-namespace script {
-
-template<>
-void GlobalEnvironment::CreateGlobalObject<Window>(
- const scoped_refptr<Window>& global_interface,
- EnvironmentSettings* environment_settings) {
- MozjsGlobalEnvironment* mozjs_global_environment =
- base::polymorphic_downcast<MozjsGlobalEnvironment*>(this);
- JSContext* context = mozjs_global_environment->context();
-
- JSAutoRequest auto_request(context);
- MozjsWindow::CreateProxy(
- context, global_interface);
- mozjs_global_environment->SetEnvironmentSettings(environment_settings);
- mozjs_global_environment->EvaluateAutomatics();
-
- WrapperFactory* wrapper_factory =
- mozjs_global_environment->wrapper_factory();
- wrapper_factory->RegisterWrappableType(
- AnonymousIndexedGetterInterface::AnonymousIndexedGetterInterfaceWrappableType(),
- base::Bind(MozjsAnonymousIndexedGetterInterface::CreateProxy),
- base::Bind(MozjsAnonymousIndexedGetterInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- AnonymousNamedGetterInterface::AnonymousNamedGetterInterfaceWrappableType(),
- base::Bind(MozjsAnonymousNamedGetterInterface::CreateProxy),
- base::Bind(MozjsAnonymousNamedGetterInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- AnonymousNamedIndexedGetterInterface::AnonymousNamedIndexedGetterInterfaceWrappableType(),
- base::Bind(MozjsAnonymousNamedIndexedGetterInterface::CreateProxy),
- base::Bind(MozjsAnonymousNamedIndexedGetterInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- ArbitraryInterface::ArbitraryInterfaceWrappableType(),
- base::Bind(MozjsArbitraryInterface::CreateProxy),
- base::Bind(MozjsArbitraryInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- BaseInterface::BaseInterfaceWrappableType(),
- base::Bind(MozjsBaseInterface::CreateProxy),
- base::Bind(MozjsBaseInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- BooleanTypeTestInterface::BooleanTypeTestInterfaceWrappableType(),
- base::Bind(MozjsBooleanTypeTestInterface::CreateProxy),
- base::Bind(MozjsBooleanTypeTestInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- CallbackFunctionInterface::CallbackFunctionInterfaceWrappableType(),
- base::Bind(MozjsCallbackFunctionInterface::CreateProxy),
- base::Bind(MozjsCallbackFunctionInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- CallbackInterfaceInterface::CallbackInterfaceInterfaceWrappableType(),
- base::Bind(MozjsCallbackInterfaceInterface::CreateProxy),
- base::Bind(MozjsCallbackInterfaceInterface::PrototypeClass));
-#if defined(ENABLE_CONDITIONAL_INTERFACE)
- wrapper_factory->RegisterWrappableType(
- ConditionalInterface::ConditionalInterfaceWrappableType(),
- base::Bind(MozjsConditionalInterface::CreateProxy),
- base::Bind(MozjsConditionalInterface::PrototypeClass));
-#endif // defined(ENABLE_CONDITIONAL_INTERFACE)
- wrapper_factory->RegisterWrappableType(
- ConstantsInterface::ConstantsInterfaceWrappableType(),
- base::Bind(MozjsConstantsInterface::CreateProxy),
- base::Bind(MozjsConstantsInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- ConstructorInterface::ConstructorInterfaceWrappableType(),
- base::Bind(MozjsConstructorInterface::CreateProxy),
- base::Bind(MozjsConstructorInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- ConstructorWithArgumentsInterface::ConstructorWithArgumentsInterfaceWrappableType(),
- base::Bind(MozjsConstructorWithArgumentsInterface::CreateProxy),
- base::Bind(MozjsConstructorWithArgumentsInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- DOMStringTestInterface::DOMStringTestInterfaceWrappableType(),
- base::Bind(MozjsDOMStringTestInterface::CreateProxy),
- base::Bind(MozjsDOMStringTestInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- DerivedGetterSetterInterface::DerivedGetterSetterInterfaceWrappableType(),
- base::Bind(MozjsDerivedGetterSetterInterface::CreateProxy),
- base::Bind(MozjsDerivedGetterSetterInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- DerivedInterface::DerivedInterfaceWrappableType(),
- base::Bind(MozjsDerivedInterface::CreateProxy),
- base::Bind(MozjsDerivedInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- DictionaryInterface::DictionaryInterfaceWrappableType(),
- base::Bind(MozjsDictionaryInterface::CreateProxy),
- base::Bind(MozjsDictionaryInterface::PrototypeClass));
-#if defined(NO_ENABLE_CONDITIONAL_INTERFACE)
- wrapper_factory->RegisterWrappableType(
- DisabledInterface::DisabledInterfaceWrappableType(),
- base::Bind(MozjsDisabledInterface::CreateProxy),
- base::Bind(MozjsDisabledInterface::PrototypeClass));
-#endif // defined(NO_ENABLE_CONDITIONAL_INTERFACE)
- wrapper_factory->RegisterWrappableType(
- EnumerationInterface::EnumerationInterfaceWrappableType(),
- base::Bind(MozjsEnumerationInterface::CreateProxy),
- base::Bind(MozjsEnumerationInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- ExceptionObjectInterface::ExceptionObjectInterfaceWrappableType(),
- base::Bind(MozjsExceptionObjectInterface::CreateProxy),
- base::Bind(MozjsExceptionObjectInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- ExceptionsInterface::ExceptionsInterfaceWrappableType(),
- base::Bind(MozjsExceptionsInterface::CreateProxy),
- base::Bind(MozjsExceptionsInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- ExtendedIDLAttributesInterface::ExtendedIDLAttributesInterfaceWrappableType(),
- base::Bind(MozjsExtendedIDLAttributesInterface::CreateProxy),
- base::Bind(MozjsExtendedIDLAttributesInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- GarbageCollectionTestInterface::GarbageCollectionTestInterfaceWrappableType(),
- base::Bind(MozjsGarbageCollectionTestInterface::CreateProxy),
- base::Bind(MozjsGarbageCollectionTestInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- GlobalInterfaceParent::GlobalInterfaceParentWrappableType(),
- base::Bind(MozjsGlobalInterfaceParent::CreateProxy),
- base::Bind(MozjsGlobalInterfaceParent::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- ImplementedInterface::ImplementedInterfaceWrappableType(),
- base::Bind(MozjsImplementedInterface::CreateProxy),
- base::Bind(MozjsImplementedInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- IndexedGetterInterface::IndexedGetterInterfaceWrappableType(),
- base::Bind(MozjsIndexedGetterInterface::CreateProxy),
- base::Bind(MozjsIndexedGetterInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- InterfaceWithAny::InterfaceWithAnyWrappableType(),
- base::Bind(MozjsInterfaceWithAny::CreateProxy),
- base::Bind(MozjsInterfaceWithAny::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- InterfaceWithAnyDictionary::InterfaceWithAnyDictionaryWrappableType(),
- base::Bind(MozjsInterfaceWithAnyDictionary::CreateProxy),
- base::Bind(MozjsInterfaceWithAnyDictionary::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- InterfaceWithUnsupportedProperties::InterfaceWithUnsupportedPropertiesWrappableType(),
- base::Bind(MozjsInterfaceWithUnsupportedProperties::CreateProxy),
- base::Bind(MozjsInterfaceWithUnsupportedProperties::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- NamedConstructorInterface::NamedConstructorInterfaceWrappableType(),
- base::Bind(MozjsNamedConstructorInterface::CreateProxy),
- base::Bind(MozjsNamedConstructorInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- NamedGetterInterface::NamedGetterInterfaceWrappableType(),
- base::Bind(MozjsNamedGetterInterface::CreateProxy),
- base::Bind(MozjsNamedGetterInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- NamedIndexedGetterInterface::NamedIndexedGetterInterfaceWrappableType(),
- base::Bind(MozjsNamedIndexedGetterInterface::CreateProxy),
- base::Bind(MozjsNamedIndexedGetterInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- NestedPutForwardsInterface::NestedPutForwardsInterfaceWrappableType(),
- base::Bind(MozjsNestedPutForwardsInterface::CreateProxy),
- base::Bind(MozjsNestedPutForwardsInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- NoConstructorInterface::NoConstructorInterfaceWrappableType(),
- base::Bind(MozjsNoConstructorInterface::CreateProxy),
- base::Bind(MozjsNoConstructorInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- NoInterfaceObjectInterface::NoInterfaceObjectInterfaceWrappableType(),
- base::Bind(MozjsNoInterfaceObjectInterface::CreateProxy),
- base::Bind(MozjsNoInterfaceObjectInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- NullableTypesTestInterface::NullableTypesTestInterfaceWrappableType(),
- base::Bind(MozjsNullableTypesTestInterface::CreateProxy),
- base::Bind(MozjsNullableTypesTestInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- NumericTypesTestInterface::NumericTypesTestInterfaceWrappableType(),
- base::Bind(MozjsNumericTypesTestInterface::CreateProxy),
- base::Bind(MozjsNumericTypesTestInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- ObjectTypeBindingsInterface::ObjectTypeBindingsInterfaceWrappableType(),
- base::Bind(MozjsObjectTypeBindingsInterface::CreateProxy),
- base::Bind(MozjsObjectTypeBindingsInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- OperationsTestInterface::OperationsTestInterfaceWrappableType(),
- base::Bind(MozjsOperationsTestInterface::CreateProxy),
- base::Bind(MozjsOperationsTestInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- PromiseInterface::PromiseInterfaceWrappableType(),
- base::Bind(MozjsPromiseInterface::CreateProxy),
- base::Bind(MozjsPromiseInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- PutForwardsInterface::PutForwardsInterfaceWrappableType(),
- base::Bind(MozjsPutForwardsInterface::CreateProxy),
- base::Bind(MozjsPutForwardsInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- SequenceUser::SequenceUserWrappableType(),
- base::Bind(MozjsSequenceUser::CreateProxy),
- base::Bind(MozjsSequenceUser::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- StaticPropertiesInterface::StaticPropertiesInterfaceWrappableType(),
- base::Bind(MozjsStaticPropertiesInterface::CreateProxy),
- base::Bind(MozjsStaticPropertiesInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- StringifierAnonymousOperationInterface::StringifierAnonymousOperationInterfaceWrappableType(),
- base::Bind(MozjsStringifierAnonymousOperationInterface::CreateProxy),
- base::Bind(MozjsStringifierAnonymousOperationInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- StringifierAttributeInterface::StringifierAttributeInterfaceWrappableType(),
- base::Bind(MozjsStringifierAttributeInterface::CreateProxy),
- base::Bind(MozjsStringifierAttributeInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- StringifierOperationInterface::StringifierOperationInterfaceWrappableType(),
- base::Bind(MozjsStringifierOperationInterface::CreateProxy),
- base::Bind(MozjsStringifierOperationInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- TargetInterface::TargetInterfaceWrappableType(),
- base::Bind(MozjsTargetInterface::CreateProxy),
- base::Bind(MozjsTargetInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- UnionTypesInterface::UnionTypesInterfaceWrappableType(),
- base::Bind(MozjsUnionTypesInterface::CreateProxy),
- base::Bind(MozjsUnionTypesInterface::PrototypeClass));
- wrapper_factory->RegisterWrappableType(
- Window::WindowWrappableType(),
- base::Bind(DummyFunctor),
- base::Bind(MozjsWindow::PrototypeClass));
-
-}
-
-} // namespace script
-} // namespace cobalt
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_window.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_window.h
deleted file mode 100644
index e0b39f6..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/mozjs_window.h
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/mozjs/templates/interface.h.template
-
-#ifndef MozjsWindow_h
-#define MozjsWindow_h
-
-#include "base/hash_tables.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/wrappable.h"
-#include "cobalt/bindings/testing/mozjs_global_interface_parent.h"
-#include "cobalt/bindings/testing/window.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsWindow {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-};
-
-} // namespace testing
-} // namespace bindings
-} // namespace cobalt
-
-#endif // MozjsWindow_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/test_dictionary.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/test_dictionary.h
deleted file mode 100644
index 4ec2228..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/test_dictionary.h
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- * Copyright 2017 Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/templates/dictionary.h.template
-
-#ifndef TestDictionary_h
-#define TestDictionary_h
-
-#include <string>
-
-#include "base/optional.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/script/sequence.h"
-#include "cobalt/script/value_handle.h"
-#include "cobalt/bindings/testing/arbitrary_interface.h"
-
-using cobalt::bindings::testing::ArbitraryInterface;
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class TestDictionary {
- public:
- TestDictionary() {
- has_boolean_member_ = false;
- boolean_member_ = bool();
- has_short_clamp_member_ = false;
- short_clamp_member_ = int16_t();
- has_long_member_ = false;
- long_member_ = int32_t();
- has_double_member_ = false;
- double_member_ = double();
- has_string_member_ = false;
- string_member_ = std::string();
- has_interface_member_ = false;
- interface_member_ = scoped_refptr<ArbitraryInterface>();
- member_with_default_ = 5;
- has_non_default_member_ = false;
- non_default_member_ = int32_t();
- has_any_member_ = false;
- }
-
- TestDictionary(const TestDictionary& other) {
- has_boolean_member_ = other.has_boolean_member_;
- boolean_member_ = other.boolean_member_;
- has_short_clamp_member_ = other.has_short_clamp_member_;
- short_clamp_member_ = other.short_clamp_member_;
- has_long_member_ = other.has_long_member_;
- long_member_ = other.long_member_;
- has_double_member_ = other.has_double_member_;
- double_member_ = other.double_member_;
- has_string_member_ = other.has_string_member_;
- string_member_ = other.string_member_;
- has_interface_member_ = other.has_interface_member_;
- interface_member_ = other.interface_member_;
- member_with_default_ = other.member_with_default_;
- has_non_default_member_ = other.has_non_default_member_;
- non_default_member_ = other.non_default_member_;
- if (other.any_member_with_default_) {
- any_member_with_default_.reset(
- new script::ScriptValue<::cobalt::script::ValueHandle>::StrongReference(
- other.any_member_with_default_->referenced_value()));
- }
- has_any_member_ = other.has_any_member_;
- if (other.any_member_) {
- any_member_.reset(
- new script::ScriptValue<::cobalt::script::ValueHandle>::StrongReference(
- other.any_member_->referenced_value()));
- }
- }
-
- TestDictionary& operator=(const TestDictionary& other) {
- has_boolean_member_ = other.has_boolean_member_;
- boolean_member_ = other.boolean_member_;
- has_short_clamp_member_ = other.has_short_clamp_member_;
- short_clamp_member_ = other.short_clamp_member_;
- has_long_member_ = other.has_long_member_;
- long_member_ = other.long_member_;
- has_double_member_ = other.has_double_member_;
- double_member_ = other.double_member_;
- has_string_member_ = other.has_string_member_;
- string_member_ = other.string_member_;
- has_interface_member_ = other.has_interface_member_;
- interface_member_ = other.interface_member_;
- member_with_default_ = other.member_with_default_;
- has_non_default_member_ = other.has_non_default_member_;
- non_default_member_ = other.non_default_member_;
- if (other.any_member_with_default_) {
- any_member_with_default_.reset(
- new script::ScriptValue<::cobalt::script::ValueHandle>::StrongReference(
- other.any_member_with_default_->referenced_value()));
- } else {
- any_member_with_default_.reset();
- }
- has_any_member_ = other.has_any_member_;
- if (other.any_member_) {
- any_member_.reset(
- new script::ScriptValue<::cobalt::script::ValueHandle>::StrongReference(
- other.any_member_->referenced_value()));
- } else {
- any_member_.reset();
- }
- return *this;
- }
-
- bool has_boolean_member() const {
- return has_boolean_member_;
- }
- bool boolean_member() const {
- DCHECK(has_boolean_member_);
- return boolean_member_;
- }
- void set_boolean_member(bool value) {
- has_boolean_member_ = true;
- boolean_member_ = value;
- }
-
- bool has_short_clamp_member() const {
- return has_short_clamp_member_;
- }
- int16_t short_clamp_member() const {
- DCHECK(has_short_clamp_member_);
- return short_clamp_member_;
- }
- void set_short_clamp_member(int16_t value) {
- has_short_clamp_member_ = true;
- short_clamp_member_ = value;
- }
-
- bool has_long_member() const {
- return has_long_member_;
- }
- int32_t long_member() const {
- DCHECK(has_long_member_);
- return long_member_;
- }
- void set_long_member(int32_t value) {
- has_long_member_ = true;
- long_member_ = value;
- }
-
- bool has_double_member() const {
- return has_double_member_;
- }
- double double_member() const {
- DCHECK(has_double_member_);
- return double_member_;
- }
- void set_double_member(double value) {
- has_double_member_ = true;
- double_member_ = value;
- }
-
- bool has_string_member() const {
- return has_string_member_;
- }
- const std::string& string_member() const {
- DCHECK(has_string_member_);
- return string_member_;
- }
- void set_string_member(const std::string& value) {
- has_string_member_ = true;
- string_member_ = value;
- }
-
- bool has_interface_member() const {
- return has_interface_member_;
- }
- const scoped_refptr<ArbitraryInterface>& interface_member() const {
- DCHECK(has_interface_member_);
- return interface_member_;
- }
- void set_interface_member(const scoped_refptr<ArbitraryInterface>& value) {
- has_interface_member_ = true;
- interface_member_ = value;
- }
-
- bool has_member_with_default() const {
- return true;
- }
- int32_t member_with_default() const {
- return member_with_default_;
- }
- void set_member_with_default(int32_t value) {
- member_with_default_ = value;
- }
-
- bool has_non_default_member() const {
- return has_non_default_member_;
- }
- int32_t non_default_member() const {
- DCHECK(has_non_default_member_);
- return non_default_member_;
- }
- void set_non_default_member(int32_t value) {
- has_non_default_member_ = true;
- non_default_member_ = value;
- }
-
- bool has_any_member_with_default() const {
- return true;
- }
- const ::cobalt::script::ScriptValue<::cobalt::script::ValueHandle>* any_member_with_default() const {
- if (!any_member_with_default_) {
- return NULL;
- }
- return &(any_member_with_default_->referenced_value());
- }
- void set_any_member_with_default(const ::cobalt::script::ScriptValue<::cobalt::script::ValueHandle>* value) {
- if (value) {
- any_member_with_default_.reset(
- new script::ScriptValue<::cobalt::script::ValueHandle>::StrongReference(*value));
- } else {
- any_member_with_default_.reset();
- }
- }
-
- bool has_any_member() const {
- return has_any_member_;
- }
- const ::cobalt::script::ScriptValue<::cobalt::script::ValueHandle>* any_member() const {
- DCHECK(has_any_member_);
- if (!any_member_) {
- return NULL;
- }
- return &(any_member_->referenced_value());
- }
- void set_any_member(const ::cobalt::script::ScriptValue<::cobalt::script::ValueHandle>* value) {
- has_any_member_ = true;
- if (value) {
- any_member_.reset(
- new script::ScriptValue<::cobalt::script::ValueHandle>::StrongReference(*value));
- } else {
- any_member_.reset();
- }
- }
-
- private:
- bool has_boolean_member_;
- bool boolean_member_;
- bool has_short_clamp_member_;
- int16_t short_clamp_member_;
- bool has_long_member_;
- int32_t long_member_;
- bool has_double_member_;
- double double_member_;
- bool has_string_member_;
- std::string string_member_;
- bool has_interface_member_;
- scoped_refptr<ArbitraryInterface> interface_member_;
- int32_t member_with_default_;
- bool has_non_default_member_;
- int32_t non_default_member_;
- scoped_ptr<script::ScriptValue<::cobalt::script::ValueHandle>::StrongReference> any_member_with_default_;
- bool has_any_member_;
- scoped_ptr<script::ScriptValue<::cobalt::script::ValueHandle>::StrongReference> any_member_;
-};
-
-// This ostream override is necessary for MOCK_METHODs commonly used
-// in idl test code
-inline std::ostream& operator<<(
- std::ostream& stream, const cobalt::bindings::testing::TestDictionary& in) {
- UNREFERENCED_PARAMETER(in);
- stream << "[TestDictionary]";
- return stream;
-}
-
-} // namespace cobalt
-} // namespace bindings
-} // namespace testing
-
-#endif // TestDictionary_h
diff --git a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/test_enum.h b/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/test_enum.h
deleted file mode 100644
index 5e4bb69..0000000
--- a/src/cobalt/bindings/generated/mozjs/testing/cobalt/bindings/testing/test_enum.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2017 Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// clang-format off
-
-// This file has been auto-generated by bindings/code_generator_cobalt.py. DO NOT MODIFY!
-// Auto-generated from template: bindings/templates/enumeration.h.template
-
-#ifndef TestEnum_h
-#define TestEnum_h
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-enum TestEnum {
- kTestEnumAlpha,
- kTestEnumBeta,
- kTestEnumGamma,
- kTestEnumEnumWithDashes,
- kTestEnumEnumWithSpaces,
- kTestEnumTerribleEnum,
- kTestEnumThisIsATerribleEnum,
-};
-
-} // namespace cobalt
-} // namespace bindings
-} // namespace testing
-
-#endif // TestEnum_h
diff --git a/src/cobalt/bindings/mozjs/__init__.py b/src/cobalt/bindings/mozjs/__init__.py
deleted file mode 100644
index ef65bee..0000000
--- a/src/cobalt/bindings/mozjs/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/src/cobalt/bindings/mozjs/bootstrap_path.py b/src/cobalt/bindings/mozjs/bootstrap_path.py
deleted file mode 100644
index 6882bed..0000000
--- a/src/cobalt/bindings/mozjs/bootstrap_path.py
+++ /dev/null
@@ -1,49 +0,0 @@
-#
-# Copyright 2016 Google Inc. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-"""Utility to prepend the top-level source directory to sys.path.
-
-Since this may be used outside of gclient or git environment (such as part of a
-tarball), the path to the root must be hardcoded.
-"""
-
-import os
-import sys
-
-
-def _GetSrcRoot():
- """Finds the first directory named 'src' that this module is in."""
- current_path = os.path.normpath(__file__)
- while os.path.basename(current_path) != 'src':
- next_path = os.path.dirname(current_path)
- if next_path == current_path:
- raise RuntimeError('Could not find src directory.')
- current_path = next_path
- return os.path.abspath(current_path)
-
-
-sys.path.insert(0, _GetSrcRoot())
-
-# Add blink's python tools to the path.
-
-sys.path.append(
- os.path.normpath(
- os.path.join(_GetSrcRoot(), 'third_party', 'blink', 'Tools',
- 'Scripts')))
-
-sys.path.append(
- os.path.normpath(
- os.path.join(_GetSrcRoot(), 'third_party', 'blink', 'Source',
- 'bindings', 'scripts')))
diff --git a/src/cobalt/bindings/mozjs/code_generator_mozjs.py b/src/cobalt/bindings/mozjs/code_generator_mozjs.py
deleted file mode 100644
index cd5d48d..0000000
--- a/src/cobalt/bindings/mozjs/code_generator_mozjs.py
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright 2016 Google Inc. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Mozjs-specific implementation of CodeGeneratorCobalt.
-
-Defines CodeGeneratorMozjs and ExpressionGeneratorMozjs classes.
-"""
-
-import os
-
-from cobalt.bindings.code_generator_cobalt import CodeGeneratorCobalt
-from cobalt.bindings.expression_generator import ExpressionGenerator
-
-
-class ExpressionGeneratorMozjs(ExpressionGenerator):
- """Implementation of ExpressionGenerator for SpiderMonkey."""
-
- def is_undefined(self, arg):
- return '%s.isUndefined()' % arg
-
- def is_undefined_or_null(self, arg):
- return '%s.isNullOrUndefined()' % arg
-
- def inherits_interface(self, interface_name, arg):
- return ('%s.isObject() ?'
- ' wrapper_factory->DoesObjectImplementInterface(\n'
- ' object, base::GetTypeId<%s>()) :\n'
- ' false') % (arg, interface_name)
-
- def is_number(self, arg):
- return '%s.isNumber()' % arg
-
-
-class CodeGeneratorMozjs(CodeGeneratorCobalt):
- """Code generator class for SpiderMonkey bindings."""
-
- _expression_generator = ExpressionGeneratorMozjs()
-
- def __init__(self, *args, **kwargs):
- module_path, _ = os.path.split(os.path.realpath(__file__))
- templates_dir = os.path.normpath(os.path.join(module_path, 'templates'))
- super(CodeGeneratorMozjs, self).__init__(templates_dir, *args, **kwargs)
-
- @property
- def generated_file_prefix(self):
- return 'mozjs'
-
- @property
- def expression_generator(self):
- return CodeGeneratorMozjs._expression_generator
diff --git a/src/cobalt/bindings/mozjs/generate_conversion_header_mozjs.py b/src/cobalt/bindings/mozjs/generate_conversion_header_mozjs.py
deleted file mode 100644
index b43e30c..0000000
--- a/src/cobalt/bindings/mozjs/generate_conversion_header_mozjs.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2017 Google Inc. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Generate a conversion header for SpiderMonkey."""
-
-import sys
-
-import bootstrap_path # pylint: disable=g-bad-import-order,unused-import
-
-from cobalt.bindings.generate_conversion_header import generate_header
-from cobalt.bindings.mozjs.code_generator_mozjs import CodeGeneratorMozjs
-
-if __name__ == '__main__':
- sys.exit(generate_header(CodeGeneratorMozjs))
diff --git a/src/cobalt/bindings/mozjs/idl_compiler_mozjs.py b/src/cobalt/bindings/mozjs/idl_compiler_mozjs.py
deleted file mode 100644
index 4fefcae..0000000
--- a/src/cobalt/bindings/mozjs/idl_compiler_mozjs.py
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright 2016 Google Inc. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Compile an .idl file to Cobalt mozjs bindings (.h and .cpp files).
-
-Calls into idl_compiler_cobalt.shared_main specifying the SpiderMonkey
-CodeGenerator class.
-"""
-
-import sys
-
-import bootstrap_path # pylint: disable=unused-import
-
-from cobalt.bindings.idl_compiler_cobalt import generate_bindings
-from cobalt.bindings.mozjs.code_generator_mozjs import CodeGeneratorMozjs
-
-if __name__ == '__main__':
- sys.exit(generate_bindings(CodeGeneratorMozjs))
diff --git a/src/cobalt/bindings/mozjs/templates/callback-interface.cc.template b/src/cobalt/bindings/mozjs/templates/callback-interface.cc.template
deleted file mode 100644
index aee4a88..0000000
--- a/src/cobalt/bindings/mozjs/templates/callback-interface.cc.template
+++ /dev/null
@@ -1,129 +0,0 @@
-{#
- # Copyright 2016 Google Inc. All Rights Reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- #}
-{% extends "callback-interface-base.cc.template" %}
-
-{% block includes %}
-{{ super() }}
-#include "{{generated_conversion_include}}"
-
-#include "cobalt/script/logging_exception_state.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_interface.h"
-#include "cobalt/script/mozjs/util/exception_helpers.h"
-#include "cobalt/script/mozjs/util/stack_trace_helpers.h"
-#include "third_party/mozjs/js/jsd/jsd.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jscntxt.h"
-{% endblock includes %}
-
-{% block using_directives %}
-{{ super() }}
-using cobalt::script::LoggingExceptionState;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::GetCallableForCallbackInterface;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::util::GetExceptionString;
-{% endblock using_directives %}
-
-{% block implementation %}
-{% for component in components %}
-namespace {{component}} {
-{% endfor %}
-
-{{binding_class}}::{{binding_class}}(
- JSContext* context,
- JS::HandleObject implementing_object)
- : context_(context),
- implementing_object_(context, implementing_object) { }
-
-{{binding_class}}::{{binding_class}}(
- JSContext* context,
- JS::HandleValue implementing_object_value)
- : context_(context),
- implementing_object_(context, implementing_object_value) { }
-
-{% for operation in operations %}
-{% for overload in operation.overloads %}
-{{overload.type}} {{binding_class}}::{{overload.name}}(
- const scoped_refptr<script::Wrappable>& callback_this,
- {% for arg in overload.arguments %}
- {{arg.arg_type}} {{arg.name}},
- {% endfor %}
- bool* had_exception) const {
- bool success = false;
-{% if overload.type != 'void' %}
- {{overload.type}} cobalt_return_value;
-{% endif %}
- JSAutoRequest auto_request(context_);
- AutoSaveExceptionState auto_save_exception_state(context_);
- ENABLE_JS_STACK_TRACE_IN_SCOPE(context_);
-
- // This could be set to NULL if it was garbage collected.
- JS::RootedObject implementing_object(context_, implementing_object_.GetObject());
- DLOG_IF(WARNING, !implementing_object) << "Implementing object is NULL.";
- if (implementing_object) {
- JSAutoCompartment auto_compartment(context_, implementing_object);
-
- // Get callable object.
- JS::RootedValue callable(context_);
- if (GetCallableForCallbackInterface(context_, implementing_object,
- "{{overload.idl_name}}", &callable)) {
- // Convert the callback_this to a JSValue.
- JS::RootedValue this_value(context_);
- ToJSValue(context_, callback_this, &this_value);
-
- // Convert arguments.
- const int kNumArguments = {{overload.arguments|length}};
- JS::Value args[kNumArguments];
- js::SetValueRangeToNull(args, kNumArguments);
- js::AutoValueArray auto_array_rooter(context_, args, kNumArguments);
-{% for arg in overload.arguments %}
- ToJSValue(context_, {{arg.name}},
- auto_array_rooter.handleAt({{loop.index0}}));
-{% endfor %}
-
- // Call the function.
- JS::RootedValue return_value(context_);
- JS::RootedFunction function(
- context_, JS_ValueToFunction(context_, callable));
- DCHECK(function);
- success = JS::Call(context_, this_value, function, kNumArguments, args,
- return_value.address());
- DLOG_IF(WARNING, !success) << "Exception in callback: "
- << GetExceptionString(context_);
-{% if overload.type != 'void' %}
- if (success) {
- LoggingExceptionState exception_state;
- FromJSValue(context_, return_value, 0, &exception_state,
- &cobalt_return_value);
- success = !exception_state.is_exception_set();
- }
-{% endif %}
- }
- }
-
- *had_exception = !success;
-{% if overload.type != 'void' %}
- return cobalt_return_value;
-{% endif %}
-}
-{% endfor %}
-{% endfor %}
-
-{% for component in components|reverse %}
-} // namespace {{component}}
-{% endfor %}
-{% endblock implementation %}
diff --git a/src/cobalt/bindings/mozjs/templates/callback-interface.h.template b/src/cobalt/bindings/mozjs/templates/callback-interface.h.template
deleted file mode 100644
index a9a3707..0000000
--- a/src/cobalt/bindings/mozjs/templates/callback-interface.h.template
+++ /dev/null
@@ -1,69 +0,0 @@
-{#
- # Copyright 2016 Google Inc. All Rights Reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- #}
-{% extends "callback-interface-base.h.template" %}
-
-{% block includes %}
-{{ super() }}
-#include "cobalt/script/mozjs/weak_heap_object.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-{% endblock includes %}
-
-{% block implementation %}
-{% for component in components %}
-namespace {{component}} {
-{% endfor %}
-
-class {{binding_class}} : public {{impl_class}} {
- public:
- typedef {{impl_class}} BaseType;
-
- {{binding_class}}(
- JSContext* context, JS::HandleObject implementing_object);
- {{binding_class}}(
- JSContext* context, JS::HandleValue implementing_object_value);
-{% for operation in operations %}
-{% for overload in operation.overloads %}
- {{overload.type}} {{overload.name}}(
- const scoped_refptr<script::Wrappable>& callback_this,
- {% for arg in overload.arguments %}
- {{arg.arg_type}} {{arg.name}},
- {% endfor %}
- bool* had_exception) const OVERRIDE;
-{% endfor %}
-{% endfor %}
- JSObject* handle() const { return implementing_object_.GetObject(); }
- const JS::Value& value() const { return implementing_object_.GetValue(); }
- bool WasCollected() const { return implementing_object_.WasCollected(); }
-
- private:
- JSContext* context_;
- script::mozjs::WeakHeapObject implementing_object_;
-};
-
-{% for component in components|reverse %}
-} // namespace {{component}}
-{% endfor %}
-namespace cobalt {
-namespace script {
-// Explicit instantiation of CallbackInterfaceTraits struct so we can infer
-// the type of the generated class from the type of the callback interface.
-template<>
-struct CallbackInterfaceTraits<{{fully_qualified_impl_class}}> {
- typedef {{fully_qualified_binding_class}} MozjsCallbackInterfaceClass;
-};
-} // namespace script
-} // namespace cobalt
-{% endblock implementation %}
diff --git a/src/cobalt/bindings/mozjs/templates/dictionary-conversion.cc.template b/src/cobalt/bindings/mozjs/templates/dictionary-conversion.cc.template
deleted file mode 100644
index d61a0ef..0000000
--- a/src/cobalt/bindings/mozjs/templates/dictionary-conversion.cc.template
+++ /dev/null
@@ -1,156 +0,0 @@
-{#
- # Copyright 2017 Google Inc. All Rights Reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- #}
-/*
- * Copyright {{today.year}} Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// clang-format off
-
-// This file has been auto-generated by {{code_generator}}. DO NOT MODIFY!
-// Auto-generated from template: {{template_path}}
-
-{% if conditional %}
-#if defined({{conditional}})
-
-{% endif %}
-{% block includes %}
-#include "{{generated_conversion_include}}"
-
-#include "{{header_file}}"
-
-#include "cobalt/script/exception_state.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-{% for include in includes %}
-#include "{{include}}"
-{% endfor %}
-{% endblock includes %}
-
-using {{components|join('::')}}::{{class_name}};
-{% for used_class in forward_declarations %}
-{% if used_class.conditional %}
-#if defined({{used_class.conditional}})
-{% endif %}
-using {{used_class.fully_qualified_name}};
-{% if used_class.conditional %}
-#endif // defined({{used_class.conditional}})
-{% endif %}
-{% endfor %}
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-void ToJSValue(
- JSContext* context,
- const {{class_name}}& in_dictionary,
- JS::MutableHandleValue out_value) {
- // Create a new object that will hold the dictionary values.
- JS::RootedObject dictionary_object(
- context, JS_NewObject(context, NULL, NULL, NULL));
- const int kPropertyAttributes = JSPROP_ENUMERATE;
-{% for member in members %}
- if (in_dictionary.has_{{member.name}}()) {
- JS::RootedValue member_value(context);
- ToJSValue(context, in_dictionary.{{member.name}}(), &member_value);
- if (!JS_DefineProperty(context, dictionary_object,
- "{{member.idl_name}}",
- member_value, NULL, NULL, kPropertyAttributes)) {
- // Some internal error occurred.
- NOTREACHED();
- return;
- }
- }
-{% endfor %}
- out_value.set(OBJECT_TO_JSVAL(dictionary_object));
-}
-
-void FromJSValue(JSContext* context, JS::HandleValue value,
- int conversion_flags, ExceptionState* exception_state,
- {{class_name}}* out_dictionary) {
- DCHECK_EQ(0, conversion_flags) << "Unexpected conversion flags.";
- {% if parent %}
- FromJSValue(context, value, conversion_flags, exception_state,
- static_cast<{{parent}}*>(out_dictionary));
- {% endif %}
- // https://heycam.github.io/webidl/#es-dictionary
-
- if (value.isUndefined() || value.isNull()) {
- // The default constructor will assign appropriate values to dictionary
- // members with default values and leave the others unset.
- *out_dictionary = {{class_name}}();
- return;
- }
- if (!value.isObject()) {
- // 1. If Type(V) is not Undefined, Null or Object, then throw a TypeError.
- exception_state->SetSimpleException(kNotObjectType);
- return;
- }
- JS::RootedObject dictionary_object(context, JSVAL_TO_OBJECT(value));
-{% for member in members %}
- JS::RootedValue {{member.name}}(context);
- if (!JS_GetProperty(context, dictionary_object,
- "{{member.idl_name}}",
- {{member.name}}.address())) {
- exception_state->SetSimpleException(kSimpleError);
- return;
- }
- if (!{{member.name}}.isUndefined()) {
- {% if not member.is_script_value %}
- {{member.type}} converted_value;
- FromJSValue(context,
- {{member.name}},
- {{member.conversion_flags}},
- exception_state,
- &converted_value);
- if (context->isExceptionPending()) {
- return;
- }
- out_dictionary->set_{{member.name}}(converted_value);
- {% else %}
- TypeTraits<::cobalt::script::ValueHandle >::ConversionType converted_value;
- FromJSValue(context,
- {{member.name}},
- {{member.conversion_flags}},
- exception_state,
- &converted_value);
- if (context->isExceptionPending()) {
- return;
- }
- out_dictionary->set_{{member.name}}(&converted_value);
- {% endif %}
- }
-{% endfor %}
-}
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-{% if conditional %}
-#endif // defined({{conditional}})
-{% endif %}
diff --git a/src/cobalt/bindings/mozjs/templates/enumeration-conversion.cc.template b/src/cobalt/bindings/mozjs/templates/enumeration-conversion.cc.template
deleted file mode 100644
index 3e4df11..0000000
--- a/src/cobalt/bindings/mozjs/templates/enumeration-conversion.cc.template
+++ /dev/null
@@ -1,90 +0,0 @@
-{#
- # Copyright 2017 Google Inc. All Rights Reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- #}
-/*
- * Copyright {{today.year}} Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// clang-format off
-
-// This file has been auto-generated by {{code_generator}}. DO NOT MODIFY!
-// Auto-generated from template: {{template_path}}
-
-#include "{{enum_include}}"
-
-#include "{{generated_conversion_include}}"
-#include "cobalt/script/exception_state.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-
-using {{fully_qualified_name}};
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-void ToJSValue(
- JSContext* context,
- {{enumeration_name}} in_enum,
- JS::MutableHandleValue out_value) {
- switch (in_enum) {
-{% for value, idl_value in value_pairs %}
- case {{namespace}}::{{value}}:
- ToJSValue(context, std::string("{{idl_value}}"), out_value);
- return;
-{% endfor %}
- default:
- NOTREACHED();
- out_value.set(JS::UndefinedValue());
- }
-}
-
-void FromJSValue(JSContext* context, JS::HandleValue value,
- int conversion_flags, ExceptionState* exception_state,
- {{enumeration_name}}* out_enum) {
- DCHECK_EQ(0, conversion_flags) << "Unexpected conversion flags.";
- // JSValue -> IDL enum algorithm described here:
- // http://heycam.github.io/webidl/#es-enumeration
- // 1. Let S be the result of calling ToString(V).
- JS::RootedString rooted_string(context, JS_ValueToString(context, value));
-
- JSBool match = JS_FALSE;
-// 3. Return the enumeration value of type E that is equal to S.
-{% for value, idl_value in value_pairs %}
- {{-" else " if not loop.first}}if (JS_StringEqualsAscii(
- context, rooted_string, "{{idl_value}}", &match)
- && match) {
- *out_enum = {{namespace}}::{{value}};
- }{% endfor %} else {
- // 2. If S is not one of E's enumeration values, then throw a TypeError.
- exception_state->SetSimpleException(cobalt::script::kConvertToEnumFailed);
- return;
- }
-}
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
diff --git a/src/cobalt/bindings/mozjs/templates/generated-types.h.template b/src/cobalt/bindings/mozjs/templates/generated-types.h.template
deleted file mode 100644
index d34d409..0000000
--- a/src/cobalt/bindings/mozjs/templates/generated-types.h.template
+++ /dev/null
@@ -1,92 +0,0 @@
-{#
- # Copyright 2017 Google Inc. All Rights Reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- #}
-/*
- * Copyright {{today.year}} Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// clang-format off
-
-// This file has been auto-generated by {{code_generator}}. DO NOT MODIFY!
-// Auto-generated from template: {{template_path}}
-
-#ifndef GENERATED_TYPE_CONVERSION_H_
-#define GENERATED_TYPE_CONVERSION_H_
-
-#include "cobalt/script/exception_state.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-
-// #includes for generated types.
-{% for path in includes %}
-#include "{{path}}"
-{% endfor %}
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-{% for dictionary in dictionaries %}
-// {{dictionary.fully_qualified_name}} -> JSValue
-void ToJSValue(
- JSContext* context,
- const {{dictionary.fully_qualified_name}}& in_value,
- JS::MutableHandleValue out_value);
-
-// JSValue -> {{dictionary.fully_qualified_name}}
-void FromJSValue(
- JSContext* context,
- JS::HandleValue value,
- int conversion_flags,
- ExceptionState* exception_state,
- {{dictionary.fully_qualified_name}}* out_value);
-
-{% endfor %}
-{% for enum in enumerations %}
-// {{enum.fully_qualified_name}} -> JSValue
-void ToJSValue(
- JSContext* context,
- {{enum.fully_qualified_name}} in_value,
- JS::MutableHandleValue out_value);
-
-// JSValue -> {{enum.fully_qualified_name}}
-void FromJSValue(
- JSContext* context,
- JS::HandleValue value,
- int conversion_flags,
- ExceptionState* exception_state,
- {{enum.fully_qualified_name}}* out_value);
-
-{% endfor %}
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-// #include this here so the conversion functions for generated types are
-// visible refer to template types, such as sequence<T>.
-#include "cobalt/script/mozjs/conversion_helpers.h"
-
-#endif // GENERATED_TYPE_CONVERSION_H_
diff --git a/src/cobalt/bindings/mozjs/templates/interface.cc.template b/src/cobalt/bindings/mozjs/templates/interface.cc.template
deleted file mode 100644
index 323e665..0000000
--- a/src/cobalt/bindings/mozjs/templates/interface.cc.template
+++ /dev/null
@@ -1,937 +0,0 @@
-{#
- # Copyright 2016 Google Inc. All Rights Reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- #}
-{% from 'macros.cc.template' import add_extra_arguments %}
-{% from 'macros.cc.template' import call_cobalt_function %}
-{% from 'macros.cc.template' import check_if_object_implements_interface with context %}
-{% from 'macros.cc.template' import constructor_implementation with context %}
-{% from 'macros.cc.template' import function_implementation with context %}
-{% from 'macros.cc.template' import get_impl_class_instance %}
-{% from 'macros.cc.template' import nonstatic_function_prologue %}
-{% from 'macros.cc.template' import overload_resolution_implementation with context %}
-{% from 'macros.cc.template' import set_attribute_implementation with context %}
-{% from 'macros.cc.template' import static_function_prologue %}
-{% extends "interface-base.cc.template" %}
-{% block includes %}
-{{ super() }}
-#include "{{generated_conversion_include}}"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs/callback_function_conversion.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-{% if is_exception_interface %}
-#include "third_party/mozjs/js/src/jsexn.h"
-{% endif %}
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-{% endblock includes %}
-{% block using_directives %}
-{{ super() }}
-using cobalt::script::CallbackFunction;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::ExceptionState;
-using cobalt::script::Wrappable;
-using cobalt::script::mozjs::FromJSValue;
-using cobalt::script::mozjs::InterfaceData;
-using cobalt::script::mozjs::MozjsCallbackFunction;
-using cobalt::script::mozjs::MozjsExceptionState;
-using cobalt::script::mozjs::MozjsGlobalEnvironment;
-using cobalt::script::mozjs::MozjsPropertyEnumerator;
-using cobalt::script::mozjs::MozjsUserObjectHolder;
-using cobalt::script::mozjs::ProxyHandler;
-using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::TypeTraits;
-using cobalt::script::mozjs::WrapperFactory;
-using cobalt::script::mozjs::WrapperPrivate;
-using cobalt::script::mozjs::kConversionFlagClamped;
-using cobalt::script::mozjs::kConversionFlagNullable;
-using cobalt::script::mozjs::kConversionFlagRestricted;
-using cobalt::script::mozjs::kConversionFlagTreatNullAsEmptyString;
-using cobalt::script::mozjs::kConversionFlagTreatUndefinedAsEmptyString;
-using cobalt::script::mozjs::kNoConversionFlags;
-{% endblock using_directives %}
-{% block top_level_unnamed_namespace %}
-{% if is_global_interface %}
-JSObject* DummyFunctor(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- NOTREACHED();
- return NULL;
-}
-{% endif %}
-{% endblock top_level_unnamed_namespace %}
-
-{% block implementation %}
-namespace {
-
-{% if named_property_getter %}
-bool IsSupportedNamedProperty(JSContext* context, JS::HandleObject object,
- const std::string& property_name) {
-{{ get_impl_class_instance(impl_class) }}
- return impl->CanQueryNamedProperty(property_name);
-}
-
-void EnumerateSupportedNames(JSContext* context, JS::HandleObject object,
- JS::AutoIdVector* properties) {
-{{ get_impl_class_instance(impl_class) }}
- MozjsPropertyEnumerator enumerator(context, properties);
- impl->EnumerateNamedProperties(&enumerator);
-}
-
-JSBool GetNamedProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- JS::RootedValue id_value(context);
- if (!JS_IdToValue(context, id, id_value.address())) {
- NOTREACHED();
- return false;
- }
-
-{{ nonstatic_function_prologue(impl_class) }}
- std::string property_name;
- FromJSValue(context, id_value, kNoConversionFlags, &exception_state,
- &property_name);
- if (exception_state.is_exception_set()) {
- // The ID should be an integer or a string, so we shouldn't have any
- // exceptions converting to string.
- NOTREACHED();
- return false;
- }
-{{ call_cobalt_function(impl_class, named_property_getter.type,
- named_property_getter.name, ["property_name"],
- named_property_getter.raises_exception,
- named_property_getter.call_with) }}
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-{% endif %}
-{% if named_property_setter %}
-JSBool SetNamedProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- JS::RootedValue id_value(context);
- if (!JS_IdToValue(context, id, id_value.address())) {
- NOTREACHED();
- return false;
- }
-{{ nonstatic_function_prologue(impl_class) }}
- std::string property_name;
- FromJSValue(context, id_value, kNoConversionFlags, &exception_state,
- &property_name);
- if (exception_state.is_exception_set()) {
- // The ID should be an integer or a string, so we shouldn't have any
- // exceptions converting to string.
- NOTREACHED();
- return false;
- }
- TypeTraits<{{named_property_setter.type}} >::ConversionType value;
- FromJSValue(context, vp, {{named_property_setter.conversion_flags}},
- &exception_state, &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-{{ call_cobalt_function(impl_class, "void",
- named_property_setter.name, ["property_name", "value"],
- named_property_setter.raises_exception,
- named_property_setter.call_with) }}
- return !exception_state.is_exception_set();
-}
-
-{% endif %}
-{% if named_property_deleter %}
-bool DeleteNamedProperty(JSContext* context, JS::HandleObject object,
- const std::string& property_name) {
-{{ nonstatic_function_prologue(impl_class) }}
-{{ call_cobalt_function(impl_class, "void",
- named_property_deleter.name, ["property_name"],
- named_property_deleter.raises_exception,
- named_property_deleter.call_with) }}
- return !exception_state.is_exception_set();
-}
-
-{% endif %}
-{% if indexed_property_getter %}
-bool IsSupportedIndexProperty(JSContext* context, JS::HandleObject object,
- uint32_t index) {
-{{ get_impl_class_instance(impl_class) }}
- return index < impl->length();
-}
-
-void EnumerateSupportedIndexes(JSContext* context, JS::HandleObject object,
- JS::AutoIdVector* properties) {
-{{ get_impl_class_instance(impl_class) }}
- const uint32_t kNumIndexedProperties = impl->length();
- for (uint32_t i = 0; i < kNumIndexedProperties; ++i) {
- properties->append(INT_TO_JSID(i));
- }
-}
-
-JSBool GetIndexedProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- JS::RootedValue id_value(context);
- if (!JS_IdToValue(context, id, id_value.address())) {
- NOTREACHED();
- return false;
- }
-{{ nonstatic_function_prologue(impl_class) }}
- uint32_t index;
- FromJSValue(context, id_value, kNoConversionFlags, &exception_state, &index);
- if (exception_state.is_exception_set()) {
- // The ID should be an integer or a string, so we shouldn't have any
- // exceptions converting to string.
- NOTREACHED();
- return false;
- }
-{{ call_cobalt_function(impl_class, indexed_property_getter.type,
- indexed_property_getter.name, ["index"],
- indexed_property_getter.raises_exception,
- indexed_property_getter.call_with) }}
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-{% endif %}
-{% if indexed_property_setter %}
-JSBool SetIndexedProperty(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
- JS::RootedValue id_value(context);
- if (!JS_IdToValue(context, id, id_value.address())) {
- NOTREACHED();
- return false;
- }
-{{ nonstatic_function_prologue(impl_class) }}
- uint32_t index;
- FromJSValue(context, id_value, kNoConversionFlags, &exception_state, &index);
- if(exception_state.is_exception_set()) {
- // The ID should be an integer or a string, so we shouldn't have any
- // exceptions converting to string.
- NOTREACHED();
- return false;
- }
- TypeTraits<{{indexed_property_setter.type}} >::ConversionType value;
- FromJSValue(context, vp, {{indexed_property_setter.conversion_flags}},
- &exception_state, &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-{{ call_cobalt_function(impl_class, "void",
- indexed_property_setter.name, ["index", "value"],
- indexed_property_setter.raises_exception,
- indexed_property_setter.call_with) }}
- return !exception_state.is_exception_set();
-}
-
-{% endif %}
-{% if indexed_property_deleter %}
-bool DeleteIndexedProperty(
- JSContext* context, JS::HandleObject object, uint32_t index) {
-{{ nonstatic_function_prologue(impl_class) }}
-{{ call_cobalt_function(impl_class, "void",
- indexed_property_deleter.name, ["index"],
- indexed_property_deleter.raises_exception,
- indexed_property_deleter.call_with) }}
- return !exception_state.is_exception_set();
-}
-
-{% endif %}
-class {{binding_class}}Handler : public ProxyHandler {
- public:
- {{binding_class}}Handler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-{{binding_class}}Handler::named_property_hooks = {
- {{ "IsSupportedNamedProperty" if named_property_getter else "NULL" }},
- {{ "EnumerateSupportedNames" if named_property_getter else "NULL" }},
- {{ "GetNamedProperty" if named_property_getter else "NULL" }},
- {{ "SetNamedProperty" if named_property_setter else "NULL" }},
- {{ "DeleteNamedProperty" if named_property_deleter else "NULL" }},
-};
-ProxyHandler::IndexedPropertyHooks
-{{binding_class}}Handler::indexed_property_hooks = {
- {{ "IsSupportedIndexProperty" if indexed_property_getter else "NULL" }},
- {{ "EnumerateSupportedIndexes" if indexed_property_getter else "NULL" }},
- {{ "GetIndexedProperty" if indexed_property_getter else "NULL" }},
- {{ "SetIndexedProperty" if indexed_property_setter else "NULL" }},
- {{ "DeleteIndexedProperty" if indexed_property_deleter else "NULL" }},
-};
-
-static base::LazyInstance<{{binding_class}}Handler>
- proxy_handler;
-
-{% if constructor %}
-JSBool Constructor(JSContext* context, unsigned int argc, JS::Value* vp);
-{% endif %}
-{% for constant in constants %}
-JSBool get_{{constant.idl_name}}(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
-{% if constant.can_use_compile_assert %}
- COMPILE_ASSERT({{impl_class}}::{{constant.name}} == {{constant.value}},
- ValueFor{{impl_class}}_{{constant.name}}DoesNotMatchIDL);
-{% else %}
- DCHECK_EQ({{constant.value}}, {{impl_class}}::{{constant.name}}) <<
- "The value for {{impl_class}}::{{constant.name}} does not match "
- "the value in the interface definition.";
-{% endif %}
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
- ToJSValue(context, {{constant.value}}, &result_value);
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-{% endfor %}
-JSBool HasInstance(JSContext *context, JS::HandleObject type,
- JS::MutableHandleValue vp, JSBool *success) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, type));
- DCHECK(global_object);
-
- JS::RootedObject prototype(
- context, {{binding_class}}::GetPrototype(context, global_object));
-
- // |IsDelegate| walks the prototype chain of an object returning true if
- // .prototype is found.
- bool is_delegate;
- if (!IsDelegate(context, prototype, vp, &is_delegate)) {
- *success = false;
- return false;
- }
-
- *success = is_delegate;
- return true;
-}
-
-InterfaceData* CreateCachedInterfaceData() {
- InterfaceData* interface_data = new InterfaceData();
- memset(&interface_data->instance_class_definition, 0,
- sizeof(interface_data->instance_class_definition));
- memset(&interface_data->prototype_class_definition, 0,
- sizeof(interface_data->prototype_class_definition));
- memset(&interface_data->interface_object_class_definition, 0,
- sizeof(interface_data->interface_object_class_definition));
-
- JSClass* instance_class = &interface_data->instance_class_definition;
- const int kGlobalFlags = {{
- "JSCLASS_GLOBAL_FLAGS" if is_global_interface else 0 }};
- instance_class->name = "{{interface_name}}";
- instance_class->flags = kGlobalFlags | JSCLASS_HAS_PRIVATE;
- instance_class->addProperty = JS_PropertyStub;
- instance_class->delProperty = JS_DeletePropertyStub;
- instance_class->getProperty = JS_PropertyStub;
- instance_class->setProperty = JS_StrictPropertyStub;
- instance_class->enumerate = JS_EnumerateStub;
- instance_class->resolve = JS_ResolveStub;
- instance_class->convert = JS_ConvertStub;
- // Function to be called before on object of this class is garbage collected.
- instance_class->finalize = &WrapperPrivate::Finalizer;
- // Called to trace objects that can be referenced from this object.
- instance_class->trace = &WrapperPrivate::Trace;
-
- JSClass* prototype_class = &interface_data->prototype_class_definition;
- prototype_class->name = "{{interface_name}}Prototype";
- prototype_class->flags = 0;
- prototype_class->addProperty = JS_PropertyStub;
- prototype_class->delProperty = JS_DeletePropertyStub;
- prototype_class->getProperty = JS_PropertyStub;
- prototype_class->setProperty = JS_StrictPropertyStub;
- prototype_class->enumerate = JS_EnumerateStub;
- prototype_class->resolve = JS_ResolveStub;
- prototype_class->convert = JS_ConvertStub;
-
- JSClass* interface_object_class =
- &interface_data->interface_object_class_definition;
- interface_object_class->name = "{{interface_name}}Constructor";
- interface_object_class->flags = 0;
- interface_object_class->addProperty = JS_PropertyStub;
- interface_object_class->delProperty = JS_DeletePropertyStub;
- interface_object_class->getProperty = JS_PropertyStub;
- interface_object_class->setProperty = JS_StrictPropertyStub;
- interface_object_class->enumerate = JS_EnumerateStub;
- interface_object_class->resolve = JS_ResolveStub;
- interface_object_class->convert = JS_ConvertStub;
- interface_object_class->hasInstance = &HasInstance;
-{% if constructor %}
- interface_object_class->construct = Constructor;
-{% endif %}
- return interface_data;
-}
-
-{% for attribute in attributes + static_attributes %}
-{% if attribute.conditional %}
-#if defined({{attribute.conditional}})
-{% endif %}
-{% if attribute.is_constructor_attribute %}
-JSBool get_{{attribute.idl_name}}(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
- JS::RootedObject global_object(
- context, JS_GetGlobalForObject(context, object));
- DCHECK(global_object);
-
- JS::RootedObject interface_object(context,
- Mozjs{{attribute.interface_name}}::GetInterfaceObject(
- context, global_object));
- vp.set(JS::ObjectValue(*interface_object));
- return true;
-}
-
-{% else %}
-{% if attribute.is_static %}
-JSBool staticget_{{attribute.idl_name}}(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
-{{ static_function_prologue() -}}
-{% else %}
-JSBool get_{{attribute.idl_name}}(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JS::MutableHandleValue vp) {
-{{ check_if_object_implements_interface() }}
-{{ nonstatic_function_prologue(impl_class) }}
-{% endif %}
-{{ call_cobalt_function(impl_class, attribute.type,
- attribute.getter_function_name, [],
- attribute.raises_exception, attribute.call_with,
- attribute.is_static) }}
- if (!exception_state.is_exception_set()) {
- vp.set(result_value);
- }
- return !exception_state.is_exception_set();
-}
-
-{% if attribute.has_setter %}
-{% if attribute.is_static %}
-JSBool staticset_{{attribute.idl_name}}(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
-{{ static_function_prologue() }}
-{% else %}
-JSBool set_{{attribute.idl_name}}(
- JSContext* context, JS::HandleObject object, JS::HandleId id,
- JSBool strict, JS::MutableHandleValue vp) {
-{{ check_if_object_implements_interface() }}
-{{ nonstatic_function_prologue(impl_class)}}
-{% endif %} {#- attribute.is_static #}
-{{ set_attribute_implementation(attribute, impl_class) -}}
-}
-
-{% endif %} {#- attribute.has_setter #}
-{% endif %}
-{% if attribute.conditional %}
-#endif // {{attribute.conditional}}
-{% endif %} {#- attribute.is_constructor_attribute #}
-{% endfor %}
-{%- for operation in operations + static_operations %}
-{% if operation.conditional %}
-#if defined({{operation.conditional}})
-{% endif %}
-{% set boundFunctionPrefix = "staticfcn_" if operation.is_static else "fcn_" %}
-{% for overload in operation.overloads if operation.overloads|length > 1 %}
-JSBool {{boundFunctionPrefix}}{{operation.idl_name}}{{overload.overload_index}}(
- JSContext* context, uint32_t argc, JS::Value *vp) {
-{{ function_implementation(overload) -}}
-}
-
-{% endfor %}
-JSBool {{boundFunctionPrefix}}{{operation.idl_name}}(
- JSContext* context, uint32_t argc, JS::Value *vp) {
-{% if operation.overloads|length == 1 %}
-{{ function_implementation(operation.overloads[0]) -}}
-{% else %}
-{{ overload_resolution_implementation(
- operation, boundFunctionPrefix + operation.idl_name) }}
-{% endif %}
-}
-
-{% if operation.conditional %}
-#endif // {{operation.conditional}}
-{% endif %}
-{% endfor %}
-
-{% if stringifier %}
-JSBool Stringifier(JSContext* context, unsigned argc, JS::Value *vp) {
- MozjsExceptionState exception_state(context);
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
-
- {{ check_if_object_implements_interface() }}
-
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
-
- // |WrapperPrivate::GetFromObject| can fail if |object| is not a |Wrapper|
- // object.
- if (!wrapper_private) {
- exception_state.SetSimpleException(cobalt::script::kStringifierProblem);
- return false;
- }
-
- {{impl_class}}* impl =
- wrapper_private->wrappable<{{impl_class}}>().get();
- if (!impl) {
- exception_state.SetSimpleException(cobalt::script::kStringifierProblem);
- NOTREACHED();
- return false;
- }
- std::string stringified = impl->{{stringifier.name}}();
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- JS::RootedString rooted_string(context,
- JS_NewStringCopyN(context, stringified.c_str(), stringified.length()));
- args.rval().set(JS::StringValue(rooted_string));
- return true;
-}
-
-{% endif %}
-const JSPropertySpec prototype_properties[] = {
-{% for constant in constants %}
- {
- "{{constant.idl_name}}", 0,
- JSPROP_PERMANENT | JSPROP_READONLY | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_{{constant.idl_name}}),
- JSOP_NULLWRAPPER,
- },
-{% endfor %}
-{% for attribute in attributes if not attribute.is_constructor_attribute %}
-{% if attribute.conditional %}
-#if defined({{attribute.conditional}})
-{% endif %}
-{% if attribute.has_setter %}
- { // Read/Write property
- "{{attribute.idl_name}}", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_{{attribute.idl_name}}),
- JSOP_WRAPPER(&set_{{attribute.idl_name}}),
- },
-{% else %}
- { // Readonly attribute
- "{{attribute.idl_name}}", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE | JSPROP_READONLY,
- JSOP_WRAPPER(&get_{{attribute.idl_name}}),
- JSOP_NULLWRAPPER,
- },
-{% endif %}
-{% if attribute.conditional %}
-#endif // {{attribute.conditional}}
-{% endif %}
-{% endfor %}
- JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
-{% if stringifier %}
- {
- "toString",
- JSOP_WRAPPER(&Stringifier),
- 0,
- JSPROP_PERMANENT,
- NULL,
- },
-{% endif %}
-{% for operation in operations %}
-{% if operation.conditional %}
-#if defined({{operation.conditional}})
-{% endif %}
- {
- "{{ operation.idl_name }}",
- JSOP_WRAPPER(&fcn_{{operation.idl_name}}),
- {{ operation.length }},
- JSPROP_ENUMERATE,
- NULL,
- },
-{% if operation.conditional %}
-#endif // {{operation.conditional}}
-{% endif %}
-{% endfor %}
- JS_FS_END
-};
-
-const JSPropertySpec interface_object_properties[] = {
-{% for constant in constants %}
- {
- "{{constant.idl_name}}", 0,
- JSPROP_PERMANENT | JSPROP_READONLY | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&get_{{constant.idl_name}}),
- JSOP_NULLWRAPPER,
- },
-{% endfor %}
-{% for attribute in static_attributes %}
-{% if attribute.conditional %}
-#if defined({{attribute.conditional}})
-{% endif %}
-{% if attribute.has_setter %}
- { // Static read/write attribute.
- "{{attribute.idl_name}}", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE,
- JSOP_WRAPPER(&staticget_{{attribute.idl_name}}),
- JSOP_WRAPPER(&staticset_{{attribute.idl_name}}),
- },
-{% else %}
- { // Static readonly attribute.
- "{{attribute.idl_name}}", 0,
- JSPROP_SHARED | JSPROP_ENUMERATE | JSPROP_READONLY,
- JSOP_WRAPPER(&staticget_{{attribute.idl_name}}),
- JSOP_NULLWRAPPER,
- },
-{% endif %}
-{% if attribute.conditional %}
-#endif // {{attribute.conditional}}
-{% endif %}
-{% endfor %}
- JS_PS_END
-};
-
-const JSFunctionSpec interface_object_functions[] = {
-{% for operation in static_operations %}
-{% if operation.conditional %}
-#if defined({{operation.conditional}})
-{% endif %}
- {
- "{{ operation.idl_name }}",
- JSOP_WRAPPER(&staticfcn_{{operation.idl_name}}),
- {{ operation.length }},
- JSPROP_ENUMERATE,
- NULL,
- },
-{% if operation.conditional %}
-#endif // {{operation.conditional}}
-{% endif %}
-{% endfor %}
- JS_FS_END
-};
-
-const JSPropertySpec own_properties[] = {
-{% for attribute in attributes if attribute.is_constructor_attribute %}
-{% if attribute.conditional %}
-#if defined({{attribute.conditional}})
-{% endif %}
- { // Constructor attribute
- "{{attribute.idl_name}}", 0,
- JSPROP_SHARED,
- JSOP_WRAPPER(&get_{{attribute.idl_name}}),
- JSOP_NULLWRAPPER,
- },
-{% if attribute.conditional %}
-#endif // {{attribute.conditional}}
-{% endif %}
-{% endfor %}
- JS_PS_END
-};
-
-void InitializePrototypeAndInterfaceObject(
- InterfaceData* interface_data, JSContext* context,
- JS::HandleObject global_object) {
- DCHECK(!interface_data->prototype);
- DCHECK(!interface_data->interface_object);
- DCHECK(JS_IsGlobalObject(global_object));
-
- {% if parent_interface %}
- JS::RootedObject parent_prototype(
- context, {{parent_interface}}::GetPrototype(context, global_object));
- {% elif is_exception_interface %}
- // Get Error prototype.
- JS::RootedObject parent_prototype(context);
- bool success_check = js_GetClassPrototype(
- context, GetExceptionProtoKey(JSEXN_ERR), &parent_prototype);
- DCHECK(success_check);
- {% else %}
- JS::RootedObject parent_prototype(
- context, JS_GetObjectPrototype(context, global_object));
- {% endif %}
- DCHECK(parent_prototype);
-
- // Create the Prototype object.
- interface_data->prototype = JS_NewObjectWithGivenProto(
- context, &interface_data->prototype_class_definition, parent_prototype,
- NULL);
- bool success = JS_DefineProperties(
- context, interface_data->prototype, prototype_properties);
- DCHECK(success);
- success = JS_DefineFunctions(
- context, interface_data->prototype, prototype_functions);
- DCHECK(success);
-
-{% if has_interface_object %}
- JS::RootedObject function_prototype(
- context, JS_GetFunctionPrototype(context, global_object));
- DCHECK(function_prototype);
- // Create the Interface object.
- interface_data->interface_object = JS_NewObjectWithGivenProto(
- context, &interface_data->interface_object_class_definition,
- function_prototype, NULL);
-
- // Add the InterfaceObject.name property.
- JS::RootedObject rooted_interface_object(
- context, interface_data->interface_object);
- JS::RootedValue name_value(context);
- const char name[] =
- "{{ named_constructor if named_constructor else interface.name }}";
- name_value.setString(JS_NewStringCopyZ(context, name));
- success =
- JS_DefineProperty(context, rooted_interface_object, "name", name_value,
- JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-{% if constructor %}
-
- // Add the InterfaceObject.length property. It is set to the length of the
- // shortest argument list of all overload constructors.
- JS::RootedValue length_value(context);
- length_value.setInt32({{constructor.length}});
- success =
- JS_DefineProperty(context, rooted_interface_object, "length",
- length_value, JS_PropertyStub, JS_StrictPropertyStub,
- JSPROP_READONLY);
- DCHECK(success);
-{% endif %}
-
- // Define interface object properties (including constants).
- success = JS_DefineProperties(context, rooted_interface_object,
- interface_object_properties);
- DCHECK(success);
- // Define interface object functions (static).
- success = JS_DefineFunctions(context, rooted_interface_object,
- interface_object_functions);
- DCHECK(success);
-
-
- // Set the Prototype.constructor and Constructor.prototype properties.
- DCHECK(interface_data->interface_object);
- DCHECK(interface_data->prototype);
- JS::RootedObject rooted_prototype(context, interface_data->prototype);
- success = JS_LinkConstructorAndPrototype(
- context,
- rooted_interface_object,
- rooted_prototype);
- DCHECK(success);
-{% endif %}
-}
-
-InterfaceData* GetInterfaceData(JSContext* context) {
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- // Use the address of the properties definition for this interface as a
- // unique key for looking up the InterfaceData for this interface.
- intptr_t key = reinterpret_cast<intptr_t>(&own_properties);
- InterfaceData* interface_data = global_environment->GetInterfaceData(key);
- if (!interface_data) {
- interface_data = CreateCachedInterfaceData();
- DCHECK(interface_data);
- global_environment->CacheInterfaceData(key, interface_data);
- DCHECK_EQ(interface_data, global_environment->GetInterfaceData(key));
- }
- return interface_data;
-}
-
-} // namespace
-
-{% if is_global_interface %}
-JSObject* {{binding_class}}::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject global_object(
- context, JS_NewGlobalObject(context,
- &interface_data->instance_class_definition,
- NULL));
- DCHECK(global_object);
-
- // Initialize standard JS constructors prototypes and top-level functions such
- // as Object, isNan, etc.
- JSAutoCompartment auto_compartment(context, global_object);
- bool success = JS_InitStandardClasses(context, global_object);
-
- JS::RootedObject prototype(
- context, {{binding_class}}::GetPrototype(context, global_object));
- DCHECK(prototype);
- JS_SetPrototype(context, global_object, prototype);
-
- // Add own properties.
- success = JS_DefineProperties(context, global_object, own_properties);
- DCHECK(success);
-
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, global_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
-
- // Set the global object proxy pointer, so we can access the standard classes
- // such as the base Object prototype when looking up our prototype.
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- global_environment->SetGlobalObjectProxyAndWrapper(proxy, wrappable);
- return proxy;
-}
-{% else %}
-// static
-JSObject* {{binding_class}}::CreateProxy(
- JSContext* context, const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- InterfaceData* interface_data = GetInterfaceData(context);
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- DCHECK(prototype);
- JS::RootedObject new_object(context, JS_NewObjectWithGivenProto(
- context, &interface_data->instance_class_definition, prototype, NULL));
- DCHECK(new_object);
- JS::RootedObject proxy(context,
- ProxyHandler::NewProxy(context, new_object, prototype, NULL,
- proxy_handler.Pointer()));
- WrapperPrivate::AddPrivateData(context, proxy, wrappable);
- return proxy;
-}
-
-{% endif %}
-//static
-const JSClass* {{binding_class}}::PrototypeClass(
- JSContext* context) {
- DCHECK(MozjsGlobalEnvironment::GetFromContext(context));
- JS::RootedObject global_object(
- context,
- MozjsGlobalEnvironment::GetFromContext(context)->global_object());
- DCHECK(global_object);
-
- JS::RootedObject prototype(context, GetPrototype(context, global_object));
- JSClass* proto_class = JS_GetClass(*prototype.address());
- return proto_class;
-}
-
-// static
-JSObject* {{binding_class}}::GetPrototype(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->prototype) {
- // Create new prototype that has all the props and methods
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->prototype);
- return interface_data->prototype;
-}
-
-{% if has_interface_object %}
-// static
-JSObject* {{binding_class}}::GetInterfaceObject(
- JSContext* context, JS::HandleObject global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- InterfaceData* interface_data = GetInterfaceData(context);
- if (!interface_data->interface_object) {
- InitializePrototypeAndInterfaceObject(
- interface_data, context, global_object);
- }
- DCHECK(interface_data->interface_object);
- return interface_data->interface_object;
-}
-
-{% endif %} {#- has_interface_object #}
-
-namespace {
-{% if constructor %}
-{% for overload in constructor.overloads if constructor.overloads|length > 1 %}
-JSBool Constructor{{overload.overload_index}}(
- JSContext* context, unsigned int argc, JS::Value* vp) {
-{{ constructor_implementation(overload) -}}
-}
-
-{% endfor %}
-JSBool Constructor(JSContext* context, unsigned int argc, JS::Value* vp) {
-{% if constructor.overloads|length == 1 %}
-{{ constructor_implementation(constructor.overloads[0]) -}}
-{% else %}
-{{ overload_resolution_implementation(constructor, "Constructor")}}
-{% endif %}
-}
-{% endif %}
-} // namespace
-
-{% endblock implementation %}
-{% block create_global_object_impl %}
- MozjsGlobalEnvironment* mozjs_global_environment =
- base::polymorphic_downcast<MozjsGlobalEnvironment*>(this);
- JSContext* context = mozjs_global_environment->context();
-
- JSAutoRequest auto_request(context);
- {{binding_class}}::CreateProxy(
- context, global_interface);
- mozjs_global_environment->SetEnvironmentSettings(environment_settings);
- mozjs_global_environment->EvaluateAutomatics();
-
- WrapperFactory* wrapper_factory =
- mozjs_global_environment->wrapper_factory();
-{% for interface in all_interfaces %}
-{% if interface.conditional %}
-#if defined({{interface.conditional}})
-{% endif %}
- {# Pass in a dummy CreateProxy for global interface #}
- {% if interface.name == impl_class %}
- wrapper_factory->RegisterWrappableType(
- {{interface.name}}::{{interface.name}}WrappableType(),
- base::Bind(DummyFunctor),
- base::Bind(Mozjs{{interface.name}}::PrototypeClass));
- {% else %}
- wrapper_factory->RegisterWrappableType(
- {{interface.name}}::{{interface.name}}WrappableType(),
- base::Bind(Mozjs{{interface.name}}::CreateProxy),
- base::Bind(Mozjs{{interface.name}}::PrototypeClass));
- {% endif %}
-{% if interface.conditional %}
-#endif // defined({{interface.conditional}})
-{% endif %}
-{% endfor %}
-
-{% endblock create_global_object_impl %}
diff --git a/src/cobalt/bindings/mozjs/templates/interface.h.template b/src/cobalt/bindings/mozjs/templates/interface.h.template
deleted file mode 100644
index fbef85c..0000000
--- a/src/cobalt/bindings/mozjs/templates/interface.h.template
+++ /dev/null
@@ -1,34 +0,0 @@
-{#
- # Copyright 2016 Google Inc. All Rights Reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- #}
-{% extends "interface-base.h.template" %}
-{% block includes %}
-{{ super() }}
-#include "third_party/mozjs/js/src/jsapi.h"
-{% endblock includes %}
-{% block implementation %}
-class {{binding_class}} {
- public:
- static JSObject* CreateProxy(JSContext* context,
- const scoped_refptr<script::Wrappable>& wrappable);
- static const JSClass* PrototypeClass(JSContext* context);
- static JSObject* GetPrototype(JSContext* context,
- JS::HandleObject global_object);
-{% if has_interface_object %}
- static JSObject* GetInterfaceObject(JSContext* context,
- JS::HandleObject global_object);
-{% endif %}
-};
-{% endblock implementation %}
diff --git a/src/cobalt/bindings/mozjs/templates/macros.cc.template b/src/cobalt/bindings/mozjs/templates/macros.cc.template
deleted file mode 100644
index 8cb1fee..0000000
--- a/src/cobalt/bindings/mozjs/templates/macros.cc.template
+++ /dev/null
@@ -1,421 +0,0 @@
-{#
- # Copyright 2016 Google Inc. All Rights Reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- #}
-
-{#
- # Checks if object implements interface.
- #}
-{% macro check_if_object_implements_interface() %}
- const JSClass* proto_class =
- {{binding_class}}::PrototypeClass(context);
- if (proto_class == JS_GetClass(object)) {
- // Simply returns true if the object is this class's prototype object.
- // There is no need to return any value due to the object is not a platform
- // object. The execution reaches here when Object.getOwnPropertyDescriptor
- // gets called on native object prototypes.
- return true;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->DoesObjectImplementInterface(
- object, base::GetTypeId<{{impl_class}}>())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(script::kDoesNotImplementInterface);
- return false;
- }
-{%- endmacro %}
-
-{#
- # Function body for operation bindings.
- # Parameters:
- # operation: The operation context object
- #}
-{% macro function_implementation(operation) %}
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-{% if operation.is_static %}
-{{ static_function_prologue() }}
-{% else %}
- // Compute the 'this' value.
- JS::RootedValue this_value(context, JS_ComputeThis(context, vp));
- // 'this' should be an object.
- JS::RootedObject object(context);
- if (JS_TypeOfValue(context, this_value) != JSTYPE_OBJECT) {
- return false;
- }
- if (!JS_ValueToObject(context, this_value, object.address())) {
- NOTREACHED();
- return false;
- }
-{{ check_if_object_implements_interface() }}
-{{ nonstatic_function_prologue(impl_class) }}
-{% endif %}
-{% call(arguments_list) extract_arguments(operation) %}
-{{ call_cobalt_function(impl_class, operation.type, operation.name,
- arguments_list, operation.raises_exception,
- operation.call_with, operation.is_static) }}
-{% if operation.type != 'void' %}
- if (!exception_state.is_exception_set()) {
- args.rval().set(result_value);
- }
-{% endif %}
- return !exception_state.is_exception_set();
-{%- endcall %}
-{%- endmacro %}
-
-{#
- # Function body for setting an attribute value.
- # Parameters:
- # attribute: The attribute context object.
- # impl_class: Cobalt class name of the Cobalt implementation of the
- # interface on which the attribute is a member.
- # cobalt_impl_prefix: Variable name prefix of a pointer to a Cobalt
- # implementation of the interface on which the attribute is a member.
- #}
-{% macro set_attribute_implementation(attribute, impl_class,
- cobalt_impl_prefix="") %}
-{% if attribute.put_forwards %}
- { // Begin scope of {{attribute.type}} forwarded_{{cobalt_impl_prefix}}impl.
- {{attribute.type}} forwarded_{{cobalt_impl_prefix}}impl =
-{% if not attribute.is_static %}
- {{cobalt_impl_prefix}}impl->{{attribute.getter_function_name}}();
-{% else %}
- {{impl_class}}::{{attribute.getter_function_name}}();
-{% endif %}
- if (!forwarded_{{cobalt_impl_prefix}}impl) {
- NOTREACHED();
- return false;
- }
- if (!exception_state.is_exception_set()) {
-{{ set_attribute_implementation(attribute.put_forwards, attribute.type,
- "forwarded_" + cobalt_impl_prefix) -}}
- }
- return !exception_state.is_exception_set();
- } // End scope of {{attribute.type}} forwarded_{{cobalt_impl_prefix}}impl.
-{% else %}
- TypeTraits<{{attribute.type}} >::ConversionType value;
- FromJSValue(context, vp, {{attribute.conversion_flags}}, &exception_state,
- &value);
- if (exception_state.is_exception_set()) {
- return false;
- }
-{{ call_cobalt_function(impl_class, "void",
- attribute.setter_function_name,
- ["value"], attribute.raises_exception,
- attribute.call_with, attribute.is_static,
- cobalt_impl_prefix) }}
- return !exception_state.is_exception_set();
-{% endif %} {#- attribute.put_forwards #}
-{%- endmacro %}
-
-{#
- # Extract and marshal arguments that will be passed to a function-like call.
- # Parameters:
- # operation: An IdlOperation object
- # Passed to caller:
- # A string that can be used as the parameters for a function call. It will
- # be either empty, or a comma-separated list of variable names.
- #}
-{% macro extract_arguments(operation) %}
-{% set non_optional_arguments = operation.non_optional_arguments %}
-{% set optional_arguments = operation.optional_arguments %}
-{% set num_default_arguments = operation.num_default_arguments %}
-{% set variadic_argument = operation.variadic_argument %}
-{% set has_non_default_optional_arguments =
- operation.has_non_default_optional_arguments %}
-
-{%- if non_optional_arguments|length > 0 %}
- const size_t kMinArguments = {{non_optional_arguments|length}};
- if (args.length() < kMinArguments) {
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
- }
-{% endif -%}
-
-{# Declare variables for all arguments #}
-{% for argument in non_optional_arguments %}
-{% if loop.first %}
- // Non-optional arguments
-{% endif %}
- TypeTraits<{{argument.type}} >::ConversionType {{argument.name}};
-{% endfor %}
-{% for argument in optional_arguments if argument.default_value %}
-{% if loop.first %}
- // Optional arguments with default values
-{% endif %}
- TypeTraits<{{argument.type}} >::ConversionType {{argument.name}} =
- {{argument.default_value}};
-{% endfor %}
-{% for argument in optional_arguments if not argument.default_value %}
-{% if loop.first %}
- // Optional arguments
-{% endif %}
- TypeTraits<{{argument.type}} >::ConversionType {{argument.name}};
-{% endfor %}
-{% if variadic_argument %}
- // Variadic argument
- TypeTraits<{{variadic_argument.type}} >::ConversionType {{
- variadic_argument.name}};
-{% endif -%}
-
-{% for argument in non_optional_arguments %}
-
- DCHECK_LT({{loop.index0}}, args.length());
- JS::RootedValue non_optional_value{{loop.index0}}(
- context, args[{{loop.index0}}]);
- FromJSValue(context,
- non_optional_value{{loop.index0}},
- {{argument.conversion_flags}},
- &exception_state, &{{argument.name}});
- if (exception_state.is_exception_set()) {
- return false;
- }
-{% endfor -%}
-{% for argument in optional_arguments %}
-{% if loop.first %}
- size_t num_set_arguments = {{
- non_optional_arguments|length + num_default_arguments}};
-{% endif %}
- if (args.length() > {{loop.index0 + non_optional_arguments|length}}) {
- JS::RootedValue optional_value{{loop.index0}}(
- context, args[{{loop.index0 + non_optional_arguments|length}}]);
- FromJSValue(context,
- optional_value{{loop.index0}},
- {{argument.conversion_flags}},
- &exception_state,
- &{{argument.name}});
- if (exception_state.is_exception_set()) {
- return false;
- }
-{% if not argument.default_value %}
- ++num_set_arguments;
-{% endif %}
- }
-{% endfor %}
-{% if variadic_argument %}
-
- // Get variadic arguments.
-{% if optional_arguments|length %}
- const size_t kLastOptionalArgIndex = {{
- non_optional_arguments|length + optional_arguments|length}};
- if (num_set_arguments == kLastOptionalArgIndex) {
- // If the last optional argument has been set, we will call the overload
- // that takes the variadic argument, possibly with an empty vector in the
- // case that there are no more arguments left.
- ++num_set_arguments;
- }
-{% endif %}
- const size_t kFirstVariadicArgIndex = {{operation.arguments|length - 1}};
- if (args.length() > kFirstVariadicArgIndex) {
- {{variadic_argument.name}}.resize(args.length() - kFirstVariadicArgIndex);
- for (int i = 0; i + kFirstVariadicArgIndex < args.length(); ++i) {
- JS::RootedValue variadic_argument_value{{i}}(
- context, args[i + kFirstVariadicArgIndex]);
- FromJSValue(context,
- variadic_argument_value{{i}},
- {{variadic_argument.conversion_flags}},
- &exception_state,
- &{{variadic_argument.name}}[i]);
- if (exception_state.is_exception_set()) {
- return false;
- }
- }
- }
-{% endif -%}
-
-{# Call the implementation function, based on the number of set arguments. #}
-{% if has_non_default_optional_arguments %}
- switch (num_set_arguments) {
-{% for num_arguments in range(
- non_optional_arguments|length + num_default_arguments,
- operation.arguments|length + 1) %}
-{# If no variadic arguments have been set, we still call the function with
- signature that has the variadic argument and pass an empty vector. There is
- no such function signature that takes the optional parameter immediately
- preceeding the variadic argument but does not take the variadic arguments. #}
-{% if loop.last or not operation.arguments[num_arguments].is_variadic %}
-{% set function_arguments =
- operation.arguments[0:num_arguments]|map(attribute='name')|list %}
- case {{num_arguments}}:
- {
- {{- caller(function_arguments)|indent(8, false) }}
- }
- break;
-{% endif %}
-{% endfor %}
- default:
- NOTREACHED();
- return false;
- }
-{% else %} {#- has_non_default_optional_arguments #}
-{% set function_arguments = operation.arguments|map(attribute='name')|list %}
- {# whitespace control block #}
- {{-caller(function_arguments)}}
-{% endif %}
-{% endmacro %}
-
-{#
- # Append extra arguments that should be passed to a cobalt function.
- # Specifically, this will prepend parameters specified on IDLs using the
- # [CallWith=] extended attribute.
- # Parameters:
- # arguments_list: A list of C++ expressions that represent a sequence of
- # arguments that will be passed to a function.
- # context: An IDL object that may have the extended attribute that
- # we are interested in.
- # Passed to caller:
- # arguments_list, possibly with extra arguments prepended and appended.
- #}
-{% macro add_extra_arguments(arguments_list, raises_exception, call_with) %}
-{% if call_with %}
- MozjsGlobalEnvironment* callwith_global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-{% do arguments_list.insert(
- 0, 'callwith_global_environment->Get%s()'|format(call_with)) %}
-{% endif %}
-{% do arguments_list.append('&exception_state') if raises_exception %}
-{%- endmacro %}
-
-{% macro call_nonvoid_function(return_type, function_name, arguments,
- impl_class, is_static) %}
- if (!exception_state.is_exception_set()) {
-{% if not is_static %}
- ToJSValue(context,
- impl->{{function_name}}({{arguments|join(", ")}}),
- &result_value);
-{% else %}
- ToJSValue(context,
- {{impl_class}}::{{function_name}}({{arguments|join(', ')}}),
- &result_value);
-{% endif %}
- }
-{%- endmacro %}
-
-{% macro call_void_function(function_name, arguments, impl_class, is_static,
- cobalt_impl_prefix) %}
-{% if not is_static %}
- {{cobalt_impl_prefix}}impl->{{function_name}}({{arguments|join(", ")}});
-{% else %}
- {{impl_class}}::{{function_name}}({{arguments|join(', ')}});
-{% endif %}
- result_value.set(JS::UndefinedHandleValue);
-{%- endmacro %}
-
-{% macro get_impl_class_instance(impl_class) %}
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromObject(context, object);
- {{impl_class}}* impl =
- wrapper_private->wrappable<{{impl_class}}>().get();
-{%- endmacro %}
-
-{% macro static_function_prologue() %}
- MozjsExceptionState exception_state(context);
- JS::RootedValue result_value(context);
-{% endmacro %}
-
-{% macro nonstatic_function_prologue(impl_class) %}
-{{ static_function_prologue() }}
-{{ get_impl_class_instance(impl_class) }}
-{%- endmacro %}
-
-{#
- # Call a function on an instance of a Cobalt platform object.
- #}
-{% macro call_cobalt_function(impl_class, cobalt_type, function_name, arguments,
- raises_exception, call_with, is_static,
- cobalt_impl_prefix) %}
-{{ add_extra_arguments(arguments, raises_exception, call_with) }}
-{% if cobalt_type == "void" %}
-{{ call_void_function(function_name, arguments, impl_class, is_static,
- cobalt_impl_prefix) -}}
-{% else %}
-{{ call_nonvoid_function(cobalt_type, function_name, arguments, impl_class,
- is_static) -}}
-{% endif %}
-{% endmacro %}
-
-{#
- # Function body for constructor bindings.
- # Parameters:
- # constructor: The constructor context object
- #}
-{% macro constructor_implementation(constructor) %}
- MozjsExceptionState exception_state(context);
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-{% call(arguments_list) extract_arguments(constructor) %}
-{{ add_extra_arguments(arguments_list, constructor.raises_exception,
- constructor.call_with) }}
- scoped_refptr<{{impl_class}}> new_object =
- new {{impl_class}}({{arguments_list|join(', ')}});
-{% if constructor.raises_exception %}
- // In case that an exception is thrown from constructor.
- if (exception_state.is_exception_set()) {
- return false;
- }
-{% endif %}
- JS::RootedValue result_value(context);
- ToJSValue(context, new_object, &result_value);
- DCHECK(result_value.isObject());
- JS::RootedObject result_object(context, JSVAL_TO_OBJECT(result_value));
- args.rval().setObject(*result_object);
- return true;
-{%- endcall %}
-{%- endmacro %}
-
-{#
- # Function body for overload resolution function.
- # Parameters:
- # overload_context: The overload context object.
- # bound_function_prefix: The prefix of the function to be called on
- # resolution. The overload index will be appended to this.
- #}
-{% macro overload_resolution_implementation(
- overload_context, bound_function_prefix) %}
- JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
- switch(argc) {
-{% for length, distinguishing_argument_index, resolution_tests in
- overload_context.overload_resolution_by_length %}
- case({{length}}): {
- // Overload resolution algorithm details found here:
- // http://heycam.github.io/webidl/#dfn-overload-resolution-algorithm
-{# In the case there is only one resolution condition, we don't need the arg. #}
-{% if resolution_tests|length > 1 %}
- JS::RootedValue arg(context, args[{{distinguishing_argument_index}}]);
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- JS::RootedObject object(context);
- if (arg.isObject()) {
- object = JSVAL_TO_OBJECT(arg);
- }
-{% endif %}
-{% for test, overload in resolution_tests %}
- if ({{test("arg")}}) {
- return {{bound_function_prefix}}{{overload.overload_index}}(
- context, argc, vp);
- }
-{% endfor %}
- break;
- }
-{% endfor %}
- }
- // Invalid number of args
- // http://heycam.github.io/webidl/#dfn-overload-resolution-algorithm
- // 4. If S is empty, then throw a TypeError.
- MozjsExceptionState exception_state(context);
- exception_state.SetSimpleException(script::kInvalidNumberOfArguments);
- return false;
-{%- endmacro %}
diff --git a/src/cobalt/bindings/run_cobalt_bindings_tests.bat b/src/cobalt/bindings/run_cobalt_bindings_tests.bat
index 2df4a48..f1da90a 100644
--- a/src/cobalt/bindings/run_cobalt_bindings_tests.bat
+++ b/src/cobalt/bindings/run_cobalt_bindings_tests.bat
@@ -14,4 +14,4 @@
@rem limitations under the License.
@rem
-@python run_cobalt_bindings_tests.py mozjs %*
+@python run_cobalt_bindings_tests.py mozjs-45 %*
diff --git a/src/cobalt/bindings/run_cobalt_bindings_tests.py b/src/cobalt/bindings/run_cobalt_bindings_tests.py
index 853c026..ffb3911 100644
--- a/src/cobalt/bindings/run_cobalt_bindings_tests.py
+++ b/src/cobalt/bindings/run_cobalt_bindings_tests.py
@@ -29,7 +29,6 @@
import bootstrap_path # pylint: disable=unused-import
from cobalt.bindings.idl_compiler_cobalt import IdlCompilerCobalt
-from cobalt.bindings.mozjs.code_generator_mozjs import CodeGeneratorMozjs
from cobalt.bindings.mozjs45.code_generator_mozjs45 import CodeGeneratorMozjs45
from webkitpy.bindings.bindings_tests import run_bindings_tests
@@ -41,9 +40,7 @@
parser.add_argument('engine')
args = parser.parse_args(argv[1:])
- if args.engine.lower() == 'mozjs':
- generator = CodeGeneratorMozjs
- elif args.engine.lower() == 'mozjs45':
+ if args.engine.lower() == 'mozjs45':
generator = CodeGeneratorMozjs45
else:
raise RuntimeError('Unsupported JavaScript engine: ' + args.engine)
diff --git a/src/cobalt/bindings/run_cobalt_bindings_tests.sh b/src/cobalt/bindings/run_cobalt_bindings_tests.sh
index 39619d1..e56fc43 100755
--- a/src/cobalt/bindings/run_cobalt_bindings_tests.sh
+++ b/src/cobalt/bindings/run_cobalt_bindings_tests.sh
@@ -19,5 +19,4 @@
# Ensure we are in the bindings directory.
cd "$(dirname "${BASH_SOURCE[0]}")"
-python run_cobalt_bindings_tests.py mozjs "$@"
python run_cobalt_bindings_tests.py mozjs45 "$@"
diff --git a/src/cobalt/browser/browser_bindings_gen.gyp b/src/cobalt/browser/browser_bindings_gen.gyp
index 41f4937..eea3ab5 100644
--- a/src/cobalt/browser/browser_bindings_gen.gyp
+++ b/src/cobalt/browser/browser_bindings_gen.gyp
@@ -261,6 +261,7 @@
'../dom/buffer_source.idl',
'../dom/document__web_animations_api.idl',
+ '../dom/document_cobalt.idl',
'../dom/document_cssom.idl',
'../dom/document_html5.idl',
'../dom/element_css_inline_style.idl',
diff --git a/src/cobalt/browser/browser_module.cc b/src/cobalt/browser/browser_module.cc
index 870d7b5..31ab25d 100644
--- a/src/cobalt/browser/browser_module.cc
+++ b/src/cobalt/browser/browser_module.cc
@@ -368,11 +368,22 @@
return;
}
- on_error_url_.clear();
if (on_error_retry_timer_.IsRunning()) {
on_error_retry_timer_.Stop();
}
+ // Navigations aren't allowed if the app is suspended. If this is the case,
+ // simply set the pending navigate url, which will cause the navigation to
+ // occur when Cobalt resumes, and return.
+ if (application_state_ == base::kApplicationStateSuspended) {
+ pending_navigate_url_ = url.spec();
+ return;
+ }
+
+ // Now that we know the navigation is occurring, clear out
+ // |pending_navigate_url_|.
+ pending_navigate_url_.clear();
+
// Destroy old WebModule first, so we don't get a memory high-watermark after
// the second WebModule's constructor runs, but before scoped_ptr::reset() is
// run.
@@ -404,7 +415,7 @@
base::Bind(&BrowserModule::QueueOnSplashScreenRenderTreeProduced,
base::Unretained(this)),
&network_module_, viewport_size, GetResourceProvider(),
- kLayoutMaxRefreshFrequencyInHz, *fallback_splash_screen_url_, url,
+ kLayoutMaxRefreshFrequencyInHz, fallback_splash_screen_url_, url,
splash_screen_cache_.get(),
base::Bind(&BrowserModule::DestroySplashScreen, weak_this_)));
lifecycle_observers_.AddObserver(splash_screen_.get());
@@ -790,7 +801,12 @@
on_error_triggered_count_++;
#endif
- on_error_url_ = url.spec();
+ // Set |pending_navigate_url_| to the url where the error occurred. This will
+ // cause the OnError callback to Navigate() to this URL if it receives a
+ // positive response; otherwise, if Cobalt is currently preloaded or
+ // suspended, then this is the url that Cobalt will navigate to when it starts
+ // or resumes.
+ pending_navigate_url_ = url.spec();
// Start the OnErrorRetry() timer if it isn't already running.
// The minimum delay between calls to OnErrorRetry() exponentially grows as
@@ -817,7 +833,8 @@
void BrowserModule::OnErrorRetry() {
++on_error_retry_count_;
on_error_retry_time_ = base::TimeTicks::Now();
- TryURLHandlers(GURL("h5vcc://network-failure?retry-url=" + on_error_url_));
+ TryURLHandlers(
+ GURL("h5vcc://network-failure?retry-url=" + pending_navigate_url_));
}
bool BrowserModule::FilterKeyEvent(base::Token type,
@@ -966,9 +983,11 @@
DCHECK(application_state_ == base::kApplicationStatePreloading);
SuspendInternal(true /*is_start*/);
- StartOrResumeInternal(true /*is_start*/);
+ StartOrResumeInternalPreStateUpdate(true /*is_start*/);
application_state_ = base::kApplicationStateStarted;
+
+ StartOrResumeInternalPostStateUpdate();
}
void BrowserModule::Pause() {
@@ -999,9 +1018,11 @@
TRACE_EVENT0("cobalt::browser", "BrowserModule::Resume()");
DCHECK(application_state_ == base::kApplicationStateSuspended);
- StartOrResumeInternal(false /*is_start*/);
+ StartOrResumeInternalPreStateUpdate(false /*is_start*/);
application_state_ = base::kApplicationStatePaused;
+
+ StartOrResumeInternalPostStateUpdate();
}
void BrowserModule::ReduceMemory() {
@@ -1224,9 +1245,10 @@
}
}
-void BrowserModule::StartOrResumeInternal(bool is_start) {
- TRACE_EVENT1("cobalt::browser", "BrowserModule::StartOrResumeInternal",
- "is_start", is_start ? "true" : "false");
+void BrowserModule::StartOrResumeInternalPreStateUpdate(bool is_start) {
+ TRACE_EVENT1("cobalt::browser",
+ "BrowserModule::StartOrResumeInternalPreStateUpdate", "is_start",
+ is_start ? "true" : "false");
render_tree::ResourceProvider* resource_provider = NULL;
if (!renderer_module_) {
InitializeSystemWindow();
@@ -1256,11 +1278,15 @@
FOR_EACH_OBSERVER(LifecycleObserver, lifecycle_observers_,
Resume(resource_provider));
}
+}
- // If no navigate has occurred since the last OnError call, then attempt to
- // navigate to |on_error_url_| now.
- if (!on_error_url_.empty()) {
- Navigate(GURL(on_error_url_));
+void BrowserModule::StartOrResumeInternalPostStateUpdate() {
+ TRACE_EVENT0("cobalt::browser",
+ "BrowserModule::StartOrResumeInternalPostStateUpdate");
+ // If there's a navigation that's pending, then attempt to navigate to its
+ // specified URL now.
+ if (!pending_navigate_url_.empty()) {
+ Navigate(GURL(pending_navigate_url_));
}
}
diff --git a/src/cobalt/browser/browser_module.h b/src/cobalt/browser/browser_module.h
index 16961ec..7389e9c 100644
--- a/src/cobalt/browser/browser_module.h
+++ b/src/cobalt/browser/browser_module.h
@@ -104,7 +104,10 @@
const std::string& GetUserAgent() { return network_module_.GetUserAgent(); }
- // Recreates web module with the given URL.
+ // Recreates web module with the given URL. In the case where Cobalt is
+ // currently suspended, this defers the navigation and instead sets
+ // |pending_navigate_url_| to the specified url, which will trigger a
+ // navigation when Cobalt resumes.
void Navigate(const GURL& url);
// Reloads web module.
void Reload();
@@ -295,8 +298,12 @@
// Does all the steps for either a Suspend or the first half of a Start.
void SuspendInternal(bool is_start);
- // Does all the steps for either a Resume or the second half of a Start.
- void StartOrResumeInternal(bool is_start);
+ // Does all the steps for either a Resume or the second half of a Start that
+ // happen prior to the app state update.
+ void StartOrResumeInternalPreStateUpdate(bool is_start);
+ // Does all the steps for either a Resume or the second half of a Start that
+ // happen after the app state update.
+ void StartOrResumeInternalPostStateUpdate();
// Gets a viewport size to use for now. This may change depending on the
// current application state. While preloading, this returns the requested
@@ -458,9 +465,13 @@
int render_timeout_count_;
#endif
- // The URL associated with the last OnError() call. It is cleared on the next
- // call to Navigate().
- std::string on_error_url_;
+ // The URL that Cobalt will attempt to navigate to during an OnErrorRetry()
+ // and also when starting from a preloaded state or resuming from a suspended
+ // state. This url is set within OnError() and also when a navigation is
+ // deferred as a result of Cobalt being suspended; it is cleared when a
+ // navigation occurs.
+ std::string pending_navigate_url_;
+
// The number of OnErrorRetry() calls that have occurred since the last
// OnDone() call. This is used to determine the exponential backoff delay
// between the call to OnError() and the timer call to OnErrorRetry().
diff --git a/src/cobalt/browser/debug_console/console_values.js b/src/cobalt/browser/debug_console/console_values.js
index 444ca48..516c249 100644
--- a/src/cobalt/browser/debug_console/console_values.js
+++ b/src/cobalt/browser/debug_console/console_values.js
@@ -20,9 +20,15 @@
this.DEFAULT_KEY = 'default';
// Reduced space-separated list of CVal prefixes to display at start-up.
this.DEFAULT_ACTIVE_SET =
- 'Cobalt DevTools WebDriver Memory.CPU Memory.MainWebModule Memory.JS ' +
- 'Memory.Font Event.Duration.MainWebModule.KeyDown ' +
- 'Renderer.Rasterize.Duration';
+ 'Cobalt DevTools WebDriver ' +
+ 'Memory.CPU Memory.MainWebModule Memory.JS Memory.Font ' +
+ 'Count.MainWebModule.ImageCache.RequestedResources ' +
+ 'Count.MainWebModule.DOM.HtmlElement Count.MainWebModule.Layout.Box ' +
+ 'Event.Count.MainWebModule.KeyDown.DOM.HtmlElement.Added ' +
+ 'Event.Count.MainWebModule.KeyDown.Layout.Box.Created ' +
+ 'Event.Count.MainWebModule.KeyDown.Layout.Box.Destroyed ' +
+ 'Event.Duration.MainWebModule.DOM.VideoStartDelay ' +
+ 'Event.Duration.MainWebModule.KeyDown'
var names = window.debugHub.getConsoleValueNames();
this.allCVals = names.split(' ');
diff --git a/src/cobalt/browser/lib/cobalt.def b/src/cobalt/browser/lib/cobalt.def
index 966eca6..6fb1539 100644
--- a/src/cobalt/browser/lib/cobalt.def
+++ b/src/cobalt/browser/lib/cobalt.def
@@ -17,6 +17,7 @@
CbLibGraphicsSetContextCreatedCallback
CbLibGraphicsSetBeginRenderFrameCallback
CbLibGraphicsSetEndRenderFrameCallback
+ CbLibGrapicsGetMainTextureHandle
; From cobalt/render/rasterizer/lib/exported/video.h:
CbLibVideoSetOnUpdateProjectionType
diff --git a/src/cobalt/browser/splash_screen.cc b/src/cobalt/browser/splash_screen.cc
index 2999b41..e2fa6ba 100644
--- a/src/cobalt/browser/splash_screen.cc
+++ b/src/cobalt/browser/splash_screen.cc
@@ -55,7 +55,7 @@
render_tree_produced_callback,
network::NetworkModule* network_module, const math::Size& window_dimensions,
render_tree::ResourceProvider* resource_provider, float layout_refresh_rate,
- const GURL& fallback_splash_screen_url,
+ const base::optional<GURL>& fallback_splash_screen_url,
const GURL& initial_main_web_module_url,
SplashScreenCache* splash_screen_cache,
const base::Callback<void()>& on_splash_screen_shutdown_complete)
@@ -71,11 +71,14 @@
web_module_options.loader_thread_priority = base::kThreadPriority_High;
web_module_options.animated_image_decode_thread_priority =
base::kThreadPriority_High;
- GURL url_to_pass = fallback_splash_screen_url;
+ base::optional<GURL> url_to_pass = fallback_splash_screen_url;
// Use the cached URL rather than the passed in URL if it exists.
base::optional<std::string> key =
SplashScreenCache::GetKeyForStartUrl(initial_main_web_module_url);
+ DCHECK(fallback_splash_screen_url ||
+ (key && splash_screen_cache &&
+ splash_screen_cache->IsSplashScreenCached(*key)));
if (key && splash_screen_cache &&
splash_screen_cache->IsSplashScreenCached(*key)) {
url_to_pass = GURL(loader::kCacheScheme + ("://" + *key));
@@ -88,8 +91,9 @@
web_module_options.on_before_unload_fired_but_not_handled = on_window_close;
+ DCHECK(url_to_pass);
web_module_.reset(new WebModule(
- url_to_pass, initial_application_state, render_tree_produced_callback_,
+ *url_to_pass, initial_application_state, render_tree_produced_callback_,
base::Bind(&OnError), on_window_close,
base::Closure(), // window_minimize_callback
&stub_media_module_, network_module, window_dimensions,
diff --git a/src/cobalt/browser/splash_screen.h b/src/cobalt/browser/splash_screen.h
index 73db062..3f1b8c3 100644
--- a/src/cobalt/browser/splash_screen.h
+++ b/src/cobalt/browser/splash_screen.h
@@ -40,7 +40,8 @@
network::NetworkModule* network_module,
const math::Size& window_dimensions,
render_tree::ResourceProvider* resource_provider,
- float layout_refresh_rate, const GURL& fallback_splash_screen_url,
+ float layout_refresh_rate,
+ const base::optional<GURL>& fallback_splash_screen_url,
const GURL& initial_main_web_module_url,
cobalt::browser::SplashScreenCache* splash_screen_cache,
const base::Callback<void()>& on_splash_screen_shutdown_complete);
diff --git a/src/cobalt/browser/testdata/splash_screen/block_render_tree_head_body_display_none.html b/src/cobalt/browser/testdata/splash_screen/block_render_tree_head_body_display_none.html
deleted file mode 100644
index f481c4d..0000000
--- a/src/cobalt/browser/testdata/splash_screen/block_render_tree_head_body_display_none.html
+++ /dev/null
@@ -1,441 +0,0 @@
-<!DOCTYPE html>
-<html>
-
-<head style="display : none">
- <meta http-equiv="Content-Security-Policy" content="
- default-src 'unsafe-inline';
- style-src 'unsafe-inline';
- script-src 'unsafe-inline';">
-</head>
-
-<script>
- window.setTimeout(function() {
- document.getElementsByTagName('body')[0].style.display = 'block';
- }, 5000);
-</script>
-
-<body style="background-color: #1f52a5; display: none">
-<h1>Heading</h1>
-
-<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus
-interdum maximus finibus. Ut fermentum malesuada commodo. Sed
-faucibus, sapien a mattis lobortis, magna ante efficitur mauris, quis
-sodales nibh diam nec quam. Vestibulum magna libero, tincidunt non
-erat sed, molestie pulvinar ex. Maecenas semper blandit elit, id
-suscipit nulla venenatis pretium. Integer accumsan porta felis, vitae
-placerat urna accumsan vel. Aliquam eu aliquet mi. Aenean tincidunt
-eros lectus, sit amet efficitur orci ultrices at. Morbi lobortis ex
-quis luctus rutrum. In nulla velit, elementum vitae turpis vitae,
-finibus varius massa. Morbi id libero faucibus, tempus eros et,
-ullamcorper ipsum. Sed eleifend finibus bibendum. Nullam ut nunc nec
-lacus posuere dignissim. Nunc sollicitudin vitae augue id
-vulputate. Ut ac nibh gravida, volutpat est ac, facilisis neque.</p>
-
-<p>Nam dictum leo massa, non posuere dui bibendum id. Morbi sagittis est
-non est laoreet, a sollicitudin felis aliquet. Ut cursus vel leo a
-efficitur. Proin ut pellentesque sapien, vel maximus dui. Suspendisse
-eu felis eget leo elementum efficitur. Class aptent taciti sociosqu ad
-litora torquent per conubia nostra, per inceptos himenaeos. Fusce
-lobortis velit in elit pellentesque, ut auctor ipsum dignissim. Sed
-aliquet eleifend convallis. Duis mollis, dolor sed rutrum mollis,
-augue eros dignissim erat, eu dapibus augue turpis ac sapien. Morbi at
-volutpat odio, at molestie risus. Nulla quis nulla et magna vestibulum
-euismod. Praesent suscipit quam elit, non luctus turpis rutrum
-faucibus.</p>
-
-<p>Morbi feugiat lacus rhoncus, dignissim velit nec, dignissim
-lorem. Aliquam erat volutpat. Mauris semper dictum tempus. Nulla ex
-ligula, malesuada in ornare sed, euismod vitae massa. Etiam quis erat
-quis nisl facilisis suscipit. Mauris placerat ante et auctor
-fermentum. Donec tincidunt justo sem, ullamcorper vulputate nisl
-commodo a. Vestibulum quis ex non elit porttitor semper eget quis
-tortor. Suspendisse mattis neque non elementum scelerisque. Nulla
-facilisi. Nulla non felis et justo feugiat elementum. Aenean sodales
-turpis at erat eleifend lacinia. Proin eleifend volutpat purus id
-mollis. Proin vel tellus faucibus, sagittis libero at, lobortis
-odio. Praesent quam mauris, auctor vel velit eu, convallis molestie
-nisi. Pellentesque in nunc at orci ultrices vehicula.</p>
-
-<p>Praesent nibh lectus, efficitur sed risus in, rutrum tristique
-arcu. Curabitur non efficitur elit. Phasellus eget odio iaculis,
-molestie dui eget, venenatis erat. Nulla luctus facilisis lectus, nec
-dapibus tortor rhoncus vel. Donec nec arcu elit. Nullam ut faucibus
-purus, sed ultricies diam. Pellentesque at finibus ipsum. Vestibulum
-egestas dignissim nisl, ac rhoncus risus finibus sit amet. Donec non
-feugiat ante. Donec vehicula dui a lorem imperdiet, a tempus diam
-pulvinar. Nullam congue efficitur justo, non posuere ligula sodales
-in. Ut a urna ornare, ultrices velit in, pellentesque
-lorem. Vestibulum ante ipsum primis in faucibus orci luctus et
-ultrices posuere cubilia Curae;</p>
-
-<p>Orci varius natoque penatibus et magnis dis parturient montes,
-nascetur ridiculus mus. Morbi maximus quis magna et aliquet. Nam
-bibendum fermentum tempus. Praesent iaculis tortor metus, at
-vestibulum ipsum hendrerit mattis. Proin fringilla nisl sit amet
-tincidunt blandit. Interdum et malesuada fames ac ante ipsum primis in
-faucibus. Phasellus vel lectus leo. Curabitur fringilla, arcu non
-posuere viverra, urna metus blandit augue, convallis mattis tortor dui
-vel arcu. In sit amet metus vitae ex rhoncus hendrerit.</p>
-
-<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus
-interdum maximus finibus. Ut fermentum malesuada commodo. Sed
-faucibus, sapien a mattis lobortis, magna ante efficitur mauris, quis
-sodales nibh diam nec quam. Vestibulum magna libero, tincidunt non
-erat sed, molestie pulvinar ex. Maecenas semper blandit elit, id
-suscipit nulla venenatis pretium. Integer accumsan porta felis, vitae
-placerat urna accumsan vel. Aliquam eu aliquet mi. Aenean tincidunt
-eros lectus, sit amet efficitur orci ultrices at. Morbi lobortis ex
-quis luctus rutrum. In nulla velit, elementum vitae turpis vitae,
-finibus varius massa. Morbi id libero faucibus, tempus eros et,
-ullamcorper ipsum. Sed eleifend finibus bibendum. Nullam ut nunc nec
-lacus posuere dignissim. Nunc sollicitudin vitae augue id
-vulputate. Ut ac nibh gravida, volutpat est ac, facilisis neque.</p>
-
-<p>Nam dictum leo massa, non posuere dui bibendum id. Morbi sagittis est
-non est laoreet, a sollicitudin felis aliquet. Ut cursus vel leo a
-efficitur. Proin ut pellentesque sapien, vel maximus dui. Suspendisse
-eu felis eget leo elementum efficitur. Class aptent taciti sociosqu ad
-litora torquent per conubia nostra, per inceptos himenaeos. Fusce
-lobortis velit in elit pellentesque, ut auctor ipsum dignissim. Sed
-aliquet eleifend convallis. Duis mollis, dolor sed rutrum mollis,
-augue eros dignissim erat, eu dapibus augue turpis ac sapien. Morbi at
-volutpat odio, at molestie risus. Nulla quis nulla et magna vestibulum
-euismod. Praesent suscipit quam elit, non luctus turpis rutrum
-faucibus.</p>
-
-<p>Morbi feugiat lacus rhoncus, dignissim velit nec, dignissim
-lorem. Aliquam erat volutpat. Mauris semper dictum tempus. Nulla ex
-ligula, malesuada in ornare sed, euismod vitae massa. Etiam quis erat
-quis nisl facilisis suscipit. Mauris placerat ante et auctor
-fermentum. Donec tincidunt justo sem, ullamcorper vulputate nisl
-commodo a. Vestibulum quis ex non elit porttitor semper eget quis
-tortor. Suspendisse mattis neque non elementum scelerisque. Nulla
-facilisi. Nulla non felis et justo feugiat elementum. Aenean sodales
-turpis at erat eleifend lacinia. Proin eleifend volutpat purus id
-mollis. Proin vel tellus faucibus, sagittis libero at, lobortis
-odio. Praesent quam mauris, auctor vel velit eu, convallis molestie
-nisi. Pellentesque in nunc at orci ultrices vehicula.</p>
-
-<p>Praesent nibh lectus, efficitur sed risus in, rutrum tristique
-arcu. Curabitur non efficitur elit. Phasellus eget odio iaculis,
-molestie dui eget, venenatis erat. Nulla luctus facilisis lectus, nec
-dapibus tortor rhoncus vel. Donec nec arcu elit. Nullam ut faucibus
-purus, sed ultricies diam. Pellentesque at finibus ipsum. Vestibulum
-egestas dignissim nisl, ac rhoncus risus finibus sit amet. Donec non
-feugiat ante. Donec vehicula dui a lorem imperdiet, a tempus diam
-pulvinar. Nullam congue efficitur justo, non posuere ligula sodales
-in. Ut a urna ornare, ultrices velit in, pellentesque
-lorem. Vestibulum ante ipsum primis in faucibus orci luctus et
-ultrices posuere cubilia Curae;</p>
-
-<p>Orci varius natoque penatibus et magnis dis parturient montes,
-nascetur ridiculus mus. Morbi maximus quis magna et aliquet. Nam
-bibendum fermentum tempus. Praesent iaculis tortor metus, at
-vestibulum ipsum hendrerit mattis. Proin fringilla nisl sit amet
-tincidunt blandit. Interdum et malesuada fames ac ante ipsum primis in
-faucibus. Phasellus vel lectus leo. Curabitur fringilla, arcu non
-posuere viverra, urna metus blandit augue, convallis mattis tortor dui
-vel arcu. In sit amet metus vitae ex rhoncus hendrerit.</p>
-
-<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus
-interdum maximus finibus. Ut fermentum malesuada commodo. Sed
-faucibus, sapien a mattis lobortis, magna ante efficitur mauris, quis
-sodales nibh diam nec quam. Vestibulum magna libero, tincidunt non
-erat sed, molestie pulvinar ex. Maecenas semper blandit elit, id
-suscipit nulla venenatis pretium. Integer accumsan porta felis, vitae
-placerat urna accumsan vel. Aliquam eu aliquet mi. Aenean tincidunt
-eros lectus, sit amet efficitur orci ultrices at. Morbi lobortis ex
-quis luctus rutrum. In nulla velit, elementum vitae turpis vitae,
-finibus varius massa. Morbi id libero faucibus, tempus eros et,
-ullamcorper ipsum. Sed eleifend finibus bibendum. Nullam ut nunc nec
-lacus posuere dignissim. Nunc sollicitudin vitae augue id
-vulputate. Ut ac nibh gravida, volutpat est ac, facilisis neque.</p>
-
-<p>Nam dictum leo massa, non posuere dui bibendum id. Morbi sagittis est
-non est laoreet, a sollicitudin felis aliquet. Ut cursus vel leo a
-efficitur. Proin ut pellentesque sapien, vel maximus dui. Suspendisse
-eu felis eget leo elementum efficitur. Class aptent taciti sociosqu ad
-litora torquent per conubia nostra, per inceptos himenaeos. Fusce
-lobortis velit in elit pellentesque, ut auctor ipsum dignissim. Sed
-aliquet eleifend convallis. Duis mollis, dolor sed rutrum mollis,
-augue eros dignissim erat, eu dapibus augue turpis ac sapien. Morbi at
-volutpat odio, at molestie risus. Nulla quis nulla et magna vestibulum
-euismod. Praesent suscipit quam elit, non luctus turpis rutrum
-faucibus.</p>
-
-<p>Morbi feugiat lacus rhoncus, dignissim velit nec, dignissim
-lorem. Aliquam erat volutpat. Mauris semper dictum tempus. Nulla ex
-ligula, malesuada in ornare sed, euismod vitae massa. Etiam quis erat
-quis nisl facilisis suscipit. Mauris placerat ante et auctor
-fermentum. Donec tincidunt justo sem, ullamcorper vulputate nisl
-commodo a. Vestibulum quis ex non elit porttitor semper eget quis
-tortor. Suspendisse mattis neque non elementum scelerisque. Nulla
-facilisi. Nulla non felis et justo feugiat elementum. Aenean sodales
-turpis at erat eleifend lacinia. Proin eleifend volutpat purus id
-mollis. Proin vel tellus faucibus, sagittis libero at, lobortis
-odio. Praesent quam mauris, auctor vel velit eu, convallis molestie
-nisi. Pellentesque in nunc at orci ultrices vehicula.</p>
-
-<p>Praesent nibh lectus, efficitur sed risus in, rutrum tristique
-arcu. Curabitur non efficitur elit. Phasellus eget odio iaculis,
-molestie dui eget, venenatis erat. Nulla luctus facilisis lectus, nec
-dapibus tortor rhoncus vel. Donec nec arcu elit. Nullam ut faucibus
-purus, sed ultricies diam. Pellentesque at finibus ipsum. Vestibulum
-egestas dignissim nisl, ac rhoncus risus finibus sit amet. Donec non
-feugiat ante. Donec vehicula dui a lorem imperdiet, a tempus diam
-pulvinar. Nullam congue efficitur justo, non posuere ligula sodales
-in. Ut a urna ornare, ultrices velit in, pellentesque
-lorem. Vestibulum ante ipsum primis in faucibus orci luctus et
-ultrices posuere cubilia Curae;</p>
-
-<p>Orci varius natoque penatibus et magnis dis parturient montes,
-nascetur ridiculus mus. Morbi maximus quis magna et aliquet. Nam
-bibendum fermentum tempus. Praesent iaculis tortor metus, at
-vestibulum ipsum hendrerit mattis. Proin fringilla nisl sit amet
-tincidunt blandit. Interdum et malesuada fames ac ante ipsum primis in
-faucibus. Phasellus vel lectus leo. Curabitur fringilla, arcu non
-posuere viverra, urna metus blandit augue, convallis mattis tortor dui
-vel arcu. In sit amet metus vitae ex rhoncus hendrerit.</p>
-
-<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus
-interdum maximus finibus. Ut fermentum malesuada commodo. Sed
-faucibus, sapien a mattis lobortis, magna ante efficitur mauris, quis
-sodales nibh diam nec quam. Vestibulum magna libero, tincidunt non
-erat sed, molestie pulvinar ex. Maecenas semper blandit elit, id
-suscipit nulla venenatis pretium. Integer accumsan porta felis, vitae
-placerat urna accumsan vel. Aliquam eu aliquet mi. Aenean tincidunt
-eros lectus, sit amet efficitur orci ultrices at. Morbi lobortis ex
-quis luctus rutrum. In nulla velit, elementum vitae turpis vitae,
-finibus varius massa. Morbi id libero faucibus, tempus eros et,
-ullamcorper ipsum. Sed eleifend finibus bibendum. Nullam ut nunc nec
-lacus posuere dignissim. Nunc sollicitudin vitae augue id
-vulputate. Ut ac nibh gravida, volutpat est ac, facilisis neque.</p>
-
-<p>Nam dictum leo massa, non posuere dui bibendum id. Morbi sagittis est
-non est laoreet, a sollicitudin felis aliquet. Ut cursus vel leo a
-efficitur. Proin ut pellentesque sapien, vel maximus dui. Suspendisse
-eu felis eget leo elementum efficitur. Class aptent taciti sociosqu ad
-litora torquent per conubia nostra, per inceptos himenaeos. Fusce
-lobortis velit in elit pellentesque, ut auctor ipsum dignissim. Sed
-aliquet eleifend convallis. Duis mollis, dolor sed rutrum mollis,
-augue eros dignissim erat, eu dapibus augue turpis ac sapien. Morbi at
-volutpat odio, at molestie risus. Nulla quis nulla et magna vestibulum
-euismod. Praesent suscipit quam elit, non luctus turpis rutrum
-faucibus.</p>
-
-<p>Morbi feugiat lacus rhoncus, dignissim velit nec, dignissim
-lorem. Aliquam erat volutpat. Mauris semper dictum tempus. Nulla ex
-ligula, malesuada in ornare sed, euismod vitae massa. Etiam quis erat
-quis nisl facilisis suscipit. Mauris placerat ante et auctor
-fermentum. Donec tincidunt justo sem, ullamcorper vulputate nisl
-commodo a. Vestibulum quis ex non elit porttitor semper eget quis
-tortor. Suspendisse mattis neque non elementum scelerisque. Nulla
-facilisi. Nulla non felis et justo feugiat elementum. Aenean sodales
-turpis at erat eleifend lacinia. Proin eleifend volutpat purus id
-mollis. Proin vel tellus faucibus, sagittis libero at, lobortis
-odio. Praesent quam mauris, auctor vel velit eu, convallis molestie
-nisi. Pellentesque in nunc at orci ultrices vehicula.</p>
-
-<p>Praesent nibh lectus, efficitur sed risus in, rutrum tristique
-arcu. Curabitur non efficitur elit. Phasellus eget odio iaculis,
-molestie dui eget, venenatis erat. Nulla luctus facilisis lectus, nec
-dapibus tortor rhoncus vel. Donec nec arcu elit. Nullam ut faucibus
-purus, sed ultricies diam. Pellentesque at finibus ipsum. Vestibulum
-egestas dignissim nisl, ac rhoncus risus finibus sit amet. Donec non
-feugiat ante. Donec vehicula dui a lorem imperdiet, a tempus diam
-pulvinar. Nullam congue efficitur justo, non posuere ligula sodales
-in. Ut a urna ornare, ultrices velit in, pellentesque
-lorem. Vestibulum ante ipsum primis in faucibus orci luctus et
-ultrices posuere cubilia Curae;</p>
-
-<p>Orci varius natoque penatibus et magnis dis parturient montes,
-nascetur ridiculus mus. Morbi maximus quis magna et aliquet. Nam
-bibendum fermentum tempus. Praesent iaculis tortor metus, at
-vestibulum ipsum hendrerit mattis. Proin fringilla nisl sit amet
-tincidunt blandit. Interdum et malesuada fames ac ante ipsum primis in
-faucibus. Phasellus vel lectus leo. Curabitur fringilla, arcu non
-posuere viverra, urna metus blandit augue, convallis mattis tortor dui
-vel arcu. In sit amet metus vitae ex rhoncus hendrerit.</p>
-
-<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus
-interdum maximus finibus. Ut fermentum malesuada commodo. Sed
-faucibus, sapien a mattis lobortis, magna ante efficitur mauris, quis
-sodales nibh diam nec quam. Vestibulum magna libero, tincidunt non
-erat sed, molestie pulvinar ex. Maecenas semper blandit elit, id
-suscipit nulla venenatis pretium. Integer accumsan porta felis, vitae
-placerat urna accumsan vel. Aliquam eu aliquet mi. Aenean tincidunt
-eros lectus, sit amet efficitur orci ultrices at. Morbi lobortis ex
-quis luctus rutrum. In nulla velit, elementum vitae turpis vitae,
-finibus varius massa. Morbi id libero faucibus, tempus eros et,
-ullamcorper ipsum. Sed eleifend finibus bibendum. Nullam ut nunc nec
-lacus posuere dignissim. Nunc sollicitudin vitae augue id
-vulputate. Ut ac nibh gravida, volutpat est ac, facilisis neque.</p>
-
-<p>Nam dictum leo massa, non posuere dui bibendum id. Morbi sagittis est
-non est laoreet, a sollicitudin felis aliquet. Ut cursus vel leo a
-efficitur. Proin ut pellentesque sapien, vel maximus dui. Suspendisse
-eu felis eget leo elementum efficitur. Class aptent taciti sociosqu ad
-litora torquent per conubia nostra, per inceptos himenaeos. Fusce
-lobortis velit in elit pellentesque, ut auctor ipsum dignissim. Sed
-aliquet eleifend convallis. Duis mollis, dolor sed rutrum mollis,
-augue eros dignissim erat, eu dapibus augue turpis ac sapien. Morbi at
-volutpat odio, at molestie risus. Nulla quis nulla et magna vestibulum
-euismod. Praesent suscipit quam elit, non luctus turpis rutrum
-faucibus.</p>
-
-<p>Morbi feugiat lacus rhoncus, dignissim velit nec, dignissim
-lorem. Aliquam erat volutpat. Mauris semper dictum tempus. Nulla ex
-ligula, malesuada in ornare sed, euismod vitae massa. Etiam quis erat
-quis nisl facilisis suscipit. Mauris placerat ante et auctor
-fermentum. Donec tincidunt justo sem, ullamcorper vulputate nisl
-commodo a. Vestibulum quis ex non elit porttitor semper eget quis
-tortor. Suspendisse mattis neque non elementum scelerisque. Nulla
-facilisi. Nulla non felis et justo feugiat elementum. Aenean sodales
-turpis at erat eleifend lacinia. Proin eleifend volutpat purus id
-mollis. Proin vel tellus faucibus, sagittis libero at, lobortis
-odio. Praesent quam mauris, auctor vel velit eu, convallis molestie
-nisi. Pellentesque in nunc at orci ultrices vehicula.</p>
-
-<p>Praesent nibh lectus, efficitur sed risus in, rutrum tristique
-arcu. Curabitur non efficitur elit. Phasellus eget odio iaculis,
-molestie dui eget, venenatis erat. Nulla luctus facilisis lectus, nec
-dapibus tortor rhoncus vel. Donec nec arcu elit. Nullam ut faucibus
-purus, sed ultricies diam. Pellentesque at finibus ipsum. Vestibulum
-egestas dignissim nisl, ac rhoncus risus finibus sit amet. Donec non
-feugiat ante. Donec vehicula dui a lorem imperdiet, a tempus diam
-pulvinar. Nullam congue efficitur justo, non posuere ligula sodales
-in. Ut a urna ornare, ultrices velit in, pellentesque
-lorem. Vestibulum ante ipsum primis in faucibus orci luctus et
-ultrices posuere cubilia Curae;</p>
-
-<p>Orci varius natoque penatibus et magnis dis parturient montes,
-nascetur ridiculus mus. Morbi maximus quis magna et aliquet. Nam
-bibendum fermentum tempus. Praesent iaculis tortor metus, at
-vestibulum ipsum hendrerit mattis. Proin fringilla nisl sit amet
-tincidunt blandit. Interdum et malesuada fames ac ante ipsum primis in
-faucibus. Phasellus vel lectus leo. Curabitur fringilla, arcu non
-posuere viverra, urna metus blandit augue, convallis mattis tortor dui
-vel arcu. In sit amet metus vitae ex rhoncus hendrerit.</p>
-
-<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus
-interdum maximus finibus. Ut fermentum malesuada commodo. Sed
-faucibus, sapien a mattis lobortis, magna ante efficitur mauris, quis
-sodales nibh diam nec quam. Vestibulum magna libero, tincidunt non
-erat sed, molestie pulvinar ex. Maecenas semper blandit elit, id
-suscipit nulla venenatis pretium. Integer accumsan porta felis, vitae
-placerat urna accumsan vel. Aliquam eu aliquet mi. Aenean tincidunt
-eros lectus, sit amet efficitur orci ultrices at. Morbi lobortis ex
-quis luctus rutrum. In nulla velit, elementum vitae turpis vitae,
-finibus varius massa. Morbi id libero faucibus, tempus eros et,
-ullamcorper ipsum. Sed eleifend finibus bibendum. Nullam ut nunc nec
-lacus posuere dignissim. Nunc sollicitudin vitae augue id
-vulputate. Ut ac nibh gravida, volutpat est ac, facilisis neque.</p>
-
-<p>Nam dictum leo massa, non posuere dui bibendum id. Morbi sagittis est
-non est laoreet, a sollicitudin felis aliquet. Ut cursus vel leo a
-efficitur. Proin ut pellentesque sapien, vel maximus dui. Suspendisse
-eu felis eget leo elementum efficitur. Class aptent taciti sociosqu ad
-litora torquent per conubia nostra, per inceptos himenaeos. Fusce
-lobortis velit in elit pellentesque, ut auctor ipsum dignissim. Sed
-aliquet eleifend convallis. Duis mollis, dolor sed rutrum mollis,
-augue eros dignissim erat, eu dapibus augue turpis ac sapien. Morbi at
-volutpat odio, at molestie risus. Nulla quis nulla et magna vestibulum
-euismod. Praesent suscipit quam elit, non luctus turpis rutrum
-faucibus.</p>
-
-<p>Morbi feugiat lacus rhoncus, dignissim velit nec, dignissim
-lorem. Aliquam erat volutpat. Mauris semper dictum tempus. Nulla ex
-ligula, malesuada in ornare sed, euismod vitae massa. Etiam quis erat
-quis nisl facilisis suscipit. Mauris placerat ante et auctor
-fermentum. Donec tincidunt justo sem, ullamcorper vulputate nisl
-commodo a. Vestibulum quis ex non elit porttitor semper eget quis
-tortor. Suspendisse mattis neque non elementum scelerisque. Nulla
-facilisi. Nulla non felis et justo feugiat elementum. Aenean sodales
-turpis at erat eleifend lacinia. Proin eleifend volutpat purus id
-mollis. Proin vel tellus faucibus, sagittis libero at, lobortis
-odio. Praesent quam mauris, auctor vel velit eu, convallis molestie
-nisi. Pellentesque in nunc at orci ultrices vehicula.</p>
-
-<p>Praesent nibh lectus, efficitur sed risus in, rutrum tristique
-arcu. Curabitur non efficitur elit. Phasellus eget odio iaculis,
-molestie dui eget, venenatis erat. Nulla luctus facilisis lectus, nec
-dapibus tortor rhoncus vel. Donec nec arcu elit. Nullam ut faucibus
-purus, sed ultricies diam. Pellentesque at finibus ipsum. Vestibulum
-egestas dignissim nisl, ac rhoncus risus finibus sit amet. Donec non
-feugiat ante. Donec vehicula dui a lorem imperdiet, a tempus diam
-pulvinar. Nullam congue efficitur justo, non posuere ligula sodales
-in. Ut a urna ornare, ultrices velit in, pellentesque
-lorem. Vestibulum ante ipsum primis in faucibus orci luctus et
-ultrices posuere cubilia Curae;</p>
-
-<p>Orci varius natoque penatibus et magnis dis parturient montes,
-nascetur ridiculus mus. Morbi maximus quis magna et aliquet. Nam
-bibendum fermentum tempus. Praesent iaculis tortor metus, at
-vestibulum ipsum hendrerit mattis. Proin fringilla nisl sit amet
-tincidunt blandit. Interdum et malesuada fames ac ante ipsum primis in
-faucibus. Phasellus vel lectus leo. Curabitur fringilla, arcu non
-posuere viverra, urna metus blandit augue, convallis mattis tortor dui
-vel arcu. In sit amet metus vitae ex rhoncus hendrerit.</p>
-
-<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus
-interdum maximus finibus. Ut fermentum malesuada commodo. Sed
-faucibus, sapien a mattis lobortis, magna ante efficitur mauris, quis
-sodales nibh diam nec quam. Vestibulum magna libero, tincidunt non
-erat sed, molestie pulvinar ex. Maecenas semper blandit elit, id
-suscipit nulla venenatis pretium. Integer accumsan porta felis, vitae
-placerat urna accumsan vel. Aliquam eu aliquet mi. Aenean tincidunt
-eros lectus, sit amet efficitur orci ultrices at. Morbi lobortis ex
-quis luctus rutrum. In nulla velit, elementum vitae turpis vitae,
-finibus varius massa. Morbi id libero faucibus, tempus eros et,
-ullamcorper ipsum. Sed eleifend finibus bibendum. Nullam ut nunc nec
-lacus posuere dignissim. Nunc sollicitudin vitae augue id
-vulputate. Ut ac nibh gravida, volutpat est ac, facilisis neque.</p>
-
-<p>Nam dictum leo massa, non posuere dui bibendum id. Morbi sagittis est
-non est laoreet, a sollicitudin felis aliquet. Ut cursus vel leo a
-efficitur. Proin ut pellentesque sapien, vel maximus dui. Suspendisse
-eu felis eget leo elementum efficitur. Class aptent taciti sociosqu ad
-litora torquent per conubia nostra, per inceptos himenaeos. Fusce
-lobortis velit in elit pellentesque, ut auctor ipsum dignissim. Sed
-aliquet eleifend convallis. Duis mollis, dolor sed rutrum mollis,
-augue eros dignissim erat, eu dapibus augue turpis ac sapien. Morbi at
-volutpat odio, at molestie risus. Nulla quis nulla et magna vestibulum
-euismod. Praesent suscipit quam elit, non luctus turpis rutrum
-faucibus.</p>
-
-<p>Morbi feugiat lacus rhoncus, dignissim velit nec, dignissim
-lorem. Aliquam erat volutpat. Mauris semper dictum tempus. Nulla ex
-ligula, malesuada in ornare sed, euismod vitae massa. Etiam quis erat
-quis nisl facilisis suscipit. Mauris placerat ante et auctor
-fermentum. Donec tincidunt justo sem, ullamcorper vulputate nisl
-commodo a. Vestibulum quis ex non elit porttitor semper eget quis
-tortor. Suspendisse mattis neque non elementum scelerisque. Nulla
-facilisi. Nulla non felis et justo feugiat elementum. Aenean sodales
-turpis at erat eleifend lacinia. Proin eleifend volutpat purus id
-mollis. Proin vel tellus faucibus, sagittis libero at, lobortis
-odio. Praesent quam mauris, auctor vel velit eu, convallis molestie
-nisi. Pellentesque in nunc at orci ultrices vehicula.</p>
-
-<p>Praesent nibh lectus, efficitur sed risus in, rutrum tristique
-arcu. Curabitur non efficitur elit. Phasellus eget odio iaculis,
-molestie dui eget, venenatis erat. Nulla luctus facilisis lectus, nec
-dapibus tortor rhoncus vel. Donec nec arcu elit. Nullam ut faucibus
-purus, sed ultricies diam. Pellentesque at finibus ipsum. Vestibulum
-egestas dignissim nisl, ac rhoncus risus finibus sit amet. Donec non
-feugiat ante. Donec vehicula dui a lorem imperdiet, a tempus diam
-pulvinar. Nullam congue efficitur justo, non posuere ligula sodales
-in. Ut a urna ornare, ultrices velit in, pellentesque
-lorem. Vestibulum ante ipsum primis in faucibus orci luctus et
-ultrices posuere cubilia Curae;</p>
-
-<p>Orci varius natoque penatibus et magnis dis parturient montes,
-nascetur ridiculus mus. Morbi maximus quis magna et aliquet. Nam
-bibendum fermentum tempus. Praesent iaculis tortor metus, at
-vestibulum ipsum hendrerit mattis. Proin fringilla nisl sit amet
-tincidunt blandit. Interdum et malesuada fames ac ante ipsum primis in
-faucibus. Phasellus vel lectus leo. Curabitur fringilla, arcu non
-posuere viverra, urna metus blandit augue, convallis mattis tortor dui
-vel arcu. In sit amet metus vitae ex rhoncus hendrerit.</p>
-
-</body>
-</html>
diff --git a/src/cobalt/browser/testdata/splash_screen/block_render_tree_html_display_none.html b/src/cobalt/browser/testdata/splash_screen/block_render_tree_html_display_none.html
index d5f4552..1128e53 100644
--- a/src/cobalt/browser/testdata/splash_screen/block_render_tree_html_display_none.html
+++ b/src/cobalt/browser/testdata/splash_screen/block_render_tree_html_display_none.html
@@ -10,6 +10,7 @@
<script>
window.setTimeout(function() {
+ console.log('Changing html style to block');
document.getElementsByTagName('html')[0].style.display = 'block';
}, 5000);
</script>
diff --git a/src/cobalt/browser/testdata/splash_screen/render_postponed.html b/src/cobalt/browser/testdata/splash_screen/render_postponed.html
new file mode 100644
index 0000000..7d96e71
--- /dev/null
+++ b/src/cobalt/browser/testdata/splash_screen/render_postponed.html
@@ -0,0 +1,449 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+ <meta http-equiv="Content-Security-Policy" content="
+ default-src 'unsafe-inline';
+ style-src 'unsafe-inline';
+ script-src 'unsafe-inline';">
+ <script>
+ window.onload = function () {
+ console.log('renderPostponed = ' + String(document.renderPostponed));
+ document.renderPostponed = true;
+ console.log('Calling renderPostponed = true')
+ document.renderPostponed = true;
+ console.log('...waiting 5s')
+ window.setTimeout(function() {
+ console.log('Calling renderPostponed = false')
+ document.renderPostponed = false;
+ }, 5000);
+ }
+ </script>
+</head>
+
+
+<body style="background-color: #1f52a5;">
+<h1>Heading</h1>
+
+<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus
+interdum maximus finibus. Ut fermentum malesuada commodo. Sed
+faucibus, sapien a mattis lobortis, magna ante efficitur mauris, quis
+sodales nibh diam nec quam. Vestibulum magna libero, tincidunt non
+erat sed, molestie pulvinar ex. Maecenas semper blandit elit, id
+suscipit nulla venenatis pretium. Integer accumsan porta felis, vitae
+placerat urna accumsan vel. Aliquam eu aliquet mi. Aenean tincidunt
+eros lectus, sit amet efficitur orci ultrices at. Morbi lobortis ex
+quis luctus rutrum. In nulla velit, elementum vitae turpis vitae,
+finibus varius massa. Morbi id libero faucibus, tempus eros et,
+ullamcorper ipsum. Sed eleifend finibus bibendum. Nullam ut nunc nec
+lacus posuere dignissim. Nunc sollicitudin vitae augue id
+vulputate. Ut ac nibh gravida, volutpat est ac, facilisis neque.</p>
+
+<p>Nam dictum leo massa, non posuere dui bibendum id. Morbi sagittis est
+non est laoreet, a sollicitudin felis aliquet. Ut cursus vel leo a
+efficitur. Proin ut pellentesque sapien, vel maximus dui. Suspendisse
+eu felis eget leo elementum efficitur. Class aptent taciti sociosqu ad
+litora torquent per conubia nostra, per inceptos himenaeos. Fusce
+lobortis velit in elit pellentesque, ut auctor ipsum dignissim. Sed
+aliquet eleifend convallis. Duis mollis, dolor sed rutrum mollis,
+augue eros dignissim erat, eu dapibus augue turpis ac sapien. Morbi at
+volutpat odio, at molestie risus. Nulla quis nulla et magna vestibulum
+euismod. Praesent suscipit quam elit, non luctus turpis rutrum
+faucibus.</p>
+
+<p>Morbi feugiat lacus rhoncus, dignissim velit nec, dignissim
+lorem. Aliquam erat volutpat. Mauris semper dictum tempus. Nulla ex
+ligula, malesuada in ornare sed, euismod vitae massa. Etiam quis erat
+quis nisl facilisis suscipit. Mauris placerat ante et auctor
+fermentum. Donec tincidunt justo sem, ullamcorper vulputate nisl
+commodo a. Vestibulum quis ex non elit porttitor semper eget quis
+tortor. Suspendisse mattis neque non elementum scelerisque. Nulla
+facilisi. Nulla non felis et justo feugiat elementum. Aenean sodales
+turpis at erat eleifend lacinia. Proin eleifend volutpat purus id
+mollis. Proin vel tellus faucibus, sagittis libero at, lobortis
+odio. Praesent quam mauris, auctor vel velit eu, convallis molestie
+nisi. Pellentesque in nunc at orci ultrices vehicula.</p>
+
+<p>Praesent nibh lectus, efficitur sed risus in, rutrum tristique
+arcu. Curabitur non efficitur elit. Phasellus eget odio iaculis,
+molestie dui eget, venenatis erat. Nulla luctus facilisis lectus, nec
+dapibus tortor rhoncus vel. Donec nec arcu elit. Nullam ut faucibus
+purus, sed ultricies diam. Pellentesque at finibus ipsum. Vestibulum
+egestas dignissim nisl, ac rhoncus risus finibus sit amet. Donec non
+feugiat ante. Donec vehicula dui a lorem imperdiet, a tempus diam
+pulvinar. Nullam congue efficitur justo, non posuere ligula sodales
+in. Ut a urna ornare, ultrices velit in, pellentesque
+lorem. Vestibulum ante ipsum primis in faucibus orci luctus et
+ultrices posuere cubilia Curae;</p>
+
+<p>Orci varius natoque penatibus et magnis dis parturient montes,
+nascetur ridiculus mus. Morbi maximus quis magna et aliquet. Nam
+bibendum fermentum tempus. Praesent iaculis tortor metus, at
+vestibulum ipsum hendrerit mattis. Proin fringilla nisl sit amet
+tincidunt blandit. Interdum et malesuada fames ac ante ipsum primis in
+faucibus. Phasellus vel lectus leo. Curabitur fringilla, arcu non
+posuere viverra, urna metus blandit augue, convallis mattis tortor dui
+vel arcu. In sit amet metus vitae ex rhoncus hendrerit.</p>
+
+<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus
+interdum maximus finibus. Ut fermentum malesuada commodo. Sed
+faucibus, sapien a mattis lobortis, magna ante efficitur mauris, quis
+sodales nibh diam nec quam. Vestibulum magna libero, tincidunt non
+erat sed, molestie pulvinar ex. Maecenas semper blandit elit, id
+suscipit nulla venenatis pretium. Integer accumsan porta felis, vitae
+placerat urna accumsan vel. Aliquam eu aliquet mi. Aenean tincidunt
+eros lectus, sit amet efficitur orci ultrices at. Morbi lobortis ex
+quis luctus rutrum. In nulla velit, elementum vitae turpis vitae,
+finibus varius massa. Morbi id libero faucibus, tempus eros et,
+ullamcorper ipsum. Sed eleifend finibus bibendum. Nullam ut nunc nec
+lacus posuere dignissim. Nunc sollicitudin vitae augue id
+vulputate. Ut ac nibh gravida, volutpat est ac, facilisis neque.</p>
+
+<p>Nam dictum leo massa, non posuere dui bibendum id. Morbi sagittis est
+non est laoreet, a sollicitudin felis aliquet. Ut cursus vel leo a
+efficitur. Proin ut pellentesque sapien, vel maximus dui. Suspendisse
+eu felis eget leo elementum efficitur. Class aptent taciti sociosqu ad
+litora torquent per conubia nostra, per inceptos himenaeos. Fusce
+lobortis velit in elit pellentesque, ut auctor ipsum dignissim. Sed
+aliquet eleifend convallis. Duis mollis, dolor sed rutrum mollis,
+augue eros dignissim erat, eu dapibus augue turpis ac sapien. Morbi at
+volutpat odio, at molestie risus. Nulla quis nulla et magna vestibulum
+euismod. Praesent suscipit quam elit, non luctus turpis rutrum
+faucibus.</p>
+
+<p>Morbi feugiat lacus rhoncus, dignissim velit nec, dignissim
+lorem. Aliquam erat volutpat. Mauris semper dictum tempus. Nulla ex
+ligula, malesuada in ornare sed, euismod vitae massa. Etiam quis erat
+quis nisl facilisis suscipit. Mauris placerat ante et auctor
+fermentum. Donec tincidunt justo sem, ullamcorper vulputate nisl
+commodo a. Vestibulum quis ex non elit porttitor semper eget quis
+tortor. Suspendisse mattis neque non elementum scelerisque. Nulla
+facilisi. Nulla non felis et justo feugiat elementum. Aenean sodales
+turpis at erat eleifend lacinia. Proin eleifend volutpat purus id
+mollis. Proin vel tellus faucibus, sagittis libero at, lobortis
+odio. Praesent quam mauris, auctor vel velit eu, convallis molestie
+nisi. Pellentesque in nunc at orci ultrices vehicula.</p>
+
+<p>Praesent nibh lectus, efficitur sed risus in, rutrum tristique
+arcu. Curabitur non efficitur elit. Phasellus eget odio iaculis,
+molestie dui eget, venenatis erat. Nulla luctus facilisis lectus, nec
+dapibus tortor rhoncus vel. Donec nec arcu elit. Nullam ut faucibus
+purus, sed ultricies diam. Pellentesque at finibus ipsum. Vestibulum
+egestas dignissim nisl, ac rhoncus risus finibus sit amet. Donec non
+feugiat ante. Donec vehicula dui a lorem imperdiet, a tempus diam
+pulvinar. Nullam congue efficitur justo, non posuere ligula sodales
+in. Ut a urna ornare, ultrices velit in, pellentesque
+lorem. Vestibulum ante ipsum primis in faucibus orci luctus et
+ultrices posuere cubilia Curae;</p>
+
+<p>Orci varius natoque penatibus et magnis dis parturient montes,
+nascetur ridiculus mus. Morbi maximus quis magna et aliquet. Nam
+bibendum fermentum tempus. Praesent iaculis tortor metus, at
+vestibulum ipsum hendrerit mattis. Proin fringilla nisl sit amet
+tincidunt blandit. Interdum et malesuada fames ac ante ipsum primis in
+faucibus. Phasellus vel lectus leo. Curabitur fringilla, arcu non
+posuere viverra, urna metus blandit augue, convallis mattis tortor dui
+vel arcu. In sit amet metus vitae ex rhoncus hendrerit.</p>
+
+<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus
+interdum maximus finibus. Ut fermentum malesuada commodo. Sed
+faucibus, sapien a mattis lobortis, magna ante efficitur mauris, quis
+sodales nibh diam nec quam. Vestibulum magna libero, tincidunt non
+erat sed, molestie pulvinar ex. Maecenas semper blandit elit, id
+suscipit nulla venenatis pretium. Integer accumsan porta felis, vitae
+placerat urna accumsan vel. Aliquam eu aliquet mi. Aenean tincidunt
+eros lectus, sit amet efficitur orci ultrices at. Morbi lobortis ex
+quis luctus rutrum. In nulla velit, elementum vitae turpis vitae,
+finibus varius massa. Morbi id libero faucibus, tempus eros et,
+ullamcorper ipsum. Sed eleifend finibus bibendum. Nullam ut nunc nec
+lacus posuere dignissim. Nunc sollicitudin vitae augue id
+vulputate. Ut ac nibh gravida, volutpat est ac, facilisis neque.</p>
+
+<p>Nam dictum leo massa, non posuere dui bibendum id. Morbi sagittis est
+non est laoreet, a sollicitudin felis aliquet. Ut cursus vel leo a
+efficitur. Proin ut pellentesque sapien, vel maximus dui. Suspendisse
+eu felis eget leo elementum efficitur. Class aptent taciti sociosqu ad
+litora torquent per conubia nostra, per inceptos himenaeos. Fusce
+lobortis velit in elit pellentesque, ut auctor ipsum dignissim. Sed
+aliquet eleifend convallis. Duis mollis, dolor sed rutrum mollis,
+augue eros dignissim erat, eu dapibus augue turpis ac sapien. Morbi at
+volutpat odio, at molestie risus. Nulla quis nulla et magna vestibulum
+euismod. Praesent suscipit quam elit, non luctus turpis rutrum
+faucibus.</p>
+
+<p>Morbi feugiat lacus rhoncus, dignissim velit nec, dignissim
+lorem. Aliquam erat volutpat. Mauris semper dictum tempus. Nulla ex
+ligula, malesuada in ornare sed, euismod vitae massa. Etiam quis erat
+quis nisl facilisis suscipit. Mauris placerat ante et auctor
+fermentum. Donec tincidunt justo sem, ullamcorper vulputate nisl
+commodo a. Vestibulum quis ex non elit porttitor semper eget quis
+tortor. Suspendisse mattis neque non elementum scelerisque. Nulla
+facilisi. Nulla non felis et justo feugiat elementum. Aenean sodales
+turpis at erat eleifend lacinia. Proin eleifend volutpat purus id
+mollis. Proin vel tellus faucibus, sagittis libero at, lobortis
+odio. Praesent quam mauris, auctor vel velit eu, convallis molestie
+nisi. Pellentesque in nunc at orci ultrices vehicula.</p>
+
+<p>Praesent nibh lectus, efficitur sed risus in, rutrum tristique
+arcu. Curabitur non efficitur elit. Phasellus eget odio iaculis,
+molestie dui eget, venenatis erat. Nulla luctus facilisis lectus, nec
+dapibus tortor rhoncus vel. Donec nec arcu elit. Nullam ut faucibus
+purus, sed ultricies diam. Pellentesque at finibus ipsum. Vestibulum
+egestas dignissim nisl, ac rhoncus risus finibus sit amet. Donec non
+feugiat ante. Donec vehicula dui a lorem imperdiet, a tempus diam
+pulvinar. Nullam congue efficitur justo, non posuere ligula sodales
+in. Ut a urna ornare, ultrices velit in, pellentesque
+lorem. Vestibulum ante ipsum primis in faucibus orci luctus et
+ultrices posuere cubilia Curae;</p>
+
+<p>Orci varius natoque penatibus et magnis dis parturient montes,
+nascetur ridiculus mus. Morbi maximus quis magna et aliquet. Nam
+bibendum fermentum tempus. Praesent iaculis tortor metus, at
+vestibulum ipsum hendrerit mattis. Proin fringilla nisl sit amet
+tincidunt blandit. Interdum et malesuada fames ac ante ipsum primis in
+faucibus. Phasellus vel lectus leo. Curabitur fringilla, arcu non
+posuere viverra, urna metus blandit augue, convallis mattis tortor dui
+vel arcu. In sit amet metus vitae ex rhoncus hendrerit.</p>
+
+<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus
+interdum maximus finibus. Ut fermentum malesuada commodo. Sed
+faucibus, sapien a mattis lobortis, magna ante efficitur mauris, quis
+sodales nibh diam nec quam. Vestibulum magna libero, tincidunt non
+erat sed, molestie pulvinar ex. Maecenas semper blandit elit, id
+suscipit nulla venenatis pretium. Integer accumsan porta felis, vitae
+placerat urna accumsan vel. Aliquam eu aliquet mi. Aenean tincidunt
+eros lectus, sit amet efficitur orci ultrices at. Morbi lobortis ex
+quis luctus rutrum. In nulla velit, elementum vitae turpis vitae,
+finibus varius massa. Morbi id libero faucibus, tempus eros et,
+ullamcorper ipsum. Sed eleifend finibus bibendum. Nullam ut nunc nec
+lacus posuere dignissim. Nunc sollicitudin vitae augue id
+vulputate. Ut ac nibh gravida, volutpat est ac, facilisis neque.</p>
+
+<p>Nam dictum leo massa, non posuere dui bibendum id. Morbi sagittis est
+non est laoreet, a sollicitudin felis aliquet. Ut cursus vel leo a
+efficitur. Proin ut pellentesque sapien, vel maximus dui. Suspendisse
+eu felis eget leo elementum efficitur. Class aptent taciti sociosqu ad
+litora torquent per conubia nostra, per inceptos himenaeos. Fusce
+lobortis velit in elit pellentesque, ut auctor ipsum dignissim. Sed
+aliquet eleifend convallis. Duis mollis, dolor sed rutrum mollis,
+augue eros dignissim erat, eu dapibus augue turpis ac sapien. Morbi at
+volutpat odio, at molestie risus. Nulla quis nulla et magna vestibulum
+euismod. Praesent suscipit quam elit, non luctus turpis rutrum
+faucibus.</p>
+
+<p>Morbi feugiat lacus rhoncus, dignissim velit nec, dignissim
+lorem. Aliquam erat volutpat. Mauris semper dictum tempus. Nulla ex
+ligula, malesuada in ornare sed, euismod vitae massa. Etiam quis erat
+quis nisl facilisis suscipit. Mauris placerat ante et auctor
+fermentum. Donec tincidunt justo sem, ullamcorper vulputate nisl
+commodo a. Vestibulum quis ex non elit porttitor semper eget quis
+tortor. Suspendisse mattis neque non elementum scelerisque. Nulla
+facilisi. Nulla non felis et justo feugiat elementum. Aenean sodales
+turpis at erat eleifend lacinia. Proin eleifend volutpat purus id
+mollis. Proin vel tellus faucibus, sagittis libero at, lobortis
+odio. Praesent quam mauris, auctor vel velit eu, convallis molestie
+nisi. Pellentesque in nunc at orci ultrices vehicula.</p>
+
+<p>Praesent nibh lectus, efficitur sed risus in, rutrum tristique
+arcu. Curabitur non efficitur elit. Phasellus eget odio iaculis,
+molestie dui eget, venenatis erat. Nulla luctus facilisis lectus, nec
+dapibus tortor rhoncus vel. Donec nec arcu elit. Nullam ut faucibus
+purus, sed ultricies diam. Pellentesque at finibus ipsum. Vestibulum
+egestas dignissim nisl, ac rhoncus risus finibus sit amet. Donec non
+feugiat ante. Donec vehicula dui a lorem imperdiet, a tempus diam
+pulvinar. Nullam congue efficitur justo, non posuere ligula sodales
+in. Ut a urna ornare, ultrices velit in, pellentesque
+lorem. Vestibulum ante ipsum primis in faucibus orci luctus et
+ultrices posuere cubilia Curae;</p>
+
+<p>Orci varius natoque penatibus et magnis dis parturient montes,
+nascetur ridiculus mus. Morbi maximus quis magna et aliquet. Nam
+bibendum fermentum tempus. Praesent iaculis tortor metus, at
+vestibulum ipsum hendrerit mattis. Proin fringilla nisl sit amet
+tincidunt blandit. Interdum et malesuada fames ac ante ipsum primis in
+faucibus. Phasellus vel lectus leo. Curabitur fringilla, arcu non
+posuere viverra, urna metus blandit augue, convallis mattis tortor dui
+vel arcu. In sit amet metus vitae ex rhoncus hendrerit.</p>
+
+<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus
+interdum maximus finibus. Ut fermentum malesuada commodo. Sed
+faucibus, sapien a mattis lobortis, magna ante efficitur mauris, quis
+sodales nibh diam nec quam. Vestibulum magna libero, tincidunt non
+erat sed, molestie pulvinar ex. Maecenas semper blandit elit, id
+suscipit nulla venenatis pretium. Integer accumsan porta felis, vitae
+placerat urna accumsan vel. Aliquam eu aliquet mi. Aenean tincidunt
+eros lectus, sit amet efficitur orci ultrices at. Morbi lobortis ex
+quis luctus rutrum. In nulla velit, elementum vitae turpis vitae,
+finibus varius massa. Morbi id libero faucibus, tempus eros et,
+ullamcorper ipsum. Sed eleifend finibus bibendum. Nullam ut nunc nec
+lacus posuere dignissim. Nunc sollicitudin vitae augue id
+vulputate. Ut ac nibh gravida, volutpat est ac, facilisis neque.</p>
+
+<p>Nam dictum leo massa, non posuere dui bibendum id. Morbi sagittis est
+non est laoreet, a sollicitudin felis aliquet. Ut cursus vel leo a
+efficitur. Proin ut pellentesque sapien, vel maximus dui. Suspendisse
+eu felis eget leo elementum efficitur. Class aptent taciti sociosqu ad
+litora torquent per conubia nostra, per inceptos himenaeos. Fusce
+lobortis velit in elit pellentesque, ut auctor ipsum dignissim. Sed
+aliquet eleifend convallis. Duis mollis, dolor sed rutrum mollis,
+augue eros dignissim erat, eu dapibus augue turpis ac sapien. Morbi at
+volutpat odio, at molestie risus. Nulla quis nulla et magna vestibulum
+euismod. Praesent suscipit quam elit, non luctus turpis rutrum
+faucibus.</p>
+
+<p>Morbi feugiat lacus rhoncus, dignissim velit nec, dignissim
+lorem. Aliquam erat volutpat. Mauris semper dictum tempus. Nulla ex
+ligula, malesuada in ornare sed, euismod vitae massa. Etiam quis erat
+quis nisl facilisis suscipit. Mauris placerat ante et auctor
+fermentum. Donec tincidunt justo sem, ullamcorper vulputate nisl
+commodo a. Vestibulum quis ex non elit porttitor semper eget quis
+tortor. Suspendisse mattis neque non elementum scelerisque. Nulla
+facilisi. Nulla non felis et justo feugiat elementum. Aenean sodales
+turpis at erat eleifend lacinia. Proin eleifend volutpat purus id
+mollis. Proin vel tellus faucibus, sagittis libero at, lobortis
+odio. Praesent quam mauris, auctor vel velit eu, convallis molestie
+nisi. Pellentesque in nunc at orci ultrices vehicula.</p>
+
+<p>Praesent nibh lectus, efficitur sed risus in, rutrum tristique
+arcu. Curabitur non efficitur elit. Phasellus eget odio iaculis,
+molestie dui eget, venenatis erat. Nulla luctus facilisis lectus, nec
+dapibus tortor rhoncus vel. Donec nec arcu elit. Nullam ut faucibus
+purus, sed ultricies diam. Pellentesque at finibus ipsum. Vestibulum
+egestas dignissim nisl, ac rhoncus risus finibus sit amet. Donec non
+feugiat ante. Donec vehicula dui a lorem imperdiet, a tempus diam
+pulvinar. Nullam congue efficitur justo, non posuere ligula sodales
+in. Ut a urna ornare, ultrices velit in, pellentesque
+lorem. Vestibulum ante ipsum primis in faucibus orci luctus et
+ultrices posuere cubilia Curae;</p>
+
+<p>Orci varius natoque penatibus et magnis dis parturient montes,
+nascetur ridiculus mus. Morbi maximus quis magna et aliquet. Nam
+bibendum fermentum tempus. Praesent iaculis tortor metus, at
+vestibulum ipsum hendrerit mattis. Proin fringilla nisl sit amet
+tincidunt blandit. Interdum et malesuada fames ac ante ipsum primis in
+faucibus. Phasellus vel lectus leo. Curabitur fringilla, arcu non
+posuere viverra, urna metus blandit augue, convallis mattis tortor dui
+vel arcu. In sit amet metus vitae ex rhoncus hendrerit.</p>
+
+<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus
+interdum maximus finibus. Ut fermentum malesuada commodo. Sed
+faucibus, sapien a mattis lobortis, magna ante efficitur mauris, quis
+sodales nibh diam nec quam. Vestibulum magna libero, tincidunt non
+erat sed, molestie pulvinar ex. Maecenas semper blandit elit, id
+suscipit nulla venenatis pretium. Integer accumsan porta felis, vitae
+placerat urna accumsan vel. Aliquam eu aliquet mi. Aenean tincidunt
+eros lectus, sit amet efficitur orci ultrices at. Morbi lobortis ex
+quis luctus rutrum. In nulla velit, elementum vitae turpis vitae,
+finibus varius massa. Morbi id libero faucibus, tempus eros et,
+ullamcorper ipsum. Sed eleifend finibus bibendum. Nullam ut nunc nec
+lacus posuere dignissim. Nunc sollicitudin vitae augue id
+vulputate. Ut ac nibh gravida, volutpat est ac, facilisis neque.</p>
+
+<p>Nam dictum leo massa, non posuere dui bibendum id. Morbi sagittis est
+non est laoreet, a sollicitudin felis aliquet. Ut cursus vel leo a
+efficitur. Proin ut pellentesque sapien, vel maximus dui. Suspendisse
+eu felis eget leo elementum efficitur. Class aptent taciti sociosqu ad
+litora torquent per conubia nostra, per inceptos himenaeos. Fusce
+lobortis velit in elit pellentesque, ut auctor ipsum dignissim. Sed
+aliquet eleifend convallis. Duis mollis, dolor sed rutrum mollis,
+augue eros dignissim erat, eu dapibus augue turpis ac sapien. Morbi at
+volutpat odio, at molestie risus. Nulla quis nulla et magna vestibulum
+euismod. Praesent suscipit quam elit, non luctus turpis rutrum
+faucibus.</p>
+
+<p>Morbi feugiat lacus rhoncus, dignissim velit nec, dignissim
+lorem. Aliquam erat volutpat. Mauris semper dictum tempus. Nulla ex
+ligula, malesuada in ornare sed, euismod vitae massa. Etiam quis erat
+quis nisl facilisis suscipit. Mauris placerat ante et auctor
+fermentum. Donec tincidunt justo sem, ullamcorper vulputate nisl
+commodo a. Vestibulum quis ex non elit porttitor semper eget quis
+tortor. Suspendisse mattis neque non elementum scelerisque. Nulla
+facilisi. Nulla non felis et justo feugiat elementum. Aenean sodales
+turpis at erat eleifend lacinia. Proin eleifend volutpat purus id
+mollis. Proin vel tellus faucibus, sagittis libero at, lobortis
+odio. Praesent quam mauris, auctor vel velit eu, convallis molestie
+nisi. Pellentesque in nunc at orci ultrices vehicula.</p>
+
+<p>Praesent nibh lectus, efficitur sed risus in, rutrum tristique
+arcu. Curabitur non efficitur elit. Phasellus eget odio iaculis,
+molestie dui eget, venenatis erat. Nulla luctus facilisis lectus, nec
+dapibus tortor rhoncus vel. Donec nec arcu elit. Nullam ut faucibus
+purus, sed ultricies diam. Pellentesque at finibus ipsum. Vestibulum
+egestas dignissim nisl, ac rhoncus risus finibus sit amet. Donec non
+feugiat ante. Donec vehicula dui a lorem imperdiet, a tempus diam
+pulvinar. Nullam congue efficitur justo, non posuere ligula sodales
+in. Ut a urna ornare, ultrices velit in, pellentesque
+lorem. Vestibulum ante ipsum primis in faucibus orci luctus et
+ultrices posuere cubilia Curae;</p>
+
+<p>Orci varius natoque penatibus et magnis dis parturient montes,
+nascetur ridiculus mus. Morbi maximus quis magna et aliquet. Nam
+bibendum fermentum tempus. Praesent iaculis tortor metus, at
+vestibulum ipsum hendrerit mattis. Proin fringilla nisl sit amet
+tincidunt blandit. Interdum et malesuada fames ac ante ipsum primis in
+faucibus. Phasellus vel lectus leo. Curabitur fringilla, arcu non
+posuere viverra, urna metus blandit augue, convallis mattis tortor dui
+vel arcu. In sit amet metus vitae ex rhoncus hendrerit.</p>
+
+<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus
+interdum maximus finibus. Ut fermentum malesuada commodo. Sed
+faucibus, sapien a mattis lobortis, magna ante efficitur mauris, quis
+sodales nibh diam nec quam. Vestibulum magna libero, tincidunt non
+erat sed, molestie pulvinar ex. Maecenas semper blandit elit, id
+suscipit nulla venenatis pretium. Integer accumsan porta felis, vitae
+placerat urna accumsan vel. Aliquam eu aliquet mi. Aenean tincidunt
+eros lectus, sit amet efficitur orci ultrices at. Morbi lobortis ex
+quis luctus rutrum. In nulla velit, elementum vitae turpis vitae,
+finibus varius massa. Morbi id libero faucibus, tempus eros et,
+ullamcorper ipsum. Sed eleifend finibus bibendum. Nullam ut nunc nec
+lacus posuere dignissim. Nunc sollicitudin vitae augue id
+vulputate. Ut ac nibh gravida, volutpat est ac, facilisis neque.</p>
+
+<p>Nam dictum leo massa, non posuere dui bibendum id. Morbi sagittis est
+non est laoreet, a sollicitudin felis aliquet. Ut cursus vel leo a
+efficitur. Proin ut pellentesque sapien, vel maximus dui. Suspendisse
+eu felis eget leo elementum efficitur. Class aptent taciti sociosqu ad
+litora torquent per conubia nostra, per inceptos himenaeos. Fusce
+lobortis velit in elit pellentesque, ut auctor ipsum dignissim. Sed
+aliquet eleifend convallis. Duis mollis, dolor sed rutrum mollis,
+augue eros dignissim erat, eu dapibus augue turpis ac sapien. Morbi at
+volutpat odio, at molestie risus. Nulla quis nulla et magna vestibulum
+euismod. Praesent suscipit quam elit, non luctus turpis rutrum
+faucibus.</p>
+
+<p>Morbi feugiat lacus rhoncus, dignissim velit nec, dignissim
+lorem. Aliquam erat volutpat. Mauris semper dictum tempus. Nulla ex
+ligula, malesuada in ornare sed, euismod vitae massa. Etiam quis erat
+quis nisl facilisis suscipit. Mauris placerat ante et auctor
+fermentum. Donec tincidunt justo sem, ullamcorper vulputate nisl
+commodo a. Vestibulum quis ex non elit porttitor semper eget quis
+tortor. Suspendisse mattis neque non elementum scelerisque. Nulla
+facilisi. Nulla non felis et justo feugiat elementum. Aenean sodales
+turpis at erat eleifend lacinia. Proin eleifend volutpat purus id
+mollis. Proin vel tellus faucibus, sagittis libero at, lobortis
+odio. Praesent quam mauris, auctor vel velit eu, convallis molestie
+nisi. Pellentesque in nunc at orci ultrices vehicula.</p>
+
+<p>Praesent nibh lectus, efficitur sed risus in, rutrum tristique
+arcu. Curabitur non efficitur elit. Phasellus eget odio iaculis,
+molestie dui eget, venenatis erat. Nulla luctus facilisis lectus, nec
+dapibus tortor rhoncus vel. Donec nec arcu elit. Nullam ut faucibus
+purus, sed ultricies diam. Pellentesque at finibus ipsum. Vestibulum
+egestas dignissim nisl, ac rhoncus risus finibus sit amet. Donec non
+feugiat ante. Donec vehicula dui a lorem imperdiet, a tempus diam
+pulvinar. Nullam congue efficitur justo, non posuere ligula sodales
+in. Ut a urna ornare, ultrices velit in, pellentesque
+lorem. Vestibulum ante ipsum primis in faucibus orci luctus et
+ultrices posuere cubilia Curae;</p>
+
+<p>Orci varius natoque penatibus et magnis dis parturient montes,
+nascetur ridiculus mus. Morbi maximus quis magna et aliquet. Nam
+bibendum fermentum tempus. Praesent iaculis tortor metus, at
+vestibulum ipsum hendrerit mattis. Proin fringilla nisl sit amet
+tincidunt blandit. Interdum et malesuada fames ac ante ipsum primis in
+faucibus. Phasellus vel lectus leo. Curabitur fringilla, arcu non
+posuere viverra, urna metus blandit augue, convallis mattis tortor dui
+vel arcu. In sit amet metus vitae ex rhoncus hendrerit.</p>
+
+</body>
+</html>
diff --git a/src/cobalt/browser/web_module.cc b/src/cobalt/browser/web_module.cc
index 729697f..150b2c8 100644
--- a/src/cobalt/browser/web_module.cc
+++ b/src/cobalt/browser/web_module.cc
@@ -797,7 +797,6 @@
base::Bind(&WebModule::Impl::global_environment, base::Unretained(this)),
base::Bind(&WebModule::Impl::InjectKeyboardEvent, base::Unretained(this)),
base::Bind(&WebModule::Impl::InjectPointerEvent, base::Unretained(this)),
- base::Bind(&WebModule::Impl::InjectWheelEvent, base::Unretained(this)),
base::MessageLoopProxy::current()));
}
#endif // defined(ENABLE_WEBDRIVER)
diff --git a/src/cobalt/browser/web_module_stat_tracker.cc b/src/cobalt/browser/web_module_stat_tracker.cc
index 4151969..187c076 100644
--- a/src/cobalt/browser/web_module_stat_tracker.cc
+++ b/src/cobalt/browser/web_module_stat_tracker.cc
@@ -73,6 +73,10 @@
current_event_type_ = kEventTypeKeyDown;
} else if (event->type() == base::Tokens::keyup()) {
current_event_type_ = kEventTypeKeyUp;
+ } else if (event->type() == base::Tokens::pointerdown()) {
+ current_event_type_ = kEventTypePointerDown;
+ } else if (event->type() == base::Tokens::pointerup()) {
+ current_event_type_ = kEventTypePointerUp;
} else {
current_event_type_ = kEventTypeInvalid;
}
@@ -399,6 +403,10 @@
return "KeyDown";
case WebModuleStatTracker::kEventTypeKeyUp:
return "KeyUp";
+ case WebModuleStatTracker::kEventTypePointerDown:
+ return "PointerDown";
+ case WebModuleStatTracker::kEventTypePointerUp:
+ return "PointerUp";
case WebModuleStatTracker::kEventTypeInvalid:
case WebModuleStatTracker::kNumEventTypes:
default:
diff --git a/src/cobalt/browser/web_module_stat_tracker.h b/src/cobalt/browser/web_module_stat_tracker.h
index 08ae658..79045e3 100644
--- a/src/cobalt/browser/web_module_stat_tracker.h
+++ b/src/cobalt/browser/web_module_stat_tracker.h
@@ -67,6 +67,8 @@
kEventTypeInvalid = -1,
kEventTypeKeyDown,
kEventTypeKeyUp,
+ kEventTypePointerDown,
+ kEventTypePointerUp,
kNumEventTypes,
};
diff --git a/src/cobalt/build/build.id b/src/cobalt/build/build.id
index 6b70bdc..ef49ee3 100644
--- a/src/cobalt/build/build.id
+++ b/src/cobalt/build/build.id
@@ -1 +1 @@
-95843
\ No newline at end of file
+97306
\ No newline at end of file
diff --git a/src/cobalt/build/config/BUILD.gn b/src/cobalt/build/config/BUILD.gn
index f0af403..3851714 100644
--- a/src/cobalt/build/config/BUILD.gn
+++ b/src/cobalt/build/config/BUILD.gn
@@ -156,7 +156,6 @@
"ENABLE_PARTIAL_LAYOUT_CONTROL",
"ENABLE_TEST_RUNNER",
"__LB_SHELL__ENABLE_SCREENSHOT__",
- "__LB_SHELL__FOR_QA__",
"NDEBUG",
]
}
@@ -167,7 +166,6 @@
"COBALT_BUILD_TYPE_GOLD",
"COBALT_FORCE_CSP",
"COBALT_FORCE_HTTPS",
- "__LB_SHELL__FOR_RELEASE__",
"NDEBUG",
"TRACING_DISABLED",
]
diff --git a/src/cobalt/build/config/base.gypi b/src/cobalt/build/config/base.gypi
index 77cba3a..4a1dcad 100644
--- a/src/cobalt/build/config/base.gypi
+++ b/src/cobalt/build/config/base.gypi
@@ -317,6 +317,10 @@
# Blitter API).
'skia_cache_size_in_bytes%': 4 * 1024 * 1024,
+ # Determines whether shaders for skia will be preloaded on first draw
+ # call.
+ 'skia_preload_shaders%': 0,
+
# Determines the capacity of the scratch surface cache. The scratch
# surface cache facilitates the reuse of temporary offscreen surfaces
# within a single frame. This setting is only relevant when using the
@@ -391,12 +395,12 @@
'skia_glyph_atlas_width%': '-1',
'skia_glyph_atlas_height%': '-1',
- # Determines the size of garbage collection threshold. After this many bytes
- # have been allocated, the mozjs garbage collector will run. Lowering this
- # has been found to reduce performance and decrease JavaScript memory usage.
- # For example, we have measured on at least one platform that performance
- # becomes 7% worse on average in certain cases when adjusting this number
- # from 8MB to 1MB.
+ # Determines the size of garbage collection threshold. After this many
+ # bytes have been allocated, the SpiderMonkey garbage collector will run.
+ # Lowering this has been found to reduce performance and decrease
+ # JavaScript memory usage. For example, we have measured on at least one
+ # platform that performance becomes 7% worse on average in certain cases
+ # when adjusting this number from 8MB to 1MB.
'mozjs_garbage_collection_threshold_in_bytes%': 8 * 1024 * 1024,
# Max Cobalt CPU usage specifies that the cobalt program should
@@ -761,7 +765,6 @@
'ENABLE_PARTIAL_LAYOUT_CONTROL',
'ENABLE_TEST_RUNNER',
'__LB_SHELL__ENABLE_SCREENSHOT__',
- '__LB_SHELL__FOR_QA__',
'NDEBUG',
],
}, # end of devel_base
@@ -777,7 +780,6 @@
'COBALT_BUILD_TYPE_GOLD',
'COBALT_FORCE_CSP',
'COBALT_FORCE_HTTPS',
- '__LB_SHELL__FOR_RELEASE__',
'NDEBUG',
'TRACING_DISABLED',
],
diff --git a/src/cobalt/cssom/scale_function.h b/src/cobalt/cssom/scale_function.h
index ae84a80..69da6dc 100644
--- a/src/cobalt/cssom/scale_function.h
+++ b/src/cobalt/cssom/scale_function.h
@@ -40,6 +40,12 @@
float y_factor() const { return y_factor_; }
std::string ToString() const OVERRIDE {
+ if (y_factor_ == 1.0f) {
+ return base::StringPrintf("scaleX(%.7g)", x_factor_);
+ }
+ if (x_factor_ == 1.0f) {
+ return base::StringPrintf("scaleY(%.7g)", y_factor_);
+ }
return base::StringPrintf("scale(%.7g, %.7g)", x_factor_, y_factor_);
}
diff --git a/src/cobalt/dom/document.cc b/src/cobalt/dom/document.cc
index 85603a2..b534312 100644
--- a/src/cobalt/dom/document.cc
+++ b/src/cobalt/dom/document.cc
@@ -57,6 +57,7 @@
#include "cobalt/dom/node_descendants_iterator.h"
#include "cobalt/dom/text.h"
#include "cobalt/dom/ui_event.h"
+#include "cobalt/dom/wheel_event.h"
#include "cobalt/dom/window.h"
#include "cobalt/script/global_environment.h"
#include "nb/memory_scope.h"
@@ -91,7 +92,8 @@
user_agent_style_sheet_(options.user_agent_style_sheet),
initial_computed_style_declaration_(
new cssom::CSSComputedStyleDeclaration()),
- dom_max_element_depth_(options.dom_max_element_depth) {
+ dom_max_element_depth_(options.dom_max_element_depth),
+ render_postponed_(false) {
DCHECK(html_element_context_);
DCHECK(options.url.is_empty() || options.url.is_valid());
html_element_context_->page_visibility_state()->AddObserver(this);
@@ -243,6 +245,10 @@
} else if (base::strcasecmp(interface_name.c_str(), "uievent") == 0 ||
base::strcasecmp(interface_name.c_str(), "uievents") == 0) {
return new UIEvent(Event::Uninitialized);
+ } else if (base::strcasecmp(interface_name.c_str(), "wheelevent") == 0) {
+ // This not in the spec, but commonly implemented to create a WheelEvent.
+ // https://www.w3.org/TR/2016/WD-uievents-20160804/#interface-wheelevent
+ return new WheelEvent(Event::Uninitialized);
} else if (base::strcasecmp(interface_name.c_str(), "customevent") == 0) {
return new CustomEvent(Event::Uninitialized);
}
@@ -900,6 +906,14 @@
tracer->Trace(initial_computed_style_declaration_);
}
+void Document::set_render_postponed(bool render_postponed) {
+ bool unpostponed = render_postponed_ && !render_postponed;
+ render_postponed_ = render_postponed;
+ if (unpostponed) {
+ RecordMutation();
+ }
+}
+
void Document::DispatchOnLoadEvent() {
TRACE_EVENT0("cobalt::dom", "Document::DispatchOnLoadEvent()");
diff --git a/src/cobalt/dom/document.h b/src/cobalt/dom/document.h
index 5291806..cf5ef5b 100644
--- a/src/cobalt/dom/document.h
+++ b/src/cobalt/dom/document.h
@@ -390,6 +390,11 @@
PointerState* pointer_state() { return &pointer_state_; }
+ // render_postponed is a Cobalt-specific Web API.
+ bool render_postponed() const { return render_postponed_; }
+
+ void set_render_postponed(bool render_postponed);
+
DEFINE_WRAPPABLE_TYPE(Document);
protected:
@@ -495,6 +500,9 @@
// Various state related to pointer and mouse support.
PointerState pointer_state_;
+
+ // Whether or not rendering is currently postponed.
+ bool render_postponed_;
};
} // namespace dom
diff --git a/src/cobalt/dom/document_cobalt.idl b/src/cobalt/dom/document_cobalt.idl
new file mode 100644
index 0000000..3d5adba
--- /dev/null
+++ b/src/cobalt/dom/document_cobalt.idl
@@ -0,0 +1,19 @@
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Custom API for postponing and resuming production of render trees.
+
+partial interface Document {
+ attribute boolean renderPostponed;
+};
diff --git a/src/cobalt/dom/html_link_element.cc b/src/cobalt/dom/html_link_element.cc
index 224cc16..c04e519 100644
--- a/src/cobalt/dom/html_link_element.cc
+++ b/src/cobalt/dom/html_link_element.cc
@@ -193,10 +193,12 @@
// named error at the link element.
PostToDispatchEvent(FROM_HERE, base::Tokens::error());
- // The element must delay the load event of the element's document until all
- // the attempts to obtain the resource and its critical subresources are
- // complete.
- node_document()->DecreaseLoadingCounterAndMaybeDispatchLoadEvent();
+ if (IsRelContentCriticalResource(rel())) {
+ // The element must delay the load event of the element's document until all
+ // the attempts to obtain the resource and its critical subresources are
+ // complete.
+ node_document()->DecreaseLoadingCounterAndMaybeDispatchLoadEvent();
+ }
MessageLoop::current()->PostTask(
FROM_HERE, base::Bind(&HTMLLinkElement::ReleaseLoader, this));
diff --git a/src/cobalt/dom/html_media_element.cc b/src/cobalt/dom/html_media_element.cc
index 779f7d3..429e3e3 100644
--- a/src/cobalt/dom/html_media_element.cc
+++ b/src/cobalt/dom/html_media_element.cc
@@ -1662,7 +1662,13 @@
"HTMLMediaElement or not. Perhaps the HTMLMediaElement is "
"not attached to the document? Falling back to checking "
"the inline style instead.";
- filter = style()->data()->GetPropertyValue(cssom::kFilterProperty);
+ if (style() && style()->data()) {
+ filter = style()->data()->GetPropertyValue(cssom::kFilterProperty);
+ }
+ }
+
+ if (!filter) {
+ return false;
}
const cssom::MapToMeshFunction* map_to_mesh_filter =
diff --git a/src/cobalt/dom/wheel_event.cc b/src/cobalt/dom/wheel_event.cc
index 7f991fe..9aa48fc 100644
--- a/src/cobalt/dom/wheel_event.cc
+++ b/src/cobalt/dom/wheel_event.cc
@@ -42,6 +42,13 @@
delta_z_(init_dict.delta_z()),
delta_mode_(init_dict.delta_mode()) {}
+WheelEvent::WheelEvent(UninitializedFlag uninitialized_flag)
+ : MouseEvent(uninitialized_flag),
+ delta_x_(0),
+ delta_y_(0),
+ delta_z_(0),
+ delta_mode_(kDomDeltaPixel) {}
+
void WheelEvent::InitWheelEvent(
const std::string& type, bool bubbles, bool cancelable,
const scoped_refptr<Window>& view, int32 detail, int32 screen_x,
diff --git a/src/cobalt/dom/wheel_event.h b/src/cobalt/dom/wheel_event.h
index a421c84..02f8872 100644
--- a/src/cobalt/dom/wheel_event.h
+++ b/src/cobalt/dom/wheel_event.h
@@ -46,10 +46,8 @@
WheelEvent(base::Token type, const scoped_refptr<Window>& view,
const WheelEventInit& init_dict);
- double delta_x() const { return delta_x_; }
- double delta_y() const { return delta_y_; }
- double delta_z() const { return delta_z_; }
- DeltaMode delta_mode() const { return delta_mode_; }
+ // Creates an event with its "initialized flag" unset.
+ explicit WheelEvent(UninitializedFlag uninitialized_flag);
void InitWheelEvent(const std::string& type, bool bubbles, bool cancelable,
const scoped_refptr<Window>& view, int32 detail,
@@ -59,6 +57,11 @@
const std::string& modifierslist, double delta_x,
double delta_y, double delta_z, uint32 delta_mode);
+ double delta_x() const { return delta_x_; }
+ double delta_y() const { return delta_y_; }
+ double delta_z() const { return delta_z_; }
+ DeltaMode delta_mode() const { return delta_mode_; }
+
DEFINE_WRAPPABLE_TYPE(WheelEvent);
private:
diff --git a/src/cobalt/input/input_device_manager_desktop.cc b/src/cobalt/input/input_device_manager_desktop.cc
index 91213b7..d49fb15 100644
--- a/src/cobalt/input/input_device_manager_desktop.cc
+++ b/src/cobalt/input/input_device_manager_desktop.cc
@@ -100,33 +100,36 @@
event->set_meta_key(modifiers & system_window::InputEvent::kMetaKey);
}
-void UpdateMouseEventInitButton(int key_code, MouseEventInit* event) {
+void UpdateMouseEventInitButtons(const system_window::InputEvent* input_event,
+ MouseEventInit* event) {
// The value of the button attribute MUST be as follows:
// https://www.w3.org/TR/uievents/#ref-for-dom-mouseevent-button-1
- if (key_code == kSbKeyMouse1) {
- // 0 MUST indicate the primary button of the device (in general, the left
- // button or the only button on single-button devices, used to activate a
- // user interface control or select text) or the un-initialized value.
- event->set_button(0);
- event->set_buttons(1);
- } else if (key_code == kSbKeyMouse2) {
- // 1 MUST indicate the auxiliary button (in general, the middle button,
- // often combined with a mouse wheel).
- event->set_button(1);
- event->set_buttons(2);
- } else if (key_code == kSbKeyMouse3) {
- // 2 MUST indicate the secondary button (in general, the right button, often
- // used to display a context menu).
- event->set_button(2);
- event->set_buttons(4);
+ switch (input_event->key_code()) {
+ case kSbKeyMouse1:
+ // 0 MUST indicate the primary button of the device (in general, the left
+ // button or the only button on single-button devices, used to activate a
+ // user interface control or select text) or the un-initialized value.
+ event->set_button(0);
+ break;
+ case kSbKeyMouse2:
+ // 1 MUST indicate the auxiliary button (in general, the middle button,
+ // often combined with a mouse wheel).
+ event->set_button(1);
+ break;
+ case kSbKeyMouse3:
+ // 2 MUST indicate the secondary button (in general, the right button,
+ // often used to display a context menu).
+ event->set_button(2);
+ break;
+ default:
+ break;
}
-}
-void UpdateMouseEventInitButtons(uint32 modifiers, MouseEventInit* event) {
// The value of the buttons attribute MUST be as follows:
// https://www.w3.org/TR/uievents/#ref-for-dom-mouseevent-buttons-3
// 0 MUST indicate no button is currently active.
+ uint32 modifiers = input_event->modifiers();
uint16 buttons = 0;
if (modifiers & system_window::InputEvent::kLeftButton) {
// 1 MUST indicate the primary button of the device (in general, the left
@@ -144,14 +147,34 @@
// often combined with a mouse wheel).
buttons |= 4;
}
- event->set_buttons(event->buttons() | buttons);
+
+ // The buttons attribute reflects the state of the mouse's buttons for any
+ // MouseEvent object (while it is being dispatched).
+ // https://www.w3.org/TR/2016/WD-uievents-20160804/#ref-for-dom-mouseevent-buttons-2
+ switch (input_event->type()) {
+ case system_window::InputEvent::kTouchpadDown:
+ case system_window::InputEvent::kPointerDown:
+ // For 'down' events, ensure that the buttons state includes the currently
+ // reported button press.
+ buttons |= 1 << event->button();
+ break;
+ case system_window::InputEvent::kTouchpadUp:
+ case system_window::InputEvent::kPointerUp:
+ // For 'up' events, ensure that the buttons state excludes the currently
+ // reported button press.
+ buttons &= ~(1 << event->button());
+ break;
+ default:
+ break;
+ }
+
+ event->set_buttons(buttons);
}
void UpdateMouseEventInit(const system_window::InputEvent* input_event,
dom::MouseEventInit* mouse_event) {
UpdateEventModifierInit(input_event, mouse_event);
- UpdateMouseEventInitButton(input_event->key_code(), mouse_event);
- UpdateMouseEventInitButtons(input_event->modifiers(), mouse_event);
+ UpdateMouseEventInitButtons(input_event, mouse_event);
const math::PointF& position = input_event->position();
mouse_event->set_screen_x(static_cast<float>(position.x()));
@@ -164,7 +187,6 @@
float value_or(float value, float default_value) {
return std::isnan(value) ? default_value : value;
}
-
} // namespace
void InputDeviceManagerDesktop::HandleKeyboardEvent(
diff --git a/src/cobalt/layout/layout_manager.cc b/src/cobalt/layout/layout_manager.cc
index 8f38f9e..2b48e1f 100644
--- a/src/cobalt/layout/layout_manager.cc
+++ b/src/cobalt/layout/layout_manager.cc
@@ -369,46 +369,33 @@
are_computed_styles_and_box_tree_dirty_ = false;
}
- // If no render tree has been produced yet, check if html, head, and
- // body display should block the first render tree.
- if (!produced_render_tree_) {
- bool displayed_html = document->html()->IsDisplayed();
- if (!displayed_html) {
- return;
- }
- bool displayed_head = true;
- if (document->head()) {
- displayed_head = document->head();
- }
- bool displayed_body = true;
- if (document->body()) {
- displayed_body = document->body();
- }
- if (!displayed_head && !displayed_body) {
- return;
- }
- }
+ // If no render tree has been produced yet, check if html display
+ // should prevent the first render tree.
+ bool display_none_prevents_render =
+ !produced_render_tree_ && !document->html()->IsDisplayed();
- scoped_refptr<render_tree::Node> render_tree_root =
- layout::GenerateRenderTreeFromBoxTree(used_style_provider_.get(),
- layout_stat_tracker_,
- &initial_containing_block_);
- bool run_on_render_tree_produced_callback = true;
- produced_render_tree_ = true;
+ if (!document->render_postponed() && !display_none_prevents_render) {
+ scoped_refptr<render_tree::Node> render_tree_root =
+ layout::GenerateRenderTreeFromBoxTree(used_style_provider_.get(),
+ layout_stat_tracker_,
+ &initial_containing_block_);
+ bool run_on_render_tree_produced_callback = true;
+ produced_render_tree_ = true;
#if defined(ENABLE_TEST_RUNNER)
- if (layout_trigger_ == kTestRunnerMode &&
- window_->test_runner()->should_wait()) {
- run_on_render_tree_produced_callback = false;
- }
+ if (layout_trigger_ == kTestRunnerMode &&
+ window_->test_runner()->should_wait()) {
+ run_on_render_tree_produced_callback = false;
+ }
#endif // ENABLE_TEST_RUNNER
- if (run_on_render_tree_produced_callback) {
- on_render_tree_produced_callback_.Run(LayoutResults(
- render_tree_root, base::TimeDelta::FromMillisecondsD(
- *document->timeline()->current_time())));
- }
+ if (run_on_render_tree_produced_callback) {
+ on_render_tree_produced_callback_.Run(LayoutResults(
+ render_tree_root, base::TimeDelta::FromMillisecondsD(
+ *document->timeline()->current_time())));
+ }
- is_render_tree_pending_ = false;
+ is_render_tree_pending_ = false;
+ }
TRACE_EVENT_END0("cobalt::layout", kBenchmarkStatLayout);
}
diff --git a/src/cobalt/math/matrix3_f.cc b/src/cobalt/math/matrix3_f.cc
index 929340e..4abbe27 100644
--- a/src/cobalt/math/matrix3_f.cc
+++ b/src/cobalt/math/matrix3_f.cc
@@ -273,6 +273,7 @@
float x = rhs.x() * data_[M00] + rhs.y() * data_[M01] + data_[M02];
float y = rhs.x() * data_[M10] + rhs.y() * data_[M11] + data_[M12];
float z = rhs.x() * data_[M20] + rhs.y() * data_[M21] + data_[M22];
+ DCHECK_NE(z, 0.f);
return PointF(x / z, y / z);
}
diff --git a/src/cobalt/media/base/pipeline.h b/src/cobalt/media/base/pipeline.h
index 1853ae5..fafb88f 100644
--- a/src/cobalt/media/base/pipeline.h
+++ b/src/cobalt/media/base/pipeline.h
@@ -25,6 +25,7 @@
#include "cobalt/media/base/media_export.h"
#include "cobalt/media/base/pipeline_status.h"
#include "cobalt/media/base/ranges.h"
+#include "cobalt/media/base/video_dumper.h"
#include "starboard/drm.h"
#include "ui/gfx/rect.h"
#include "ui/gfx/size.h"
@@ -40,8 +41,6 @@
typedef void* PipelineWindow;
#endif // defined(COBALT_USE_SBPLAYER_PIPELINE)
-// #define COBALT_MEDIA_ENABLE_VIDEO_DUMPER 1
-
namespace cobalt {
namespace media {
diff --git a/src/cobalt/media/base/starboard_player.cc b/src/cobalt/media/base/starboard_player.cc
index 9cf382a..b3e9363 100644
--- a/src/cobalt/media/base/starboard_player.cc
+++ b/src/cobalt/media/base/starboard_player.cc
@@ -14,8 +14,6 @@
#include "cobalt/media/base/starboard_player.h"
-#include <algorithm>
-
#include "base/bind.h"
#include "base/compiler_specific.h"
#include "base/debug/trace_event.h"
@@ -387,33 +385,8 @@
TRACE_EVENT0("cobalt::media", "StarboardPlayer::CreatePlayer");
DCHECK(message_loop_->BelongsToCurrentThread());
- SbMediaAudioHeader audio_header;
- // TODO: Make this work with non AAC audio.
- audio_header.format_tag = 0x00ff;
- audio_header.number_of_channels =
- ChannelLayoutToChannelCount(audio_config_.channel_layout());
- audio_header.samples_per_second = audio_config_.samples_per_second();
- audio_header.average_bytes_per_second = 1;
- audio_header.block_alignment = 4;
- audio_header.bits_per_sample = audio_config_.bits_per_channel();
-#if SB_API_VERSION >= SB_AUDIO_SPECIFIC_CONFIG_AS_POINTER
- audio_header.audio_specific_config_size =
- static_cast<uint16_t>(audio_config_.extra_data().size());
- if (audio_header.audio_specific_config_size == 0) {
- audio_header.audio_specific_config = NULL;
- } else {
- audio_header.audio_specific_config = &audio_config_.extra_data()[0];
- }
-#else // SB_API_VERSION >= SB_AUDIO_SPECIFIC_CONFIG_AS_POINTER
- audio_header.audio_specific_config_size = static_cast<uint16_t>(
- std::min(audio_config_.extra_data().size(),
- sizeof(audio_header.audio_specific_config)));
- if (audio_header.audio_specific_config_size > 0) {
- SbMemoryCopy(audio_header.audio_specific_config,
- &audio_config_.extra_data()[0],
- audio_header.audio_specific_config_size);
- }
-#endif // SB_API_VERSION >= SB_AUDIO_SPECIFIC_CONFIG_AS_POINTER
+ SbMediaAudioHeader audio_header =
+ MediaAudioConfigToSbMediaAudioHeader(audio_config_);
SbMediaAudioCodec audio_codec =
MediaAudioCodecToSbMediaAudioCodec(audio_config_.codec());
diff --git a/src/cobalt/media/base/starboard_utils.cc b/src/cobalt/media/base/starboard_utils.cc
index bc6905a..f184538 100644
--- a/src/cobalt/media/base/starboard_utils.cc
+++ b/src/cobalt/media/base/starboard_utils.cc
@@ -14,6 +14,8 @@
#include "cobalt/media/base/starboard_utils.h"
+#include <algorithm>
+
#include "base/logging.h"
#include "starboard/memory.h"
@@ -53,6 +55,41 @@
return kSbMediaVideoCodecNone;
}
+SbMediaAudioHeader MediaAudioConfigToSbMediaAudioHeader(
+ const AudioDecoderConfig& audio_decoder_config) {
+ SbMediaAudioHeader audio_header;
+
+ // TODO: Make this work with non AAC audio.
+ audio_header.format_tag = 0x00ff;
+ audio_header.number_of_channels =
+ ChannelLayoutToChannelCount(audio_decoder_config.channel_layout());
+ audio_header.samples_per_second = audio_decoder_config.samples_per_second();
+ audio_header.average_bytes_per_second = 1;
+ audio_header.block_alignment = 4;
+ audio_header.bits_per_sample = audio_decoder_config.bits_per_channel();
+
+#if SB_API_VERSION >= SB_AUDIO_SPECIFIC_CONFIG_AS_POINTER
+ audio_header.audio_specific_config_size =
+ static_cast<uint16_t>(audio_decoder_config.extra_data().size());
+ if (audio_header.audio_specific_config_size == 0) {
+ audio_header.audio_specific_config = NULL;
+ } else {
+ audio_header.audio_specific_config = &audio_decoder_config.extra_data()[0];
+ }
+#else // SB_API_VERSION >= SB_AUDIO_SPECIFIC_CONFIG_AS_POINTER
+ audio_header.audio_specific_config_size = static_cast<uint16_t>(
+ std::min(audio_decoder_config.extra_data().size(),
+ sizeof(audio_header.audio_specific_config)));
+ if (audio_header.audio_specific_config_size > 0) {
+ SbMemoryCopy(audio_header.audio_specific_config,
+ &audio_decoder_config.extra_data()[0],
+ audio_header.audio_specific_config_size);
+ }
+#endif // SB_API_VERSION >= SB_AUDIO_SPECIFIC_CONFIG_AS_POINTER
+
+ return audio_header;
+}
+
TimeDelta SbMediaTimeToTimeDelta(SbMediaTime timestamp) {
return TimeDelta::FromMicroseconds(timestamp * Time::kMicrosecondsPerSecond /
kSbMediaTimeSecond);
diff --git a/src/cobalt/media/base/starboard_utils.h b/src/cobalt/media/base/starboard_utils.h
index 04196b5..aa13513 100644
--- a/src/cobalt/media/base/starboard_utils.h
+++ b/src/cobalt/media/base/starboard_utils.h
@@ -29,6 +29,9 @@
SbMediaAudioCodec MediaAudioCodecToSbMediaAudioCodec(AudioCodec codec);
SbMediaVideoCodec MediaVideoCodecToSbMediaVideoCodec(VideoCodec codec);
+SbMediaAudioHeader MediaAudioConfigToSbMediaAudioHeader(
+ const AudioDecoderConfig& audio_decoder_config);
+
base::TimeDelta SbMediaTimeToTimeDelta(SbMediaTime timestamp);
SbMediaTime TimeDeltaToSbMediaTime(base::TimeDelta timedelta);
diff --git a/src/cobalt/media/base/video_dmp_reader.cc b/src/cobalt/media/base/video_dmp_reader.cc
new file mode 100644
index 0000000..2566b74
--- /dev/null
+++ b/src/cobalt/media/base/video_dmp_reader.cc
@@ -0,0 +1,139 @@
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// This file is deliberately not using any Cobalt/Starboard specific API so it
+// can be used in an independent application.
+#include "cobalt/media/base/video_dmp_reader.h"
+
+#include <algorithm>
+
+namespace {
+
+template <typename T>
+bool ReadUnchecked(VideoDmpReader* reader, bool reverse_byte_order, T* value) {
+ if (!value) {
+ reader->ReportFatalError();
+ return false;
+ }
+
+ int bytes_to_read = static_cast<int>(sizeof(*value));
+ int bytes_read = reader->Read(value, bytes_to_read);
+
+ if (reverse_byte_order) {
+ std::reverse(reinterpret_cast<uint8_t*>(value),
+ reinterpret_cast<uint8_t*>(value + 1));
+ }
+
+ return bytes_to_read == bytes_read;
+}
+template <typename T>
+void ReadChecked(VideoDmpReader* reader, bool reverse_byte_order, T* value) {
+ if (!ReadUnchecked(reader, reverse_byte_order, value)) {
+ reader->ReportFatalError();
+ }
+}
+void ReadChecked(VideoDmpReader* reader, bool reverse_byte_order,
+ std::vector<uint8_t>* value) {
+ if (!value) {
+ reader->ReportFatalError();
+ }
+
+ uint32_t size;
+ ReadChecked(reader, reverse_byte_order, &size);
+
+ value->resize(size);
+
+ if (size == 0) {
+ return;
+ }
+
+ int bytes_read = reader->Read(value->data(), size);
+ if (bytes_read != size) {
+ reader->ReportFatalError();
+ }
+}
+
+VideoDmpReader::AccessUnit ReadAccessUnitChecked(
+ VideoDmpReader* reader, bool reverse_byte_order,
+ VideoDmpReader::AccessUnitType access_unit_type) {
+ int64_t timestamp;
+ ReadChecked(reader, reverse_byte_order, ×tamp);
+
+ std::vector<uint8_t> key_id, iv;
+ ReadChecked(reader, reverse_byte_order, &key_id);
+ ReadChecked(reader, reverse_byte_order, &iv);
+
+ uint32_t subsample_count;
+ ReadChecked(reader, reverse_byte_order, &subsample_count);
+
+ VideoDmpReader::Subsamples subsamples(subsample_count);
+ for (auto& subsample : subsamples) {
+ ReadChecked(reader, reverse_byte_order, &subsample.clear_bytes);
+ ReadChecked(reader, reverse_byte_order, &subsample.encrypted_bytes);
+ }
+
+ std::vector<uint8_t> data;
+ ReadChecked(reader, reverse_byte_order, &data);
+
+ return VideoDmpReader::AccessUnit(access_unit_type, timestamp, key_id, iv,
+ subsamples, std::move(data));
+}
+
+} // namespace
+
+void VideoDmpReader::Parse() {
+ reverse_byte_order_ = false;
+ uint32_t bom;
+ ReadChecked(this, reverse_byte_order_, &bom);
+ if (bom != kBOM) {
+ std::reverse(reinterpret_cast<uint8_t*>(&bom),
+ reinterpret_cast<uint8_t*>(&bom + 1));
+ if (bom != kBOM) {
+ ReportFatalError();
+ return;
+ }
+ reverse_byte_order_ = true;
+ }
+ uint32_t type;
+ EmeInitData eme_init_data;
+ while (ReadUnchecked(this, reverse_byte_order_, &type)) {
+ uint32_t size;
+ switch (type) {
+ case kRecordTypeAudioConfig:
+ ReadChecked(this, reverse_byte_order_, &size);
+ if (size != 0) {
+ ReportFatalError();
+ }
+ break;
+ case kRecordTypeVideoConfig:
+ ReadChecked(this, reverse_byte_order_, &size);
+ if (size != 0) {
+ ReportFatalError();
+ }
+ break;
+ case kRecordTypeEmeInitData:
+ ReadChecked(this, reverse_byte_order_, &eme_init_data);
+ eme_init_datas_.push_back(eme_init_data);
+ break;
+ case kRecordTypeAudioAccessUnit:
+ access_units_.push_back(ReadAccessUnitChecked(this, reverse_byte_order_,
+ kAccessUnitTypeAudio));
+ break;
+ case kRecordTypeVideoAccessUnit:
+ access_units_.push_back(ReadAccessUnitChecked(this, reverse_byte_order_,
+ kAccessUnitTypeVideo));
+ break;
+ }
+ }
+}
diff --git a/src/cobalt/media/base/video_dmp_reader.h b/src/cobalt/media/base/video_dmp_reader.h
index 51c9f14..6cd4486 100644
--- a/src/cobalt/media/base/video_dmp_reader.h
+++ b/src/cobalt/media/base/video_dmp_reader.h
@@ -12,22 +12,42 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#ifndef COBALT_MEDIA_BASE_VIDEO_DMP_READER_H_
-#define COBALT_MEDIA_BASE_VIDEO_DMP_READER_H_
+// TODO: Move this into Starboard
// This file is deliberately not using any Cobalt/Starboard specific API so it
// can be used in an independent application.
+#ifndef COBALT_MEDIA_BASE_VIDEO_DMP_READER_H_
+#define COBALT_MEDIA_BASE_VIDEO_DMP_READER_H_
-#include <algorithm>
#include <string>
#include <vector>
// File: <BOM> <Record>*
// BOM: 0x76543210
-// Record: <4 bytes type> + <4 bytes size> + <|size| bytes binary data>
-// type: 0: audio config, 1: video config, 2: eme init data,
-// 3: audio access unit, 4: video access unit.
+// Record: <4 bytes fourcc type> + <4 bytes size> + <|size| bytes binary data>
+//
+// audio config:
+// fourcc type: 'acfg'
+// 2 bytes audio codec type in SbMediaAudioCodec
+// 2 bytes format_tag
+// 2 bytes number_of_channels
+// 4 bytes samples_per_second
+// 4 bytes average_bytes_per_second
+// 2 bytes block_alignment
+// 2 bytes bits_per_sample
+// 2 bytes audio_specific_config_size
+// |audio_specific_config_size| bytes audio specific config
+//
+// video config:
+// fourcc type: 'vcfg'
+// 2 bytes video codec type in SbMediaVideoCodec
+//
+// eme init data
+// fourcc type: 'emei'
+// 4 bytes size
+// |size| bytes eme init data
// audio/video access unit;
+// fourcc type: 'adat'/'vdat'
// <8 bytes time stamp in microseconds>
// <4 bytes size of key_id> + |size| bytes of key id
// <4 bytes size of iv> + |size| bytes of iv
@@ -38,11 +58,11 @@
class VideoDmpReader {
public:
enum {
- kRecordTypeAudioConfig,
- kRecordTypeVideoConfig,
- kRecordTypeEmeInitData,
- kRecordTypeAudioAccessUnit,
- kRecordTypeVideoAccessUnit,
+ kRecordTypeAudioConfig = 'acfg',
+ kRecordTypeVideoConfig = 'vcfg',
+ kRecordTypeEmeInitData = 'emei',
+ kRecordTypeAudioAccessUnit = 'adat',
+ kRecordTypeVideoAccessUnit = 'vdat',
};
enum AccessUnitType { kAccessUnitTypeAudio, kAccessUnitTypeVideo };
@@ -98,119 +118,9 @@
}
const std::vector<AccessUnit>& access_units() const { return access_units_; }
- void Parse() {
- uint32_t bom;
- ReadChecked(&bom);
- if (bom != kBOM) {
- std::reverse(reinterpret_cast<uint8_t*>(&bom),
- reinterpret_cast<uint8_t*>(&bom + 1));
- if (bom != kBOM) {
- ReportFatalError();
- return;
- }
- reverse_byte_order_ = true;
- }
- uint32_t type;
- EmeInitData eme_init_data;
- while (ReadUnchecked(&type)) {
- uint32_t size;
- switch (type) {
- case kRecordTypeAudioConfig:
- ReadChecked(&size);
- if (size != 0) {
- ReportFatalError();
- }
- break;
- case kRecordTypeVideoConfig:
- ReadChecked(&size);
- if (size != 0) {
- ReportFatalError();
- }
- break;
- case kRecordTypeEmeInitData:
- ReadChecked(&eme_init_data);
- eme_init_datas_.push_back(eme_init_data);
- break;
- case kRecordTypeAudioAccessUnit:
- ReadChecked(&size);
- ReadAndAppendAccessUnitChecked(kAccessUnitTypeAudio);
- break;
- case kRecordTypeVideoAccessUnit:
- ReadChecked(&size);
- ReadAndAppendAccessUnitChecked(kAccessUnitTypeVideo);
- break;
- }
- }
- }
+ void Parse();
private:
- void ReadAndAppendAccessUnitChecked(AccessUnitType access_unit_type) {
- int64_t timestamp;
- ReadChecked(×tamp);
-
- std::vector<uint8_t> key_id, iv;
- ReadChecked(&key_id);
- ReadChecked(&iv);
-
- uint32_t subsample_count;
- ReadChecked(&subsample_count);
-
- Subsamples subsamples(subsample_count);
- for (auto& subsample : subsamples) {
- ReadChecked(&subsample.clear_bytes);
- ReadChecked(&subsample.encrypted_bytes);
- }
-
- std::vector<uint8_t> data;
- ReadChecked(&data);
-
- access_units_.emplace_back(access_unit_type, timestamp, key_id, iv,
- subsamples, std::move(data));
- }
-
- template <typename T>
- bool ReadUnchecked(T* value) {
- if (!value) {
- ReportFatalError();
- return false;
- }
-
- int bytes_to_read = static_cast<int>(sizeof(*value));
- int bytes_read = Read(value, bytes_to_read);
-
- if (reverse_byte_order_) {
- std::reverse(reinterpret_cast<uint8_t*>(value),
- reinterpret_cast<uint8_t*>(value + 1));
- }
-
- return bytes_to_read == bytes_read;
- }
- template <typename T>
- void ReadChecked(T* value) {
- if (!ReadUnchecked(value)) {
- ReportFatalError();
- }
- }
- void ReadChecked(std::vector<uint8_t>* value) {
- if (!value) {
- ReportFatalError();
- }
-
- uint32_t size;
- ReadChecked(&size);
-
- value->resize(size);
-
- if (size == 0) {
- return;
- }
-
- int bytes_read = Read(value->data(), size);
- if (bytes_read != size) {
- ReportFatalError();
- }
- }
-
bool reverse_byte_order_;
std::vector<EmeInitData> eme_init_datas_;
std::vector<AccessUnit> access_units_;
diff --git a/src/cobalt/media/base/video_dumper.cc b/src/cobalt/media/base/video_dumper.cc
new file mode 100644
index 0000000..694f722
--- /dev/null
+++ b/src/cobalt/media/base/video_dumper.cc
@@ -0,0 +1,134 @@
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "cobalt/media/base/video_dumper.h"
+
+#if COBALT_MEDIA_ENABLE_VIDEO_DUMPER
+
+#include "cobalt/media/base/demuxer_stream.h"
+#include "cobalt/media/base/starboard_utils.h"
+
+namespace cobalt {
+namespace media {
+
+namespace {
+
+template <typename T>
+void Write(SbFile file, const T& value) {
+ int bytes_to_write = static_cast<int>(sizeof(value));
+ int bytes_written =
+ SbFileWrite(file, reinterpret_cast<const char*>(&value), bytes_to_write);
+ DCHECK_EQ(bytes_to_write, bytes_written);
+}
+
+void Write(SbFile file, const void* buffer, size_t size) {
+ Write(file, reinterpret_cast<const char*>(buffer), size);
+}
+
+} // namespace
+
+VideoDumper::VideoDumper(const char* file_name) {
+ bool created = false;
+ file_ =
+ SbFileOpen(file_name, kSbFileCreateAlways | kSbFileWrite, &created, NULL);
+ DCHECK(created);
+ DCHECK(SbFileIsValid(file_));
+
+ // Using a local variable to avoid addressing a constant which may cause
+ // link error.
+ uint32 bom = VideoDmpReader::kBOM;
+ Write<uint32>(file_, bom);
+}
+
+VideoDumper::~VideoDumper() { SbFileClose(file_); }
+
+void VideoDumper::DumpEmeInitData(
+ const std::vector<EmeInitData>& eme_init_datas) {
+ for (auto& eme_init_data : eme_init_datas) {
+ if (eme_init_data.empty()) {
+ continue;
+ }
+ Write<uint32>(file_, VideoDmpReader::kRecordTypeEmeInitData);
+ // EME init data size
+ Write<uint32>(file_, static_cast<uint32>(eme_init_data.size()));
+ Write(file_, eme_init_data.data(), eme_init_data.size());
+ }
+}
+
+void VideoDumper::DumpConfigs(const AudioDecoderConfig& audio_config,
+ const VideoDecoderConfig& video_config) {
+ // Temporarily write empty audio/video configs
+ Write<uint32>(file_, VideoDmpReader::kRecordTypeAudioConfig);
+ Write<uint16_t>(file_,
+ MediaAudioCodecToSbMediaAudioCodec(audio_config.codec()));
+ SbMediaAudioHeader audio_header =
+ MediaAudioConfigToSbMediaAudioHeader(audio_config);
+ Write<uint16_t>(file_, audio_header.format_tag);
+ Write<uint16_t>(file_, audio_header.number_of_channels);
+ Write<uint32_t>(file_, audio_header.samples_per_second);
+ Write<uint32_t>(file_, audio_header.average_bytes_per_second);
+ Write<uint16_t>(file_, audio_header.block_alignment);
+ Write<uint16_t>(file_, audio_header.bits_per_sample);
+ Write<uint16_t>(file_, audio_header.audio_specific_config_size);
+ Write(file_, audio_header.audio_specific_config,
+ audio_header.audio_specific_config_size);
+
+ Write<uint32>(file_, VideoDmpReader::kRecordTypeVideoConfig);
+ Write<uint16_t>(file_,
+ MediaVideoCodecToSbMediaVideoCodec(video_config.codec()));
+}
+
+void VideoDumper::DumpAccessUnit(const scoped_refptr<DecoderBuffer>& buffer) {
+ DCHECK_EQ(buffer->allocations().number_of_buffers(), 1);
+
+ uint32 dump_type;
+ if (buffer->type() == DemuxerStream::AUDIO) {
+ dump_type = VideoDmpReader::kRecordTypeAudioAccessUnit;
+ } else if (buffer->type() == DemuxerStream::VIDEO) {
+ dump_type = VideoDmpReader::kRecordTypeVideoAccessUnit;
+ } else {
+ NOTREACHED() << buffer->type();
+ }
+ Write(file_, dump_type);
+
+ const DecryptConfig* decrypt_config = buffer->decrypt_config();
+ if (decrypt_config && decrypt_config->key_id().size() == 16 &&
+ decrypt_config->iv().size() == 16) {
+ Write(file_, buffer->timestamp().InMicroseconds());
+ Write<uint32>(file_, decrypt_config->key_id().size()); // key_id size
+ Write(file_, &decrypt_config->key_id()[0], decrypt_config->key_id().size());
+ Write<uint32>(file_, decrypt_config->iv().size()); // iv size
+ Write(file_, &decrypt_config->iv()[0], decrypt_config->iv().size());
+ // subsample count
+ Write<uint32>(file_, decrypt_config->subsamples().size());
+ for (size_t i = 0; i < decrypt_config->subsamples().size(); ++i) {
+ Write<uint32>(file_, decrypt_config->subsamples()[i].clear_bytes);
+ Write<uint32>(file_, decrypt_config->subsamples()[i].cypher_bytes);
+ }
+ Write<uint32>(file_, static_cast<uint32>(buffer->data_size()));
+ Write(file_, buffer->allocations().buffers()[0], buffer->data_size());
+ } else {
+ Write(file_, buffer->timestamp().InMicroseconds());
+ Write<uint32>(file_, 0); // key_id size
+ Write<uint32>(file_, 0); // iv size
+ Write<uint32>(file_, 0); // subsample count
+ Write<uint32>(file_, static_cast<uint32>(buffer->data_size()));
+ Write(file_, buffer->allocations().buffers()[0], buffer->data_size());
+ }
+}
+
+} // namespace media
+} // namespace cobalt
+
+#endif // COBALT_MEDIA_ENABLE_VIDEO_DUMPER
diff --git a/src/cobalt/media/base/video_dumper.h b/src/cobalt/media/base/video_dumper.h
index c547989..e5c49e1 100644
--- a/src/cobalt/media/base/video_dumper.h
+++ b/src/cobalt/media/base/video_dumper.h
@@ -15,12 +15,13 @@
#ifndef COBALT_MEDIA_BASE_VIDEO_DUMPER_H_
#define COBALT_MEDIA_BASE_VIDEO_DUMPER_H_
+// #define COBALT_MEDIA_ENABLE_VIDEO_DUMPER 1
+
#include <string>
#include <vector>
#include "cobalt/media/base/audio_decoder_config.h"
#include "cobalt/media/base/decoder_buffer.h"
-#include "cobalt/media/base/demuxer_stream.h"
#include "cobalt/media/base/video_decoder_config.h"
#include "cobalt/media/base/video_dmp_reader.h"
#include "starboard/file.h"
@@ -36,118 +37,15 @@
public:
typedef VideoDmpReader::EmeInitData EmeInitData;
- explicit VideoDumper(const char* file_name) {
- bool created = false;
- file_ = SbFileOpen(file_name, kSbFileCreateAlways | kSbFileWrite, &created,
- NULL);
- DCHECK(created);
- DCHECK(SbFileIsValid(file_));
+ explicit VideoDumper(const char* file_name);
+ ~VideoDumper();
- // Using a local variable to avoid addressing a constant which may cause
- // link error.
- uint32 bom = VideoDmpReader::kBOM;
- Write<uint32>(bom);
- }
-
- ~VideoDumper() { SbFileClose(file_); }
-
- void DumpEmeInitData(const std::vector<EmeInitData>& eme_init_datas) {
- for (auto& eme_init_data : eme_init_datas) {
- if (eme_init_data.empty()) {
- continue;
- }
- Write<uint32>(VideoDmpReader::kRecordTypeEmeInitData);
- // EME init data size
- Write<uint32>(static_cast<uint32>(eme_init_data.size()));
- Write(eme_init_data.data(), eme_init_data.size());
- }
- }
-
+ void DumpEmeInitData(const std::vector<EmeInitData>& eme_init_datas);
void DumpConfigs(const AudioDecoderConfig& audio_config,
- const VideoDecoderConfig& video_config) {
- // Temporarily write empty audio/video configs
- Write<uint32>(VideoDmpReader::kRecordTypeAudioConfig);
- Write<uint32>(0);
- Write<uint32>(VideoDmpReader::kRecordTypeVideoConfig);
- Write<uint32>(0);
- }
-
- void DumpAccessUnit(const scoped_refptr<DecoderBuffer>& buffer) {
- uint32 dump_type;
- if (buffer->type() == DemuxerStream::AUDIO) {
- dump_type = VideoDmpReader::kRecordTypeAudioAccessUnit;
- } else if (buffer->type() == DemuxerStream::VIDEO) {
- dump_type = VideoDmpReader::kRecordTypeVideoAccessUnit;
- } else {
- NOTREACHED() << buffer->type();
- }
- Write(dump_type);
-
- const DecryptConfig* decrypt_config = buffer->decrypt_config();
- if (decrypt_config && decrypt_config->key_id().size() == 16 &&
- decrypt_config->iv().size() == 16) {
- uint32 record_size =
- sizeof(int64_t) // timestamp
- + sizeof(uint32_t) // key_id size
- + decrypt_config->key_id().size() + sizeof(uint32_t) // iv size
- + decrypt_config->iv().size() + sizeof(uint32_t) // subsample count
- +
- sizeof(uint32_t) * 2 *
- decrypt_config->subsamples().size() // subsample count
- + sizeof(uint32_t) // size of encoded data
- + buffer->data_size();
- Write(static_cast<uint32>(record_size));
- Write(buffer->timestamp().InMicroseconds());
- Write<uint32>(decrypt_config->key_id().size()); // key_id size
- Write(&decrypt_config->key_id()[0], decrypt_config->key_id().size());
- Write<uint32>(decrypt_config->iv().size()); // iv size
- Write(&decrypt_config->iv()[0], decrypt_config->iv().size());
- // subsample count
- Write<uint32>(decrypt_config->subsamples().size());
- for (size_t i = 0; i < decrypt_config->subsamples().size(); ++i) {
- Write<uint32>(decrypt_config->subsamples()[i].clear_bytes);
- Write<uint32>(decrypt_config->subsamples()[i].cypher_bytes);
- }
- Write<uint32>(static_cast<uint32>(buffer->data_size()));
- Write(buffer->data(), buffer->data_size());
- } else {
- size_t record_size = sizeof(int64_t) // timestamp
- + sizeof(uint32_t) // key_id size
- + sizeof(uint32_t) // iv size
- + sizeof(uint32_t) // subsample count
- + sizeof(uint32_t) // size of encoded data
- + buffer->data_size();
- Write(static_cast<uint32>(record_size));
- Write(buffer->timestamp().InMicroseconds());
- Write<uint32>(0); // key_id size
- Write<uint32>(0); // iv size
- Write<uint32>(0); // subsample count
- Write<uint32>(static_cast<uint32>(buffer->data_size()));
- Write(buffer->data(), buffer->data_size());
- }
- }
+ const VideoDecoderConfig& video_config);
+ void DumpAccessUnit(const scoped_refptr<DecoderBuffer>& buffer);
private:
- template <typename T>
- void Write(const T& value) {
- int bytes_to_write = static_cast<int>(sizeof(value));
- int bytes_written = SbFileWrite(
- file_, reinterpret_cast<const char*>(&value), bytes_to_write);
- DCHECK_EQ(bytes_to_write, bytes_written);
- }
-
- void Write(const char* buffer, size_t size) {
- if (size == 0) {
- return;
- }
- int bytes_written = SbFileWrite(file_, buffer, static_cast<int>(size));
- DCHECK_EQ(static_cast<int>(size), bytes_written);
- }
-
- void Write(const uint8_t* buffer, size_t size) {
- Write(reinterpret_cast<const char*>(buffer), size);
- }
-
SbFile file_;
};
diff --git a/src/cobalt/media/media2.gyp b/src/cobalt/media/media2.gyp
index 60905ad..3530256 100644
--- a/src/cobalt/media/media2.gyp
+++ b/src/cobalt/media/media2.gyp
@@ -108,6 +108,10 @@
'base/video_codecs.h',
'base/video_decoder_config.cc',
'base/video_decoder_config.h',
+ 'base/video_dmp_reader.cc',
+ 'base/video_dmp_reader.h',
+ 'base/video_dumper.cc',
+ 'base/video_dumper.h',
'base/video_util.cc',
'base/video_util.h',
'filters/chunk_demuxer.cc',
diff --git a/src/cobalt/render_tree/border.h b/src/cobalt/render_tree/border.h
index 9b72706..a47646e 100644
--- a/src/cobalt/render_tree/border.h
+++ b/src/cobalt/render_tree/border.h
@@ -32,7 +32,7 @@
// Style properties for one of four sides of a border around a rectangle.
struct BorderSide {
- explicit BorderSide(const BorderSide& that);
+ BorderSide(const BorderSide& that);
BorderSide(float width, BorderStyle style, const ColorRGBA& color);
bool operator==(const BorderSide& rhs) const {
diff --git a/src/cobalt/render_tree/composition_node.h b/src/cobalt/render_tree/composition_node.h
index d39da3f..92a54ec 100644
--- a/src/cobalt/render_tree/composition_node.h
+++ b/src/cobalt/render_tree/composition_node.h
@@ -66,7 +66,7 @@
Builder() {}
explicit Builder(const math::Vector2dF& offset) : offset_(offset) {}
- explicit Builder(const Builder& other)
+ Builder(const Builder& other)
: offset_(other.offset_), children_(other.children_) {}
explicit Builder(Moved moved) : offset_(moved->offset_) {
children_.swap(moved->children_);
diff --git a/src/cobalt/renderer/rasterizer/lib/exported/graphics.h b/src/cobalt/renderer/rasterizer/lib/exported/graphics.h
index 69e2125..0163934 100644
--- a/src/cobalt/renderer/rasterizer/lib/exported/graphics.h
+++ b/src/cobalt/renderer/rasterizer/lib/exported/graphics.h
@@ -45,6 +45,11 @@
SB_EXPORT_PLATFORM void CbLibGraphicsSetBeginRenderFrameCallback(
void* context, CbLibGraphicsBeginRenderFrameCallback callback);
+// Sets a callback which will be called at the end of rendering, after swap
+// buffers has been called.
+SB_EXPORT_PLATFORM void CbLibGraphicsSetEndRenderFrameCallback(
+ void* context, CbLibGraphicsEndRenderFrameCallback callback);
+
// Returns the texture ID for the current RenderTree. This should be
// re-retrieved each frame in the event that the underlying texture has
// changed. This method will return 0 if there is not yet a valid texture ID.
@@ -54,11 +59,6 @@
// rasterization thread only.
SB_EXPORT_PLATFORM intptr_t CbLibGrapicsGetMainTextureHandle();
-// Sets a callback which will be called at the end of rendering, after swap
-// buffers has been called.
-SB_EXPORT_PLATFORM void CbLibGraphicsSetEndRenderFrameCallback(
- void* context, CbLibGraphicsEndRenderFrameCallback callback);
-
#ifdef __cplusplus
} // extern "C"
#endif
diff --git a/src/cobalt/renderer/rasterizer/lib/external_rasterizer.cc b/src/cobalt/renderer/rasterizer/lib/external_rasterizer.cc
index fb2acaa..1ac6887 100644
--- a/src/cobalt/renderer/rasterizer/lib/external_rasterizer.cc
+++ b/src/cobalt/renderer/rasterizer/lib/external_rasterizer.cc
@@ -219,6 +219,7 @@
ExternalRasterizer::Impl::~Impl() {
graphics_context_->MakeCurrent();
+ g_external_rasterizer_impl = nullptr;
}
void ExternalRasterizer::Impl::Submit(
diff --git a/src/cobalt/renderer/rasterizer/skia/hardware_rasterizer.cc b/src/cobalt/renderer/rasterizer/skia/hardware_rasterizer.cc
index 603eb8e..ae6ee6d 100644
--- a/src/cobalt/renderer/rasterizer/skia/hardware_rasterizer.cc
+++ b/src/cobalt/renderer/rasterizer/skia/hardware_rasterizer.cc
@@ -29,6 +29,7 @@
#include "cobalt/renderer/rasterizer/skia/hardware_resource_provider.h"
#include "cobalt/renderer/rasterizer/skia/render_tree_node_visitor.h"
#include "cobalt/renderer/rasterizer/skia/scratch_surface_cache.h"
+#include "cobalt/renderer/rasterizer/skia/shader_preload_tree.h"
#include "cobalt/renderer/rasterizer/skia/surface_cache_delegate.h"
#include "cobalt/renderer/rasterizer/skia/vertex_buffer_object.h"
#include "third_party/glm/glm/gtc/matrix_inverse.hpp"
@@ -139,10 +140,19 @@
// or not since Skia does not let us pull that information out of the
// SkCanvas object (which Skia would internally use to get this information).
base::optional<GrSurfaceOrigin> current_surface_origin_;
+ bool shaders_preloaded_;
};
namespace {
+bool SkiaAllowsShaderPreload() {
+#ifdef SKIA_PRELOAD_SHADERS
+ return true;
+#else
+ return false;
+#endif
+}
+
SkSurfaceProps GetRenderTargetSurfaceProps() {
return SkSurfaceProps(SkSurfaceProps::kUseDistanceFieldFonts_Flag,
SkSurfaceProps::kLegacyFontHost_InitType);
@@ -542,7 +552,8 @@
bool purge_skia_font_caches_on_destruction)
: graphics_context_(
base::polymorphic_downcast<backend::GraphicsContextEGL*>(
- graphics_context)) {
+ graphics_context)),
+ shaders_preloaded_(false) {
TRACE_EVENT0("cobalt::renderer", "HardwareRasterizer::Impl::Impl()");
DLOG(INFO) << "skia_cache_size_in_bytes: " << skia_cache_size_in_bytes;
@@ -705,7 +716,6 @@
SkSurface* sk_output_surface =
CreateSkiaRenderTargetSurface(skia_render_target);
SkCanvas* canvas = sk_output_surface->getCanvas();
-
canvas->clear(SkColorSetARGB(0, 0, 0, 0));
// Render to the canvas and clean up.
@@ -825,6 +835,35 @@
base::optional<GrSurfaceOrigin> old_origin = current_surface_origin_;
current_surface_origin_.emplace(origin);
+ // Generate a shader preload tree. This tree will be constructed
+ // in such as way that no pixels will be modified.
+ if (!shaders_preloaded_ && SkiaAllowsShaderPreload()) {
+ shaders_preloaded_ = true;
+
+ // Create a separate render tree visitor to avoid dirtying the visitor
+ // used for the actual render tree.
+ RenderTreeNodeVisitor::CreateScratchSurfaceFunction
+ create_scratch_surface_function =
+ base::Bind(&HardwareRasterizer::Impl::CreateScratchSurface,
+ base::Unretained(this));
+ RenderTreeNodeVisitor visitor(
+ canvas, &create_scratch_surface_function,
+ base::Bind(&HardwareRasterizer::Impl::ResetSkiaState,
+ base::Unretained(this)),
+ base::Bind(&HardwareRasterizer::Impl::RenderTextureEGL,
+ base::Unretained(this)),
+ base::Bind(&HardwareRasterizer::Impl::RenderTextureWithMeshFilterEGL,
+ base::Unretained(this)),
+ surface_cache_delegate_ ? &surface_cache_delegate_.value() : NULL,
+ surface_cache_ ? &surface_cache_.value() : NULL);
+
+ scoped_refptr<render_tree::Node> preload_tree =
+ GenerateShaderPreloadTree(GetResourceProvider());
+
+ preload_tree->Accept(&visitor);
+ canvas->clear(SK_ColorTRANSPARENT);
+ }
+
RenderTreeNodeVisitor::CreateScratchSurfaceFunction
create_scratch_surface_function =
base::Bind(&HardwareRasterizer::Impl::CreateScratchSurface,
diff --git a/src/cobalt/renderer/rasterizer/skia/rasterizer.gyp b/src/cobalt/renderer/rasterizer/skia/rasterizer.gyp
index 95bc3e5..1bcefee 100644
--- a/src/cobalt/renderer/rasterizer/skia/rasterizer.gyp
+++ b/src/cobalt/renderer/rasterizer/skia/rasterizer.gyp
@@ -28,6 +28,8 @@
'hardware_rasterizer.h',
'hardware_resource_provider.cc',
'hardware_resource_provider.h',
+ 'shader_preload_tree.cc',
+ 'shader_preload_tree.h',
'vertex_buffer_object.cc',
'vertex_buffer_object.h',
],
@@ -42,6 +44,14 @@
'<(DEPTH)/third_party/ots/ots.gyp:ots',
'<(DEPTH)/cobalt/renderer/rasterizer/common/common.gyp:common',
],
+
+ 'conditions': [
+ ['skia_preload_shaders==1', {
+ 'defines': [
+ 'SKIA_PRELOAD_SHADERS'
+ ],
+ }],
+ ],
},
],
}
diff --git a/src/cobalt/renderer/rasterizer/skia/shader_preload_tree.cc b/src/cobalt/renderer/rasterizer/skia/shader_preload_tree.cc
new file mode 100644
index 0000000..b5be321
--- /dev/null
+++ b/src/cobalt/renderer/rasterizer/skia/shader_preload_tree.cc
@@ -0,0 +1,288 @@
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "cobalt/renderer/rasterizer/skia/shader_preload_tree.h"
+
+#include <utility>
+#include <vector>
+
+#include "base/memory/ref_counted.h"
+#include "cobalt/math/matrix3_f.h"
+#include "cobalt/math/point_f.h"
+#include "cobalt/math/rect_f.h"
+#include "cobalt/math/vector2d_f.h"
+#include "cobalt/render_tree/border.h"
+#include "cobalt/render_tree/brush.h"
+#include "cobalt/render_tree/color_rgba.h"
+#include "cobalt/render_tree/composition_node.h"
+#include "cobalt/render_tree/filter_node.h"
+#include "cobalt/render_tree/font.h"
+#include "cobalt/render_tree/image_node.h"
+#include "cobalt/render_tree/matrix_transform_node.h"
+#include "cobalt/render_tree/node.h"
+#include "cobalt/render_tree/rect_node.h"
+#include "cobalt/render_tree/rect_shadow_node.h"
+#include "cobalt/render_tree/resource_provider.h"
+#include "cobalt/render_tree/rounded_corners.h"
+#include "cobalt/render_tree/text_node.h"
+#include "cobalt/render_tree/viewport_filter.h"
+#include "cobalt/renderer/rasterizer/skia/glyph_buffer.h"
+#include "nb/thread_local_boolean.h"
+#include "starboard/once.h"
+
+namespace cobalt {
+namespace renderer {
+namespace rasterizer {
+namespace skia {
+
+namespace {
+
+using math::Matrix3F;
+using math::PointF;
+using math::RectF;
+using math::Vector2dF;
+using render_tree::Border;
+using render_tree::BorderSide;
+using render_tree::BorderStyle;
+using render_tree::Brush;
+using render_tree::ColorRGBA;
+using render_tree::ColorStop;
+using render_tree::ColorStopList;
+using render_tree::CompositionNode;
+using render_tree::FilterNode;
+using render_tree::Image;
+using render_tree::ImageData;
+using render_tree::ImageNode;
+using render_tree::kAlphaFormatPremultiplied;
+using render_tree::kBorderStyleSolid;
+using render_tree::kPixelFormatBGRA8;
+using render_tree::kPixelFormatInvalid;
+using render_tree::kPixelFormatRGBA8;
+using render_tree::LinearGradientBrush;
+using render_tree::MatrixTransformNode;
+using render_tree::Node;
+using render_tree::NodeVisitor;
+using render_tree::OpacityFilter;
+using render_tree::PixelFormat;
+using render_tree::RectNode;
+using render_tree::RectShadowNode;
+using render_tree::ResourceProvider;
+using render_tree::RoundedCorner;
+using render_tree::RoundedCorners;
+using render_tree::Shadow;
+using render_tree::SolidColorBrush;
+using render_tree::ViewportFilter;
+
+class NodeGenerator {
+ public:
+ explicit NodeGenerator(ResourceProvider* provider)
+ : resource_provider_(provider), default_rect_(100, 100) {}
+
+ scoped_refptr<Image> CreateImage() {
+ scoped_refptr<Image> img = CreateDummyImage(resource_provider_);
+ return img;
+ }
+
+ ViewportFilter GetViewpointFilterRoundedCorners() {
+ RoundedCorners rounded_corners(50, 50);
+ ViewportFilter viewport_filter(default_rect_, rounded_corners);
+ return viewport_filter;
+ }
+
+ ViewportFilter GetViewpointFilter() {
+ ViewportFilter viewport_filter(default_rect_);
+ return viewport_filter;
+ }
+
+ math::Matrix3F GetMatrix() {
+ math::Matrix3F mat = math::Matrix3F::Identity();
+ mat.SetMatrix(1, 0, 0, 0, 1.34103739f, -0.170518711f, 0, 0, 1);
+ return mat;
+ }
+
+ scoped_refptr<Node> GetImageNodeMatrix() {
+ math::Matrix3F mat = GetMatrix();
+ scoped_refptr<ImageNode> img_node(
+ new ImageNode(CreateImage(), default_rect_, mat));
+ return img_node;
+ }
+
+ scoped_ptr<Brush> GetSolidColorBrush() {
+ scoped_ptr<SolidColorBrush> brush(
+ new SolidColorBrush(ColorRGBA(1, 1, 1, 1)));
+ return brush.PassAs<Brush>();
+ }
+
+ scoped_ptr<RoundedCorners> GetRoundedCorners() {
+ scoped_ptr<RoundedCorners> rounded_corners(new RoundedCorners(50, 50));
+ return rounded_corners.Pass();
+ }
+
+ scoped_refptr<Node> RectSolidColorBrush() {
+ scoped_refptr<Node> rect_node(
+ new RectNode(default_rect_, GetSolidColorBrush(),
+ scoped_ptr<Border>(nullptr), GetRoundedCorners()));
+ return rect_node;
+ }
+
+ BorderSide GetSolidStyleBorderSide() {
+ return BorderSide(11.0f, kBorderStyleSolid, ColorRGBA(1, 1, 1, 1));
+ }
+
+ scoped_refptr<Node> RectSolidBorderWithRoundedCorners() {
+ BorderSide side = GetSolidStyleBorderSide();
+ scoped_ptr<Border> border(new Border(side, side, side, side));
+
+ scoped_refptr<Node> rect_node(
+ new RectNode(default_rect_, scoped_ptr<Brush>(nullptr), border.Pass(),
+ GetRoundedCorners()));
+ return rect_node;
+ }
+
+ scoped_refptr<Node> GetDoubleFilteredImageNode() {
+ math::Matrix3F mat = GetMatrix();
+
+ scoped_refptr<Node> filt_inner(
+ new FilterNode(GetViewpointFilterRoundedCorners(),
+ new ImageNode(CreateImage(), default_rect_, mat)));
+
+ OpacityFilter opacity(0.05f);
+ scoped_refptr<Node> filt_outer(new FilterNode(opacity, filt_inner));
+ return filt_outer;
+ }
+
+ scoped_refptr<Node> GetViewpointFilteredImageNode() {
+ math::Matrix3F mat = math::Matrix3F::Identity();
+ scoped_refptr<Node> source(
+ new FilterNode(GetViewpointFilterRoundedCorners(),
+ new ImageNode(CreateImage(), default_rect_, mat)));
+
+ return new MatrixTransformNode(source, mat);
+ }
+
+ scoped_refptr<Node> GetRectShadowNodeWithInsetRoundedCorners() {
+ const float spread = 3.95f;
+ const bool inset = true;
+ const float blur_sigma = 5.91f;
+ Shadow shadow(math::Vector2dF(1.95f, 1.95f), blur_sigma,
+ ColorRGBA(0, 0, 0, 1));
+ RectShadowNode::Builder rect_shadow_node_builder(default_rect_, shadow,
+ inset, spread);
+
+ rect_shadow_node_builder.rounded_corners = RoundedCorners(50, 50);
+
+ scoped_refptr<Node> shadow_node(
+ new RectShadowNode(rect_shadow_node_builder));
+ return shadow_node;
+ }
+
+ scoped_refptr<Node> GetRectShadowNodeWithInset() {
+ const float spread = 3.95f;
+ const bool inset = true;
+ const float blur_sigma = 5.91f;
+ Shadow shadow(math::Vector2dF(1.95f, 1.95f), blur_sigma,
+ ColorRGBA(0, 0, 0, 1));
+ RectShadowNode::Builder rect_shadow_node_builder(default_rect_, shadow,
+ inset, spread);
+
+ scoped_refptr<Node> shadow_node(
+ new RectShadowNode(rect_shadow_node_builder));
+ return shadow_node;
+ }
+
+ scoped_refptr<Node> GetRectShadowNodeWithoutInset() {
+ const float spread = 3.95f;
+ const bool inset = false;
+ const float blur_sigma = 5.91f;
+ Shadow shadow(math::Vector2dF(1.95f, 1.95f), blur_sigma,
+ ColorRGBA(0, 0, 0, 1));
+ RectShadowNode::Builder rect_shadow_node_builder(default_rect_, shadow,
+ inset, spread);
+
+ scoped_refptr<Node> shadow_node(
+ new RectShadowNode(rect_shadow_node_builder));
+ return shadow_node;
+ }
+
+ scoped_refptr<Node> RectNodeLinearGradientOpacity() {
+ math::PointF a(0.0f, 0.0f);
+ math::PointF b(0.0f, 383.40f);
+
+ OpacityFilter opacity(0.06f);
+
+ ColorStopList color_list;
+ color_list.push_back(ColorStop(0, ColorRGBA(0, 0, 0, 0.74902f)));
+ color_list.push_back(ColorStop(1, ColorRGBA(0, 0, 0, 0)));
+
+ scoped_refptr<RectNode> rect_node(new RectNode(
+ default_rect_,
+ scoped_ptr<Brush>(new LinearGradientBrush(a, b, color_list))));
+
+ scoped_refptr<render_tree::Node> node(new FilterNode(opacity, rect_node));
+ return node;
+ }
+
+ private:
+ scoped_refptr<Image> CreateDummyImage(ResourceProvider* resource_provider) {
+ // Initialize the image data and store a predictable, testable pattern
+ // of image data into it.
+ math::Size image_size(16, 16);
+
+ PixelFormat pixel_format = kPixelFormatInvalid;
+ if (resource_provider->PixelFormatSupported(kPixelFormatRGBA8)) {
+ pixel_format = kPixelFormatRGBA8;
+ } else if (resource_provider->PixelFormatSupported(kPixelFormatBGRA8)) {
+ pixel_format = kPixelFormatBGRA8;
+ } else {
+ NOTREACHED() << "Unsupported pixel format.";
+ }
+
+ scoped_ptr<ImageData> image_data = resource_provider->AllocateImageData(
+ image_size, pixel_format, kAlphaFormatPremultiplied);
+
+ // Write 128 for every pixel component.
+ memset(image_data->GetMemory(), 128, image_size.GetArea() * 4);
+
+ // Create and return the new image.
+ return resource_provider->CreateImage(image_data.Pass());
+ }
+
+ ResourceProvider* resource_provider_;
+ RectF default_rect_;
+};
+} // namespace.
+
+// Generates a tree which includes common shaders that skia will generate
+// and use.
+scoped_refptr<Node> GenerateShaderPreloadTree(
+ ResourceProvider* resource_provider) {
+ NodeGenerator generator(resource_provider);
+ CompositionNode::Builder builder;
+ builder.AddChild(generator.RectNodeLinearGradientOpacity());
+ builder.AddChild(generator.GetImageNodeMatrix());
+ builder.AddChild(generator.RectSolidColorBrush());
+ builder.AddChild(generator.RectSolidBorderWithRoundedCorners());
+ builder.AddChild(generator.GetRectShadowNodeWithInset());
+ builder.AddChild(generator.GetRectShadowNodeWithoutInset());
+ builder.AddChild(generator.GetRectShadowNodeWithInsetRoundedCorners());
+ builder.AddChild(generator.GetDoubleFilteredImageNode());
+ builder.AddChild(generator.GetViewpointFilteredImageNode());
+ scoped_refptr<Node> composite_node(new CompositionNode(builder.Pass()));
+ return composite_node;
+}
+
+} // namespace skia
+} // namespace rasterizer
+} // namespace renderer
+} // namespace cobalt
diff --git a/src/cobalt/renderer/rasterizer/skia/shader_preload_tree.h b/src/cobalt/renderer/rasterizer/skia/shader_preload_tree.h
new file mode 100644
index 0000000..ccc77ad
--- /dev/null
+++ b/src/cobalt/renderer/rasterizer/skia/shader_preload_tree.h
@@ -0,0 +1,38 @@
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef COBALT_RENDERER_RASTERIZER_SKIA_SHADER_PRELOAD_TREE_H_
+#define COBALT_RENDERER_RASTERIZER_SKIA_SHADER_PRELOAD_TREE_H_
+
+#include "base/memory/ref_counted.h"
+#include "cobalt/render_tree/node.h"
+#include "cobalt/render_tree/resource_provider.h"
+
+namespace cobalt {
+namespace renderer {
+namespace rasterizer {
+namespace skia {
+
+// Generates a tree which includes common shaders that skia will generate
+// and use. Submitting this tree to the skia renderer will cause the
+// shaders to generated and compiled.
+scoped_refptr<render_tree::Node> GenerateShaderPreloadTree(
+ render_tree::ResourceProvider* resource_provider);
+
+} // namespace skia
+} // namespace rasterizer
+} // namespace renderer
+} // namespace cobalt
+
+#endif // COBALT_RENDERER_RASTERIZER_SKIA_SHADER_PRELOAD_TREE_H_
diff --git a/src/cobalt/script/engine.gyp b/src/cobalt/script/engine.gyp
index ddb6e3e..d5423b8 100644
--- a/src/cobalt/script/engine.gyp
+++ b/src/cobalt/script/engine.gyp
@@ -31,9 +31,7 @@
# building 'all'.
'target_name': 'all_engines',
'type': 'none',
- 'dependencies': [
- 'mozjs/mozjs.gyp:*',
- ],
+ 'dependencies': [],
},
],
}
diff --git a/src/cobalt/script/engine_variables.gypi b/src/cobalt/script/engine_variables.gypi
index 98f413c..d60625c 100644
--- a/src/cobalt/script/engine_variables.gypi
+++ b/src/cobalt/script/engine_variables.gypi
@@ -14,7 +14,6 @@
{
'includes': [
- 'mozjs/mozjs_variables.gypi',
'mozjs-45/mozjs-45_variables.gypi',
],
}
diff --git a/src/cobalt/script/mozjs-45/mozjs_engine.cc b/src/cobalt/script/mozjs-45/mozjs_engine.cc
index 6a09beb..fd3ca39 100644
--- a/src/cobalt/script/mozjs-45/mozjs_engine.cc
+++ b/src/cobalt/script/mozjs-45/mozjs_engine.cc
@@ -141,7 +141,7 @@
} // namespace
MozjsEngine::MozjsEngine(const Options& options)
- : accumulated_extra_memory_cost_(0), options_(options) {
+ : context_(nullptr), accumulated_extra_memory_cost_(0), options_(options) {
TRACE_EVENT0("cobalt::script", "MozjsEngine::MozjsEngine()");
SbOnce(&g_js_init_once_control, CallInitAndRegisterShutDownOnce);
runtime_ = JS_NewRuntime(options_.js_options.gc_threshold_bytes);
@@ -250,13 +250,11 @@
MozjsEngine* engine = reinterpret_cast<MozjsEngine*>(data);
DCHECK(engine->thread_checker_.CalledOnValidThread());
if (context_op == JSCONTEXT_NEW) {
- engine->contexts_.push_back(context);
+ DCHECK(engine->context_ == nullptr);
+ engine->context_ = context;
} else if (context_op == JSCONTEXT_DESTROY) {
- ContextVector::iterator it =
- std::find(engine->contexts_.begin(), engine->contexts_.end(), context);
- if (it != engine->contexts_.end()) {
- engine->contexts_.erase(it);
- }
+ DCHECK(engine->context_ == context);
+ engine->context_ = nullptr;
}
return true;
}
@@ -271,16 +269,17 @@
engine->gc_timer_.Reset();
}
}
- for (int i = 0; i < engine->contexts_.size(); ++i) {
- MozjsGlobalEnvironment* global_environment =
- MozjsGlobalEnvironment::GetFromContext(engine->contexts_[i]);
- if (status == JSGC_BEGIN) {
- TRACE_EVENT_BEGIN0("cobalt::script", "SpiderMonkey Garbage Collection");
- global_environment->BeginGarbageCollection();
- } else if (status == JSGC_END) {
- global_environment->EndGarbageCollection();
- TRACE_EVENT_END0("cobalt::script", "SpiderMonkey Garbage Collection");
- }
+ if (!engine->context_) {
+ return;
+ }
+ MozjsGlobalEnvironment* global_environment =
+ MozjsGlobalEnvironment::GetFromContext(engine->context_);
+ if (status == JSGC_BEGIN) {
+ TRACE_EVENT_BEGIN0("cobalt::script", "SpiderMonkey Garbage Collection");
+ global_environment->BeginGarbageCollection();
+ } else if (status == JSGC_END) {
+ global_environment->EndGarbageCollection();
+ TRACE_EVENT_END0("cobalt::script", "SpiderMonkey Garbage Collection");
}
}
@@ -289,12 +288,10 @@
TRACE_EVENT0("cobalt::script", "MozjsEngine::FinalizeCallback()");
MozjsEngine* engine = reinterpret_cast<MozjsEngine*>(data);
DCHECK(engine->thread_checker_.CalledOnValidThread());
- if (status == JSFINALIZE_GROUP_START) {
- for (int i = 0; i < engine->contexts_.size(); ++i) {
- MozjsGlobalEnvironment* global_environment =
- MozjsGlobalEnvironment::GetFromContext(engine->contexts_[i]);
- global_environment->DoSweep();
- }
+ if (status == JSFINALIZE_GROUP_START && engine->context_) {
+ MozjsGlobalEnvironment* global_environment =
+ MozjsGlobalEnvironment::GetFromContext(engine->context_);
+ global_environment->DoSweep();
}
}
@@ -327,6 +324,7 @@
} // namespace mozjs
+// static
scoped_ptr<JavaScriptEngine> JavaScriptEngine::CreateEngine(
const JavaScriptEngine::Options& options) {
TRACE_EVENT0("cobalt::script", "JavaScriptEngine::CreateEngine()");
@@ -334,6 +332,7 @@
return make_scoped_ptr<JavaScriptEngine>(new mozjs::MozjsEngine(moz_options));
}
+// static
size_t JavaScriptEngine::UpdateMemoryStatsAndReturnReserved() {
return mozjs::EngineStats::GetInstance()
->UpdateMemoryStatsAndReturnReserved();
diff --git a/src/cobalt/script/mozjs-45/mozjs_engine.h b/src/cobalt/script/mozjs-45/mozjs_engine.h
index 98094f1..b432000 100644
--- a/src/cobalt/script/mozjs-45/mozjs_engine.h
+++ b/src/cobalt/script/mozjs-45/mozjs_engine.h
@@ -58,9 +58,8 @@
// one per process, but it's allowed to have multiple.
JSRuntime* runtime_;
- // A list of all contexts created for this JSRuntime.
- typedef std::vector<JSContext*> ContextVector;
- ContextVector contexts_;
+ // The sole context created for this JSRuntime.
+ JSContext* context_;
// The amount of externally allocated memory since last forced GC.
size_t accumulated_extra_memory_cost_;
diff --git a/src/cobalt/script/mozjs/callback_function_conversion.h b/src/cobalt/script/mozjs/callback_function_conversion.h
deleted file mode 100644
index 84da21e..0000000
--- a/src/cobalt/script/mozjs/callback_function_conversion.h
+++ /dev/null
@@ -1,92 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef COBALT_SCRIPT_MOZJS_CALLBACK_FUNCTION_CONVERSION_H_
-#define COBALT_SCRIPT_MOZJS_CALLBACK_FUNCTION_CONVERSION_H_
-
-#include "base/logging.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/logging_exception_state.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_callback_function.h"
-#include "cobalt/script/script_value.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-// CallbackFunction -> JSValue
-template <typename Signature>
-void ToJSValue(
- JSContext* context,
- const ScriptValue<CallbackFunction<Signature> >* callback_function,
- JS::MutableHandleValue out_value) {
- if (!callback_function) {
- out_value.set(JS::NullValue());
- return;
- }
- // Downcast to MozjsUserObjectHolder<T> so we can get the underlying JSObject.
- typedef MozjsUserObjectHolder<MozjsCallbackFunction<Signature> >
- MozjsUserObjectHolderClass;
- const MozjsUserObjectHolderClass* user_object_holder =
- base::polymorphic_downcast<const MozjsUserObjectHolderClass*>(
- callback_function);
-
- DCHECK(user_object_holder->js_object());
- out_value.set(OBJECT_TO_JSVAL(user_object_holder->js_object()));
-}
-
-// JSValue -> CallbackFunction
-template <typename Signature>
-void FromJSValue(JSContext* context, JS::HandleValue value,
- int conversion_flags, ExceptionState* exception_state,
- MozjsUserObjectHolder<MozjsCallbackFunction<Signature> >*
- out_callback_function) {
- typedef MozjsUserObjectHolder<MozjsCallbackFunction<Signature> >
- MozjsCallbackHolderClass;
-
- DCHECK_EQ(conversion_flags & ~kConversionFlagsCallbackFunction, 0)
- << "Unexpected conversion flags.";
-
- if (value.isNull()) {
- if (!(conversion_flags & kConversionFlagNullable)) {
- exception_state->SetSimpleException(kNotNullableType);
- }
- // If it is a nullable type, just return.
- return;
- }
-
- // https://www.w3.org/TR/WebIDL/#es-callback-function
- // 1. If V is not a Function object, throw a TypeError
- JS::RootedObject object(context);
- if (value.isObject()) {
- object = JSVAL_TO_OBJECT(value);
- }
- if (!object || !JS_ObjectIsFunction(context, object)) {
- exception_state->SetSimpleException(kNotFunctionValue);
- return;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- *out_callback_function = MozjsCallbackHolderClass(
- object, context, global_environment->wrapper_factory());
-}
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_CALLBACK_FUNCTION_CONVERSION_H_
diff --git a/src/cobalt/script/mozjs/conversion_helpers.cc b/src/cobalt/script/mozjs/conversion_helpers.cc
deleted file mode 100644
index aac1422..0000000
--- a/src/cobalt/script/mozjs/conversion_helpers.cc
+++ /dev/null
@@ -1,143 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "cobalt/script/mozjs/conversion_helpers.h"
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-#include "nb/memory_scope.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-// JSValue -> std::string
-void FromJSValue(JSContext* context, JS::HandleValue value,
- int conversion_flags, ExceptionState* exception_state,
- std::string* out_string) {
- TRACK_MEMORY_SCOPE("Javascript");
- DCHECK_EQ(conversion_flags & ~kConversionFlagsString, 0)
- << "Unexpected conversion flags found: ";
-
- if (value.isNull() &&
- conversion_flags & kConversionFlagTreatNullAsEmptyString) {
- *out_string = "";
- return;
- }
-
- if (value.isUndefined() &&
- conversion_flags & kConversionFlagTreatUndefinedAsEmptyString) {
- *out_string = "";
- return;
- }
-
- JS::RootedString string(context, JS_ValueToString(context, value));
- if (!string) {
- exception_state->SetSimpleException(kConvertToStringFailed);
- return;
- }
-
- JSAutoByteString auto_byte_string;
- char* utf8_chars = auto_byte_string.encodeUtf8(context, string);
- if (!utf8_chars) {
- exception_state->SetSimpleException(kConvertToUTF8Failed);
- return;
- }
-
- *out_string = utf8_chars;
-}
-
-// OpaqueHandle -> JSValue
-void ToJSValue(JSContext* context,
- const OpaqueHandleHolder* opaque_handle_holder,
- JS::MutableHandleValue out_value) {
- TRACK_MEMORY_SCOPE("Javascript");
- JS::RootedObject js_object(context);
- if (opaque_handle_holder) {
- // Downcast to MozjsObjectHandleHolder so we can get the JS object.
- const MozjsObjectHandleHolder* mozjs_object_handle_holder =
- base::polymorphic_downcast<const MozjsObjectHandleHolder*>(
- opaque_handle_holder);
- js_object = mozjs_object_handle_holder->js_object();
- }
- // OBJECT_TO_JSVAL handles the case where this is NULL.
- out_value.set(OBJECT_TO_JSVAL(js_object));
-}
-
-// JSValue -> OpaqueHandle
-void FromJSValue(JSContext* context, JS::HandleValue value,
- int conversion_flags, ExceptionState* exception_state,
- MozjsObjectHandleHolder* out_holder) {
- TRACK_MEMORY_SCOPE("Javascript");
- DCHECK_EQ(conversion_flags & ~kConversionFlagsObject, 0)
- << "Unexpected conversion flags found.";
- JS::RootedObject js_object(context);
- // https://www.w3.org/TR/WebIDL/#es-object
- // 1. If Type(V) is not Object, throw a TypeError
- // We'll handle the null case below.
- if (!value.isObjectOrNull()) {
- exception_state->SetSimpleException(kNotObjectType);
- return;
- }
-
- js_object = JSVAL_TO_OBJECT(value);
- if (!js_object) {
- // Set an exception if this is not nullable.
- if (!(conversion_flags & kConversionFlagNullable)) {
- exception_state->SetSimpleException(kNotNullableType);
- }
- // Return here even for the non-exception case.
- return;
- }
-
- DCHECK(js_object);
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- *out_holder = MozjsObjectHandleHolder(value, context,
- global_environment->wrapper_factory());
-}
-
-// ValueHandle -> JSValue
-void ToJSValue(JSContext* context, const ValueHandleHolder* value_handle_holder,
- JS::MutableHandleValue out_value) {
- TRACK_MEMORY_SCOPE("Javascript");
- JS::RootedValue js_value(context);
- if (value_handle_holder) {
- // Downcast to MozjsValueHandleHolder so we can get the JS object.
- const MozjsValueHandleHolder* mozjs_value_handle_holder =
- base::polymorphic_downcast<const MozjsValueHandleHolder*>(
- value_handle_holder);
- js_value = mozjs_value_handle_holder->js_value();
- }
-
- // OBJECT_TO_JSVAL handles the case where this is NULL.
- out_value.set(js_value);
-}
-
-// JSValue -> ValueHandle
-void FromJSValue(JSContext* context, JS::HandleValue value,
- int conversion_flags, ExceptionState* exception_state,
- MozjsValueHandleHolder* out_holder) {
- TRACK_MEMORY_SCOPE("Javascript");
- DCHECK_EQ(conversion_flags & ~kConversionFlagsObject, 0)
- << "Unexpected conversion flags found.";
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- *out_holder = MozjsValueHandleHolder(value, context,
- global_environment->wrapper_factory());
-}
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
diff --git a/src/cobalt/script/mozjs/conversion_helpers.h b/src/cobalt/script/mozjs/conversion_helpers.h
deleted file mode 100644
index bb5a90d..0000000
--- a/src/cobalt/script/mozjs/conversion_helpers.h
+++ /dev/null
@@ -1,704 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef COBALT_SCRIPT_MOZJS_CONVERSION_HELPERS_H_
-#define COBALT_SCRIPT_MOZJS_CONVERSION_HELPERS_H_
-
-#include <limits>
-#include <string>
-
-#include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/optional.h"
-#include "base/stringprintf.h"
-#include "cobalt/base/enable_if.h"
-#include "cobalt/base/token.h"
-#include "cobalt/script/mozjs/mozjs_callback_interface_holder.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/mozjs_value_handle.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/union_type_conversion_forward.h"
-#include "cobalt/script/mozjs/util/algorithm_helpers.h"
-#include "cobalt/script/sequence.h"
-#include "nb/memory_scope.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsarray.h"
-#include "third_party/mozjs/js/src/jscntxt.h"
-#include "third_party/mozjs/js/src/jsproxy.h"
-#include "third_party/mozjs/js/src/jsstr.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-// Flags that can be used as a bitmask for special conversion behaviour.
-enum ConversionFlags {
- kNoConversionFlags = 0,
- kConversionFlagRestricted = 1 << 0,
- kConversionFlagNullable = 1 << 1,
- kConversionFlagTreatNullAsEmptyString = 1 << 2,
- kConversionFlagTreatUndefinedAsEmptyString = 1 << 3,
- kConversionFlagClamped = 1 << 4,
-
- // Valid conversion flags for numeric values.
- kConversionFlagsNumeric = kConversionFlagRestricted | kConversionFlagClamped,
-
- // Valid conversion flags for string types.
- kConversionFlagsString = kConversionFlagTreatNullAsEmptyString |
- kConversionFlagTreatUndefinedAsEmptyString,
-
- // Valid conversion flags for objects.
- kConversionFlagsObject = kConversionFlagNullable,
-
- // Valid conversion flags for callback functions.
- kConversionFlagsCallbackFunction = kConversionFlagNullable,
-
- // Valid conversion flags for callback interfaces.
- kConversionFlagsCallbackInterface = kConversionFlagNullable,
-};
-
-// std::string -> JSValue
-inline void ToJSValue(JSContext* context, const std::string& in_string,
- JS::MutableHandleValue out_value) {
- TRACK_MEMORY_SCOPE("Javascript");
- size_t length = in_string.length();
- jschar* inflated_buffer =
- js::InflateUTF8String(context, in_string.c_str(), &length);
-
- if (!inflated_buffer) {
- LOG(ERROR) << "Failed to inflate UTF8 string.";
- out_value.setNull();
- return;
- }
-
- JS::RootedString rooted_string(
- context, JS_NewUCStringCopyN(context, inflated_buffer, length));
- js_free(inflated_buffer);
-
- out_value.set(JS::StringValue(rooted_string));
-}
-
-// JSValue -> std::string
-void FromJSValue(JSContext* context, JS::HandleValue value,
- int conversion_flags, ExceptionState* exception_state,
- std::string* out_string);
-
-// base::Token -> JSValue
-inline void ToJSValue(JSContext* context, const base::Token& token,
- JS::MutableHandleValue out_value) {
- TRACK_MEMORY_SCOPE("Javascript");
- ToJSValue(context, std::string(token.c_str()), out_value);
-}
-
-// bool -> JSValue
-inline void ToJSValue(JSContext* context, bool in_boolean,
- JS::MutableHandleValue out_value) {
- TRACK_MEMORY_SCOPE("Javascript");
- out_value.set(JS::BooleanValue(in_boolean));
-}
-
-// JSValue -> bool
-inline void FromJSValue(JSContext* context, JS::HandleValue value,
- int conversion_flags, ExceptionState* exception_state,
- bool* out_boolean) {
- TRACK_MEMORY_SCOPE("Javascript");
- DCHECK_EQ(conversion_flags, kNoConversionFlags)
- << "No conversion flags supported.";
- DCHECK(out_boolean);
- // ToBoolean implements the ECMAScript ToBoolean operation.
- *out_boolean = JS::ToBoolean(value);
-}
-
-// signed integers <= 4 bytes -> JSValue
-template <typename T>
-inline void ToJSValue(
- JSContext* context, T in_number, JS::MutableHandleValue out_value,
- typename base::enable_if<std::numeric_limits<T>::is_specialized &&
- std::numeric_limits<T>::is_integer &&
- std::numeric_limits<T>::is_signed &&
- (sizeof(T) <= 4),
- T>::type* = NULL) {
- TRACK_MEMORY_SCOPE("Javascript");
- out_value.set(INT_TO_JSVAL(in_number));
-}
-
-template <typename T>
-inline const double UpperBound() {
- return std::numeric_limits<T>::max();
-}
-
-template <typename T>
-inline const double LowerBound() {
- return std::numeric_limits<T>::min();
-}
-
-// The below specializations of UpperBound<T> and LowerBound<T> for 64
-// bit integers use the (2^(53) - 1) and similar bounds specified in
-// step 1 of ConvertToInt, see:
-// https://heycam.github.io/webidl/#abstract-opdef-converttoint
-template <>
-inline const double UpperBound<int64_t>() {
- const double kInt64UpperBound = static_cast<double>((1ll << 53) - 1);
- return kInt64UpperBound;
-}
-
-template <>
-inline const double LowerBound<int64_t>() {
- const double kInt64LowerBound = static_cast<double>(-(1ll << 53) + 1);
- return kInt64LowerBound;
-}
-
-template <>
-inline const double UpperBound<uint64_t>() {
- const double kUInt64UpperBound = static_cast<double>((1ll << 53) - 1);
- return kUInt64UpperBound;
-}
-
-template <typename T>
-void ClampedValue(JSContext* context, JS::HandleValue value,
- JS::MutableHandleValue clamped_value) {
- double value_double;
- JS::ToNumber(context, value, &value_double);
- if (value_double > UpperBound<T>()) {
- clamped_value.set(DOUBLE_TO_JSVAL(UpperBound<T>()));
- } else if (value_double < LowerBound<T>()) {
- clamped_value.set(DOUBLE_TO_JSVAL(LowerBound<T>()));
- } else {
- clamped_value.set(value);
- }
-}
-
-// JSValue -> signed integers <= 4 bytes
-template <typename T>
-inline void FromJSValue(
- JSContext* context, JS::HandleValue value, int conversion_flags,
- ExceptionState* exception_state, T* out_number,
- typename base::enable_if<std::numeric_limits<T>::is_specialized &&
- std::numeric_limits<T>::is_integer &&
- std::numeric_limits<T>::is_signed &&
- (sizeof(T) <= 4),
- T>::type* = NULL) {
- TRACK_MEMORY_SCOPE("Javascript");
- DCHECK(out_number);
-
- int32_t out;
- // Convert a JavaScript value to an integer type as specified by the
- // ECMAScript standard.
- JS::RootedValue value_to_convert(context);
- if (conversion_flags & kConversionFlagClamped) {
- ClampedValue<T>(context, value, &value_to_convert);
- } else {
- value_to_convert.set(value);
- }
- JSBool success = JS_ValueToECMAInt32(context, value_to_convert, &out);
- DCHECK(success);
-
- *out_number = static_cast<T>(out);
-}
-
-// JSValue -> signed integers > 4 bytes
-template <typename T>
-inline void FromJSValue(
- JSContext* context, JS::HandleValue value, int conversion_flags,
- ExceptionState* exception_state, T* out_number,
- typename base::enable_if<std::numeric_limits<T>::is_specialized &&
- std::numeric_limits<T>::is_integer &&
- std::numeric_limits<T>::is_signed &&
- (sizeof(T) > 4),
- T>::type* = NULL) {
- TRACK_MEMORY_SCOPE("Javascript");
- double to_number;
- JS::ToNumber(context, value, &to_number);
-
- std::string value_str;
- FromJSValue(context, value, conversion_flags, exception_state, &value_str);
- DCHECK(out_number);
- int64_t out;
- // This produces and IDL unsigned long long.
- JS::RootedValue value_to_convert(context);
- if (conversion_flags & kConversionFlagClamped) {
- ClampedValue<T>(context, value, &value_to_convert);
- } else {
- value_to_convert.set(value);
- }
- JSBool success = JS_ValueToInt64(context, value_to_convert, &out);
- DCHECK(success);
- if (!success) {
- exception_state->SetSimpleException(kNotInt64Type);
- return;
- }
- *out_number = static_cast<T>(out);
-}
-
-// signed integers > 4 bytes -> JSValue
-template <typename T>
-inline void ToJSValue(
- JSContext* context, T in_number, JS::MutableHandleValue out_value,
- typename base::enable_if<std::numeric_limits<T>::is_specialized &&
- std::numeric_limits<T>::is_integer &&
- std::numeric_limits<T>::is_signed &&
- (sizeof(T) > 4),
- T>::type* = NULL) {
- TRACK_MEMORY_SCOPE("Javascript");
- out_value.set(JS_NumberValue(in_number));
-}
-
-// unsigned integers <= 4 bytes -> JSValue
-template <typename T>
-inline void ToJSValue(
- JSContext* context, T in_number, JS::MutableHandleValue out_value,
- typename base::enable_if<std::numeric_limits<T>::is_specialized &&
- std::numeric_limits<T>::is_integer &&
- !std::numeric_limits<T>::is_signed &&
- (sizeof(T) <= 4),
- T>::type* = NULL) {
- TRACK_MEMORY_SCOPE("Javascript");
- out_value.set(UINT_TO_JSVAL(in_number));
-}
-
-// JSValue -> unsigned integers <= 4 bytes
-template <typename T>
-inline void FromJSValue(
- JSContext* context, JS::HandleValue value, int conversion_flags,
- ExceptionState* exception_state, T* out_number,
- typename base::enable_if<std::numeric_limits<T>::is_specialized &&
- std::numeric_limits<T>::is_integer &&
- !std::numeric_limits<T>::is_signed &&
- (sizeof(T) <= 4),
- T>::type* = NULL) {
- TRACK_MEMORY_SCOPE("Javascript");
- DCHECK(out_number);
-
- uint32_t out;
- // Convert a JavaScript value to an integer type as specified by the
- // ECMAScript standard.
- JS::RootedValue value_to_convert(context);
- if (conversion_flags & kConversionFlagClamped) {
- ClampedValue<T>(context, value, &value_to_convert);
- } else {
- value_to_convert.set(value);
- }
- JSBool success = JS_ValueToECMAUint32(context, value_to_convert, &out);
- DCHECK(success);
-
- *out_number = static_cast<T>(out);
-}
-
-// JSValue -> unsigned integers > 4 bytes
-template <typename T>
-inline void FromJSValue(
- JSContext* context, JS::HandleValue value, int conversion_flags,
- ExceptionState* exception_state, T* out_number,
- typename base::enable_if<std::numeric_limits<T>::is_specialized &&
- std::numeric_limits<T>::is_integer &&
- !std::numeric_limits<T>::is_signed &&
- (sizeof(T) > 4),
- T>::type* = NULL) {
- TRACK_MEMORY_SCOPE("Javascript");
- DCHECK(out_number);
-
- uint64_t out;
- // This produces and IDL unsigned long long.
- JS::RootedValue value_to_convert(context);
- if (conversion_flags & kConversionFlagClamped) {
- ClampedValue<T>(context, value, &value_to_convert);
- } else {
- value_to_convert.set(value);
- }
- JSBool success = JS_ValueToUint64(context, value_to_convert, &out);
- DCHECK(success);
- if (!success) {
- exception_state->SetSimpleException(kNotUint64Type);
- return;
- }
- *out_number = static_cast<T>(out);
-}
-
-// unsigned integers > 4 bytes -> JSValue
-template <typename T>
-inline void ToJSValue(
- JSContext* context, T in_number, JS::MutableHandleValue out_value,
- typename base::enable_if<std::numeric_limits<T>::is_specialized &&
- std::numeric_limits<T>::is_integer &&
- !std::numeric_limits<T>::is_signed &&
- (sizeof(T) > 4),
- T>::type* = NULL) {
- TRACK_MEMORY_SCOPE("Javascript");
- out_value.set(JS_NumberValue(in_number));
-}
-
-// double -> JSValue
-template <typename T>
-inline void ToJSValue(
- JSContext* context, T in_number, JS::MutableHandleValue out_value,
- typename base::enable_if<std::numeric_limits<T>::is_specialized &&
- !std::numeric_limits<T>::is_integer,
- T>::type* = NULL) {
- TRACK_MEMORY_SCOPE("Javascript");
- out_value.set(DOUBLE_TO_JSVAL(in_number));
-}
-
-// JSValue -> double
-template <typename T>
-inline void FromJSValue(
- JSContext* context, JS::HandleValue value, int conversion_flags,
- ExceptionState* exception_state, T* out_number,
- typename base::enable_if<std::numeric_limits<T>::is_specialized &&
- !std::numeric_limits<T>::is_integer,
- T>::type* = NULL) {
- TRACK_MEMORY_SCOPE("Javascript");
- DCHECK_EQ(conversion_flags & ~kConversionFlagsNumeric, 0)
- << "Unexpected conversion flags found.";
- DCHECK(out_number);
- double double_value;
- if (!JS::ToNumber(context, value, &double_value)) {
- exception_state->SetSimpleException(kNotNumberType);
- return;
- }
-
- if (!mozilla::IsFinite(double_value) &&
- (conversion_flags & kConversionFlagRestricted)) {
- exception_state->SetSimpleException(kNotFinite);
- return;
- }
-
- *out_number = double_value;
-}
-
-// optional<T> -> JSValue
-template <typename T>
-inline void ToJSValue(JSContext* context, const base::optional<T>& in_optional,
- JS::MutableHandleValue out_value) {
- TRACK_MEMORY_SCOPE("Javascript");
- if (!in_optional) {
- out_value.setNull();
- return;
- }
- ToJSValue(context, in_optional.value(), out_value);
-}
-
-// JSValue -> optional<T>
-template <typename T>
-inline void FromJSValue(JSContext* context, JS::HandleValue value,
- int conversion_flags, ExceptionState* exception_state,
- base::optional<T>* out_optional) {
- TRACK_MEMORY_SCOPE("Javascript");
- if (value.isNull()) {
- *out_optional = base::nullopt;
- } else if (value.isUndefined()) {
- *out_optional = base::nullopt;
- } else {
- *out_optional = T();
- FromJSValue(context, value, conversion_flags & ~kConversionFlagNullable,
- exception_state, &(out_optional->value()));
- }
-}
-
-// JSValue -> optional<std::string>
-template <>
-inline void FromJSValue(JSContext* context, JS::HandleValue value,
- int conversion_flags, ExceptionState* exception_state,
- base::optional<std::string>* out_optional) {
- TRACK_MEMORY_SCOPE("Javascript");
- if (value.isNull()) {
- *out_optional = base::nullopt;
- } else if (value.isUndefined() &&
- !(conversion_flags & kConversionFlagTreatUndefinedAsEmptyString)) {
- // If TreatUndefinedAs=EmptyString is set, skip the default conversion
- // of undefined to null.
- *out_optional = base::nullopt;
- } else {
- *out_optional = std::string();
- FromJSValue(context, value, conversion_flags & ~kConversionFlagNullable,
- exception_state, &(out_optional->value()));
- }
-}
-
-// OpaqueHandle -> JSValue
-void ToJSValue(JSContext* context,
- const OpaqueHandleHolder* opaque_handle_holder,
- JS::MutableHandleValue out_value);
-
-// JSValue -> OpaqueHandle
-void FromJSValue(JSContext* context, JS::HandleValue value,
- int conversion_flags, ExceptionState* exception_state,
- MozjsObjectHandleHolder* out_holder);
-
-// ValueHandle -> JSValue
-void ToJSValue(JSContext* context, const ValueHandleHolder* value_handle_holder,
- JS::MutableHandleValue out_value);
-
-// JSValue -> ValueHandle
-void FromJSValue(JSContext* context, JS::HandleValue value,
- int conversion_flags, ExceptionState* exception_state,
- MozjsValueHandleHolder* out_holder);
-
-// object -> JSValue
-template <typename T>
-inline void ToJSValue(JSContext* context, const scoped_refptr<T>& in_object,
- JS::MutableHandleValue out_value) {
- TRACK_MEMORY_SCOPE("Javascript");
- if (!in_object) {
- out_value.setNull();
- return;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- JS::RootedObject object(
- context,
- global_environment->wrapper_factory()->GetWrapperProxy(in_object));
- DCHECK(object);
- JS::RootedObject proxy_target(context, js::GetProxyTargetObject(object));
- if (JS_IsGlobalObject(proxy_target)) {
- object = proxy_target;
- }
-
- out_value.set(OBJECT_TO_JSVAL(object));
-}
-
-// raw object pointer -> JSValue
-template <typename T>
-inline void ToJSValue(JSContext* context, T* in_object,
- JS::MutableHandleValue out_value) {
- TRACK_MEMORY_SCOPE("Javascript");
- ToJSValue(context, scoped_refptr<T>(in_object), out_value);
-}
-
-// JSValue -> object
-template <typename T>
-inline void FromJSValue(JSContext* context, JS::HandleValue value,
- int conversion_flags, ExceptionState* exception_state,
- scoped_refptr<T>* out_object) {
- TRACK_MEMORY_SCOPE("Javascript");
- DCHECK_EQ(conversion_flags & ~kConversionFlagsObject, 0)
- << "Unexpected conversion flags found.";
- JS::RootedObject js_object(context);
- if (value.isNull() || value.isUndefined()) {
- if (!(conversion_flags & kConversionFlagNullable)) {
- exception_state->SetSimpleException(kNotNullableType);
- }
- return;
- }
- if (!JS_ValueToObject(context, value, js_object.address())) {
- exception_state->SetSimpleException(kNotObjectType);
- return;
- }
- DCHECK(js_object);
- JS::RootedObject wrapper(context, js::IsProxy(js_object)
- ? js::GetProxyTargetObject(js_object)
- : js_object);
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- const WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (wrapper_factory->IsWrapper(wrapper)) {
- bool object_implements_interface =
- wrapper_factory->DoesObjectImplementInterface(js_object,
- base::GetTypeId<T>());
- if (!object_implements_interface) {
- exception_state->SetSimpleException(kDoesNotImplementInterface);
- return;
- }
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromWrapperObject(wrapper);
- *out_object = wrapper_private->wrappable<T>();
- return;
- }
- // This is not a platform object. Return a type error.
- exception_state->SetSimpleException(kDoesNotImplementInterface);
-}
-
-// CallbackInterface -> JSValue
-template <typename T>
-inline void ToJSValue(JSContext* context,
- const ScriptValue<T>* callback_interface,
- JS::MutableHandleValue out_value) {
- TRACK_MEMORY_SCOPE("Javascript");
- if (!callback_interface) {
- out_value.set(JS::NullValue());
- return;
- }
- typedef typename CallbackInterfaceTraits<T>::MozjsCallbackInterfaceClass
- MozjsCallbackInterfaceClass;
- // Downcast to MozjsUserObjectHolder<T> so we can get the underlying JSObject.
- typedef MozjsUserObjectHolder<MozjsCallbackInterfaceClass>
- MozjsUserObjectHolderClass;
- const MozjsUserObjectHolderClass* user_object_holder =
- base::polymorphic_downcast<const MozjsUserObjectHolderClass*>(
- callback_interface);
-
- // Shouldn't be NULL. If the callback was NULL then NULL should have been
- // passed as an argument into this function.
- // Downcast to the corresponding MozjsCallbackInterface type, from which we
- // can get the implementing object.
- const MozjsCallbackInterfaceClass* mozjs_callback_interface =
- base::polymorphic_downcast<const MozjsCallbackInterfaceClass*>(
- user_object_holder->GetScriptValue());
- DCHECK(mozjs_callback_interface);
- out_value.set(mozjs_callback_interface->value());
-}
-
-// JSValue -> CallbackInterface
-template <typename T>
-inline void FromJSValue(
- JSContext* context, JS::HandleValue value, int conversion_flags,
- ExceptionState* out_exception,
- MozjsCallbackInterfaceHolder<T>* out_callback_interface) {
- TRACK_MEMORY_SCOPE("Javascript");
- typedef T MozjsCallbackInterfaceClass;
- DCHECK_EQ(conversion_flags & ~kConversionFlagsCallbackFunction, 0)
- << "No conversion flags supported.";
- if (value.isNull()) {
- if (!(conversion_flags & kConversionFlagNullable)) {
- out_exception->SetSimpleException(kNotNullableType);
- }
- // If it is a nullable type, just return.
- return;
- }
-
- // https://www.w3.org/TR/WebIDL/#es-user-objects
- // Any user object can be considered to implement a user interface. Actually
- // checking if the correct properties exist will happen when the operation
- // on the callback interface is run.
- if (!value.isObject()) {
- out_exception->SetSimpleException(kNotObjectType);
- return;
- }
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-
- JS::RootedObject implementing_object(context, JSVAL_TO_OBJECT(value));
- DCHECK(implementing_object);
- *out_callback_interface = MozjsCallbackInterfaceHolder<T>(
- implementing_object, context, global_environment->wrapper_factory());
-}
-
-template <typename T>
-void ToJSValue(JSContext* context, const script::Sequence<T>& sequence,
- JS::MutableHandleValue out_value) {
- TRACK_MEMORY_SCOPE("Javascript");
- // 1. Let n be the length of S.
- typedef typename script::Sequence<T>::size_type size_type;
- size_type count = sequence.size();
-
- // 2. Let A be a new Array object created as if by the expression [].
- JS::RootedObject array(context, NewDenseEmptyArray(context));
-
- // 3. Initialize i to be 0.
- // 4. While i < n:
- for (size_type index = 0; index < count; ++index) {
- // 4.1. Let V be the value in S at index i.
- // 4.2. Let E be the result of converting V to an ECMAScript value.
- JS::RootedValue element(context);
- ToJSValue(context, sequence.at(index), &element);
-
- std::string property =
- base::StringPrintf("%" PRIu64, static_cast<uint64_t>(index));
-
- // 4.3. Let P be the result of calling ToString(i).
- // 4.4. Call CreateDataProperty(A, P, E).
- JS_SetProperty(context, array, property.c_str(), element.address());
-
- // 4.5. Set i to i + 1.
- }
-
- // 5. Return A.
- out_value.set(OBJECT_TO_JSVAL(array));
-}
-
-template <typename T>
-void FromJSValue(JSContext* context, JS::HandleValue value,
- int conversion_flags, ExceptionState* exception_state,
- script::Sequence<T>* out_sequence) {
- TRACK_MEMORY_SCOPE("Javascript");
- DCHECK_EQ(0, conversion_flags);
- DCHECK(out_sequence);
-
- // JS -> IDL type conversion procedure described here:
- // https://heycam.github.io/webidl/#es-sequence
-
- // 1. If Type(V) is not Object, throw a TypeError.
- JS::RootedObject iterable(context);
- if (!value.isObject() ||
- !JS_ValueToObject(context, value, iterable.address())) {
- exception_state->SetSimpleException(kNotObjectType);
- return;
- }
-
- // 2. Let method be the result of GetMethod(V, @@iterator).
- // 3. ReturnIfAbrupt(method).
- // 4. If method is undefined, throw a TypeError.
- // 5. Return the result of creating a sequence from V and method.
- // https://heycam.github.io/webidl/#create-sequence-from-iterable
- // 5.1. Let iter be GetIterator(iterable, method).
- JS::RootedObject iter(context);
- if (!util::GetIterator(context, iterable, &iter)) {
- exception_state->SetSimpleException(kNotIterableType);
- return;
- }
-
- // 5.2. ReturnIfAbrupt(iter).
- // 5.3. Initialize i to be 0.
- // 5.4. Repeat
- while (true) {
- // 5.4.1. Let next be IteratorStep(iter).
- // 5.4.2. ReturnIfAbrupt(next).
- // 5.4.3. If next is false, then return an IDL sequence value of type
- // sequence<T> of length i, where the value of the element at index j
- // is Sj.
- JS::RootedObject next(context);
- if (!util::IteratorStep(context, iter, &next)) {
- break;
- }
-
- // 5.4.4. Let nextItem be IteratorValue(next).
- // 5.4.5. ReturnIfAbrupt(nextItem).
- JS::RootedValue next_item(context);
- if (!util::IteratorValue(context, next, &next_item)) {
- exception_state->SetSimpleException(kDoesNotImplementInterface);
- util::IteratorClose(context, iter);
- return;
- }
-
- // 5.4.6. Initialize Si to the result of converting nextItem to an IDL value
- // of type T.
- T idl_next_item;
- FromJSValue(context, next_item, conversion_flags, exception_state,
- &idl_next_item);
- if (context->isExceptionPending()) {
- // Exception converting element into to sequence element type.
- util::IteratorClose(context, iter);
- return;
- }
- out_sequence->push_back(idl_next_item);
-
- // 5.4.7. Set i to i + 1.
- }
-
- util::IteratorClose(context, iter);
- return;
-}
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-// Union type conversion is generated by a pump script.
-#include "cobalt/script/mozjs/union_type_conversion_impl.h"
-
-#endif // COBALT_SCRIPT_MOZJS_CONVERSION_HELPERS_H_
diff --git a/src/cobalt/script/mozjs/convert_callback_return_value.h b/src/cobalt/script/mozjs/convert_callback_return_value.h
deleted file mode 100644
index a0b1564..0000000
--- a/src/cobalt/script/mozjs/convert_callback_return_value.h
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef COBALT_SCRIPT_MOZJS_CONVERT_CALLBACK_RETURN_VALUE_H_
-#define COBALT_SCRIPT_MOZJS_CONVERT_CALLBACK_RETURN_VALUE_H_
-
-#include "base/logging.h"
-#include "cobalt/script/callback_function.h"
-#include "cobalt/script/logging_exception_state.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-// Helper template functions for Callback functions' return values before being
-// returned to Cobalt.
-// Converts the return value from JavaScript into the correct Cobalt type, or
-// sets the exception bit if conversion fails.
-template <typename R>
-CallbackResult<R> ConvertCallbackReturnValue(JSContext* context,
- JS::HandleValue value) {
- // TODO: Pass conversion flags to callback function return value if
- // appropriate.
- const int kConversionFlags = 0;
- CallbackResult<R> callback_result;
- LoggingExceptionState exception_state;
- FromJSValue(context, value, kConversionFlags, &exception_state,
- &callback_result.result);
- callback_result.exception = exception_state.is_exception_set();
- return callback_result;
-}
-
-template <>
-inline CallbackResult<void> ConvertCallbackReturnValue(JSContext* context,
- JS::HandleValue value) {
- // No conversion necessary.
- return CallbackResult<void>();
-}
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_CONVERT_CALLBACK_RETURN_VALUE_H_
diff --git a/src/cobalt/script/mozjs/interface_data.h b/src/cobalt/script/mozjs/interface_data.h
deleted file mode 100644
index 613780f..0000000
--- a/src/cobalt/script/mozjs/interface_data.h
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef COBALT_SCRIPT_MOZJS_INTERFACE_DATA_H_
-#define COBALT_SCRIPT_MOZJS_INTERFACE_DATA_H_
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-// Data that is cached on a per-interface basis.
-struct InterfaceData {
- // Some process must visit these handles to ensure that they are not
- // garbage collected and that they are updated appropriately if the GC
- // moves them.
- JS::Heap<JSObject*> prototype;
- JS::Heap<JSObject*> interface_object;
-
- // In newer versions of SpiderMonkey, these are passed into the
- // JS_NewObject* API functions as const pointers, so they may not need to be
- // thread local.
- JSClass instance_class_definition;
- JSClass prototype_class_definition;
- JSClass interface_object_class_definition;
-};
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_INTERFACE_DATA_H_
diff --git a/src/cobalt/script/mozjs/mozjs.cc b/src/cobalt/script/mozjs/mozjs.cc
deleted file mode 100644
index 36bb288..0000000
--- a/src/cobalt/script/mozjs/mozjs.cc
+++ /dev/null
@@ -1,110 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <iostream>
-
-#include "base/command_line.h"
-#include "base/file_path.h"
-#include "base/string_util.h"
-#include "cobalt/base/wrap_main.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/source_code.h"
-#include "cobalt/script/standalone_javascript_runner.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsproxy.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-namespace {
-
-JSBool Print(JSContext* context, uint32_t argc, JS::Value* arguments_value) {
- std::vector<std::string> string_args;
-
- JS::CallArgs call_args = CallArgsFromVp(argc, arguments_value);
- for (uint32_t i = 0; i < call_args.length(); ++i) {
- JSString* js_string = JS_ValueToString(context, call_args[i]);
- DCHECK(js_string);
- JSAutoByteString auto_byte_string;
- char* utf8_chars = auto_byte_string.encodeUtf8(context, js_string);
- DCHECK(utf8_chars);
- string_args.push_back(utf8_chars);
- }
-
- std::string joined = JoinString(string_args, ' ');
- std::cout << joined << std::endl;
-
- call_args.rval().setUndefined();
- return true;
-}
-
-void SetupBindings(JSContext* context, JSObject* global_object) {
- DCHECK(JS_IsGlobalObject(global_object));
-
- JSAutoRequest auto_request(context);
- JSAutoCompartment auto_comparment(context, global_object);
- JS_DefineFunction(context, global_object, "print", &Print, 0,
- JSPROP_ENUMERATE | JSFUN_STUB_GSOPS);
-}
-
-int MozjsMain(int argc, char** argv) {
- cobalt::script::StandaloneJavascriptRunner standalone_runner;
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(
- standalone_runner.global_environment().get());
-
- SetupBindings(global_environment->context(),
- global_environment->global_object());
-
- if (argc > 1) {
- // Command line arguments will be flag-value pairs of the form
- // -f filename
- // and
- // -e "inline script"
- // and will be evaluated in order.
- for (int i = 1; (i + 1) < argc; ++i) {
- if (std::string(argv[i]) == "-f") {
- std::string filename = std::string(argv[i + 1]);
- // Execute source file.
- FilePath source_file(filename);
- standalone_runner.ExecuteFile(source_file);
- ++i;
- } else if (std::string(argv[i]) == "-e") {
- // Execute inline script.
- scoped_refptr<SourceCode> source = SourceCode::CreateSourceCode(
- argv[i + 1], base::SourceLocation("[stdin]", 1, 1));
-
- // Execute the script and get the results of execution.
- std::string result;
- bool success = global_environment->EvaluateScript(source, &result);
- // Echo the results to stdout.
- if (!success) {
- std::cout << "Exception: ";
- }
- std::cout << result << std::endl;
- ++i;
- }
- }
- } else {
- standalone_runner.RunInteractive();
- }
- return 0;
-}
-
-} // namespace
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-COBALT_WRAP_SIMPLE_MAIN(cobalt::script::mozjs::MozjsMain);
diff --git a/src/cobalt/script/mozjs/mozjs.gyp b/src/cobalt/script/mozjs/mozjs.gyp
deleted file mode 100644
index 1a2a752..0000000
--- a/src/cobalt/script/mozjs/mozjs.gyp
+++ /dev/null
@@ -1,149 +0,0 @@
-# Copyright 2016 Google Inc. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-{
- 'targets': [
- {
- 'target_name': 'engine',
- 'type': 'static_library',
- 'sources': [
- 'conversion_helpers.cc',
- 'mozjs_callback_interface.cc',
- 'mozjs_debugger.cc',
- 'mozjs_engine.cc',
- 'mozjs_exception_state.cc',
- 'mozjs_global_environment.cc',
- 'mozjs_property_enumerator.cc',
- 'mozjs_script_value_factory.cc',
- 'mozjs_source_code.cc',
- 'mozjs_trace_logging.cc',
- 'promise_wrapper.cc',
- 'proxy_handler.cc',
- 'referenced_object_map.cc',
- 'util/algorithm_helpers.cc',
- 'util/exception_helpers.cc',
- 'util/stack_trace_helpers.cc',
- 'util/stack_trace_helpers.h',
- 'weak_heap_object.cc',
- 'weak_heap_object.h',
- 'weak_heap_object_manager.cc',
- 'weak_heap_object_manager.h',
- 'wrapper_factory.cc',
- 'wrapper_private.cc',
- ],
- 'dependencies': [
- '<(DEPTH)/cobalt/script/script.gyp:script',
- '<(DEPTH)/third_party/mozjs/mozjs.gyp:mozjs_lib',
- 'embed_mozjs_resources_as_header_files',
- ],
- 'defines': [
- 'ENGINE_SUPPORTS_INT64',
- ],
- 'all_dependent_settings': {
- 'defines': [
- # SpiderMonkey bindings implements indexed deleters.
- 'ENGINE_SUPPORTS_INDEXED_DELETERS',
- 'ENGINE_SUPPORTS_INT64',
- 'ENGINE_SUPPORTS_STACK_TRACE_COLUMNS',
- # TODO: Remove this when exact rooting and generational GC is enabled.
- 'ENGINE_USES_CONSERVATIVE_ROOTING',
- ],
- },
- 'conditions' :[
- ['cobalt_enable_jit == 1', {
- 'defines': [ 'ENGINE_SUPPORTS_JIT', ],
- }],
- ],
- },
-
- {
- # Standalone executable for JS engine
- 'target_name': 'mozjs',
- 'type': '<(final_executable_type)',
- 'sources': [
- 'mozjs.cc',
- ],
- 'dependencies': [
- ':engine',
- '<(DEPTH)/cobalt/base/base.gyp:base',
- '<(DEPTH)/cobalt/script/script.gyp:standalone_javascript_runner',
- '<(DEPTH)/third_party/mozjs/mozjs.gyp:mozjs_lib',
- ],
- },
-
- {
- 'target_name': 'mozjs_engine_test',
- 'type': '<(gtest_target_type)',
- 'sources': [
- 'native_promise_test.cc',
- '<(DEPTH)/third_party/mozjs/test/jscustomallocator_test.cc',
- ],
- 'dependencies': [
- 'engine',
- '<(DEPTH)/cobalt/base/base.gyp:base',
- '<(DEPTH)/cobalt/test/test.gyp:run_all_unittests',
- '<(DEPTH)/testing/gtest.gyp:gtest',
- '<(DEPTH)/third_party/mozjs/mozjs.gyp:mozjs_lib',
- ],
- },
-
- {
- 'target_name': 'mozjs_engine_test_deploy',
- 'type': 'none',
- 'dependencies': [
- 'mozjs_engine_test',
- ],
- 'variables': {
- 'executable_name': 'mozjs_engine_test',
- },
- 'includes': [ '../../../starboard/build/deploy.gypi' ],
- },
-
- {
- # This target takes specified files and embeds them as header files for
- # inclusion into the binary. The script currently requires all resources
- # to be embedded to live in the same directory.
- 'target_name': 'embed_mozjs_resources_as_header_files',
- 'type': 'none',
- # Because we generate a header, we must set the hard_dependency flag.
- 'hard_dependency': 1,
- 'variables': {
- 'script_path': '<(DEPTH)/cobalt/build/generate_data_header.py',
- 'output_path': '<(SHARED_INTERMEDIATE_DIR)/cobalt/script/mozjs/embedded_resources.h',
- },
- 'sources': [
- '<(DEPTH)/third_party/promise-polyfill/promise.min.js',
- ],
- 'actions': [
- {
- 'action_name': 'embed_mozjs_resources_as_header_files',
- 'inputs': [
- '<(script_path)',
- '<@(_sources)',
- ],
- 'outputs': [
- '<(output_path)',
- ],
- 'action': ['python', '<(script_path)', 'MozjsEmbeddedResources', '<(output_path)', '<@(_sources)' ],
- 'message': 'Embedding MozJS resources in into header file, "<(output_path)".',
- },
- ],
- 'direct_dependent_settings': {
- 'include_dirs': [
- '<(SHARED_INTERMEDIATE_DIR)',
- ],
- },
- },
- ],
-}
diff --git a/src/cobalt/script/mozjs/mozjs_callback_function.h b/src/cobalt/script/mozjs/mozjs_callback_function.h
deleted file mode 100644
index 1046f62..0000000
--- a/src/cobalt/script/mozjs/mozjs_callback_function.h
+++ /dev/null
@@ -1,650 +0,0 @@
-// This file was GENERATED by command:
-// pump.py mozjs_callback_function.h.pump
-// DO NOT EDIT BY HAND!!!
-
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-#ifndef COBALT_SCRIPT_MOZJS_MOZJS_CALLBACK_FUNCTION_H_
-#define COBALT_SCRIPT_MOZJS_MOZJS_CALLBACK_FUNCTION_H_
-
-#include "base/logging.h"
-#include "cobalt/script/callback_function.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/convert_callback_return_value.h"
-#include "cobalt/script/mozjs/util/exception_helpers.h"
-#include "cobalt/script/mozjs/util/stack_trace_helpers.h"
-#include "cobalt/script/mozjs/weak_heap_object.h"
-#include "nb/memory_scope.h"
-#include "third_party/mozjs/js/jsd/jsd.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jscntxt.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-// First, we forward declare the Callback class template. This informs the
-// compiler that the template only has 1 type parameter which is the base
-// CallbackFunction template class with parameters.
-//
-// See base/callback.h.pump for further discussion on this pattern.
-template <typename Sig>
-class MozjsCallbackFunction;
-
-template <typename R>
-class MozjsCallbackFunction<R(void)>
- : public CallbackFunction<R(void)> {
- public:
- typedef CallbackFunction<R()> BaseType;
-
- explicit MozjsCallbackFunction(JSContext* context, JS::HandleObject function)
- : context_(context), weak_function_(context, function) {
- DCHECK(context_);
- DCHECK(JS_ObjectIsFunction(context_, function));
- }
-
- explicit MozjsCallbackFunction(JSContext* context, JS::HandleValue function)
- : context_(context), weak_function_(context, function) {
- DCHECK(context_);
- DCHECK(function.isObject());
- DCHECK(JS_ObjectIsFunction(context_, JSVAL_TO_OBJECT(function)));
- }
-
- CallbackResult<R> Run()
- const OVERRIDE {
- ENABLE_JS_STACK_TRACE_IN_SCOPE(context_);
- TRACK_MEMORY_SCOPE("Javascript");
- TRACE_EVENT0("cobalt::script::mozjs", "MozjsCallbackFunction::Run");
- CallbackResult<R> callback_result;
- JSAutoRequest auto_request(context_);
- JS::RootedObject function(context_, weak_function_.GetObject());
- if (!function) {
- DLOG(WARNING) << "Function was garbage collected.";
- callback_result.exception = true;
- return callback_result;
- }
-
- JSAutoCompartment auto_compartment(context_, function);
- AutoSaveExceptionState auto_save_exception_state(context_);
-
- // https://www.w3.org/TR/WebIDL/#es-invoking-callback-functions
- // Callback 'this' is set to null, unless overridden by other specifications
- JS::Value this_value(JS::NullValue());
- JS::RootedValue return_value(context_);
- const int kNumArguments = 0;
- JSBool call_result = JS::Call(context_, this_value, function, 0, NULL,
- return_value.address());
- if (!call_result) {
- DLOG(WARNING) << "Exception in callback: "
- << util::GetExceptionString(context_);
- callback_result.exception = true;
- } else {
- callback_result = ConvertCallbackReturnValue<R>(context_, return_value);
- }
-
- return callback_result;
- }
-
- JSObject* handle() const { return weak_function_.GetObject(); }
- const JS::Value& value() const { return weak_function_.GetValue(); }
- bool WasCollected() const { return weak_function_.WasCollected(); }
-
- private:
- JSContext* context_;
- WeakHeapObject weak_function_;
-};
-
-template <typename R, typename A1>
-class MozjsCallbackFunction<R(A1)>
- : public CallbackFunction<R(A1)> {
- public:
- typedef CallbackFunction<R(A1)> BaseType;
-
- explicit MozjsCallbackFunction(JSContext* context, JS::HandleObject function)
- : context_(context), weak_function_(context, function) {
- DCHECK(context_);
- DCHECK(JS_ObjectIsFunction(context_, function));
- }
-
- explicit MozjsCallbackFunction(JSContext* context, JS::HandleValue function)
- : context_(context), weak_function_(context, function) {
- DCHECK(context_);
- DCHECK(function.isObject());
- DCHECK(JS_ObjectIsFunction(context_, JSVAL_TO_OBJECT(function)));
- }
-
- CallbackResult<R> Run(
- typename base::internal::CallbackParamTraits<A1>::ForwardType a1)
- const OVERRIDE {
- ENABLE_JS_STACK_TRACE_IN_SCOPE(context_);
- TRACK_MEMORY_SCOPE("Javascript");
- TRACE_EVENT0("cobalt::script::mozjs", "MozjsCallbackFunction::Run");
- CallbackResult<R> callback_result;
- JSAutoRequest auto_request(context_);
- JS::RootedObject function(context_, weak_function_.GetObject());
- if (!function) {
- DLOG(WARNING) << "Function was garbage collected.";
- callback_result.exception = true;
- return callback_result;
- }
-
- JSAutoCompartment auto_compartment(context_, function);
- AutoSaveExceptionState auto_save_exception_state(context_);
-
- // https://www.w3.org/TR/WebIDL/#es-invoking-callback-functions
- // Callback 'this' is set to null, unless overridden by other specifications
- JS::Value this_value(JS::NullValue());
- JS::RootedValue return_value(context_);
- const int kNumArguments = 1;
- JS::Value args[1];
- js::SetValueRangeToNull(args, kNumArguments);
- js::AutoValueArray auto_array_rooter(context_, args, kNumArguments);
- ToJSValue(context_, a1, auto_array_rooter.handleAt(0));
-
- JSBool call_result = JS::Call(context_, this_value, function,
- kNumArguments, args, return_value.address());
- if (!call_result) {
- DLOG(WARNING) << "Exception in callback: "
- << util::GetExceptionString(context_);
- callback_result.exception = true;
- } else {
- callback_result = ConvertCallbackReturnValue<R>(context_, return_value);
- }
-
- return callback_result;
- }
-
- JSObject* handle() const { return weak_function_.GetObject(); }
- const JS::Value& value() const { return weak_function_.GetValue(); }
- bool WasCollected() const { return weak_function_.WasCollected(); }
-
- private:
- JSContext* context_;
- WeakHeapObject weak_function_;
-};
-
-template <typename R, typename A1, typename A2>
-class MozjsCallbackFunction<R(A1, A2)>
- : public CallbackFunction<R(A1, A2)> {
- public:
- typedef CallbackFunction<R(A1, A2)> BaseType;
-
- explicit MozjsCallbackFunction(JSContext* context, JS::HandleObject function)
- : context_(context), weak_function_(context, function) {
- DCHECK(context_);
- DCHECK(JS_ObjectIsFunction(context_, function));
- }
-
- explicit MozjsCallbackFunction(JSContext* context, JS::HandleValue function)
- : context_(context), weak_function_(context, function) {
- DCHECK(context_);
- DCHECK(function.isObject());
- DCHECK(JS_ObjectIsFunction(context_, JSVAL_TO_OBJECT(function)));
- }
-
- CallbackResult<R> Run(
- typename base::internal::CallbackParamTraits<A1>::ForwardType a1,
- typename base::internal::CallbackParamTraits<A2>::ForwardType a2)
- const OVERRIDE {
- ENABLE_JS_STACK_TRACE_IN_SCOPE(context_);
- TRACK_MEMORY_SCOPE("Javascript");
- TRACE_EVENT0("cobalt::script::mozjs", "MozjsCallbackFunction::Run");
- CallbackResult<R> callback_result;
- JSAutoRequest auto_request(context_);
- JS::RootedObject function(context_, weak_function_.GetObject());
- if (!function) {
- DLOG(WARNING) << "Function was garbage collected.";
- callback_result.exception = true;
- return callback_result;
- }
-
- JSAutoCompartment auto_compartment(context_, function);
- AutoSaveExceptionState auto_save_exception_state(context_);
-
- // https://www.w3.org/TR/WebIDL/#es-invoking-callback-functions
- // Callback 'this' is set to null, unless overridden by other specifications
- JS::Value this_value(JS::NullValue());
- JS::RootedValue return_value(context_);
- const int kNumArguments = 2;
- JS::Value args[2];
- js::SetValueRangeToNull(args, kNumArguments);
- js::AutoValueArray auto_array_rooter(context_, args, kNumArguments);
- ToJSValue(context_, a1, auto_array_rooter.handleAt(0));
- ToJSValue(context_, a2, auto_array_rooter.handleAt(1));
-
- JSBool call_result = JS::Call(context_, this_value, function,
- kNumArguments, args, return_value.address());
- if (!call_result) {
- DLOG(WARNING) << "Exception in callback: "
- << util::GetExceptionString(context_);
- callback_result.exception = true;
- } else {
- callback_result = ConvertCallbackReturnValue<R>(context_, return_value);
- }
-
- return callback_result;
- }
-
- JSObject* handle() const { return weak_function_.GetObject(); }
- const JS::Value& value() const { return weak_function_.GetValue(); }
- bool WasCollected() const { return weak_function_.WasCollected(); }
-
- private:
- JSContext* context_;
- WeakHeapObject weak_function_;
-};
-
-template <typename R, typename A1, typename A2, typename A3>
-class MozjsCallbackFunction<R(A1, A2, A3)>
- : public CallbackFunction<R(A1, A2, A3)> {
- public:
- typedef CallbackFunction<R(A1, A2, A3)> BaseType;
-
- explicit MozjsCallbackFunction(JSContext* context, JS::HandleObject function)
- : context_(context), weak_function_(context, function) {
- DCHECK(context_);
- DCHECK(JS_ObjectIsFunction(context_, function));
- }
-
- explicit MozjsCallbackFunction(JSContext* context, JS::HandleValue function)
- : context_(context), weak_function_(context, function) {
- DCHECK(context_);
- DCHECK(function.isObject());
- DCHECK(JS_ObjectIsFunction(context_, JSVAL_TO_OBJECT(function)));
- }
-
- CallbackResult<R> Run(
- typename base::internal::CallbackParamTraits<A1>::ForwardType a1,
- typename base::internal::CallbackParamTraits<A2>::ForwardType a2,
- typename base::internal::CallbackParamTraits<A3>::ForwardType a3)
- const OVERRIDE {
- ENABLE_JS_STACK_TRACE_IN_SCOPE(context_);
- TRACK_MEMORY_SCOPE("Javascript");
- TRACE_EVENT0("cobalt::script::mozjs", "MozjsCallbackFunction::Run");
- CallbackResult<R> callback_result;
- JSAutoRequest auto_request(context_);
- JS::RootedObject function(context_, weak_function_.GetObject());
- if (!function) {
- DLOG(WARNING) << "Function was garbage collected.";
- callback_result.exception = true;
- return callback_result;
- }
-
- JSAutoCompartment auto_compartment(context_, function);
- AutoSaveExceptionState auto_save_exception_state(context_);
-
- // https://www.w3.org/TR/WebIDL/#es-invoking-callback-functions
- // Callback 'this' is set to null, unless overridden by other specifications
- JS::Value this_value(JS::NullValue());
- JS::RootedValue return_value(context_);
- const int kNumArguments = 3;
- JS::Value args[3];
- js::SetValueRangeToNull(args, kNumArguments);
- js::AutoValueArray auto_array_rooter(context_, args, kNumArguments);
- ToJSValue(context_, a1, auto_array_rooter.handleAt(0));
- ToJSValue(context_, a2, auto_array_rooter.handleAt(1));
- ToJSValue(context_, a3, auto_array_rooter.handleAt(2));
-
- JSBool call_result = JS::Call(context_, this_value, function,
- kNumArguments, args, return_value.address());
- if (!call_result) {
- DLOG(WARNING) << "Exception in callback: "
- << util::GetExceptionString(context_);
- callback_result.exception = true;
- } else {
- callback_result = ConvertCallbackReturnValue<R>(context_, return_value);
- }
-
- return callback_result;
- }
-
- JSObject* handle() const { return weak_function_.GetObject(); }
- const JS::Value& value() const { return weak_function_.GetValue(); }
- bool WasCollected() const { return weak_function_.WasCollected(); }
-
- private:
- JSContext* context_;
- WeakHeapObject weak_function_;
-};
-
-template <typename R, typename A1, typename A2, typename A3, typename A4>
-class MozjsCallbackFunction<R(A1, A2, A3, A4)>
- : public CallbackFunction<R(A1, A2, A3, A4)> {
- public:
- typedef CallbackFunction<R(A1, A2, A3, A4)> BaseType;
-
- explicit MozjsCallbackFunction(JSContext* context, JS::HandleObject function)
- : context_(context), weak_function_(context, function) {
- DCHECK(context_);
- DCHECK(JS_ObjectIsFunction(context_, function));
- }
-
- explicit MozjsCallbackFunction(JSContext* context, JS::HandleValue function)
- : context_(context), weak_function_(context, function) {
- DCHECK(context_);
- DCHECK(function.isObject());
- DCHECK(JS_ObjectIsFunction(context_, JSVAL_TO_OBJECT(function)));
- }
-
- CallbackResult<R> Run(
- typename base::internal::CallbackParamTraits<A1>::ForwardType a1,
- typename base::internal::CallbackParamTraits<A2>::ForwardType a2,
- typename base::internal::CallbackParamTraits<A3>::ForwardType a3,
- typename base::internal::CallbackParamTraits<A4>::ForwardType a4)
- const OVERRIDE {
- ENABLE_JS_STACK_TRACE_IN_SCOPE(context_);
- TRACK_MEMORY_SCOPE("Javascript");
- TRACE_EVENT0("cobalt::script::mozjs", "MozjsCallbackFunction::Run");
- CallbackResult<R> callback_result;
- JSAutoRequest auto_request(context_);
- JS::RootedObject function(context_, weak_function_.GetObject());
- if (!function) {
- DLOG(WARNING) << "Function was garbage collected.";
- callback_result.exception = true;
- return callback_result;
- }
-
- JSAutoCompartment auto_compartment(context_, function);
- AutoSaveExceptionState auto_save_exception_state(context_);
-
- // https://www.w3.org/TR/WebIDL/#es-invoking-callback-functions
- // Callback 'this' is set to null, unless overridden by other specifications
- JS::Value this_value(JS::NullValue());
- JS::RootedValue return_value(context_);
- const int kNumArguments = 4;
- JS::Value args[4];
- js::SetValueRangeToNull(args, kNumArguments);
- js::AutoValueArray auto_array_rooter(context_, args, kNumArguments);
- ToJSValue(context_, a1, auto_array_rooter.handleAt(0));
- ToJSValue(context_, a2, auto_array_rooter.handleAt(1));
- ToJSValue(context_, a3, auto_array_rooter.handleAt(2));
- ToJSValue(context_, a4, auto_array_rooter.handleAt(3));
-
- JSBool call_result = JS::Call(context_, this_value, function,
- kNumArguments, args, return_value.address());
- if (!call_result) {
- DLOG(WARNING) << "Exception in callback: "
- << util::GetExceptionString(context_);
- callback_result.exception = true;
- } else {
- callback_result = ConvertCallbackReturnValue<R>(context_, return_value);
- }
-
- return callback_result;
- }
-
- JSObject* handle() const { return weak_function_.GetObject(); }
- const JS::Value& value() const { return weak_function_.GetValue(); }
- bool WasCollected() const { return weak_function_.WasCollected(); }
-
- private:
- JSContext* context_;
- WeakHeapObject weak_function_;
-};
-
-template <typename R, typename A1, typename A2, typename A3, typename A4,
- typename A5>
-class MozjsCallbackFunction<R(A1, A2, A3, A4, A5)>
- : public CallbackFunction<R(A1, A2, A3, A4, A5)> {
- public:
- typedef CallbackFunction<R(A1, A2, A3, A4, A5)> BaseType;
-
- explicit MozjsCallbackFunction(JSContext* context, JS::HandleObject function)
- : context_(context), weak_function_(context, function) {
- DCHECK(context_);
- DCHECK(JS_ObjectIsFunction(context_, function));
- }
-
- explicit MozjsCallbackFunction(JSContext* context, JS::HandleValue function)
- : context_(context), weak_function_(context, function) {
- DCHECK(context_);
- DCHECK(function.isObject());
- DCHECK(JS_ObjectIsFunction(context_, JSVAL_TO_OBJECT(function)));
- }
-
- CallbackResult<R> Run(
- typename base::internal::CallbackParamTraits<A1>::ForwardType a1,
- typename base::internal::CallbackParamTraits<A2>::ForwardType a2,
- typename base::internal::CallbackParamTraits<A3>::ForwardType a3,
- typename base::internal::CallbackParamTraits<A4>::ForwardType a4,
- typename base::internal::CallbackParamTraits<A5>::ForwardType a5)
- const OVERRIDE {
- ENABLE_JS_STACK_TRACE_IN_SCOPE(context_);
- TRACK_MEMORY_SCOPE("Javascript");
- TRACE_EVENT0("cobalt::script::mozjs", "MozjsCallbackFunction::Run");
- CallbackResult<R> callback_result;
- JSAutoRequest auto_request(context_);
- JS::RootedObject function(context_, weak_function_.GetObject());
- if (!function) {
- DLOG(WARNING) << "Function was garbage collected.";
- callback_result.exception = true;
- return callback_result;
- }
-
- JSAutoCompartment auto_compartment(context_, function);
- AutoSaveExceptionState auto_save_exception_state(context_);
-
- // https://www.w3.org/TR/WebIDL/#es-invoking-callback-functions
- // Callback 'this' is set to null, unless overridden by other specifications
- JS::Value this_value(JS::NullValue());
- JS::RootedValue return_value(context_);
- const int kNumArguments = 5;
- JS::Value args[5];
- js::SetValueRangeToNull(args, kNumArguments);
- js::AutoValueArray auto_array_rooter(context_, args, kNumArguments);
- ToJSValue(context_, a1, auto_array_rooter.handleAt(0));
- ToJSValue(context_, a2, auto_array_rooter.handleAt(1));
- ToJSValue(context_, a3, auto_array_rooter.handleAt(2));
- ToJSValue(context_, a4, auto_array_rooter.handleAt(3));
- ToJSValue(context_, a5, auto_array_rooter.handleAt(4));
-
- JSBool call_result = JS::Call(context_, this_value, function,
- kNumArguments, args, return_value.address());
- if (!call_result) {
- DLOG(WARNING) << "Exception in callback: "
- << util::GetExceptionString(context_);
- callback_result.exception = true;
- } else {
- callback_result = ConvertCallbackReturnValue<R>(context_, return_value);
- }
-
- return callback_result;
- }
-
- JSObject* handle() const { return weak_function_.GetObject(); }
- const JS::Value& value() const { return weak_function_.GetValue(); }
- bool WasCollected() const { return weak_function_.WasCollected(); }
-
- private:
- JSContext* context_;
- WeakHeapObject weak_function_;
-};
-
-template <typename R, typename A1, typename A2, typename A3, typename A4,
- typename A5, typename A6>
-class MozjsCallbackFunction<R(A1, A2, A3, A4, A5, A6)>
- : public CallbackFunction<R(A1, A2, A3, A4, A5, A6)> {
- public:
- typedef CallbackFunction<R(A1, A2, A3, A4, A5, A6)> BaseType;
-
- explicit MozjsCallbackFunction(JSContext* context, JS::HandleObject function)
- : context_(context), weak_function_(context, function) {
- DCHECK(context_);
- DCHECK(JS_ObjectIsFunction(context_, function));
- }
-
- explicit MozjsCallbackFunction(JSContext* context, JS::HandleValue function)
- : context_(context), weak_function_(context, function) {
- DCHECK(context_);
- DCHECK(function.isObject());
- DCHECK(JS_ObjectIsFunction(context_, JSVAL_TO_OBJECT(function)));
- }
-
- CallbackResult<R> Run(
- typename base::internal::CallbackParamTraits<A1>::ForwardType a1,
- typename base::internal::CallbackParamTraits<A2>::ForwardType a2,
- typename base::internal::CallbackParamTraits<A3>::ForwardType a3,
- typename base::internal::CallbackParamTraits<A4>::ForwardType a4,
- typename base::internal::CallbackParamTraits<A5>::ForwardType a5,
- typename base::internal::CallbackParamTraits<A6>::ForwardType a6)
- const OVERRIDE {
- ENABLE_JS_STACK_TRACE_IN_SCOPE(context_);
- TRACK_MEMORY_SCOPE("Javascript");
- TRACE_EVENT0("cobalt::script::mozjs", "MozjsCallbackFunction::Run");
- CallbackResult<R> callback_result;
- JSAutoRequest auto_request(context_);
- JS::RootedObject function(context_, weak_function_.GetObject());
- if (!function) {
- DLOG(WARNING) << "Function was garbage collected.";
- callback_result.exception = true;
- return callback_result;
- }
-
- JSAutoCompartment auto_compartment(context_, function);
- AutoSaveExceptionState auto_save_exception_state(context_);
-
- // https://www.w3.org/TR/WebIDL/#es-invoking-callback-functions
- // Callback 'this' is set to null, unless overridden by other specifications
- JS::Value this_value(JS::NullValue());
- JS::RootedValue return_value(context_);
- const int kNumArguments = 6;
- JS::Value args[6];
- js::SetValueRangeToNull(args, kNumArguments);
- js::AutoValueArray auto_array_rooter(context_, args, kNumArguments);
- ToJSValue(context_, a1, auto_array_rooter.handleAt(0));
- ToJSValue(context_, a2, auto_array_rooter.handleAt(1));
- ToJSValue(context_, a3, auto_array_rooter.handleAt(2));
- ToJSValue(context_, a4, auto_array_rooter.handleAt(3));
- ToJSValue(context_, a5, auto_array_rooter.handleAt(4));
- ToJSValue(context_, a6, auto_array_rooter.handleAt(5));
-
- JSBool call_result = JS::Call(context_, this_value, function,
- kNumArguments, args, return_value.address());
- if (!call_result) {
- DLOG(WARNING) << "Exception in callback: "
- << util::GetExceptionString(context_);
- callback_result.exception = true;
- } else {
- callback_result = ConvertCallbackReturnValue<R>(context_, return_value);
- }
-
- return callback_result;
- }
-
- JSObject* handle() const { return weak_function_.GetObject(); }
- const JS::Value& value() const { return weak_function_.GetValue(); }
- bool WasCollected() const { return weak_function_.WasCollected(); }
-
- private:
- JSContext* context_;
- WeakHeapObject weak_function_;
-};
-
-template <typename R, typename A1, typename A2, typename A3, typename A4,
- typename A5, typename A6, typename A7>
-class MozjsCallbackFunction<R(A1, A2, A3, A4, A5, A6, A7)>
- : public CallbackFunction<R(A1, A2, A3, A4, A5, A6, A7)> {
- public:
- typedef CallbackFunction<R(A1, A2, A3, A4, A5, A6, A7)> BaseType;
-
- explicit MozjsCallbackFunction(JSContext* context, JS::HandleObject function)
- : context_(context), weak_function_(context, function) {
- DCHECK(context_);
- DCHECK(JS_ObjectIsFunction(context_, function));
- }
-
- explicit MozjsCallbackFunction(JSContext* context, JS::HandleValue function)
- : context_(context), weak_function_(context, function) {
- DCHECK(context_);
- DCHECK(function.isObject());
- DCHECK(JS_ObjectIsFunction(context_, JSVAL_TO_OBJECT(function)));
- }
-
- CallbackResult<R> Run(
- typename base::internal::CallbackParamTraits<A1>::ForwardType a1,
- typename base::internal::CallbackParamTraits<A2>::ForwardType a2,
- typename base::internal::CallbackParamTraits<A3>::ForwardType a3,
- typename base::internal::CallbackParamTraits<A4>::ForwardType a4,
- typename base::internal::CallbackParamTraits<A5>::ForwardType a5,
- typename base::internal::CallbackParamTraits<A6>::ForwardType a6,
- typename base::internal::CallbackParamTraits<A7>::ForwardType a7)
- const OVERRIDE {
- ENABLE_JS_STACK_TRACE_IN_SCOPE(context_);
- TRACK_MEMORY_SCOPE("Javascript");
- TRACE_EVENT0("cobalt::script::mozjs", "MozjsCallbackFunction::Run");
- CallbackResult<R> callback_result;
- JSAutoRequest auto_request(context_);
- JS::RootedObject function(context_, weak_function_.GetObject());
- if (!function) {
- DLOG(WARNING) << "Function was garbage collected.";
- callback_result.exception = true;
- return callback_result;
- }
-
- JSAutoCompartment auto_compartment(context_, function);
- AutoSaveExceptionState auto_save_exception_state(context_);
-
- // https://www.w3.org/TR/WebIDL/#es-invoking-callback-functions
- // Callback 'this' is set to null, unless overridden by other specifications
- JS::Value this_value(JS::NullValue());
- JS::RootedValue return_value(context_);
- const int kNumArguments = 7;
- JS::Value args[7];
- js::SetValueRangeToNull(args, kNumArguments);
- js::AutoValueArray auto_array_rooter(context_, args, kNumArguments);
- ToJSValue(context_, a1, auto_array_rooter.handleAt(0));
- ToJSValue(context_, a2, auto_array_rooter.handleAt(1));
- ToJSValue(context_, a3, auto_array_rooter.handleAt(2));
- ToJSValue(context_, a4, auto_array_rooter.handleAt(3));
- ToJSValue(context_, a5, auto_array_rooter.handleAt(4));
- ToJSValue(context_, a6, auto_array_rooter.handleAt(5));
- ToJSValue(context_, a7, auto_array_rooter.handleAt(6));
-
- JSBool call_result = JS::Call(context_, this_value, function,
- kNumArguments, args, return_value.address());
- if (!call_result) {
- DLOG(WARNING) << "Exception in callback: "
- << util::GetExceptionString(context_);
- callback_result.exception = true;
- } else {
- callback_result = ConvertCallbackReturnValue<R>(context_, return_value);
- }
-
- return callback_result;
- }
-
- JSObject* handle() const { return weak_function_.GetObject(); }
- const JS::Value& value() const { return weak_function_.GetValue(); }
- bool WasCollected() const { return weak_function_.WasCollected(); }
-
- private:
- JSContext* context_;
- WeakHeapObject weak_function_;
-};
-
-template <typename Signature>
-struct TypeTraits<CallbackFunction<Signature> > {
- typedef MozjsUserObjectHolder<MozjsCallbackFunction<Signature> >
- ConversionType;
- typedef const ScriptValue<CallbackFunction<Signature> >* ReturnType;
-};
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_MOZJS_CALLBACK_FUNCTION_H_
diff --git a/src/cobalt/script/mozjs/mozjs_callback_function.h.pump b/src/cobalt/script/mozjs/mozjs_callback_function.h.pump
deleted file mode 100644
index 3cfea93..0000000
--- a/src/cobalt/script/mozjs/mozjs_callback_function.h.pump
+++ /dev/null
@@ -1,155 +0,0 @@
-$$ This is a pump file for generating file templates. Pump is a python
-$$ script that is part of the Google Test suite of utilities. Description
-$$ can be found here:
-$$
-$$ http://code.google.com/p/googletest/wiki/PumpManual
-$$
-
-$$ This should be no larger than MAX_ARITY in base/bind.h.pump.
-$var MAX_ARITY = 7
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// clang-format off
-
-#ifndef COBALT_SCRIPT_MOZJS_MOZJS_CALLBACK_FUNCTION_H_
-#define COBALT_SCRIPT_MOZJS_MOZJS_CALLBACK_FUNCTION_H_
-
-#include "base/logging.h"
-#include "cobalt/script/callback_function.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/convert_callback_return_value.h"
-#include "cobalt/script/mozjs/util/exception_helpers.h"
-#include "cobalt/script/mozjs/util/stack_trace_helpers.h"
-#include "cobalt/script/mozjs/weak_heap_object.h"
-#include "nb/memory_scope.h"
-#include "third_party/mozjs/js/jsd/jsd.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jscntxt.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-// First, we forward declare the Callback class template. This informs the
-// compiler that the template only has 1 type parameter which is the base
-// CallbackFunction template class with parameters.
-//
-// See base/callback.h.pump for further discussion on this pattern.
-template <typename Sig>
-class MozjsCallbackFunction;
-
-$range ARITY 0..MAX_ARITY
-$for ARITY [[
-$range ARG 1..ARITY
-
-
-$if ARITY == 0 [[
-template <typename R>
-class MozjsCallbackFunction<R(void)>
- : public CallbackFunction<R(void)> {
-]] $else [[
-template <typename R, $for ARG , [[typename A$(ARG)]]>
-class MozjsCallbackFunction<R($for ARG , [[A$(ARG)]])>
- : public CallbackFunction<R($for ARG , [[A$(ARG)]])> {
-]]
-
- public:
- typedef CallbackFunction<R($for ARG , [[A$(ARG)]])> BaseType;
-
- explicit MozjsCallbackFunction(JSContext* context, JS::HandleObject function)
- : context_(context), weak_function_(context, function) {
- DCHECK(context_);
- DCHECK(JS_ObjectIsFunction(context_, function));
- }
-
- explicit MozjsCallbackFunction(JSContext* context, JS::HandleValue function)
- : context_(context), weak_function_(context, function) {
- DCHECK(context_);
- DCHECK(function.isObject());
- DCHECK(JS_ObjectIsFunction(context_, JSVAL_TO_OBJECT(function)));
- }
-
- CallbackResult<R> Run($for ARG , [[
-
- typename base::internal::CallbackParamTraits<A$(ARG)>::ForwardType a$(ARG)]])
- const OVERRIDE {
- ENABLE_JS_STACK_TRACE_IN_SCOPE(context_);
- TRACK_MEMORY_SCOPE("Javascript");
- TRACE_EVENT0("cobalt::script::mozjs", "MozjsCallbackFunction::Run");
- CallbackResult<R> callback_result;
- JSAutoRequest auto_request(context_);
- JS::RootedObject function(context_, weak_function_.GetObject());
- if (!function) {
- DLOG(WARNING) << "Function was garbage collected.";
- callback_result.exception = true;
- return callback_result;
- }
-
- JSAutoCompartment auto_compartment(context_, function);
- AutoSaveExceptionState auto_save_exception_state(context_);
-
- // https://www.w3.org/TR/WebIDL/#es-invoking-callback-functions
- // Callback 'this' is set to null, unless overridden by other specifications
- JS::Value this_value(JS::NullValue());
- JS::RootedValue return_value(context_);
- const int kNumArguments = $(ARITY);
-
-$if ARITY > 0 [[
- JS::Value args[$(ARITY)];
- js::SetValueRangeToNull(args, kNumArguments);
- js::AutoValueArray auto_array_rooter(context_, args, kNumArguments);
- $for ARG [[ToJSValue(context_, a$(ARG), auto_array_rooter.handleAt($(ARG - 1)));
- ]]
-
- JSBool call_result = JS::Call(context_, this_value, function,
- kNumArguments, args, return_value.address());
-]] $else [[
- JSBool call_result = JS::Call(context_, this_value, function, 0, NULL,
- return_value.address());
-]]
-
- if (!call_result) {
- DLOG(WARNING) << "Exception in callback: "
- << util::GetExceptionString(context_);
- callback_result.exception = true;
- } else {
- callback_result = ConvertCallbackReturnValue<R>(context_, return_value);
- }
-
- return callback_result;
- }
-
- JSObject* handle() const { return weak_function_.GetObject(); }
- const JS::Value& value() const { return weak_function_.GetValue(); }
- bool WasCollected() const { return weak_function_.WasCollected(); }
-
- private:
- JSContext* context_;
- WeakHeapObject weak_function_;
-};
-
-]]
-
-template <typename Signature>
-struct TypeTraits<CallbackFunction<Signature> > {
- typedef MozjsUserObjectHolder<MozjsCallbackFunction<Signature> > ConversionType;
- typedef const ScriptValue<CallbackFunction<Signature> >* ReturnType;
-};
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_MOZJS_CALLBACK_FUNCTION_H_
diff --git a/src/cobalt/script/mozjs/mozjs_callback_interface.cc b/src/cobalt/script/mozjs/mozjs_callback_interface.cc
deleted file mode 100644
index 99b7a7f..0000000
--- a/src/cobalt/script/mozjs/mozjs_callback_interface.cc
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "cobalt/script/mozjs/mozjs_callback_interface.h"
-
-#include "base/logging.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-// Helper class to get the actual callable object from a JSObject implementing
-// a callback interface.
-// Returns true if a callable was found, and false if not.
-bool GetCallableForCallbackInterface(JSContext* context,
- JS::HandleObject implementing_object,
- const char* property_name,
- JS::MutableHandleValue out_callable) {
- DCHECK(implementing_object);
- DCHECK(property_name);
-
- if (JS_ObjectIsCallable(context, implementing_object)) {
- out_callable.set(OBJECT_TO_JSVAL(implementing_object));
- return true;
- }
- // Implementing object is not callable. Check for a callable property of the
- // specified name.
- JS::RootedValue property(context);
- if (JS_GetProperty(context, implementing_object, property_name,
- property.address())) {
- if (property.isObject() &&
- JS_ObjectIsCallable(context, JSVAL_TO_OBJECT(property))) {
- out_callable.set(property);
- return true;
- }
- }
-
- // Implementing object is not callable, nor does it have a callable property
- // of the specified name.
- return false;
-}
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
diff --git a/src/cobalt/script/mozjs/mozjs_callback_interface.h b/src/cobalt/script/mozjs/mozjs_callback_interface.h
deleted file mode 100644
index a6d3f6f..0000000
--- a/src/cobalt/script/mozjs/mozjs_callback_interface.h
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef COBALT_SCRIPT_MOZJS_MOZJS_CALLBACK_INTERFACE_H_
-#define COBALT_SCRIPT_MOZJS_MOZJS_CALLBACK_INTERFACE_H_
-
-#include "cobalt/script/callback_interface_traits.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-// Helper class to get the actual callable object from a JSObject implementing
-// a callback interface.
-// Returns true if a callable was found, and false if not.
-bool GetCallableForCallbackInterface(JSContext* context,
- JS::HandleObject implementing_object,
- const char* property_name,
- JS::MutableHandleValue out_callable);
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_MOZJS_CALLBACK_INTERFACE_H_
diff --git a/src/cobalt/script/mozjs/mozjs_callback_interface_holder.h b/src/cobalt/script/mozjs/mozjs_callback_interface_holder.h
deleted file mode 100644
index 74505f0..0000000
--- a/src/cobalt/script/mozjs/mozjs_callback_interface_holder.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef COBALT_SCRIPT_MOZJS_MOZJS_CALLBACK_INTERFACE_HOLDER_H_
-#define COBALT_SCRIPT_MOZJS_MOZJS_CALLBACK_INTERFACE_HOLDER_H_
-
-#include "base/memory/scoped_ptr.h"
-#include "cobalt/script/callback_interface_traits.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/type_traits.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-template <typename MozjsCallbackInterface>
-class MozjsCallbackInterfaceHolder
- : public MozjsUserObjectHolder<MozjsCallbackInterface> {
- public:
- typedef MozjsUserObjectHolder<MozjsCallbackInterface> BaseClass;
- MozjsCallbackInterfaceHolder() {}
- MozjsCallbackInterfaceHolder(JS::HandleObject object, JSContext* context,
- WrapperFactory* wrapper_factory)
- : BaseClass(object, context, wrapper_factory) {}
- MozjsCallbackInterfaceHolder(JS::HandleValue value, JSContext* context,
- WrapperFactory* wrapper_factory)
- : BaseClass(value, context, wrapper_factory) {}
-};
-
-template <typename CallbackInterface>
-struct TypeTraits<CallbackInterfaceTraits<CallbackInterface> > {
- typedef MozjsCallbackInterfaceHolder<typename CallbackInterfaceTraits<
- CallbackInterface>::MozjsCallbackInterfaceClass> ConversionType;
- typedef const ScriptValue<CallbackInterface>* ReturnType;
-};
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_MOZJS_CALLBACK_INTERFACE_HOLDER_H_
diff --git a/src/cobalt/script/mozjs/mozjs_debugger.cc b/src/cobalt/script/mozjs/mozjs_debugger.cc
deleted file mode 100644
index 347508d..0000000
--- a/src/cobalt/script/mozjs/mozjs_debugger.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "cobalt/script/mozjs/mozjs_debugger.h"
-
-#include "base/logging.h"
-
-namespace cobalt {
-namespace script {
-
-// Static factory method declared in public interface.
-scoped_ptr<ScriptDebugger> ScriptDebugger::CreateDebugger(
- GlobalEnvironment* global_environment, Delegate* delegate) {
- return scoped_ptr<ScriptDebugger>(
- new mozjs::MozjsDebugger(global_environment, delegate));
-}
-
-namespace mozjs {
-
-MozjsDebugger::MozjsDebugger(GlobalEnvironment* global_environment,
- Delegate* delegate) {
- NOTIMPLEMENTED();
-}
-
-MozjsDebugger::~MozjsDebugger() { NOTIMPLEMENTED(); }
-
-void MozjsDebugger::Attach() { NOTIMPLEMENTED(); }
-
-void MozjsDebugger::Detach() { NOTIMPLEMENTED(); }
-
-void MozjsDebugger::Pause() { NOTIMPLEMENTED(); }
-
-void MozjsDebugger::Resume() { NOTIMPLEMENTED(); }
-
-void MozjsDebugger::SetBreakpoint(const std::string& script_id, int line_number,
- int column_number) {
- NOTIMPLEMENTED();
-}
-
-script::ScriptDebugger::PauseOnExceptionsState
-MozjsDebugger::SetPauseOnExceptions(PauseOnExceptionsState state) {
- NOTIMPLEMENTED();
- return kNone;
-}
-
-void MozjsDebugger::StepInto() { NOTIMPLEMENTED(); }
-
-void MozjsDebugger::StepOut() { NOTIMPLEMENTED(); }
-
-void MozjsDebugger::StepOver() { NOTIMPLEMENTED(); }
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
diff --git a/src/cobalt/script/mozjs/mozjs_debugger.h b/src/cobalt/script/mozjs/mozjs_debugger.h
deleted file mode 100644
index 473a7e9..0000000
--- a/src/cobalt/script/mozjs/mozjs_debugger.h
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#ifndef COBALT_SCRIPT_MOZJS_MOZJS_DEBUGGER_H_
-#define COBALT_SCRIPT_MOZJS_MOZJS_DEBUGGER_H_
-
-#include <string>
-
-#include "cobalt/script/script_debugger.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-class MozjsDebugger : public ScriptDebugger {
- public:
- MozjsDebugger(GlobalEnvironment* global_environment, Delegate* delegate);
- ~MozjsDebugger() OVERRIDE;
-
- // Implementation of ScriptDebugger.
- void Attach() OVERRIDE;
- void Detach() OVERRIDE;
- void Pause() OVERRIDE;
- void Resume() OVERRIDE;
- void SetBreakpoint(const std::string& script_id, int line_number,
- int column_number) OVERRIDE;
- PauseOnExceptionsState SetPauseOnExceptions(
- PauseOnExceptionsState state) OVERRIDE;
- void StepInto() OVERRIDE;
- void StepOut() OVERRIDE;
- void StepOver() OVERRIDE;
-};
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_MOZJS_DEBUGGER_H_
diff --git a/src/cobalt/script/mozjs/mozjs_engine.cc b/src/cobalt/script/mozjs/mozjs_engine.cc
deleted file mode 100644
index cfc1c5e..0000000
--- a/src/cobalt/script/mozjs/mozjs_engine.cc
+++ /dev/null
@@ -1,307 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "cobalt/script/mozjs/mozjs_engine.h"
-
-#include <algorithm>
-#include <string>
-
-#include "base/debug/trace_event.h"
-#include "base/file_path.h"
-#include "base/logging.h"
-#include "base/message_loop.h"
-#include "cobalt/base/c_val.h"
-#include "cobalt/browser/stack_size_constants.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/util/stack_trace_helpers.h"
-#include "third_party/mozjs/cobalt_config/include/jscustomallocator.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jscntxt.h"
-#include "third_party/mozjs/js/src/jsdbgapi.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-namespace {
-// Trigger garbage collection this many seconds after the last one.
-const int kGarbageCollectionIntervalSeconds = 60;
-
-JSBool CheckAccessStub(JSContext*, JS::Handle<JSObject*>, JS::Handle<jsid>,
- JSAccessMode, JS::MutableHandle<JS::Value>) {
- return true;
-}
-
-JSSecurityCallbacks security_callbacks = {
- CheckAccessStub,
- MozjsGlobalEnvironment::CheckEval
-};
-
-class EngineStats {
- public:
- EngineStats();
-
- static EngineStats* GetInstance() {
- return Singleton<EngineStats,
- StaticMemorySingletonTraits<EngineStats> >::get();
- }
-
- void EngineCreated() { ++engine_count_; }
- void EngineDestroyed() { --engine_count_; }
-
- size_t UpdateMemoryStatsAndReturnReserved() {
- // Accessing CVals triggers a lock, so rely on local variables when
- // possible to avoid unecessary locking.
- size_t allocated_memory =
- MemoryAllocatorReporter::Get()->GetCurrentBytesAllocated();
- size_t mapped_memory =
- MemoryAllocatorReporter::Get()->GetCurrentBytesMapped();
-
- allocated_memory_ = allocated_memory;
- mapped_memory_ = mapped_memory;
-
- return allocated_memory + mapped_memory;
- }
-
- private:
- base::CVal<int> engine_count_;
- base::CVal<base::cval::SizeInBytes, base::CValPublic> allocated_memory_;
- base::CVal<base::cval::SizeInBytes, base::CValPublic> mapped_memory_;
-};
-
-EngineStats::EngineStats()
- : engine_count_("Count.JS.Engine", 0,
- "Total JavaScript engine registered."),
- allocated_memory_("Memory.JS.AllocatedMemory", 0,
- "JS memory occupied by the Mozjs allocator."),
- mapped_memory_("Memory.JS.MappedMemory", 0, "JS mapped memory.") {}
-
-// Pretend we always preserve wrappers since we never call
-// SetPreserveWrapperCallback anywhere else. This is necessary for
-// TryPreserveReflector called by WeakMap to not crash. Disabling
-// bindings to WeakMap does not appear to be an easy option because
-// of its use in selfhosted.js. See bugzilla discussion linked where
-// they decided to include a similar dummy in the mozjs shell.
-// https://bugzilla.mozilla.org/show_bug.cgi?id=829798
-bool DummyPreserveWrapperCallback(JSContext *cx, JSObject *obj) {
- return true;
-}
-} // namespace
-
-MozjsEngine::MozjsEngine(const Options& options)
- : accumulated_extra_memory_cost_(0),
- moz_options_(options) {
- TRACE_EVENT0("cobalt::script", "MozjsEngine::MozjsEngine()");
- // TODO: Investigate the benefit of helper threads and things like
- // parallel compilation.
- runtime_ = JS_NewRuntime(moz_options_.js_options.gc_threshold_bytes,
- JS_NO_HELPER_THREADS);
- CHECK(runtime_);
-
- // Sets the size of the native stack that should not be exceeded.
- // Setting three quarters of the web module stack size to ensure that native
- // stack won't exceed the stack size.
- JS_SetNativeStackQuota(runtime_,
- cobalt::browser::kWebModuleStackSize / 4 * 3);
-
- JS_SetRuntimePrivate(runtime_, this);
-
- JS_SetSecurityCallbacks(runtime_, &security_callbacks);
-
- // Use incremental garbage collection.
- JS_SetGCParameter(runtime_, JSGC_MODE, JSGC_MODE_INCREMENTAL);
-
- // Allow Spidermonkey to allocate as much memory as it needs. If this limit
- // is set we could limit the memory used by JS and "gracefully" restart,
- // for example.
- JS_SetGCParameter(runtime_, JSGC_MAX_BYTES, 0xffffffff);
-
- // Callback to be called whenever a JSContext is created or destroyed for this
- // JSRuntime.
- JS_SetContextCallback(runtime_, &MozjsEngine::ContextCallback);
-
- // Callback to be called at different points during garbage collection.
- JS_SetGCCallback(runtime_, &MozjsEngine::GCCallback);
-
- // Callback to be called during garbage collection during the sweep phase.
- JS_SetFinalizeCallback(runtime_, &MozjsEngine::FinalizeCallback);
-
- js::SetPreserveWrapperCallback(runtime_, DummyPreserveWrapperCallback);
-
- EngineStats::GetInstance()->EngineCreated();
-
- if (MessageLoop::current()) {
- gc_timer_.Start(FROM_HERE, base::TimeDelta::FromSeconds(
- kGarbageCollectionIntervalSeconds),
- this, &MozjsEngine::TimerGarbageCollect);
- }
-}
-
-MozjsEngine::~MozjsEngine() {
- DCHECK(thread_checker_.CalledOnValidThread());
- EngineStats::GetInstance()->EngineDestroyed();
- JS_DestroyRuntime(runtime_);
-}
-
-scoped_refptr<GlobalEnvironment> MozjsEngine::CreateGlobalEnvironment() {
- TRACE_EVENT0("cobalt::script", "MozjsEngine::CreateGlobalEnvironment()");
- DCHECK(thread_checker_.CalledOnValidThread());
- return new MozjsGlobalEnvironment(runtime_, moz_options_.js_options);
-}
-
-void MozjsEngine::CollectGarbage() {
- TRACE_EVENT0("cobalt::script", "MozjsEngine::CollectGarbage()");
- DCHECK(thread_checker_.CalledOnValidThread());
- JS_GC(runtime_);
-}
-
-void MozjsEngine::ReportExtraMemoryCost(size_t bytes) {
- DCHECK(thread_checker_.CalledOnValidThread());
- accumulated_extra_memory_cost_ += bytes;
-
- const bool do_collect_garbage = accumulated_extra_memory_cost_ >
- moz_options_.js_options.gc_threshold_bytes;
- if (do_collect_garbage) {
- accumulated_extra_memory_cost_ = 0;
- CollectGarbage();
- }
-}
-
-bool MozjsEngine::RegisterErrorHandler(JavaScriptEngine::ErrorHandler handler) {
- error_handler_ = handler;
- JSDebugErrorHook hook = ErrorHookCallback;
- void* closure = this;
- JS_SetDebugErrorHook(runtime_, hook, closure);
- return true;
-}
-
-void MozjsEngine::SetGcThreshold(int64_t bytes) {
- runtime_->setGCMaxMallocBytes(static_cast<size_t>(bytes));
-}
-
-void MozjsEngine::TimerGarbageCollect() {
- TRACE_EVENT0("cobalt::script", "MozjsEngine::TimerGarbageCollect()");
- CollectGarbage();
-}
-
-JSBool MozjsEngine::ContextCallback(JSContext* context, unsigned context_op) {
- JSRuntime* runtime = JS_GetRuntime(context);
- MozjsEngine* engine =
- static_cast<MozjsEngine*>(JS_GetRuntimePrivate(runtime));
- DCHECK(engine->thread_checker_.CalledOnValidThread());
- if (context_op == JSCONTEXT_NEW) {
- engine->contexts_.push_back(context);
- } else if (context_op == JSCONTEXT_DESTROY) {
- ContextVector::iterator it =
- std::find(engine->contexts_.begin(), engine->contexts_.end(), context);
- if (it != engine->contexts_.end()) {
- engine->contexts_.erase(it);
- }
- }
- return true;
-}
-
-void MozjsEngine::GCCallback(JSRuntime* runtime, JSGCStatus status) {
- MozjsEngine* engine =
- static_cast<MozjsEngine*>(JS_GetRuntimePrivate(runtime));
- if (status == JSGC_END) {
- engine->accumulated_extra_memory_cost_ = 0;
- // Reset the GC timer to avoid having the timed GC come soon after this one.
- if (engine->gc_timer_.IsRunning()) {
- engine->gc_timer_.Reset();
- }
- }
- for (int i = 0; i < engine->contexts_.size(); ++i) {
- MozjsGlobalEnvironment* global_environment =
- MozjsGlobalEnvironment::GetFromContext(engine->contexts_[i]);
- if (status == JSGC_BEGIN) {
- TRACE_EVENT_BEGIN0("cobalt::script", "SpiderMonkey Garbage Collection");
- global_environment->BeginGarbageCollection();
- } else if (status == JSGC_END) {
- global_environment->EndGarbageCollection();
- TRACE_EVENT_END0("cobalt::script", "SpiderMonkey Garbage Collection");
- }
- }
-}
-
-void MozjsEngine::FinalizeCallback(JSFreeOp* free_op, JSFinalizeStatus status,
- JSBool is_compartment) {
- TRACE_EVENT0("cobalt::script", "MozjsEngine::FinalizeCallback()");
- MozjsEngine* engine =
- static_cast<MozjsEngine*>(JS_GetRuntimePrivate(free_op->runtime()));
- DCHECK(engine->thread_checker_.CalledOnValidThread());
- if (status == JSFINALIZE_GROUP_START) {
- for (int i = 0; i < engine->contexts_.size(); ++i) {
- MozjsGlobalEnvironment* global_environment =
- MozjsGlobalEnvironment::GetFromContext(engine->contexts_[i]);
- global_environment->DoSweep();
- }
- }
-}
-
-JSBool MozjsEngine::ErrorHookCallback(JSContext* context, const char* message,
- JSErrorReport* report, void* closure) {
- MozjsEngine* this_ptr = static_cast<MozjsEngine*>(closure);
- return this_ptr->ReportJSError(context, message, report);
-}
-
-JSBool MozjsEngine::ReportJSError(JSContext* context, const char* message,
- JSErrorReport* report) {
- const bool is_invalid =
- error_handler_.is_null() || !report || !report->filename;
-
- if (is_invalid) {
- return true; // Allow error to propagate in the mozilla engine.
- }
-
- // Report errors, warnings and uncaught exceptions. All other errors
- // (like strict warnings) are ignored.
- const bool do_report_error =
- (report->flags == JSREPORT_ERROR) ||
- (report->flags & JSREPORT_WARNING) ||
- (report->errorNumber == JSMSG_UNCAUGHT_EXCEPTION);
-
- if (do_report_error) {
- std::string file_name = report->filename;
- // Line/column can be zero for internal javascript exceptions. In this
- // case set the values to 1, otherwise the base::SourceLocation object
- // below will dcheck.
- int line = std::max<int>(1, report->lineno);
- int column = std::max<int>(1, report->column);
- if (file_name.empty()) {
- file_name = "<internal exception>";
- }
- base::SourceLocation source_location(file_name, line, column);
- error_handler_.Run(source_location, message);
- }
-
- return true; // Allow error to propagate in the mozilla engine.
-}
-
-} // namespace mozjs
-
-scoped_ptr<JavaScriptEngine> JavaScriptEngine::CreateEngine(
- const JavaScriptEngine::Options& options) {
- TRACE_EVENT0("cobalt::script", "JavaScriptEngine::CreateEngine()");
- mozjs::MozjsEngine::Options moz_options(options);
- return make_scoped_ptr<JavaScriptEngine>(
- new mozjs::MozjsEngine(moz_options));
-}
-
-size_t JavaScriptEngine::UpdateMemoryStatsAndReturnReserved() {
- return mozjs::EngineStats::GetInstance()
- ->UpdateMemoryStatsAndReturnReserved();
-}
-
-} // namespace script
-} // namespace cobalt
diff --git a/src/cobalt/script/mozjs/mozjs_engine.h b/src/cobalt/script/mozjs/mozjs_engine.h
deleted file mode 100644
index 9dda81a..0000000
--- a/src/cobalt/script/mozjs/mozjs_engine.h
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#ifndef COBALT_SCRIPT_MOZJS_MOZJS_ENGINE_H_
-#define COBALT_SCRIPT_MOZJS_MOZJS_ENGINE_H_
-
-#include <vector>
-
-#include "base/threading/thread_checker.h"
-#include "base/timer.h"
-#include "cobalt/script/javascript_engine.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-class MozjsEngine : public JavaScriptEngine {
- public:
- struct Options {
- Options() {}
- explicit Options(const JavaScriptEngine::Options& opt) : js_options(opt) {}
- JavaScriptEngine::Options js_options; // Generic settings.
- };
-
- explicit MozjsEngine(const Options& options);
- ~MozjsEngine() OVERRIDE;
-
- scoped_refptr<GlobalEnvironment> CreateGlobalEnvironment() OVERRIDE;
-
- void CollectGarbage() OVERRIDE;
- void ReportExtraMemoryCost(size_t bytes) OVERRIDE;
- bool RegisterErrorHandler(JavaScriptEngine::ErrorHandler handler) OVERRIDE;
- void SetGcThreshold(int64_t bytes) OVERRIDE;
-
- private:
- void TimerGarbageCollect();
- static JSBool ContextCallback(JSContext* context, unsigned context_op);
- static void GCCallback(JSRuntime* runtime, JSGCStatus status);
- static void FinalizeCallback(JSFreeOp* free_op, JSFinalizeStatus status,
- JSBool is_compartment);
- static JSBool ErrorHookCallback(JSContext* context, const char* message,
- JSErrorReport* report, void* closure);
- JSBool ReportJSError(JSContext* context, const char* message,
- JSErrorReport* report);
-
- base::ThreadChecker thread_checker_;
-
- // Top-level object that represents the Javascript engine. Typically there is
- // one per process, but it's allowed to have multiple.
- JSRuntime* runtime_;
-
- // A list of all contexts created for this JSRuntime.
- typedef std::vector<JSContext*> ContextVector;
- ContextVector contexts_;
-
- // The amount of externally allocated memory since last forced GC.
- size_t accumulated_extra_memory_cost_;
-
- // Used to trigger a garbage collection periodically.
- base::RepeatingTimer<MozjsEngine> gc_timer_;
-
- // Used to handle javascript errors.
- ErrorHandler error_handler_;
-
- Options moz_options_;
-};
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_MOZJS_ENGINE_H_
diff --git a/src/cobalt/script/mozjs/mozjs_exception_state.cc b/src/cobalt/script/mozjs/mozjs_exception_state.cc
deleted file mode 100644
index ab6387d..0000000
--- a/src/cobalt/script/mozjs/mozjs_exception_state.cc
+++ /dev/null
@@ -1,110 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-
-#include <string>
-#include <vector>
-
-#include "base/logging.h"
-#include "base/string_number_conversions.h"
-#include "base/string_util.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "third_party/mozjs/js/src/jsexn.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-namespace {
-
-JSExnType ConvertToMozjsExceptionType(SimpleExceptionType type) {
- switch (type) {
- case kError:
- return JSEXN_ERR;
- case kTypeError:
- return JSEXN_TYPEERR;
- case kRangeError:
- return JSEXN_RANGEERR;
- case kReferenceError:
- return JSEXN_REFERENCEERR;
- case kSyntaxError:
- return JSEXN_SYNTAXERR;
- case kURIError:
- return JSEXN_URIERR;
- }
- NOTREACHED();
- return JSEXN_ERR;
-}
-
-// JSErrorCallback.
-const JSErrorFormatString* GetErrorMessage(void* user_ref, const char* locale,
- const unsigned error_number) {
- return static_cast<JSErrorFormatString*>(user_ref);
-}
-
-} // namespace
-
-void MozjsExceptionState::SetException(
- const scoped_refptr<ScriptException>& exception) {
- DCHECK(thread_checker_.CalledOnValidThread());
- DCHECK(!is_exception_set_);
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context_));
-
- JS::RootedObject exception_object(
- context_,
- global_environment->wrapper_factory()->GetWrapperProxy(exception));
- JS::RootedValue exception_value(context_, OBJECT_TO_JSVAL(exception_object));
- JS_SetPendingException(context_, exception_value);
-
- is_exception_set_ = true;
-}
-
-void MozjsExceptionState::SetSimpleExceptionVA(SimpleExceptionType type,
- const char* format,
- va_list arguments) {
- DCHECK(thread_checker_.CalledOnValidThread());
- DCHECK(!is_exception_set_);
-
- std::string error_message = base::StringPrintV(format, arguments);
- JSErrorFormatString format_string;
- format_string.format = error_message.c_str();
- // Already fed arguments for format.
- format_string.argCount = 0;
- format_string.exnType = ConvertToMozjsExceptionType(type);
-
- // This function creates a JSErrorReport, populate it with an error message
- // obtained from the given JSErrorCallback. The resulting error message is
- // passed to the context's JSErrorReporter callback.
- JS_ReportErrorNumber(context_, GetErrorMessage,
- static_cast<void*>(&format_string), type);
- is_exception_set_ = true;
-}
-
-JSObject* MozjsExceptionState::CreateErrorObject(JSContext* context,
- SimpleExceptionType type) {
- JSExnType mozjs_type = ConvertToMozjsExceptionType(type);
- JS::RootedObject error_prototype(context);
- if (!JS_GetClassPrototype(context, GetExceptionProtoKey(mozjs_type),
- error_prototype.address())) {
- DLOG(ERROR) << "Failed to get Error prototype.";
- return NULL;
- }
- return JS_NewObject(context, NULL, error_prototype, NULL);
-}
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
diff --git a/src/cobalt/script/mozjs/mozjs_exception_state.h b/src/cobalt/script/mozjs/mozjs_exception_state.h
deleted file mode 100644
index 440c6b7..0000000
--- a/src/cobalt/script/mozjs/mozjs_exception_state.h
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#ifndef COBALT_SCRIPT_MOZJS_MOZJS_EXCEPTION_STATE_H_
-#define COBALT_SCRIPT_MOZJS_MOZJS_EXCEPTION_STATE_H_
-
-#include <string>
-
-#include "base/threading/thread_checker.h"
-#include "cobalt/script/exception_state.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-class MozjsExceptionState : public ExceptionState {
- public:
- explicit MozjsExceptionState(JSContext* context)
- : is_exception_set_(false), context_(context) {}
- // ExceptionState interface
- void SetException(const scoped_refptr<ScriptException>& exception) OVERRIDE;
- void SetSimpleExceptionVA(SimpleExceptionType type, const char* format,
- va_list arguments) OVERRIDE;
-
- bool is_exception_set() const { return is_exception_set_; }
-
- static JSObject* CreateErrorObject(JSContext* context,
- SimpleExceptionType type);
-
- private:
- bool is_exception_set_;
- JSContext* context_;
- base::ThreadChecker thread_checker_;
-};
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_MOZJS_EXCEPTION_STATE_H_
diff --git a/src/cobalt/script/mozjs/mozjs_global_environment.cc b/src/cobalt/script/mozjs/mozjs_global_environment.cc
deleted file mode 100644
index 52af1fe..0000000
--- a/src/cobalt/script/mozjs/mozjs_global_environment.cc
+++ /dev/null
@@ -1,528 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-
-#include <algorithm>
-#include <utility>
-
-#include "base/lazy_instance.h"
-#include "base/stringprintf.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/embedded_resources.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_script_value_factory.h"
-#include "cobalt/script/mozjs/mozjs_source_code.h"
-#include "cobalt/script/mozjs/mozjs_wrapper_handle.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/referenced_object_map.h"
-#include "cobalt/script/mozjs/util/exception_helpers.h"
-#include "nb/memory_scope.h"
-#include "third_party/mozjs/js/jsd/jsd.h"
-#include "third_party/mozjs/js/public/RootingAPI.h"
-#include "third_party/mozjs/js/src/jsfriendapi.h"
-#include "third_party/mozjs/js/src/jsfun.h"
-#include "third_party/mozjs/js/src/jsobj.h"
-
-// A note on CompartmentOptions and Principals.
-// These concepts are an integral part of Gecko's security implementation, but
-// we don't need to be concerned with this for Cobalt.
-//
-// Compartments are separate regions of memory. Each global object has a
-// separate compartment. Since Cobalt will use a different JSRuntime for each
-// thread and each global object cannot access another directly anyways, this
-// shouldn't be an issue even in our development workflow.
-// If we support multiple windows in some form, a cross-compartment wrapper is
-// needed to access another global object. If they are same-origin this is
-// simpler.
-// Principals (or Security principals) are used to determine the security
-// relationship between two compartments. Since Cobalt does not have multiple
-// global objects there is no need to define Security principals. Even so,
-// it we'd likely want to implement such a security policy in an engine
-// independent way anyways.
-// See https://developer.mozilla.org/en-US/docs/Mozilla/Gecko/Script_security
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-namespace {
-// Class definition for global object with no bindings.
-JSClass simple_global_class = {
- "global", // name
- JSCLASS_GLOBAL_FLAGS, // flags
- JS_PropertyStub, // addProperty
- JS_DeletePropertyStub, // delProperty
- JS_PropertyStub, // getProperty
- JS_StrictPropertyStub, // setProperty
- JS_EnumerateStub, // enumerate
- JS_ResolveStub, // resolve
- JS_ConvertStub, // convert
-};
-
-// 8192 is the recommended default value.
-const uint32_t kStackChunkSize = 8192;
-
-// This is the default in the spidermonkey shell.
-const uint32_t kMaxCodeCacheBytes = 16 * 1024 * 1024;
-
-// DOM proxies have an extra slot for the expando object at index
-// kJSProxySlotExpando.
-// The expando object is a plain JSObject whose properties correspond to
-// "expandos" (custom properties set by the script author).
-// The exact value stored in the kJSProxySlotExpando slot depends on whether
-// the interface is annotated with the [OverrideBuiltins] extended attribute.
-const uint32_t kJSProxySlotExpando = 0;
-
-// The DOMProxyShadowsCheck function will be called to check if the property for
-// id should be gotten from the prototype, or if there is an own property that
-// shadows it.
-js::DOMProxyShadowsResult DOMProxyShadowsCheck(JSContext* context,
- JS::HandleObject proxy,
- JS::HandleId id) {
- DCHECK(IsProxy(proxy));
- JS::Value value = js::GetProxyExtra(proxy, kJSProxySlotExpando);
- DCHECK(value.isUndefined() || value.isObject());
-
- // [OverrideBuiltins] extended attribute is not supported.
- NOTIMPLEMENTED();
-
- // If DoesntShadow is returned then the slot at listBaseExpandoSlot should
- // either be undefined or point to an expando object that would contain the
- // own property.
- return js::DoesntShadow;
-}
-
-class MozjsStubHandler : public ProxyHandler {
- public:
- MozjsStubHandler()
- : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
- static NamedPropertyHooks named_property_hooks;
- static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks MozjsStubHandler::named_property_hooks = {
- NULL, NULL, NULL, NULL, NULL,
-};
-ProxyHandler::IndexedPropertyHooks MozjsStubHandler::indexed_property_hooks = {
- NULL, NULL, NULL, NULL, NULL,
-};
-
-static base::LazyInstance<MozjsStubHandler> proxy_handler;
-} // namespace
-
-MozjsGlobalEnvironment::MozjsGlobalEnvironment(
- JSRuntime* runtime, const JavaScriptEngine::Options& options)
- : context_(NULL),
- garbage_collection_count_(0),
- cached_interface_data_deleter_(&cached_interface_data_),
- context_destructor_(&context_),
- environment_settings_(NULL),
- last_error_message_(NULL),
- eval_enabled_(false) {
- TRACK_MEMORY_SCOPE("Javascript");
- context_ = JS_NewContext(runtime, kStackChunkSize);
- DCHECK(context_);
- // Set a pointer to this class inside the JSContext.
- JS_SetContextPrivate(context_, this);
-
- JS_SetGCParameterForThread(context_, JSGC_MAX_CODE_CACHE_BYTES,
- kMaxCodeCacheBytes);
- uint32_t moz_options =
- JSOPTION_TYPE_INFERENCE |
- JSOPTION_VAROBJFIX | // Recommended to enable this in the API docs.
- JSOPTION_COMPILE_N_GO | // Compiled scripts will be run only once.
- JSOPTION_UNROOTED_GLOBAL; // Global handle must be visited to ensure it
- // is not GC'd.
-#if ENGINE_SUPPORTS_JIT
- if (!options.disable_jit) {
- moz_options |= JSOPTION_BASELINE | // Enable baseline compiler.
- JSOPTION_ION; // Enable IonMonkey
- // This is required by baseline and IonMonkey.
- js::SetDOMProxyInformation(0 /*domProxyHandlerFamily*/, kJSProxySlotExpando,
- DOMProxyShadowsCheck);
- }
-#endif
-
- JS_SetOptions(context_, moz_options);
-
- JS_SetErrorReporter(context_, &MozjsGlobalEnvironment::ReportErrorHandler);
-
- wrapper_factory_.reset(new WrapperFactory(context_));
- script_value_factory_.reset(new MozjsScriptValueFactory(this));
- referenced_objects_.reset(new ReferencedObjectMap(context_));
-
- JS_AddExtraGCRootsTracer(runtime, TraceFunction, this);
-}
-
-MozjsGlobalEnvironment::~MozjsGlobalEnvironment() {
- DCHECK(thread_checker_.CalledOnValidThread());
- JS_RemoveExtraGCRootsTracer(JS_GetRuntime(context_), TraceFunction, this);
-}
-
-void MozjsGlobalEnvironment::CreateGlobalObject() {
- TRACK_MEMORY_SCOPE("Javascript");
- DCHECK(thread_checker_.CalledOnValidThread());
- DCHECK(!global_object_proxy_);
-
- // The global object is automatically rooted unless the
- // JSOPTION_UNROOTED_GLOBAL option is set.
- JSAutoRequest auto_request(context_);
-
- // NULL JSPrincipals and default JS::CompartmentOptions. See the comment
- // above for rationale.
- JS::RootedObject global_object(
- context_, JS_NewGlobalObject(context_, &simple_global_class, NULL));
- DCHECK(global_object);
-
- // Initialize standard JS constructors prototypes and top-level functions such
- // as Object, isNan, etc.
- JSAutoCompartment auto_compartment(context_, global_object);
- bool success = JS_InitStandardClasses(context_, global_object);
- DCHECK(success);
-
- JS::RootedObject proxy(
- context_, ProxyHandler::NewProxy(context_, global_object, NULL, NULL,
- proxy_handler.Pointer()));
- global_object_proxy_ = proxy;
-
- EvaluateAutomatics();
-}
-
-bool MozjsGlobalEnvironment::EvaluateScript(
- const scoped_refptr<SourceCode>& source_code,
- std::string* out_result_utf8) {
- TRACK_MEMORY_SCOPE("Javascript");
- DCHECK(thread_checker_.CalledOnValidThread());
-
- JSAutoRequest auto_request(context_);
- JSAutoCompartment auto_compartment(context_, global_object_proxy_);
- AutoSaveExceptionState auto_save_exception_state(context_);
- JS::RootedValue result_value(context_);
-
- std::string error_message;
- last_error_message_ = &error_message;
-
- bool success = EvaluateScriptInternal(source_code, &result_value);
- if (out_result_utf8) {
- if (success) {
- MozjsExceptionState exception_state(context_);
- FromJSValue(context_, result_value, kNoConversionFlags, &exception_state,
- out_result_utf8);
- } else if (last_error_message_) {
- *out_result_utf8 = *last_error_message_;
- } else {
- DLOG(ERROR) << "Script execution failed.";
- }
- }
- last_error_message_ = NULL;
- return success;
-}
-
-bool MozjsGlobalEnvironment::EvaluateScript(
- const scoped_refptr<SourceCode>& source_code,
- const scoped_refptr<Wrappable>& owning_object,
- base::optional<OpaqueHandleHolder::Reference>* out_opaque_handle) {
- TRACK_MEMORY_SCOPE("Javascript");
- DCHECK(thread_checker_.CalledOnValidThread());
- JSAutoRequest auto_request(context_);
- JSAutoCompartment auto_compartment(context_, global_object_proxy_);
- AutoSaveExceptionState auto_save_exception_state(context_);
- JS::RootedValue result_value(context_);
- bool success = EvaluateScriptInternal(source_code, &result_value);
- if (success && out_opaque_handle) {
- MozjsObjectHandleHolder mozjs_object_holder(result_value, context_,
- wrapper_factory());
- out_opaque_handle->emplace(owning_object.get(), mozjs_object_holder);
- }
- return success;
-}
-
-bool MozjsGlobalEnvironment::EvaluateScriptInternal(
- const scoped_refptr<SourceCode>& source_code,
- JS::MutableHandleValue out_result) {
- TRACK_MEMORY_SCOPE("Javascript");
- DCHECK(thread_checker_.CalledOnValidThread());
- DCHECK(global_object_proxy_);
- MozjsSourceCode* mozjs_source_code =
- base::polymorphic_downcast<MozjsSourceCode*>(source_code.get());
-
- const std::string& script = mozjs_source_code->source_utf8();
- const base::SourceLocation location = mozjs_source_code->location();
-
- JS::RootedObject global_object(
- context_, js::GetProxyTargetObject(global_object_proxy_));
-
- size_t length = script.size();
- jschar* inflated_buffer =
- js::InflateUTF8String(context_, script.c_str(), &length);
-
- if (!inflated_buffer) {
- DLOG(ERROR) << "Malformed UTF-8 script.";
- return false;
- }
-
- JS::CompileOptions options(context_);
- options.setFileAndLine(location.file_path.c_str(), location.line_number);
- bool success = JS_EvaluateUCScript(
- context_, global_object, inflated_buffer, length,
- location.file_path.c_str(), location.line_number, out_result.address());
- if (!success && context_->isExceptionPending()) {
- JS_ReportPendingException(context_);
- }
- js_free(inflated_buffer);
-
- return success;
-}
-
-std::vector<StackFrame> MozjsGlobalEnvironment::GetStackTrace(int max_frames) {
- DCHECK(thread_checker_.CalledOnValidThread());
- nb::RewindableVector<StackFrame> stack_frames;
- util::GetStackTrace(context_, max_frames, &stack_frames);
- return stack_frames.InternalData();
-}
-
-void MozjsGlobalEnvironment::PreventGarbageCollection(
- const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(thread_checker_.CalledOnValidThread());
- JSAutoRequest auto_request(context_);
- JSAutoCompartment auto_compartment(context_, global_object_proxy_);
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromWrappable(wrappable, context_, wrapper_factory());
- JS::RootedObject proxy(context_, wrapper_private->js_object_proxy());
- JS::Heap<JSObject*> proxy_heap(proxy);
- kept_alive_objects_.insert(CachedWrapperMultiMap::value_type(
- wrappable.get(), proxy_heap));
-}
-
-void MozjsGlobalEnvironment::AllowGarbageCollection(
- const scoped_refptr<Wrappable>& wrappable) {
- TRACK_MEMORY_SCOPE("Javascript");
- DCHECK(thread_checker_.CalledOnValidThread());
- CachedWrapperMultiMap::iterator it =
- kept_alive_objects_.find(wrappable.get());
- DCHECK(it != kept_alive_objects_.end());
- if (it != kept_alive_objects_.end()) {
- kept_alive_objects_.erase(it);
- }
-}
-
-void MozjsGlobalEnvironment::DisableEval(const std::string& message) {
- DCHECK(thread_checker_.CalledOnValidThread());
- eval_disabled_message_.emplace(message);
- eval_enabled_ = false;
-}
-
-void MozjsGlobalEnvironment::EnableEval() {
- DCHECK(thread_checker_.CalledOnValidThread());
- eval_disabled_message_ = base::nullopt;
- eval_enabled_ = true;
-}
-
-void MozjsGlobalEnvironment::DisableJit() {
- DCHECK(thread_checker_.CalledOnValidThread());
- uint32 current_options = JS_GetOptions(context_);
- uint32 new_options = current_options & ~(JSOPTION_BASELINE | JSOPTION_ION);
- JS_SetOptions(context_, new_options);
-}
-
-void MozjsGlobalEnvironment::SetReportEvalCallback(
- const base::Closure& report_eval) {
- DCHECK(thread_checker_.CalledOnValidThread());
- report_eval_ = report_eval;
-}
-
-void MozjsGlobalEnvironment::SetReportErrorCallback(
- const ReportErrorCallback& report_error_callback) {
- DCHECK(thread_checker_.CalledOnValidThread());
- report_error_callback_ = report_error_callback;
-}
-
-void MozjsGlobalEnvironment::Bind(const std::string& identifier,
- const scoped_refptr<Wrappable>& impl) {
- TRACK_MEMORY_SCOPE("Javascript");
- JSAutoRequest auto_request(context_);
- JSAutoCompartment auto_compartment(context_, global_object_proxy_);
-
- JS::RootedObject wrapper_proxy(context_,
- wrapper_factory_->GetWrapperProxy(impl));
- JS::RootedObject global_object(
- context_, js::GetProxyTargetObject(global_object_proxy_));
- JS::Value wrapper_value = OBJECT_TO_JSVAL(wrapper_proxy);
- bool success = JS_SetProperty(context_, global_object, identifier.c_str(),
- &wrapper_value);
- DCHECK(success);
-}
-
-ScriptValueFactory* MozjsGlobalEnvironment::script_value_factory() {
- DCHECK(script_value_factory_);
- return script_value_factory_.get();
-}
-
-void MozjsGlobalEnvironment::EvaluateAutomatics() {
- TRACK_MEMORY_SCOPE("Javascript");
- std::string source(
- reinterpret_cast<const char*>(MozjsEmbeddedResources::promise_min_js),
- sizeof(MozjsEmbeddedResources::promise_min_js));
- scoped_refptr<SourceCode> source_code =
- new MozjsSourceCode(source, base::SourceLocation("promise.min.js", 1, 1));
- std::string result;
- bool success = EvaluateScript(source_code, &result);
- if (!success) {
- DLOG(FATAL) << result;
- }
-}
-
-InterfaceData* MozjsGlobalEnvironment::GetInterfaceData(intptr_t key) {
- CachedInterfaceData::iterator it = cached_interface_data_.find(key);
- if (it != cached_interface_data_.end()) {
- return it->second;
- }
- return NULL;
-}
-
-void MozjsGlobalEnvironment::DoSweep() {
- TRACK_MEMORY_SCOPE("Javascript");
- weak_object_manager_.SweepUnmarkedObjects();
- // Remove NULL references after sweeping weak references.
- referenced_objects_->RemoveNullReferences();
-}
-
-void MozjsGlobalEnvironment::BeginGarbageCollection() {
- TRACK_MEMORY_SCOPE("Javascript");
- // It's possible that a GC could be triggered from within the
- // BeginGarbageCollection callback. Only verify that |visisted_wrappables_|
- // is empty the first time we enter.
- garbage_collection_count_++;
-
- if (garbage_collection_count_ == 1) {
- DCHECK_EQ(visited_wrappables_.size(), 0);
- }
-}
-
-void MozjsGlobalEnvironment::EndGarbageCollection() {
- // Reset |visisted_wrappables_|.
- garbage_collection_count_--;
- DCHECK_GE(garbage_collection_count_, 0);
- if (garbage_collection_count_ == 0) {
- visited_wrappables_.clear();
- }
-}
-
-MozjsGlobalEnvironment* MozjsGlobalEnvironment::GetFromContext(
- JSContext* context) {
- MozjsGlobalEnvironment* global_proxy =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- DCHECK(global_proxy);
- return global_proxy;
-}
-
-void MozjsGlobalEnvironment::SetGlobalObjectProxyAndWrapper(
- JS::HandleObject global_object_proxy,
- const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(!global_object_proxy_);
- DCHECK(global_object_proxy);
- DCHECK(JS_IsGlobalObject(js::GetProxyTargetObject(global_object_proxy)));
- DCHECK(IsObjectProxy(global_object_proxy));
-
- global_object_proxy_ = global_object_proxy;
-
- // Global object cached wrapper is not set as usual object.
- // Set the global object cached wrapper, so we can get the object proxy
- // through wrapper handle.
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromProxyObject(context_, global_object_proxy_);
- DCHECK(wrapper_private);
-
- scoped_ptr<Wrappable::WeakWrapperHandle> object_handle(
- new MozjsWrapperHandle(wrapper_private));
- SetCachedWrapper(wrappable.get(), object_handle.Pass());
-}
-
-void MozjsGlobalEnvironment::CacheInterfaceData(intptr_t key,
- InterfaceData* interface_data) {
- std::pair<CachedInterfaceData::iterator, bool> pib =
- cached_interface_data_.insert(std::make_pair(key, interface_data));
- DCHECK(pib.second);
-}
-
-void MozjsGlobalEnvironment::ReportErrorHandler(JSContext* context,
- const char* message,
- JSErrorReport* report) {
- MozjsGlobalEnvironment* global_object_proxy = GetFromContext(context);
- std::string error_message;
- if (report->errorNumber == JSMSG_CSP_BLOCKED_EVAL) {
- error_message =
- global_object_proxy->eval_disabled_message_.value_or(message);
- } else {
- error_message = message;
- }
-
- std::string message_with_location =
- base::StringPrintf("%s:%u:%u: %s",
- (report->filename ? report->filename : "(none)"),
- report->lineno,
- report->column,
- error_message.c_str());
- if (global_object_proxy && global_object_proxy->last_error_message_) {
- *(global_object_proxy->last_error_message_) = message_with_location;
- } else {
- LOG(ERROR) << "JS Error: " << message_with_location;
- }
-}
-
-void MozjsGlobalEnvironment::TraceFunction(JSTracer* trace, void* data) {
- MozjsGlobalEnvironment* global_object_environment =
- reinterpret_cast<MozjsGlobalEnvironment*>(data);
- if (global_object_environment->global_object_proxy_) {
- JS_CallHeapObjectTracer(trace,
- &global_object_environment->global_object_proxy_,
- "MozjsGlobalEnvironment");
- }
- for (CachedInterfaceData::iterator it =
- global_object_environment->cached_interface_data_.begin();
- it != global_object_environment->cached_interface_data_.end(); ++it) {
- InterfaceData* data = it->second;
- // Check whether prototype and interface object for this interface have been
- // created yet or not before attempting to trace them.
- if (data->prototype) {
- JS_CallHeapObjectTracer(trace, &data->prototype,
- "MozjsGlobalEnvironment");
- }
- if (data->interface_object) {
- JS_CallHeapObjectTracer(trace, &data->interface_object,
- "MozjsGlobalEnvironment");
- }
- }
- for (CachedWrapperMultiMap::iterator it =
- global_object_environment->kept_alive_objects_.begin();
- it != global_object_environment->kept_alive_objects_.end(); ++it) {
- JS_CallHeapObjectTracer(trace, &it->second, "MozjsGlobalEnvironment");
- }
-}
-
-JSBool MozjsGlobalEnvironment::CheckEval(JSContext* context) {
- TRACK_MEMORY_SCOPE("Javascript");
- MozjsGlobalEnvironment* global_object_proxy = GetFromContext(context);
- DCHECK(global_object_proxy);
- if (!global_object_proxy->report_eval_.is_null()) {
- global_object_proxy->report_eval_.Run();
- }
- return global_object_proxy->eval_enabled_;
-}
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
diff --git a/src/cobalt/script/mozjs/mozjs_global_environment.h b/src/cobalt/script/mozjs/mozjs_global_environment.h
deleted file mode 100644
index e221a5d..0000000
--- a/src/cobalt/script/mozjs/mozjs_global_environment.h
+++ /dev/null
@@ -1,196 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#ifndef COBALT_SCRIPT_MOZJS_MOZJS_GLOBAL_ENVIRONMENT_H_
-#define COBALT_SCRIPT_MOZJS_MOZJS_GLOBAL_ENVIRONMENT_H_
-
-#include <string>
-#include <vector>
-
-#include "base/hash_tables.h"
-#include "base/logging.h"
-#include "base/optional.h"
-#include "base/stl_util.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/javascript_engine.h"
-#include "cobalt/script/mozjs/interface_data.h"
-#include "cobalt/script/mozjs/util/exception_helpers.h"
-#include "cobalt/script/mozjs/weak_heap_object_manager.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsproxy.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-class MozjsScriptValueFactory;
-class ReferencedObjectMap;
-class WeakHandle;
-
-// Manages a handle to a JavaScript engine's global object. The lifetime of
-// the global object is not necessarily tied to the lifetime of the proxy.
-class MozjsGlobalEnvironment : public GlobalEnvironment,
- public Wrappable::CachedWrapperAccessor {
- public:
- MozjsGlobalEnvironment(JSRuntime* runtime,
- const JavaScriptEngine::Options& options);
- ~MozjsGlobalEnvironment() OVERRIDE;
-
- void CreateGlobalObject() OVERRIDE;
-
- bool EvaluateScript(const scoped_refptr<SourceCode>& script,
- std::string* out_result_utf8) OVERRIDE;
-
- bool EvaluateScript(const scoped_refptr<SourceCode>& script_utf8,
- const scoped_refptr<Wrappable>& owning_object,
- base::optional<OpaqueHandleHolder::Reference>*
- out_opaque_handle) OVERRIDE;
-
- std::vector<StackFrame> GetStackTrace(int max_frames = 0) OVERRIDE;
-
- void PreventGarbageCollection(
- const scoped_refptr<Wrappable>& wrappable) OVERRIDE;
-
- void AllowGarbageCollection(
- const scoped_refptr<Wrappable>& wrappable) OVERRIDE;
-
- void DisableEval(const std::string& message) OVERRIDE;
-
- void EnableEval() OVERRIDE;
-
- void DisableJit() OVERRIDE;
-
- void SetReportEvalCallback(const base::Closure& report_eval) OVERRIDE;
-
- void SetReportErrorCallback(
- const ReportErrorCallback& report_error_callback) OVERRIDE;
-
- void Bind(const std::string& identifier,
- const scoped_refptr<Wrappable>& impl) OVERRIDE;
-
- ScriptValueFactory* script_value_factory() OVERRIDE;
-
- // Evaluates any automatically included Javascript for the environment.
- void EvaluateAutomatics();
-
- JSContext* context() const { return context_; }
-
- JSObject* global_object_proxy() const { return global_object_proxy_; }
- JSObject* global_object() const {
- return js::GetProxyTargetObject(global_object_proxy_);
- }
-
- WrapperFactory* wrapper_factory() { return wrapper_factory_.get(); }
-
- ReferencedObjectMap* referenced_objects() {
- return referenced_objects_.get();
- }
-
- WeakHeapObjectManager* weak_object_manager() { return &weak_object_manager_; }
-
- base::hash_set<Wrappable*>* visited_wrappables() {
- return &visited_wrappables_;
- }
-
- // Used for CallWith=EnvironmentSettings
- void SetEnvironmentSettings(EnvironmentSettings* environment_settings) {
- DCHECK(!environment_settings_);
- DCHECK(environment_settings);
- environment_settings_ = environment_settings;
- }
-
- EnvironmentSettings* GetEnvironmentSettings() const {
- return environment_settings_;
- }
-
- void SetGlobalObjectProxyAndWrapper(
- JS::HandleObject global_object_proxy,
- const scoped_refptr<Wrappable>& wrappable);
-
- // Any tracked InterfaceData will have it's GC handles visited and marked as
- // roots. The MozjsGlobalEnvironment takes ownership of the InterfaceData
- // instances and will destroy them.
- void CacheInterfaceData(intptr_t key, InterfaceData* interface_data);
- InterfaceData* GetInterfaceData(intptr_t key);
-
- // This will be called during garbage collection after GC objects have been
- // marked, but before they have been finalized. This allows an opportunity to
- // sweep away references to GC objects that will be deleted.
- void DoSweep();
-
- void BeginGarbageCollection();
- void EndGarbageCollection();
-
- static MozjsGlobalEnvironment* GetFromContext(JSContext* context);
-
- // This will be called every time an attempt is made to use eval() and
- // friends. If it returns false, then the ReportErrorHandler will be fired
- // with an error that eval() is disabled.
- static JSBool CheckEval(JSContext* context);
-
- private:
- bool EvaluateScriptInternal(const scoped_refptr<SourceCode>& source_code,
- JS::MutableHandleValue out_result);
-
- static void ReportErrorHandler(JSContext* context, const char* message,
- JSErrorReport* report);
-
- static void TraceFunction(JSTracer* trace, void* data);
-
- // Helper struct to ensure the context is destroyed in the correct order
- // relative to the MozjsGlobalEnvironment's other members.
- struct ContextDestructor {
- explicit ContextDestructor(JSContext** context) : context(context) {}
- ~ContextDestructor() { JS_DestroyContext(*context); }
- JSContext** context;
- };
-
- typedef base::hash_map<intptr_t, InterfaceData*> CachedInterfaceData;
- typedef base::hash_multimap<Wrappable*, JS::Heap<JSObject*> >
- CachedWrapperMultiMap;
-
- base::ThreadChecker thread_checker_;
- JSContext* context_;
- int garbage_collection_count_;
- WeakHeapObjectManager weak_object_manager_;
- CachedWrapperMultiMap kept_alive_objects_;
- scoped_ptr<ReferencedObjectMap> referenced_objects_;
- CachedInterfaceData cached_interface_data_;
- STLValueDeleter<CachedInterfaceData> cached_interface_data_deleter_;
- ContextDestructor context_destructor_;
- scoped_ptr<WrapperFactory> wrapper_factory_;
- scoped_ptr<MozjsScriptValueFactory> script_value_factory_;
- JS::Heap<JSObject*> global_object_proxy_;
- EnvironmentSettings* environment_settings_;
- // TODO: Should be |std::unordered_set| once C++11 is enabled.
- base::hash_set<Wrappable*> visited_wrappables_;
-
- // If non-NULL, the error message from the ReportErrorHandler will get
- // assigned to this instead of being printed.
- std::string* last_error_message_;
-
- bool eval_enabled_;
- base::optional<std::string> eval_disabled_message_;
- base::Closure report_eval_;
- ReportErrorCallback report_error_callback_;
-
- friend class GlobalObjectProxy;
-};
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_MOZJS_GLOBAL_ENVIRONMENT_H_
diff --git a/src/cobalt/script/mozjs/mozjs_object_handle.h b/src/cobalt/script/mozjs/mozjs_object_handle.h
deleted file mode 100644
index f2ee195..0000000
--- a/src/cobalt/script/mozjs/mozjs_object_handle.h
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#ifndef COBALT_SCRIPT_MOZJS_MOZJS_OBJECT_HANDLE_H_
-#define COBALT_SCRIPT_MOZJS_MOZJS_OBJECT_HANDLE_H_
-
-#include "base/optional.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/weak_heap_object.h"
-#include "cobalt/script/opaque_handle.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-// A wrapper around a JS::Value that can be passed into Cobalt as an
-// opaque script object.
-// An OpaqueHandle is never passed into Cobalt as-is, but only when wrapped as
-// a ScriptValue<OpaqueHandle>.
-class MozjsObjectHandle : public OpaqueHandle {
- public:
- typedef OpaqueHandle BaseType;
- JSObject* handle() const { return handle_.GetObject(); }
- const JS::Value& value() const { return handle_.GetValue(); }
- bool WasCollected() const { return handle_.WasCollected(); }
-
- private:
- MozjsObjectHandle(JSContext* context, JS::HandleValue object)
- : handle_(context, object) {}
- ~MozjsObjectHandle() {}
-
- WeakHeapObject handle_;
-
- friend class MozjsUserObjectHolder<MozjsObjectHandle>;
- friend class base::optional<MozjsObjectHandle>;
-};
-
-typedef MozjsUserObjectHolder<MozjsObjectHandle> MozjsObjectHandleHolder;
-
-template <>
-struct TypeTraits<OpaqueHandle> {
- typedef MozjsObjectHandleHolder ConversionType;
- typedef const ScriptValue<OpaqueHandle>* ReturnType;
-};
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_MOZJS_OBJECT_HANDLE_H_
diff --git a/src/cobalt/script/mozjs/mozjs_property_enumerator.cc b/src/cobalt/script/mozjs/mozjs_property_enumerator.cc
deleted file mode 100644
index 2f77edd..0000000
--- a/src/cobalt/script/mozjs/mozjs_property_enumerator.cc
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#include "cobalt/script/mozjs/mozjs_property_enumerator.h"
-
-#include "base/logging.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-MozjsPropertyEnumerator::MozjsPropertyEnumerator(JSContext* context,
- JS::AutoIdVector* properties)
- : context_(context), properties_(properties) {}
-
-void MozjsPropertyEnumerator::AddProperty(const std::string& property_name) {
- JS::RootedString property_string(
- context_, JS_NewStringCopyZ(context_, property_name.c_str()));
- JS::RootedId id(context_);
- if (JS_ValueToId(context_, STRING_TO_JSVAL(property_string), id.address())) {
- properties_->append(id);
- } else {
- NOTREACHED();
- }
-}
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
diff --git a/src/cobalt/script/mozjs/mozjs_property_enumerator.h b/src/cobalt/script/mozjs/mozjs_property_enumerator.h
deleted file mode 100644
index ee5caed..0000000
--- a/src/cobalt/script/mozjs/mozjs_property_enumerator.h
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#ifndef COBALT_SCRIPT_MOZJS_MOZJS_PROPERTY_ENUMERATOR_H_
-#define COBALT_SCRIPT_MOZJS_MOZJS_PROPERTY_ENUMERATOR_H_
-
-#include <string>
-
-#include "base/compiler_specific.h"
-#include "cobalt/script/property_enumerator.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-class MozjsPropertyEnumerator : public cobalt::script::PropertyEnumerator {
- public:
- MozjsPropertyEnumerator(JSContext* context, JS::AutoIdVector* properties);
- void AddProperty(const std::string& property_name) OVERRIDE;
-
- private:
- JSContext* context_;
- JS::AutoIdVector* properties_;
-};
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_MOZJS_PROPERTY_ENUMERATOR_H_
diff --git a/src/cobalt/script/mozjs/mozjs_script_value_factory.cc b/src/cobalt/script/mozjs/mozjs_script_value_factory.cc
deleted file mode 100644
index c97dda4..0000000
--- a/src/cobalt/script/mozjs/mozjs_script_value_factory.cc
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2017 Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "cobalt/script/mozjs/mozjs_script_value_factory.h"
-
-#include "cobalt/base/polymorphic_downcast.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-MozjsScriptValueFactory::MozjsScriptValueFactory(
- MozjsGlobalEnvironment* global_environment)
- : global_environment_(global_environment) {}
-} // namespace mozjs
-
-// Implementation of template function declared in the base class.
-template <typename T>
-scoped_ptr<ScriptValue<Promise<T> > > ScriptValueFactory::CreatePromise() {
- mozjs::MozjsScriptValueFactory* mozjs_this =
- base::polymorphic_downcast<mozjs::MozjsScriptValueFactory*>(this);
- return mozjs_this->CreatePromise<T>();
-}
-
-} // namespace script
-} // namespace cobalt
-
-// Explicit template instantiations must go after the template function
-// implementation.
-#include "cobalt/script/script_value_factory_instantiations.h"
diff --git a/src/cobalt/script/mozjs/mozjs_script_value_factory.h b/src/cobalt/script/mozjs/mozjs_script_value_factory.h
deleted file mode 100644
index d6b28a1..0000000
--- a/src/cobalt/script/mozjs/mozjs_script_value_factory.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright 2017 Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef COBALT_SCRIPT_MOZJS_MOZJS_SCRIPT_VALUE_FACTORY_H_
-#define COBALT_SCRIPT_MOZJS_MOZJS_SCRIPT_VALUE_FACTORY_H_
-
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/native_promise.h"
-#include "cobalt/script/mozjs/promise_wrapper.h"
-#include "cobalt/script/script_value_factory.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-class MozjsScriptValueFactory : public ScriptValueFactory {
- public:
- explicit MozjsScriptValueFactory(MozjsGlobalEnvironment* global_environment);
- ~MozjsScriptValueFactory() OVERRIDE {}
-
- template <typename T>
- scoped_ptr<ScriptValue<Promise<T> > > CreatePromise() {
- typedef ScriptValue<Promise<T> > ScriptPromiseType;
- typedef MozjsUserObjectHolder<NativePromise<T> > MozjsPromiseHolderType;
-
- JSContext* context = global_environment_->context();
- JS::RootedObject global_object(context,
- global_environment_->global_object());
- JSAutoRequest auto_request(context);
- JSAutoCompartment auto_compartment(context, global_object);
-
- JS::RootedObject promise_wrapper(
- context, PromiseWrapper::Create(context, global_object));
- DCHECK(promise_wrapper);
- scoped_ptr<ScriptPromiseType> promise(new MozjsPromiseHolderType(
- promise_wrapper, context, global_environment_->wrapper_factory()));
- return promise.Pass();
- }
-
- private:
- MozjsGlobalEnvironment* global_environment_;
-};
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-#endif // COBALT_SCRIPT_MOZJS_MOZJS_SCRIPT_VALUE_FACTORY_H_
diff --git a/src/cobalt/script/mozjs/mozjs_source_code.cc b/src/cobalt/script/mozjs/mozjs_source_code.cc
deleted file mode 100644
index bd72ae7..0000000
--- a/src/cobalt/script/mozjs/mozjs_source_code.cc
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#include "cobalt/script/mozjs/mozjs_source_code.h"
-
-namespace cobalt {
-namespace script {
-scoped_refptr<SourceCode> SourceCode::CreateSourceCode(
- const std::string& script_utf8,
- const base::SourceLocation& script_location) {
- return new mozjs::MozjsSourceCode(script_utf8, script_location);
-}
-} // namespace script
-} // namespace cobalt
diff --git a/src/cobalt/script/mozjs/mozjs_source_code.h b/src/cobalt/script/mozjs/mozjs_source_code.h
deleted file mode 100644
index 4e5720a..0000000
--- a/src/cobalt/script/mozjs/mozjs_source_code.h
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#ifndef COBALT_SCRIPT_MOZJS_MOZJS_SOURCE_CODE_H_
-#define COBALT_SCRIPT_MOZJS_MOZJS_SOURCE_CODE_H_
-
-#include <string>
-
-#include "cobalt/base/source_location.h"
-#include "cobalt/script/source_code.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-// SpiderMonkey supports compiling scripts in one step and executing
-// them in another. Typcically we don't need to execute the same script
-// multiple times so we wouldn't expect much performance improvement, but it
-// may be that the compiled script uses less memory than the raw script.
-//
-// TODO: Investigate if there are memory savings (or other benefits)
-// to precompiling scripts before executing.
-class MozjsSourceCode : public SourceCode {
- public:
- MozjsSourceCode(const std::string& source_utf8,
- const base::SourceLocation& source_location)
- : source_utf8_(source_utf8), location_(source_location) {}
- const std::string& source_utf8() const { return source_utf8_; }
- const base::SourceLocation& location() const { return location_; }
-
- private:
- std::string source_utf8_;
- base::SourceLocation location_;
-};
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_MOZJS_SOURCE_CODE_H_
diff --git a/src/cobalt/script/mozjs/mozjs_trace_logging.cc b/src/cobalt/script/mozjs/mozjs_trace_logging.cc
deleted file mode 100644
index 117007f..0000000
--- a/src/cobalt/script/mozjs/mozjs_trace_logging.cc
+++ /dev/null
@@ -1,155 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "third_party/mozjs/js/src/TraceLogging.h"
-
-#include "base/debug/trace_event.h"
-#include "base/memory/singleton.h"
-
-namespace js {
-
-namespace {
-
-// Container class to transform the 3rd-party-declared TraceLogging class
-// into our Singleton type.
-class TraceLoggingContainer {
- public:
- TraceLoggingContainer() {}
-
- static TraceLoggingContainer* GetInstance() {
- return Singleton<TraceLoggingContainer,
- StaticMemorySingletonTraits<TraceLoggingContainer> >::get();
- }
-
- TraceLogging* GetLogger() {
- return &logger_;
- }
-
- private:
- TraceLogging logger_;
-
- DISALLOW_COPY_AND_ASSIGN(TraceLoggingContainer);
-};
-
-const char kTraceLoggingCategory[] = "JavaScript";
-
-} // namespace
-
-const char* const TraceLogging::type_name[] = {
- "IonCompile",
- "IonCompile",
- "IonCannon",
- "IonCannon",
- "IonCannon",
- "IonSideCannon",
- "IonSideCannon",
- "IonSideCannon",
- "YarrJIT",
- "YarrJIT",
- "JMSafepoint",
- "JMSafepoint",
- "JMNormal",
- "JMNormal",
- "JMCompile",
- "JMCompile",
- "GarbageCollect",
- "GarbageCollect",
- "Interpreter",
- "Interpreter",
- "Info",
-};
-
-// None of the member variables will be needed. Instead, logging will be
-// funneled to the trace event system.
-TraceLogging::TraceLogging() {
-}
-
-TraceLogging::~TraceLogging() {
-}
-
-// static
-TraceLogging* TraceLogging::defaultLogger() {
- return TraceLoggingContainer::GetInstance()->GetLogger();
-}
-
-// static
-void TraceLogging::releaseDefaultLogger() {
- // Do nothing. Lifetime is managed by the TraceLoggingContainer singleton.
-}
-
-void TraceLogging::log(Type type, const char* filename, unsigned int line) {
- // Unfortunately, we don't have access to the enum, so can't declare a
- // "count"-type enum. Instead, INFO is assumed to be the last enumeration.
- COMPILE_ASSERT(ARRAYSIZE_UNSAFE(type_name) - 1 == INFO, array_mismatch);
-
- switch (type) {
- // "Start" types
- case ION_COMPILE_START:
- case ION_CANNON_START:
- case ION_SIDE_CANNON_START:
- case YARR_JIT_START:
- case JM_SAFEPOINT_START:
- case JM_START:
- case JM_COMPILE_START:
- case GC_START:
- case INTERPRETER_START:
- if (filename != NULL) {
- TRACE_EVENT_BEGIN2(kTraceLoggingCategory, type_name[type],
- "file", TRACE_STR_COPY(filename),
- "line", line);
- } else {
- TRACE_EVENT_BEGIN0(kTraceLoggingCategory, type_name[type]);
- }
- break;
-
- // Ignored types
- case INFO:
- break;
-
- // "Stop" types
- default:
- TRACE_EVENT_END0(kTraceLoggingCategory, type_name[type]);
- break;
- }
-}
-
-void TraceLogging::log(Type type, JSScript* script) {
- log(type, script->filename(), script->lineno);
-}
-
-void TraceLogging::log(const char* log) {
- UNREFERENCED_PARAMETER(log);
-}
-
-void TraceLogging::log(Type type) {
- log(type, NULL, 0);
-}
-
-void TraceLogging::flush() {
-}
-
-// Helper functions declared in TraceLogging.h
-void TraceLog(TraceLogging* logger, TraceLogging::Type type, JSScript* script) {
- logger->log(type, script);
-}
-
-void TraceLog(TraceLogging* logger, const char* log) {
- logger->log(log);
-}
-
-void TraceLog(TraceLogging* logger, TraceLogging::Type type) {
- logger->log(type);
-}
-
-} // namespace js
diff --git a/src/cobalt/script/mozjs/mozjs_user_object_holder.h b/src/cobalt/script/mozjs/mozjs_user_object_holder.h
deleted file mode 100644
index 3799221..0000000
--- a/src/cobalt/script/mozjs/mozjs_user_object_holder.h
+++ /dev/null
@@ -1,173 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#ifndef COBALT_SCRIPT_MOZJS_MOZJS_USER_OBJECT_HOLDER_H_
-#define COBALT_SCRIPT_MOZJS_MOZJS_USER_OBJECT_HOLDER_H_
-
-#include "base/hash_tables.h"
-#include "base/memory/weak_ptr.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/referenced_object_map.h"
-#include "cobalt/script/mozjs/util/algorithm_helpers.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/script_value.h"
-#include "nb/memory_scope.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-// Template class that implements the ScriptValue template class for lifetime
-// management of User Objects passed from the bindings layer into Cobalt. See
-// the definition of ScriptValue for further detail.
-// This class does not root the underlying JSObject that MozjsUserObjectType
-// holds a reference to. The object will be traced when any owning objects are
-// traced.
-template <typename MozjsUserObjectType>
-class MozjsUserObjectHolder
- : public ScriptValue<typename MozjsUserObjectType::BaseType> {
- public:
- typedef ScriptValue<typename MozjsUserObjectType::BaseType> BaseClass;
-
- MozjsUserObjectHolder()
- : context_(NULL),
- wrapper_factory_(NULL),
- prevent_garbage_collection_count_(0) {}
-
- MozjsUserObjectHolder(JS::HandleObject object, JSContext* context,
- WrapperFactory* wrapper_factory)
- : handle_(MozjsUserObjectType(context, object)),
- context_(context),
- wrapper_factory_(wrapper_factory),
- prevent_garbage_collection_count_(0) {}
-
- MozjsUserObjectHolder(JS::HandleValue value, JSContext* context,
- WrapperFactory* wrapper_factory)
- : handle_(MozjsUserObjectType(context, value)),
- context_(context),
- wrapper_factory_(wrapper_factory),
- prevent_garbage_collection_count_(0) {}
-
- ~MozjsUserObjectHolder() {
- DCHECK_EQ(prevent_garbage_collection_count_, 0);
- DCHECK(!persistent_root_);
- }
-
- void RegisterOwner(Wrappable* owner) OVERRIDE {
- JSAutoRequest auto_request(context_);
- JS::RootedValue owned_value(context_, js_value());
- DLOG_IF(WARNING, handle_->WasCollected())
- << "Owned value has been garbage collected.";
- // We have to check for null, because null is apparently a GC Thing.
- if (!owned_value.isNullOrUndefined() && owned_value.isGCThing()) {
- MozjsGlobalEnvironment* global_environment =
- MozjsGlobalEnvironment::GetFromContext(context_);
- intptr_t key = ReferencedObjectMap::GetKeyForWrappable(owner);
- global_environment->referenced_objects()->AddReferencedObject(
- key, owned_value);
- }
- }
-
- void DeregisterOwner(Wrappable* owner) OVERRIDE {
- // |owner| may be in the process of being destructed, so don't use it.
- JSAutoRequest auto_request(context_);
- JS::RootedValue owned_value(context_, js_value());
- // We have to check for null, because null is apparently a GC Thing.
- if (!owned_value.isNullOrUndefined() && owned_value.isGCThing()) {
- MozjsGlobalEnvironment* global_environment =
- MozjsGlobalEnvironment::GetFromContext(context_);
- intptr_t key = ReferencedObjectMap::GetKeyForWrappable(owner);
- global_environment->referenced_objects()->RemoveReferencedObject(
- key, owned_value);
- }
- }
-
- void PreventGarbageCollection() OVERRIDE {
- if (prevent_garbage_collection_count_++ == 0 && handle_) {
- JSAutoRequest auto_request(context_);
- persistent_root_ = handle_->value();
- JSBool result = JS_AddNamedValueRoot(
- context_, &persistent_root_.value(),
- "MozjsUserObjectHolder::PreventGarbageCollection");
- DCHECK(result);
- }
- }
-
- void AllowGarbageCollection() OVERRIDE {
- if (--prevent_garbage_collection_count_ == 0 && handle_) {
- JSAutoRequest auto_request(context_);
- JS_RemoveValueRoot(context_, &persistent_root_.value());
- persistent_root_ = base::nullopt;
- }
- }
-
- const typename MozjsUserObjectType::BaseType* GetScriptValue()
- const OVERRIDE {
- return handle_ ? &handle_.value() : NULL;
- }
-
- scoped_ptr<BaseClass> MakeCopy() const OVERRIDE {
- TRACK_MEMORY_SCOPE("Javascript");
- DCHECK(handle_);
- JSAutoRequest auto_request(context_);
- JS::RootedValue rooted_value(context_, js_value());
- return make_scoped_ptr<BaseClass>(
- new MozjsUserObjectHolder(rooted_value, context_, wrapper_factory_));
- }
-
- bool EqualTo(const BaseClass& other) const OVERRIDE {
- const MozjsUserObjectHolder* mozjs_other =
- base::polymorphic_downcast<const MozjsUserObjectHolder*>(&other);
- if (!handle_) {
- return !mozjs_other->handle_;
- } else if (!mozjs_other->handle_) {
- return false;
- }
-
- DCHECK(handle_);
- DCHECK(mozjs_other->handle_);
-
- JS::RootedValue value1(context_, js_value());
- JS::RootedValue value2(context_, mozjs_other->js_value());
- return util::IsSameGcThing(context_, value1, value2);
- }
-
- const JS::Value& js_value() const {
- DCHECK(handle_);
- return handle_->value();
- }
-
- JSObject* js_object() const {
- DCHECK(handle_);
- return handle_->handle();
- }
-
- private:
- typedef base::hash_map<const Wrappable*, base::WeakPtr<WrapperPrivate> >
- WrappableAndPrivateHashMap;
-
- base::optional<MozjsUserObjectType> handle_;
- JSContext* context_;
- WrapperFactory* wrapper_factory_;
- int prevent_garbage_collection_count_;
- base::optional<JS::Value> persistent_root_;
-};
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_MOZJS_USER_OBJECT_HOLDER_H_
diff --git a/src/cobalt/script/mozjs/mozjs_value_handle.h b/src/cobalt/script/mozjs/mozjs_value_handle.h
deleted file mode 100644
index 3581878..0000000
--- a/src/cobalt/script/mozjs/mozjs_value_handle.h
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#ifndef COBALT_SCRIPT_MOZJS_MOZJS_VALUE_HANDLE_H_
-#define COBALT_SCRIPT_MOZJS_MOZJS_VALUE_HANDLE_H_
-
-#include "base/optional.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/weak_heap_object.h"
-#include "cobalt/script/value_handle.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-// A wrapper around a JS::Value that can be passed into Cobalt as an script
-// value object.
-//
-// An ValueHandle is never passed into Cobalt as-is, but only when wrapped as a
-// ScriptValue<ValueHandle>.
-class MozjsValueHandle : public ValueHandle {
- public:
- typedef ValueHandle BaseType;
- JSObject* handle() const { return handle_.GetObject(); }
- const JS::Value& value() const { return handle_.GetValue(); }
- bool WasCollected() const { return handle_.WasCollected(); }
-
- private:
- MozjsValueHandle(JSContext* context, JS::HandleValue object)
- : handle_(context, object) {}
- ~MozjsValueHandle() {}
-
- WeakHeapObject handle_;
-
- friend class MozjsUserObjectHolder<MozjsValueHandle>;
- friend class base::optional<MozjsValueHandle>;
-};
-
-typedef MozjsUserObjectHolder<MozjsValueHandle> MozjsValueHandleHolder;
-
-template <>
-struct TypeTraits<ValueHandle> {
- typedef MozjsValueHandleHolder ConversionType;
- typedef const ScriptValue<ValueHandle>* ReturnType;
-};
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_MOZJS_VALUE_HANDLE_H_
diff --git a/src/cobalt/script/mozjs/mozjs_variables.gypi b/src/cobalt/script/mozjs/mozjs_variables.gypi
deleted file mode 100644
index f6ec89d..0000000
--- a/src/cobalt/script/mozjs/mozjs_variables.gypi
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright 2016 Google Inc. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-{
- 'variables': {
- 'conditions': [
- ['javascript_engine == "mozjs"', {
- 'generated_bindings_prefix': 'mozjs',
- 'engine_include_dirs': [],
- 'engine_dependencies': [
- '<(DEPTH)/third_party/mozjs/mozjs.gyp:mozjs_lib',
- ],
- 'engine_defines': [],
- 'engine_templates_dir': [
- '<(DEPTH)/cobalt/bindings/mozjs/templates',
- ],
- 'engine_template_files': [
- '<(DEPTH)/cobalt/bindings/mozjs/templates/callback-interface.cc.template',
- '<(DEPTH)/cobalt/bindings/mozjs/templates/callback-interface.h.template',
- '<(DEPTH)/cobalt/bindings/mozjs/templates/dictionary-conversion.cc.template',
- '<(DEPTH)/cobalt/bindings/mozjs/templates/enumeration-conversion.cc.template',
- '<(DEPTH)/cobalt/bindings/mozjs/templates/generated-types.h.template',
- '<(DEPTH)/cobalt/bindings/mozjs/templates/interface.cc.template',
- '<(DEPTH)/cobalt/bindings/mozjs/templates/interface.h.template',
- '<(DEPTH)/cobalt/bindings/mozjs/templates/macros.cc.template',
- ],
- 'engine_bindings_scripts': [
- '<(DEPTH)/cobalt/bindings/mozjs/code_generator_mozjs.py',
- '<(DEPTH)/cobalt/bindings/mozjs/idl_compiler_mozjs.py',
- '<(DEPTH)/cobalt/bindings/mozjs/generate_conversion_header_mozjs.py',
- ],
- 'engine_idl_compiler':
- '<(DEPTH)/cobalt/bindings/mozjs/idl_compiler_mozjs.py',
- 'engine_conversion_header_generator_script':
- '<(DEPTH)/cobalt/bindings/mozjs/generate_conversion_header_mozjs.py',
- }],
- ],
- },
-}
diff --git a/src/cobalt/script/mozjs/mozjs_wrapper_handle.h b/src/cobalt/script/mozjs/mozjs_wrapper_handle.h
deleted file mode 100644
index 8bc2766..0000000
--- a/src/cobalt/script/mozjs/mozjs_wrapper_handle.h
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#ifndef COBALT_SCRIPT_MOZJS_MOZJS_WRAPPER_HANDLE_H_
-#define COBALT_SCRIPT_MOZJS_MOZJS_WRAPPER_HANDLE_H_
-
-#include "base/memory/weak_ptr.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "cobalt/script/wrappable.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-// Implements Wrappable::WeakWrapperHandler and thus represents the cached
-// JS wrapper for a given Wrappable. The Wrapper could be garbage collected
-// at any time.
-class MozjsWrapperHandle : public Wrappable::WeakWrapperHandle {
- public:
- explicit MozjsWrapperHandle(WrapperPrivate* wrapper_private) {
- DCHECK(wrapper_private);
- weak_wrapper_private_ = wrapper_private->AsWeakPtr();
- }
-
- static JSObject* GetObjectProxy(const Wrappable::WeakWrapperHandle* handle) {
- if (handle) {
- const MozjsWrapperHandle* mozjs_handle =
- base::polymorphic_downcast<const MozjsWrapperHandle*>(handle);
- if (mozjs_handle->weak_wrapper_private_) {
- return mozjs_handle->weak_wrapper_private_->js_object_proxy();
- }
- }
- return NULL;
- }
-
- private:
- base::WeakPtr<WrapperPrivate> weak_wrapper_private_;
-};
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_MOZJS_WRAPPER_HANDLE_H_
diff --git a/src/cobalt/script/mozjs/native_promise.h b/src/cobalt/script/mozjs/native_promise.h
deleted file mode 100644
index 25f9e99..0000000
--- a/src/cobalt/script/mozjs/native_promise.h
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * Copyright 2017 Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef COBALT_SCRIPT_MOZJS_NATIVE_PROMISE_H_
-#define COBALT_SCRIPT_MOZJS_NATIVE_PROMISE_H_
-
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/promise_wrapper.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/mozjs/weak_heap_object.h"
-#include "cobalt/script/promise.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-// Shared functionality for NativePromise<T>. Does not implement the Resolve
-// function, since that needs to be specialized for Promise<T>.
-template <typename T>
-class NativePromiseBase : public Promise<T> {
- public:
- // ScriptObject boilerplate.
- typedef Promise<T> BaseType;
- JSObject* handle() const { return promise_resolver_->get().GetObject(); }
- const JS::Value& value() const { return promise_resolver_->get().GetValue(); }
- bool WasCollected() const { return promise_resolver_->get().WasCollected(); }
-
- // The Promise JS object (not the resolver).
- JSObject* promise() const { return promise_resolver_->GetPromise(); }
-
- void Reject() const OVERRIDE {
- JS::RootedObject promise_resolver(context_,
- promise_resolver_->get().GetObject());
- if (promise_resolver) {
- JSAutoRequest auto_request(context_);
- JSAutoCompartment auto_compartment(context_, promise_resolver);
- promise_resolver_->Reject(JS::UndefinedHandleValue);
- }
- }
-
- void Reject(SimpleExceptionType exception) const OVERRIDE {
- JS::RootedObject promise_resolver(context_,
- promise_resolver_->get().GetObject());
- if (promise_resolver) {
- JSAutoRequest auto_request(context_);
- JSAutoCompartment auto_compartment(context_, promise_resolver);
- JS::RootedValue error_result(
- context_, OBJECT_TO_JSVAL(MozjsExceptionState::CreateErrorObject(
- context_, exception)));
- promise_resolver_->Reject(error_result);
- }
- }
-
- void Reject(const scoped_refptr<ScriptException>& result) const OVERRIDE {
- JS::RootedObject promise_resolver(context_,
- promise_resolver_->get().GetObject());
- if (promise_resolver) {
- JSAutoRequest auto_request(context_);
- JSAutoCompartment auto_compartment(context_, promise_resolver);
- JS::RootedValue converted_result(context_);
- ToJSValue(context_, result, &converted_result);
- promise_resolver_->Reject(converted_result);
- }
- }
-
- protected:
- NativePromiseBase(JSContext* context, JS::HandleObject resolver_object)
- : context_(context) {
- promise_resolver_.emplace(context, resolver_object);
- }
-
- NativePromiseBase(JSContext* context, JS::HandleValue resolver_value)
- : context_(context) {
- DCHECK(resolver_value.isObject());
- JS::RootedObject resolver_object(context, &resolver_value.toObject());
- promise_resolver_.emplace(context, resolver_object);
- }
-
- JSContext* context_;
- base::optional<PromiseWrapper> promise_resolver_;
-};
-
-// Implements the Resolve() function for T != void.
-template <typename T>
-class NativePromise : public NativePromiseBase<T> {
- public:
- NativePromise(JSContext* context, JS::HandleObject resolver_object)
- : NativePromiseBase<T>(context, resolver_object) {}
-
- NativePromise(JSContext* context, JS::HandleValue resolver_value)
- : NativePromiseBase<T>(context, resolver_value) {}
-
- void Resolve(const T& value) const OVERRIDE {
- JS::RootedObject promise_wrapper(
- this->context_, this->promise_resolver_->get().GetObject());
- if (promise_wrapper) {
- JSAutoRequest auto_request(this->context_);
- JSAutoCompartment auto_compartment(this->context_, promise_wrapper);
- JS::RootedValue converted_value(this->context_);
- ToJSValue(this->context_, value, &converted_value);
- this->promise_resolver_->Resolve(converted_value);
- }
- }
-};
-
-// Implements the Resolve() function for T == void.
-template <>
-class NativePromise<void> : public NativePromiseBase<void> {
- public:
- NativePromise(JSContext* context, JS::HandleObject resolver_object)
- : NativePromiseBase<void>(context, resolver_object) {}
-
- NativePromise(JSContext* context, JS::HandleValue resolver_value)
- : NativePromiseBase<void>(context, resolver_value) {}
-
- void Resolve() const OVERRIDE {
- JS::RootedObject promise_wrapper(context_,
- promise_resolver_->get().GetObject());
- if (promise_wrapper) {
- JSAutoRequest auto_request(context_);
- JSAutoCompartment auto_compartment(context_, promise_wrapper);
- promise_resolver_->Resolve(JS::UndefinedHandleValue);
- }
- }
-};
-
-template <typename T>
-struct TypeTraits<NativePromise<T> > {
- typedef MozjsUserObjectHolder<NativePromise<T> > ConversionType;
- typedef const ScriptValue<Promise<T> >* ReturnType;
-};
-
-// Promise<T> -> JSValue
-// Note that JSValue -> Promise<T> is not yet supported.
-template <typename T>
-inline void ToJSValue(JSContext* context,
- const ScriptValue<Promise<T> >* promise_holder,
- JS::MutableHandleValue out_value) {
- TRACK_MEMORY_SCOPE("Javascript");
- if (!promise_holder) {
- out_value.set(JS::NullValue());
- return;
- }
- const MozjsUserObjectHolder<NativePromise<T> >* user_object_holder =
- base::polymorphic_downcast<
- const MozjsUserObjectHolder<NativePromise<T> >*>(promise_holder);
-
- const NativePromise<T>* native_promise =
- base::polymorphic_downcast<const NativePromise<T>*>(
- user_object_holder->GetScriptValue());
-
- DCHECK(native_promise);
- out_value.setObjectOrNull(native_promise->promise());
-}
-
-// Explicitly defer to the const version here so that a more generic non-const
-// version of this function does not get called instead, in the case that
-// |promise_holder| is not const.
-template <typename T>
-inline void ToJSValue(JSContext* context,
- ScriptValue<Promise<T> >* promise_holder,
- JS::MutableHandleValue out_value) {
- TRACK_MEMORY_SCOPE("Javascript");
- ToJSValue(context,
- const_cast<const ScriptValue<Promise<T> >*>(promise_holder),
- out_value);
-}
-
-// Destroys |promise_holder| as soon as the conversion is done.
-// This is useful when a wrappable is not interested in retaining a reference
-// to a promise, typically when a promise is resolved or rejected synchronously.
-template <typename T>
-inline void ToJSValue(JSContext* context,
- scoped_ptr<ScriptValue<Promise<T> > > promise_holder,
- JS::MutableHandleValue out_value) {
- ToJSValue(context, promise_holder.get(), out_value);
-}
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-#endif // COBALT_SCRIPT_MOZJS_NATIVE_PROMISE_H_
diff --git a/src/cobalt/script/mozjs/native_promise_test.cc b/src/cobalt/script/mozjs/native_promise_test.cc
deleted file mode 100644
index 9194b9c..0000000
--- a/src/cobalt/script/mozjs/native_promise_test.cc
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright 2017 Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Simple tests to exercise basic NativePromise functionality. Difficult to
-// verify functionality without bindings support.
-
-#include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
-#include "cobalt/script/environment_settings.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/javascript_engine.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-namespace {
-typedef ScriptValue<Promise<void> > VoidPromise;
-class NativePromiseTest : public ::testing::Test {
- protected:
- NativePromiseTest()
- : environment_settings_(new script::EnvironmentSettings),
- engine_(script::JavaScriptEngine::CreateEngine()),
- global_environment_(engine_->CreateGlobalEnvironment()) {
- global_environment_->CreateGlobalObject();
- }
-
- const scoped_ptr<script::EnvironmentSettings> environment_settings_;
- const scoped_ptr<script::JavaScriptEngine> engine_;
- const scoped_refptr<script::GlobalEnvironment> global_environment_;
-};
-
-TEST_F(NativePromiseTest, CreateNativePromise) {
- scoped_ptr<VoidPromise> promise;
- promise =
- global_environment_->script_value_factory()->CreateBasicPromise<void>();
-}
-
-TEST_F(NativePromiseTest, ResolveNativePromise) {
- scoped_ptr<VoidPromise> promise;
- promise =
- global_environment_->script_value_factory()->CreateBasicPromise<void>();
- VoidPromise::StrongReference reference(*promise.get());
- reference.value().Resolve();
-}
-
-TEST_F(NativePromiseTest, RejectNativePromise) {
- scoped_ptr<VoidPromise> promise;
- promise =
- global_environment_->script_value_factory()->CreateBasicPromise<void>();
- VoidPromise::StrongReference reference(*promise.get());
- reference.value().Reject();
-}
-
-} // namespace
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
diff --git a/src/cobalt/script/mozjs/promise_wrapper.cc b/src/cobalt/script/mozjs/promise_wrapper.cc
deleted file mode 100644
index 36689cb..0000000
--- a/src/cobalt/script/mozjs/promise_wrapper.cc
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * Copyright 2017 Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "cobalt/script/mozjs/promise_wrapper.h"
-
-#include "base/logging.h"
-#include "third_party/mozjs/js/src/jsfun.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-namespace {
-enum ReservedSlots {
- kResolveFunction,
- kRejectFunction,
- kPromiseObject,
- kNumReservedSlots,
-};
-
-JSClass native_promise_class = {
- "NativePromise", // name
-
- JSCLASS_HAS_RESERVED_SLOTS(kNumReservedSlots), // flags
-
- JS_PropertyStub, // addProperty
- JS_DeletePropertyStub, // delProperty
- JS_PropertyStub, // getProperty
- JS_StrictPropertyStub, // setProperty
- JS_EnumerateStub, // enumerate
- JS_ResolveStub, // resolve
- JS_ConvertStub, // convert
- NULL, // finalize
- NULL, // trace
-};
-
-JSBool NativeExecutor(JSContext* context, unsigned argc, JS::Value* vp) {
- // Get the resolve/reject functions from the call args.
- JS::CallArgs call_args = CallArgsFromVp(argc, vp);
- DCHECK_EQ(call_args.length(), 2);
-
- // Get the this object. Should be the native_promise object.
- JS::RootedValue this_value(context, call_args.computeThis(context));
- DCHECK(this_value.isObject());
- JS::RootedObject this_object(context, JSVAL_TO_OBJECT(this_value));
- DCHECK_EQ(JS_GetClass(this_object), &native_promise_class);
-
- // First argument is the resolve function. Second is the reject function.
- // Stash these in the reserved slots. Reserved slots get visited so there is
- // no need to define a special trace function.
- JS::RootedValue resolve_function_value(context, call_args.get(0));
- JS::RootedValue reject_function_value(context, call_args.get(1));
- DCHECK(resolve_function_value.isObject());
- DCHECK(JS_ObjectIsFunction(context, JSVAL_TO_OBJECT(resolve_function_value)));
- DCHECK(reject_function_value.isObject());
- DCHECK(JS_ObjectIsFunction(context, JSVAL_TO_OBJECT(reject_function_value)));
-
- JS_SetReservedSlot(this_object, kResolveFunction, resolve_function_value);
- JS_SetReservedSlot(this_object, kRejectFunction, reject_function_value);
- return true;
-}
-
-// Creates a new NativePromise object and initializes its reserved slots.
-JSObject* CreateNativePromise(JSContext* context) {
- JS::RootedObject native_promise(
- context, JS_NewObject(context, &native_promise_class, NULL, NULL));
- DCHECK(native_promise);
- for (uint32_t i = 0; i < kNumReservedSlots; ++i) {
- JS_SetReservedSlot(native_promise, i, JS::NullHandleValue);
- }
- return native_promise;
-}
-
-// Create a new native function with the |native_promise| bound as |this|.
-JSObject* CreateExecutorArgument(JSContext* context,
- JS::HandleObject native_promise) {
- JS::RootedObject executor_function(context);
- executor_function =
- JS_NewFunction(context, &NativeExecutor, 2, 0, NULL, NULL);
- DCHECK(executor_function);
-
- JS::RootedObject bound_executor(context);
- bound_executor = JS_BindCallable(context, executor_function, native_promise);
- DCHECK(bound_executor);
- return bound_executor;
-}
-
-// Get the Promise constructor from the global object.
-JSObject* GetPromiseConstructor(JSContext* context,
- JS::HandleObject global_object) {
- JS::RootedValue promise_constructor_property(context);
- JSBool result = JS_GetProperty(context, global_object, "Promise",
- promise_constructor_property.address());
- DCHECK(result);
- if (!promise_constructor_property.isObject() ||
- !JS_ObjectIsFunction(context,
- JSVAL_TO_OBJECT(promise_constructor_property))) {
- DLOG(ERROR) << "\"Promise\" property is not a function.";
- return NULL;
- }
- return JSVAL_TO_OBJECT(promise_constructor_property);
-}
-
-void Settle(JSContext* context, JS::HandleValue result,
- JS::HandleObject resolver, ReservedSlots slot) {
- JS::RootedValue slot_value(context, JS_GetReservedSlot(resolver, slot));
- DCHECK(slot_value.isObject());
- DCHECK(JS_ObjectIsFunction(context, JSVAL_TO_OBJECT(slot_value)));
-
- JS::RootedValue return_value(context);
- const size_t kNumArguments = result.isUndefined() ? 0 : 1;
- JS::Value args[1] = {result};
- JSBool call_result =
- JS_CallFunctionValue(context, resolver, slot_value, kNumArguments, args,
- return_value.address());
- if (!call_result) {
- DLOG(ERROR) << "Exception calling Promise function.";
- JS_ClearPendingException(context);
- }
-}
-} // namespace
-
-JSObject* PromiseWrapper::Create(JSContext* context,
- JS::HandleObject global_object) {
- // Get the Promise constructor.
- JS::RootedObject constructor(context,
- GetPromiseConstructor(context, global_object));
- if (!constructor) {
- DLOG(ERROR) << "Failed to find Promise constructor.";
- return NULL;
- }
- // Create a new NativePromise JS object, and bind it to the NativeExecutor
- // function.
- JS::RootedObject promise_wrapper(context, CreateNativePromise(context));
- DCHECK(promise_wrapper);
- JS::RootedObject executor(context,
- CreateExecutorArgument(context, promise_wrapper));
- DCHECK(executor);
-
- // Invoke the Promise constructor with the native executor function.
- const size_t kNumArguments = 1;
- JS::Value args[kNumArguments] = {OBJECT_TO_JSVAL(executor)};
- JS::RootedObject promise_object(context);
- promise_object = JS_New(context, constructor, kNumArguments, args);
- if (!promise_object) {
- DLOG(ERROR) << "Failed to create a new Promise.";
- return NULL;
- }
- // Maintain a handle to the promise object on the NativePromise.
- JS_SetReservedSlot(promise_wrapper, kPromiseObject,
- OBJECT_TO_JSVAL(promise_object));
-
- return promise_wrapper;
-}
-
-JSObject* PromiseWrapper::GetPromise() const {
- JS::RootedObject promise(context_);
- JS::RootedObject promise_wrapper(context_, weak_promise_wrapper_.GetObject());
- if (promise_wrapper) {
- JS::RootedValue slot_value(
- context_, JS_GetReservedSlot(promise_wrapper, kPromiseObject));
- DCHECK(slot_value.isObject());
- promise = JSVAL_TO_OBJECT(slot_value);
- }
- return promise;
-}
-
-void PromiseWrapper::Resolve(JS::HandleValue value) const {
- JS::RootedObject promise_wrapper(context_, weak_promise_wrapper_.GetObject());
- if (promise_wrapper) {
- Settle(context_, value, promise_wrapper, kResolveFunction);
- }
-}
-
-void PromiseWrapper::Reject(JS::HandleValue value) const {
- JS::RootedObject promise_wrapper(context_, weak_promise_wrapper_.GetObject());
- if (promise_wrapper) {
- Settle(context_, value, promise_wrapper, kRejectFunction);
- }
-}
-
-PromiseWrapper::PromiseWrapper(JSContext* context,
- JS::HandleObject promise_wrapper)
- : context_(context), weak_promise_wrapper_(context, promise_wrapper) {
- DCHECK_EQ(JS_GetClass(promise_wrapper), &native_promise_class);
-}
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
diff --git a/src/cobalt/script/mozjs/promise_wrapper.h b/src/cobalt/script/mozjs/promise_wrapper.h
deleted file mode 100644
index 1725119..0000000
--- a/src/cobalt/script/mozjs/promise_wrapper.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright 2017 Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef COBALT_SCRIPT_MOZJS_PROMISE_WRAPPER_H_
-#define COBALT_SCRIPT_MOZJS_PROMISE_WRAPPER_H_
-
-#include "base/memory/scoped_ptr.h"
-#include "cobalt/script/mozjs/weak_heap_object.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-// Native class that maintains a weak handle to a JS object that is a proxy to
-// a JS Promise object. The wrapper object maintains references to the reject
-// and resolve functions that are passed to the Promise executor function.
-class PromiseWrapper {
- public:
- // Creates a new JS object that wraps a new Promise, created using the
- // Promise constructor on |global_object|. Returns NULL on failure.
- static JSObject* Create(JSContext* context, JS::HandleObject global_object);
-
- PromiseWrapper(JSContext* context, JS::HandleObject promise_wrapper);
-
- const WeakHeapObject& get() const { return weak_promise_wrapper_; }
- JSObject* GetPromise() const;
- void Resolve(JS::HandleValue value) const;
- void Reject(JS::HandleValue value) const;
-
- private:
- JSContext* context_;
- WeakHeapObject weak_promise_wrapper_;
-};
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_PROMISE_WRAPPER_H_
diff --git a/src/cobalt/script/mozjs/proxy_handler.cc b/src/cobalt/script/mozjs/proxy_handler.cc
deleted file mode 100644
index 2c45dbb..0000000
--- a/src/cobalt/script/mozjs/proxy_handler.cc
+++ /dev/null
@@ -1,298 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "cobalt/script/mozjs/proxy_handler.h"
-
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-ProxyHandler::ProxyHandler(const IndexedPropertyHooks& indexed_hooks,
- const NamedPropertyHooks& named_hooks)
- : js::DirectProxyHandler(NULL),
- indexed_property_hooks_(indexed_hooks),
- named_property_hooks_(named_hooks),
- has_custom_property_(false) {
- // If an interface supports named/indexed properties, they must have a hook to
- // check if the name/index is supported and to enumerate the properties.
- if (supports_named_properties()) {
- DCHECK(named_property_hooks_.is_supported);
- DCHECK(named_property_hooks_.enumerate_supported);
- }
- if (supports_indexed_properties()) {
- DCHECK(indexed_property_hooks_.is_supported);
- DCHECK(indexed_property_hooks_.enumerate_supported);
- }
-}
-
-JSObject* ProxyHandler::NewProxy(JSContext* context, JSObject* object,
- JSObject* prototype, JSObject* parent,
- ProxyHandler* handler) {
- JS::RootedValue as_value(context, OBJECT_TO_JSVAL(object));
- return js::NewProxyObject(context, handler, as_value, prototype, parent);
-}
-
-bool ProxyHandler::getPropertyDescriptor(JSContext* context,
- JS::HandleObject proxy,
- JS::HandleId id,
- JSPropertyDescriptor* descriptor,
- unsigned flags) {
- if (!getOwnPropertyDescriptor(context, proxy, id, descriptor, flags)) {
- return false;
- }
- if (descriptor->obj == NULL) {
- JS::RootedObject prototype(context);
- if (getPrototypeOf(context, proxy, &prototype)) {
- return JS_GetPropertyDescriptorById(context, prototype, id, flags,
- descriptor);
- }
- }
- return true;
-}
-
-bool ProxyHandler::getOwnPropertyDescriptor(JSContext* context,
- JS::HandleObject proxy,
- JS::HandleId id,
- JSPropertyDescriptor* descriptor,
- unsigned flags) {
- if (!LegacyPlatformObjectGetOwnPropertyDescriptor(context, proxy, id,
- descriptor)) {
- return false;
- }
- if (descriptor->obj == NULL) {
- return js::DirectProxyHandler::getOwnPropertyDescriptor(context, proxy, id,
- descriptor, flags);
- }
- return true;
-}
-
-bool ProxyHandler::delete_(JSContext* context, JS::HandleObject proxy,
- JS::HandleId id, bool* succeeded) {
- // https://www.w3.org/TR/WebIDL/#delete
- if (supports_named_properties() || supports_indexed_properties()) {
- // Convert the id to a JSValue, so we can easily convert it to Uint32 and
- // JSString.
- JS::RootedValue id_value(context);
- if (!JS_IdToValue(context, id, id_value.address())) {
- NOTREACHED();
- return false;
- }
- DCHECK(js::IsProxy(proxy));
- JS::RootedObject object(context, js::GetProxyTargetObject(proxy));
- if (supports_indexed_properties()) {
- // If the interface supports indexed properties and this is an array index
- // property name, and it is a supported property index.
- uint32_t index;
- // 1. If O supports indexed properties and P is an array index property
- // name,
- // then:
- if (IsArrayIndexPropertyName(context, id_value, &index)) {
- if (!IsSupportedIndex(context, object, index)) {
- // 1.2. If index is not a supported property index, then return true.
- *succeeded = true;
- } else if (!indexed_property_hooks_.deleter) {
- // 1.3. If O does not implement an interface with an indexed property
- // deleter, then Reject.
- *succeeded = false;
- } else {
- *succeeded = indexed_property_hooks_.deleter(context, object, index);
- }
- return true;
- }
- }
- if (supports_named_properties()) {
- std::string property_name;
- MozjsExceptionState exception_state(context);
- FromJSValue(context, id_value, kNoConversionFlags, &exception_state,
- &property_name);
- if (exception_state.is_exception_set()) {
- // The ID should be an integer or a string, so we shouldn't have any
- // exceptions converting to string.
- NOTREACHED();
- return false;
- }
- if (IsNamedPropertyVisible(context, object, property_name)) {
- if (!named_property_hooks_.deleter) {
- *succeeded = false;
- } else {
- *succeeded =
- named_property_hooks_.deleter(context, object, property_name);
- }
- return true;
- }
- }
- }
- return js::DirectProxyHandler::delete_(context, proxy, id, succeeded);
-}
-
-bool ProxyHandler::enumerate(JSContext* context, JS::HandleObject proxy,
- JS::AutoIdVector& properties) {
- // https://www.w3.org/TR/WebIDL/#property-enumeration
- // Indexed properties go first, then named properties, then everything else.
- JS::RootedObject object(context, js::GetProxyTargetObject(proxy));
- if (supports_indexed_properties()) {
- indexed_property_hooks_.enumerate_supported(context, object, &properties);
- }
- if (supports_named_properties()) {
- named_property_hooks_.enumerate_supported(context, object, &properties);
- }
- return js::DirectProxyHandler::enumerate(context, proxy, properties);
-}
-
-bool ProxyHandler::defineProperty(JSContext* context, JS::HandleObject proxy,
- JS::HandleId id,
- JSPropertyDescriptor* descriptor) {
- has_custom_property_ = true;
- return js::DirectProxyHandler::defineProperty(context, proxy, id, descriptor);
-}
-
-bool ProxyHandler::LegacyPlatformObjectGetOwnPropertyDescriptor(
- JSContext* context, JS::HandleObject proxy, JS::HandleId id,
- JSPropertyDescriptor* descriptor) {
- // https://heycam.github.io/webidl/#LegacyPlatformObjectGetOwnProperty
- JS::RootedObject object(context, js::GetProxyTargetObject(proxy));
- if (supports_named_properties() || supports_indexed_properties()) {
- // Convert the id to a JSValue, so we can easily convert it to Uint32 and
- // JSString.
- JS::RootedValue id_value(context);
- if (!JS_IdToValue(context, id, id_value.address())) {
- NOTREACHED();
- return false;
- }
- if (supports_indexed_properties()) {
- // If the interface supports indexed properties and this is an array index
- // property name, and it is a supported property index.
- uint32_t index;
- if (IsArrayIndexPropertyName(context, id_value, &index) &&
- IsSupportedIndex(context, object, index)) {
- descriptor->obj = object;
- descriptor->attrs = JSPROP_SHARED | JSPROP_INDEX | JSPROP_ENUMERATE;
- descriptor->getter = indexed_property_hooks_.getter;
- if (indexed_property_hooks_.setter) {
- descriptor->setter = indexed_property_hooks_.setter;
- } else {
- descriptor->attrs |= JSPROP_READONLY;
- }
- return true;
- }
- }
- if (supports_named_properties()) {
- std::string property_name;
- MozjsExceptionState exception_state(context);
- FromJSValue(context, id_value, kNoConversionFlags, &exception_state,
- &property_name);
- if (exception_state.is_exception_set()) {
- // The ID should be an integer or a string, so we shouldn't have any
- // exceptions converting to string.
- NOTREACHED();
- return false;
- }
- if (IsNamedPropertyVisible(context, object, property_name)) {
- descriptor->obj = object;
- descriptor->attrs = JSPROP_SHARED | JSPROP_ENUMERATE;
- descriptor->getter = named_property_hooks_.getter;
- if (named_property_hooks_.setter) {
- descriptor->setter = named_property_hooks_.setter;
- } else {
- descriptor->attrs |= JSPROP_READONLY;
- }
- return true;
- }
- }
- }
- return true;
-}
-
-bool ProxyHandler::IsSupportedIndex(JSContext* context, JS::HandleObject object,
- uint32_t index) {
- DCHECK(indexed_property_hooks_.is_supported);
- return indexed_property_hooks_.is_supported(context, object, index);
-}
-
-bool ProxyHandler::IsSupportedName(JSContext* context, JS::HandleObject object,
- const std::string& name) {
- DCHECK(named_property_hooks_.is_supported);
- return named_property_hooks_.is_supported(context, object, name);
-}
-
-bool ProxyHandler::IsArrayIndexPropertyName(JSContext* context,
- JS::HandleValue property_value,
- uint32_t* out_index) {
- // https://www.w3.org/TR/WebIDL/#dfn-array-index-property-name
- // 1. Let i be ToUint32(P).
- uint32_t index;
- if (!JS::ToUint32(context, property_value, &index)) {
- return false;
- }
-
- // 3. If i = 2^32 - 1, then return false.
- if (index == 0xFFFFFFFF) {
- return false;
- }
-
- // 2. Let s be ToString(i).
- // 3. If s != P then return false.
- JSBool are_equal;
- JS::RootedString index_as_string(
- context, JS_ValueToString(context, UINT_TO_JSVAL(index)));
- if (!JS_LooselyEqual(context, JS::StringValue(index_as_string),
- property_value, &are_equal) ||
- !are_equal) {
- return false;
- }
-
- // 4. Return true.
- *out_index = index;
- return true;
-}
-
-bool ProxyHandler::IsNamedPropertyVisible(JSContext* context,
- JS::HandleObject object,
- const std::string& property_name) {
- // Named property visiblity algorithm.
- // https://www.w3.org/TR/WebIDL/#dfn-named-property-visibility
-
- // 1. If P is an unforgeable property name on O, then return false.
- // 2. If O implements an interface with an [Unforgeable]-annotated attribute
- // whose identifier is P, then return false.
- // TODO: Implement Unforgeable extended attribute.
-
- // 3. If P is not a supported property name of O, then return false.
- if (!IsSupportedName(context, object, property_name)) {
- return false;
- }
-
- // 4. If O implements an interface that has the [OverrideBuiltins] extended
- // attribute, then return true.
- // TODO: Implement OverrideBuiltins extended attribute
-
- // 5. If O has an own property named P, then return false.
- // 6~7. ( Walk the prototype chain and if the prootype has P, return false)
-
- JSBool found_property;
- if (!JS_HasProperty(context, object, property_name.c_str(),
- &found_property)) {
- // An error occurred searching for the property.
- NOTREACHED();
- return true;
- }
- return !found_property;
-}
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
diff --git a/src/cobalt/script/mozjs/proxy_handler.h b/src/cobalt/script/mozjs/proxy_handler.h
deleted file mode 100644
index c6eff6e..0000000
--- a/src/cobalt/script/mozjs/proxy_handler.h
+++ /dev/null
@@ -1,180 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#ifndef COBALT_SCRIPT_MOZJS_PROXY_HANDLER_H_
-#define COBALT_SCRIPT_MOZJS_PROXY_HANDLER_H_
-
-#include <string>
-
-#include "base/compiler_specific.h"
-#include "base/logging.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsproxy.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-// SpiderMonkey has a concept of a Proxy object which is associated with another
-// arbitrary object and a js::BaseProxyHandler interface. The handler interface
-// provides a number of traps for providing custom implementations of
-// fundamental ECMAScript operations such as getPropertyDescriptor.
-//
-// The implementation of each trap in the js::DirectProxyHandler class simply
-// forwards each trap to the target object.
-//
-// In defining a JSClass a number of function pointers can be set that will
-// be called when getting, setting, deleting, etc. a property, but these do not
-// map well onto the Web IDL spec for implementing interfaces that support named
-// and indexed properties.
-//
-// See third_party/mozjs/js/src/jsproxy.h for more details.
-//
-// ProxyHandler provides custom traps for getPropertyDescriptor, delete_, and
-// enumerate to implement interfaces that support named and indexed properties.
-class ProxyHandler : public js::DirectProxyHandler {
- public:
- typedef bool (*IsSupportedIndexFunction)(JSContext*, JS::HandleObject,
- uint32_t);
- typedef bool (*IsSupportedNameFunction)(JSContext*, JS::HandleObject,
- const std::string&);
- typedef void (*EnumerateSupportedIndexesFunction)(JSContext*,
- JS::HandleObject,
- JS::AutoIdVector*);
- typedef void (*EnumerateSupportedNamesFunction)(JSContext*, JS::HandleObject,
- JS::AutoIdVector*);
- typedef bool (*IndexedDeleteFunction)(JSContext*, JS::HandleObject, uint32_t);
- typedef bool (*NamedDeleteFunction)(JSContext*, JS::HandleObject,
- const std::string&);
-
- // Hooks for interfaces that support indexed properties.
- struct IndexedPropertyHooks {
- IsSupportedIndexFunction is_supported;
- EnumerateSupportedIndexesFunction enumerate_supported;
- JSPropertyOp getter;
- JSStrictPropertyOp setter;
- IndexedDeleteFunction deleter;
- };
-
- // Hooks for interfaces that support named properties.
- struct NamedPropertyHooks {
- IsSupportedNameFunction is_supported;
- EnumerateSupportedNamesFunction enumerate_supported;
- JSPropertyOp getter;
- JSStrictPropertyOp setter;
- NamedDeleteFunction deleter;
- };
-
- static JSObject* NewProxy(JSContext* context, JSObject* object,
- JSObject* prototype, JSObject* parent,
- ProxyHandler* handler);
-
- // Construct a new ProxyHandler with the provided hooks.
- ProxyHandler(const IndexedPropertyHooks& indexed_hooks,
- const NamedPropertyHooks& named_hooks);
-
- // Overridden fundamental traps.
- bool getPropertyDescriptor(JSContext* context, JS::HandleObject proxy,
- JS::HandleId id, JSPropertyDescriptor* descriptor,
- unsigned flags) OVERRIDE;
- bool getOwnPropertyDescriptor(JSContext* context, JS::HandleObject proxy,
- JS::HandleId id,
- JSPropertyDescriptor* descriptor,
- unsigned flags) OVERRIDE;
- bool delete_(JSContext* context, JS::HandleObject proxy, JS::HandleId id,
- bool* succeeded) OVERRIDE;
- bool enumerate(JSContext* context, JS::HandleObject proxy,
- JS::AutoIdVector& properties) OVERRIDE; // NOLINT[runtime/references]
- bool defineProperty(JSContext* context, JS::HandleObject proxy,
- JS::HandleId id,
- JSPropertyDescriptor* descriptor) OVERRIDE;
-
- // The derived traps in js::DirectProxyHandler are not implemented in terms of
- // the fundamental traps, where the traps in js::BaseProxyHandler are.
- // Redefining the derived traps to be in terms of the fundamental traps means
- // that we only need to override the fundamental traps when implementing
- // custom behavior for i.e. interfaces that support named properties.
- bool has(JSContext* context, JS::HandleObject proxy, JS::HandleId id,
- bool* bp) OVERRIDE {
- return js::BaseProxyHandler::has(context, proxy, id, bp);
- }
-
- bool hasOwn(JSContext* context, JS::HandleObject proxy, JS::HandleId id,
- bool* bp) OVERRIDE {
- return js::BaseProxyHandler::hasOwn(context, proxy, id, bp);
- }
-
- bool get(JSContext* context, JS::HandleObject proxy,
- JS::HandleObject receiver, JS::HandleId id,
- JS::MutableHandleValue vp) OVERRIDE {
- return js::BaseProxyHandler::get(context, proxy, receiver, id, vp);
- }
-
- bool set(JSContext* context, JS::HandleObject proxy,
- JS::HandleObject receiver, JS::HandleId id, bool strict,
- JS::MutableHandleValue vp) OVERRIDE {
- return js::BaseProxyHandler::set(context, proxy, receiver, id, strict, vp);
- }
-
- bool keys(JSContext* context, JS::HandleObject proxy,
- JS::AutoIdVector& props) OVERRIDE { // NOLINT[runtime/references]
- return js::BaseProxyHandler::keys(context, proxy, props);
- }
-
- bool iterate(JSContext* context, JS::HandleObject proxy, unsigned flags,
- JS::MutableHandleValue vp) OVERRIDE {
- return js::BaseProxyHandler::iterate(context, proxy, flags, vp);
- }
-
- bool has_custom_property() const { return has_custom_property_; }
-
- private:
- // https://heycam.github.io/webidl/#LegacyPlatformObjectGetOwnProperty
- // This is used to support named and indexed properties.
- // Returns false on internal failure.
- bool LegacyPlatformObjectGetOwnPropertyDescriptor(
- JSContext* context, JS::HandleObject proxy, JS::HandleId id,
- JSPropertyDescriptor* descriptor);
-
- bool supports_named_properties() {
- return named_property_hooks_.getter != NULL;
- }
-
- bool supports_indexed_properties() {
- return indexed_property_hooks_.getter != NULL;
- }
-
- bool IsSupportedIndex(JSContext* context, JS::HandleObject object,
- uint32_t index);
-
- bool IsSupportedName(JSContext* context, JS::HandleObject object,
- const std::string& name);
-
- bool IsArrayIndexPropertyName(JSContext* context,
- JS::HandleValue property_value,
- uint32_t* out_index);
-
- bool IsNamedPropertyVisible(JSContext* context, JS::HandleObject object,
- const std::string& property_name);
-
- IndexedPropertyHooks indexed_property_hooks_;
- NamedPropertyHooks named_property_hooks_;
- // Set to true if this object may have a custom property set on it.
- bool has_custom_property_;
-};
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_PROXY_HANDLER_H_
diff --git a/src/cobalt/script/mozjs/referenced_object_map.cc b/src/cobalt/script/mozjs/referenced_object_map.cc
deleted file mode 100644
index c12eaff..0000000
--- a/src/cobalt/script/mozjs/referenced_object_map.cc
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "cobalt/script/mozjs/referenced_object_map.h"
-
-#include <utility>
-
-#include "cobalt/script/mozjs/util/algorithm_helpers.h"
-#include "nb/memory_scope.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-ReferencedObjectMap::ReferencedObjectMap(JSContext* context)
- : context_(context) {}
-
-// Add/Remove a reference from a WrapperPrivate to a JSValue.
-void ReferencedObjectMap::AddReferencedObject(intptr_t key,
- JS::HandleValue referee) {
- TRACK_MEMORY_SCOPE("Javascript");
- DCHECK(thread_checker_.CalledOnValidThread());
- DCHECK(!referee.isNullOrUndefined());
- DCHECK(referee.isGCThing());
- referenced_objects_.insert(
- std::make_pair(key, WeakHeapObject(context_, referee)));
-}
-
-void ReferencedObjectMap::RemoveReferencedObject(intptr_t key,
- JS::HandleValue referee) {
- DCHECK(thread_checker_.CalledOnValidThread());
- std::pair<ReferencedObjectMultiMap::iterator,
- ReferencedObjectMultiMap::iterator> pair_range =
- referenced_objects_.equal_range(key);
- for (ReferencedObjectMultiMap::iterator it = pair_range.first;
- it != pair_range.second; ++it) {
- JS::RootedValue element(context_, it->second.GetValue());
- if (util::IsSameGcThing(context_, referee, element)) {
- // There may be multiple mappings between a specific owner and a JS
- // object. Only remove the first mapping.
- referenced_objects_.erase(it);
- return;
- }
- }
- DLOG(WARNING) << "No reference to the specified object found.";
-}
-
-void ReferencedObjectMap::TraceReferencedObjects(JSTracer* trace,
- intptr_t key) {
- DCHECK(thread_checker_.CalledOnValidThread());
- std::pair<ReferencedObjectMultiMap::iterator,
- ReferencedObjectMultiMap::iterator> pair_range =
- referenced_objects_.equal_range(key);
- for (ReferencedObjectMultiMap::iterator it = pair_range.first;
- it != pair_range.second; ++it) {
- it->second.Trace(trace);
- }
-}
-
-void ReferencedObjectMap::RemoveNullReferences() {
- DCHECK(thread_checker_.CalledOnValidThread());
- for (ReferencedObjectMultiMap::iterator it = referenced_objects_.begin();
- it != referenced_objects_.end();
- /*Incremented in the loop */) {
- if (it->second.WasCollected()) {
- ReferencedObjectMultiMap::iterator erase_iterator = it++;
- referenced_objects_.erase(erase_iterator);
- } else {
- DCHECK(it->second.IsGcThing());
- ++it;
- }
- }
-}
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
diff --git a/src/cobalt/script/mozjs/referenced_object_map.h b/src/cobalt/script/mozjs/referenced_object_map.h
deleted file mode 100644
index 51450f4..0000000
--- a/src/cobalt/script/mozjs/referenced_object_map.h
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#ifndef COBALT_SCRIPT_MOZJS_REFERENCED_OBJECT_MAP_H_
-#define COBALT_SCRIPT_MOZJS_REFERENCED_OBJECT_MAP_H_
-
-#include "base/hash_tables.h"
-#include "base/threading/thread_checker.h"
-#include "cobalt/script/mozjs/weak_heap_object.h"
-#include "cobalt/script/wrappable.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-// Maintains a set of JSObjects that are reachable from a given object. This
-// relationship is registered by mapping a key to a JSObject. The calling code
-// should ensure that a key uniquely identifies the entity that holds a
-// reference to the JSObjects.
-// During garbage collection, supply a key to TraceReferencedObjects to trace
-// all objects that are registered as being reachable from the object
-// represented by that key.
-class ReferencedObjectMap {
- public:
- explicit ReferencedObjectMap(JSContext* context);
-
- // Reinterpret the pointer as an integer to be used as a key for tracking
- // referenced objects.
- static intptr_t GetKeyForWrappable(const Wrappable* wrappable) {
- return reinterpret_cast<intptr_t>(wrappable);
- }
-
- void AddReferencedObject(intptr_t key, JS::HandleValue referee);
- void RemoveReferencedObject(intptr_t key, JS::HandleValue referee);
-
- // Trace all objects referenced from this WrapperPrivate*.
- void TraceReferencedObjects(JSTracer* trace, intptr_t key);
-
- // Remove any referenced objects that are NULL. It may be the case that a
- // weak reference to an object was garbage collected, so remove it from the
- // internal list.
- void RemoveNullReferences();
-
- private:
- typedef base::hash_multimap<intptr_t, WeakHeapObject>
- ReferencedObjectMultiMap;
-
- base::ThreadChecker thread_checker_;
- JSContext* context_;
- ReferencedObjectMultiMap referenced_objects_;
-};
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_REFERENCED_OBJECT_MAP_H_
diff --git a/src/cobalt/script/mozjs/type_traits.h b/src/cobalt/script/mozjs/type_traits.h
deleted file mode 100644
index d83b8b7..0000000
--- a/src/cobalt/script/mozjs/type_traits.h
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef COBALT_SCRIPT_MOZJS_TYPE_TRAITS_H_
-#define COBALT_SCRIPT_MOZJS_TYPE_TRAITS_H_
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-template <typename T>
-struct TypeTraits {
- // The type to convert into from a JS Value in the bindings implementation.
- typedef T ConversionType;
- // Type type returned from a Cobalt implementation of a bound function.
- typedef T ReturnType;
-};
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_TYPE_TRAITS_H_
diff --git a/src/cobalt/script/mozjs/union_type_conversion_forward.h b/src/cobalt/script/mozjs/union_type_conversion_forward.h
deleted file mode 100644
index 4755120..0000000
--- a/src/cobalt/script/mozjs/union_type_conversion_forward.h
+++ /dev/null
@@ -1,67 +0,0 @@
-// This file was GENERATED by command:
-// pump.py union_type_conversion_forward.h.pump
-// DO NOT EDIT BY HAND!!!
-
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef COBALT_SCRIPT_MOZJS_UNION_TYPE_CONVERSION_FORWARD_H_
-#define COBALT_SCRIPT_MOZJS_UNION_TYPE_CONVERSION_FORWARD_H_
-
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/union_type.h"
-
-// Forward declaration for ToJSValue and FromJSValue for IDL union types.
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-template <typename T1, typename T2>
-void ToJSValue(JSContext* context, const script::UnionType2<T1, T2>& in_union,
- JS::MutableHandleValue out_value);
-
-template <typename T1, typename T2>
-void FromJSValue(JSContext* context, JS::HandleValue value,
- int conversion_flags, ExceptionState* exception_state,
- script::UnionType2<T1, T2>* out_union);
-
-template <typename T1, typename T2, typename T3>
-void ToJSValue(JSContext* context,
- const script::UnionType3<T1, T2, T3>& in_union,
- JS::MutableHandleValue out_value);
-
-template <typename T1, typename T2, typename T3>
-void FromJSValue(JSContext* context, JS::HandleValue value,
- int conversion_flags, ExceptionState* exception_state,
- script::UnionType3<T1, T2, T3>* out_union);
-
-template <typename T1, typename T2, typename T3, typename T4>
-void ToJSValue(JSContext* context,
- const script::UnionType4<T1, T2, T3, T4>& in_union,
- JS::MutableHandleValue out_value);
-
-template <typename T1, typename T2, typename T3, typename T4>
-void FromJSValue(JSContext* context, JS::HandleValue value,
- int conversion_flags, ExceptionState* exception_state,
- script::UnionType4<T1, T2, T3, T4>* out_union);
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_UNION_TYPE_CONVERSION_FORWARD_H_
diff --git a/src/cobalt/script/mozjs/union_type_conversion_forward.h.pump b/src/cobalt/script/mozjs/union_type_conversion_forward.h.pump
deleted file mode 100644
index 1837665..0000000
--- a/src/cobalt/script/mozjs/union_type_conversion_forward.h.pump
+++ /dev/null
@@ -1,57 +0,0 @@
-$$ This is a pump file for generating file templates. Pump is a python
-$$ script that is part of the Google Test suite of utilities. Description
-$$ can be found here:
-$$
-$$ http://code.google.com/p/googletest/wiki/PumpManual
-$$
-
-$$ Maximum number of different member types in a union.
-$var MAX_MEMBERS = 4
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef COBALT_SCRIPT_MOZJS_UNION_TYPE_CONVERSION_FORWARD_H_
-#define COBALT_SCRIPT_MOZJS_UNION_TYPE_CONVERSION_FORWARD_H_
-
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/union_type.h"
-
-// Forward declaration for ToJSValue and FromJSValue for IDL union types.
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-$range NUM_MEMBERS 2..MAX_MEMBERS
-$for NUM_MEMBERS [[
-$range TYPE 1..NUM_MEMBERS
-
-template <$for TYPE , [[typename T$(TYPE)]]>
-void ToJSValue(JSContext* context, const script::UnionType$(NUM_MEMBERS)<$for TYPE , [[T$(TYPE)]]>& in_union, JS::MutableHandleValue out_value);
-
-template <$for TYPE , [[typename T$(TYPE)]]>
-void FromJSValue(JSContext* context, JS::HandleValue value,
- int conversion_flags, ExceptionState* exception_state,
- script::UnionType$(NUM_MEMBERS)<$for TYPE , [[T$(TYPE)]]>* out_union);
-
-]] $$ for NUM_MEMBERS
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_UNION_TYPE_CONVERSION_FORWARD_H_
diff --git a/src/cobalt/script/mozjs/union_type_conversion_impl.h b/src/cobalt/script/mozjs/union_type_conversion_impl.h
deleted file mode 100644
index 252b711..0000000
--- a/src/cobalt/script/mozjs/union_type_conversion_impl.h
+++ /dev/null
@@ -1,757 +0,0 @@
-// This file was GENERATED by command:
-// pump.py union_type_conversion_impl.h.pump
-// DO NOT EDIT BY HAND!!!
-
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef COBALT_SCRIPT_MOZJS_UNION_TYPE_CONVERSION_IMPL_H_
-#define COBALT_SCRIPT_MOZJS_UNION_TYPE_CONVERSION_IMPL_H_
-
-#include "cobalt/base/type_id.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/union_type.h"
-
-// Conversion to/from JS::Value for IDL union types.
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-template <typename T1, typename T2>
-void ToJSValue(
- JSContext* context,
- const script::UnionType2<T1, T2>& in_union,
- JS::MutableHandleValue out_value) {
- if (in_union.template IsType<T1>()) {
- ToJSValue(context, in_union.template AsType<T1>(), out_value);
- return;
- }
- if (in_union.template IsType<T2>()) {
- ToJSValue(context, in_union.template AsType<T2>(), out_value);
- return;
- }
- NOTREACHED();
- out_value.setUndefined();
-}
-
-template <typename T1, typename T2>
-void FromJSValue(JSContext* context, JS::HandleValue value,
- int conversion_flags, ExceptionState* exception_state,
- script::UnionType2<T1, T2>* out_union) {
- DCHECK_EQ(0, conversion_flags);
- // JS -> IDL type conversion procedure described here:
- // http://heycam.github.io/webidl/#es-union
-
- // TODO: Support Date, RegExp, DOMException, Error, ArrayBuffer, DataView,
- // TypedArrayName, callback functions, dictionary.
-
- // 1. If the union type includes a nullable type and |V| is null or undefined,
- // then return the IDL value null.
- if (value.isNull() || value.isUndefined()) {
- // Since the nullability should have been detected by the conversion for
- // base::optional, we should throw, because if we get here it means the
- // union does not include a nullable type, but have been passed a null
- // value.
- exception_state->SetSimpleException(kNotUnionType);
- return;
- }
-
- // Typedef for readability.
- typedef ::cobalt::script::internal::UnionTypeTraits<T1> UnionTypeTraitsT1;
- typedef ::cobalt::script::internal::UnionTypeTraits<T2> UnionTypeTraitsT2;
-
- // 2. Let |types| be the flattened member types of the union type.
- // Forward declare all potential types
- T1 t1;
- T2 t2;
-
- // 4. If |V| is a platform object, then:
- // 1. If |types| includes an interface type that V implements, then return
- // the IDL value that is a reference to the object |V|.
- // 2. If |types| includes object, then return the IDL value that is a
- // reference to the object |V|.
- if (value.isObject()) {
- // The specification doesn't dictate what should happen if V implements
- // more than one of the interfaces. For example, if V implements interface
- // B and interface B inherits from interface A, what happens if both A and
- // B are union members? Blink doesn't seem to do anything special for this
- // case. Just choose the first interface in the flattened members that
- // matches.
-
- JS::RootedObject rooted_object(context);
- bool success = JS_ValueToObject(context, value, rooted_object.address());
- DCHECK(success);
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- const WrapperFactory* wrapper_factory =
- global_environment->wrapper_factory();
-
- if (UnionTypeTraitsT1::is_interface_type &&
- wrapper_factory->DoesObjectImplementInterface(
- rooted_object, UnionTypeTraitsT1::GetTypeID())) {
- FromJSValue(context, value, conversion_flags, exception_state, &t1);
- *out_union = script::UnionType2<T1, T2>(t1);
- return;
- }
-
- if (UnionTypeTraitsT2::is_interface_type &&
- wrapper_factory->DoesObjectImplementInterface(
- rooted_object, UnionTypeTraitsT2::GetTypeID())) {
- FromJSValue(context, value, conversion_flags, exception_state, &t2);
- *out_union = script::UnionType2<T1, T2>(t2);
- return;
- }
- }
-
- // 11. If |Type(V)| is Object, then:
- // 1. If |types| includes a sequence type, then
- // 1. Let |method| be the result of GetMethod(V, @@iterator)
- // 2. ReturnIfAbrupt(method)
- // 3. If method is not undefined, return the result of creating a sequence
- // of that type from |V| and |method|.
- if (value.isObject()) {
- if (UnionTypeTraitsT1::is_sequence_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t1);
- *out_union = script::UnionType2<T1, T2>(t1);
- return;
- }
-
- if (UnionTypeTraitsT2::is_sequence_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t2);
- *out_union = script::UnionType2<T1, T2>(t2);
- return;
- }
- }
-
- // 12. If |Type(V)| is Boolean, then:
- // 1. If |types| includes a boolean, then return the result of converting |V|
- // to boolean.
- if (value.isBoolean()) {
- if (UnionTypeTraitsT1::is_boolean_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t1);
- *out_union = script::UnionType2<T1, T2>(t1);
- return;
- }
-
- if (UnionTypeTraitsT2::is_boolean_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t2);
- *out_union = script::UnionType2<T1, T2>(t2);
- return;
- }
- }
-
- // 13. If |Type(V)| is a Number, then:
- // 1. If |types| includes a numeric type, then return the result of
- // converting |V| to that numeric type.
- if (value.isNumber()) {
- if (UnionTypeTraitsT1::is_numeric_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t1);
- *out_union = script::UnionType2<T1, T2>(t1);
- return;
- }
-
- if (UnionTypeTraitsT2::is_numeric_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t2);
- *out_union = script::UnionType2<T1, T2>(t2);
- return;
- }
- }
-
- // 14. If |types| includes a string type, then return the result of converting
- // |V| to that type.
- if (value.isString()) {
- if (UnionTypeTraitsT1::is_string_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t1);
- *out_union = script::UnionType2<T1, T2>(t1);
- return;
- }
-
- if (UnionTypeTraitsT2::is_string_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t2);
- *out_union = script::UnionType2<T1, T2>(t2);
- return;
- }
- }
-
- // 15. If |types| includes a numeric type, then return the result of
- // converting |V| to that numeric type.
- if (UnionTypeTraitsT1::is_numeric_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t1);
- *out_union = script::UnionType2<T1, T2>(t1);
- return;
- }
-
- if (UnionTypeTraitsT2::is_numeric_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t2);
- *out_union = script::UnionType2<T1, T2>(t2);
- return;
- }
-
- // 16. If |types| includes a boolean, then return the result of converting |V|
- // to boolean.
- if (UnionTypeTraitsT1::is_boolean_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t1);
- *out_union = script::UnionType2<T1, T2>(t1);
- return;
- }
-
- if (UnionTypeTraitsT2::is_boolean_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t2);
- *out_union = script::UnionType2<T1, T2>(t2);
- return;
- }
-
- // 17. Throw a TypeError.
- exception_state->SetSimpleException(kNotUnionType);
-}
-
-template <typename T1, typename T2, typename T3>
-void ToJSValue(
- JSContext* context,
- const script::UnionType3<T1, T2, T3>& in_union,
- JS::MutableHandleValue out_value) {
- if (in_union.template IsType<T1>()) {
- ToJSValue(context, in_union.template AsType<T1>(), out_value);
- return;
- }
- if (in_union.template IsType<T2>()) {
- ToJSValue(context, in_union.template AsType<T2>(), out_value);
- return;
- }
- if (in_union.template IsType<T3>()) {
- ToJSValue(context, in_union.template AsType<T3>(), out_value);
- return;
- }
- NOTREACHED();
- out_value.setUndefined();
-}
-
-template <typename T1, typename T2, typename T3>
-void FromJSValue(JSContext* context, JS::HandleValue value,
- int conversion_flags, ExceptionState* exception_state,
- script::UnionType3<T1, T2, T3>* out_union) {
- DCHECK_EQ(0, conversion_flags);
- // JS -> IDL type conversion procedure described here:
- // http://heycam.github.io/webidl/#es-union
-
- // TODO: Support Date, RegExp, DOMException, Error, ArrayBuffer, DataView,
- // TypedArrayName, callback functions, dictionary.
-
- // 1. If the union type includes a nullable type and |V| is null or undefined,
- // then return the IDL value null.
- if (value.isNull() || value.isUndefined()) {
- // Since the nullability should have been detected by the conversion for
- // base::optional, we should throw, because if we get here it means the
- // union does not include a nullable type, but have been passed a null
- // value.
- exception_state->SetSimpleException(kNotUnionType);
- return;
- }
-
- // Typedef for readability.
- typedef ::cobalt::script::internal::UnionTypeTraits<T1> UnionTypeTraitsT1;
- typedef ::cobalt::script::internal::UnionTypeTraits<T2> UnionTypeTraitsT2;
- typedef ::cobalt::script::internal::UnionTypeTraits<T3> UnionTypeTraitsT3;
-
- // 2. Let |types| be the flattened member types of the union type.
- // Forward declare all potential types
- T1 t1;
- T2 t2;
- T3 t3;
-
- // 4. If |V| is a platform object, then:
- // 1. If |types| includes an interface type that V implements, then return
- // the IDL value that is a reference to the object |V|.
- // 2. If |types| includes object, then return the IDL value that is a
- // reference to the object |V|.
- if (value.isObject()) {
- // The specification doesn't dictate what should happen if V implements
- // more than one of the interfaces. For example, if V implements interface
- // B and interface B inherits from interface A, what happens if both A and
- // B are union members? Blink doesn't seem to do anything special for this
- // case. Just choose the first interface in the flattened members that
- // matches.
-
- JS::RootedObject rooted_object(context);
- bool success = JS_ValueToObject(context, value, rooted_object.address());
- DCHECK(success);
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- const WrapperFactory* wrapper_factory =
- global_environment->wrapper_factory();
-
- if (UnionTypeTraitsT1::is_interface_type &&
- wrapper_factory->DoesObjectImplementInterface(
- rooted_object, UnionTypeTraitsT1::GetTypeID())) {
- FromJSValue(context, value, conversion_flags, exception_state, &t1);
- *out_union = script::UnionType3<T1, T2, T3>(t1);
- return;
- }
-
- if (UnionTypeTraitsT2::is_interface_type &&
- wrapper_factory->DoesObjectImplementInterface(
- rooted_object, UnionTypeTraitsT2::GetTypeID())) {
- FromJSValue(context, value, conversion_flags, exception_state, &t2);
- *out_union = script::UnionType3<T1, T2, T3>(t2);
- return;
- }
-
- if (UnionTypeTraitsT3::is_interface_type &&
- wrapper_factory->DoesObjectImplementInterface(
- rooted_object, UnionTypeTraitsT3::GetTypeID())) {
- FromJSValue(context, value, conversion_flags, exception_state, &t3);
- *out_union = script::UnionType3<T1, T2, T3>(t3);
- return;
- }
- }
-
- // 11. If |Type(V)| is Object, then:
- // 1. If |types| includes a sequence type, then
- // 1. Let |method| be the result of GetMethod(V, @@iterator)
- // 2. ReturnIfAbrupt(method)
- // 3. If method is not undefined, return the result of creating a sequence
- // of that type from |V| and |method|.
- if (value.isObject()) {
- if (UnionTypeTraitsT1::is_sequence_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t1);
- *out_union = script::UnionType3<T1, T2, T3>(t1);
- return;
- }
-
- if (UnionTypeTraitsT2::is_sequence_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t2);
- *out_union = script::UnionType3<T1, T2, T3>(t2);
- return;
- }
-
- if (UnionTypeTraitsT3::is_sequence_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t3);
- *out_union = script::UnionType3<T1, T2, T3>(t3);
- return;
- }
- }
-
- // 12. If |Type(V)| is Boolean, then:
- // 1. If |types| includes a boolean, then return the result of converting |V|
- // to boolean.
- if (value.isBoolean()) {
- if (UnionTypeTraitsT1::is_boolean_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t1);
- *out_union = script::UnionType3<T1, T2, T3>(t1);
- return;
- }
-
- if (UnionTypeTraitsT2::is_boolean_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t2);
- *out_union = script::UnionType3<T1, T2, T3>(t2);
- return;
- }
-
- if (UnionTypeTraitsT3::is_boolean_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t3);
- *out_union = script::UnionType3<T1, T2, T3>(t3);
- return;
- }
- }
-
- // 13. If |Type(V)| is a Number, then:
- // 1. If |types| includes a numeric type, then return the result of
- // converting |V| to that numeric type.
- if (value.isNumber()) {
- if (UnionTypeTraitsT1::is_numeric_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t1);
- *out_union = script::UnionType3<T1, T2, T3>(t1);
- return;
- }
-
- if (UnionTypeTraitsT2::is_numeric_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t2);
- *out_union = script::UnionType3<T1, T2, T3>(t2);
- return;
- }
-
- if (UnionTypeTraitsT3::is_numeric_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t3);
- *out_union = script::UnionType3<T1, T2, T3>(t3);
- return;
- }
- }
-
- // 14. If |types| includes a string type, then return the result of converting
- // |V| to that type.
- if (value.isString()) {
- if (UnionTypeTraitsT1::is_string_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t1);
- *out_union = script::UnionType3<T1, T2, T3>(t1);
- return;
- }
-
- if (UnionTypeTraitsT2::is_string_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t2);
- *out_union = script::UnionType3<T1, T2, T3>(t2);
- return;
- }
-
- if (UnionTypeTraitsT3::is_string_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t3);
- *out_union = script::UnionType3<T1, T2, T3>(t3);
- return;
- }
- }
-
- // 15. If |types| includes a numeric type, then return the result of
- // converting |V| to that numeric type.
- if (UnionTypeTraitsT1::is_numeric_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t1);
- *out_union = script::UnionType3<T1, T2, T3>(t1);
- return;
- }
-
- if (UnionTypeTraitsT2::is_numeric_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t2);
- *out_union = script::UnionType3<T1, T2, T3>(t2);
- return;
- }
-
- if (UnionTypeTraitsT3::is_numeric_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t3);
- *out_union = script::UnionType3<T1, T2, T3>(t3);
- return;
- }
-
- // 16. If |types| includes a boolean, then return the result of converting |V|
- // to boolean.
- if (UnionTypeTraitsT1::is_boolean_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t1);
- *out_union = script::UnionType3<T1, T2, T3>(t1);
- return;
- }
-
- if (UnionTypeTraitsT2::is_boolean_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t2);
- *out_union = script::UnionType3<T1, T2, T3>(t2);
- return;
- }
-
- if (UnionTypeTraitsT3::is_boolean_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t3);
- *out_union = script::UnionType3<T1, T2, T3>(t3);
- return;
- }
-
- // 17. Throw a TypeError.
- exception_state->SetSimpleException(kNotUnionType);
-}
-
-template <typename T1, typename T2, typename T3, typename T4>
-void ToJSValue(
- JSContext* context,
- const script::UnionType4<T1, T2, T3, T4>& in_union,
- JS::MutableHandleValue out_value) {
- if (in_union.template IsType<T1>()) {
- ToJSValue(context, in_union.template AsType<T1>(), out_value);
- return;
- }
- if (in_union.template IsType<T2>()) {
- ToJSValue(context, in_union.template AsType<T2>(), out_value);
- return;
- }
- if (in_union.template IsType<T3>()) {
- ToJSValue(context, in_union.template AsType<T3>(), out_value);
- return;
- }
- if (in_union.template IsType<T4>()) {
- ToJSValue(context, in_union.template AsType<T4>(), out_value);
- return;
- }
- NOTREACHED();
- out_value.setUndefined();
-}
-
-template <typename T1, typename T2, typename T3, typename T4>
-void FromJSValue(JSContext* context, JS::HandleValue value,
- int conversion_flags, ExceptionState* exception_state,
- script::UnionType4<T1, T2, T3, T4>* out_union) {
- DCHECK_EQ(0, conversion_flags);
- // JS -> IDL type conversion procedure described here:
- // http://heycam.github.io/webidl/#es-union
-
- // TODO: Support Date, RegExp, DOMException, Error, ArrayBuffer, DataView,
- // TypedArrayName, callback functions, dictionary.
-
- // 1. If the union type includes a nullable type and |V| is null or undefined,
- // then return the IDL value null.
- if (value.isNull() || value.isUndefined()) {
- // Since the nullability should have been detected by the conversion for
- // base::optional, we should throw, because if we get here it means the
- // union does not include a nullable type, but have been passed a null
- // value.
- exception_state->SetSimpleException(kNotUnionType);
- return;
- }
-
- // Typedef for readability.
- typedef ::cobalt::script::internal::UnionTypeTraits<T1> UnionTypeTraitsT1;
- typedef ::cobalt::script::internal::UnionTypeTraits<T2> UnionTypeTraitsT2;
- typedef ::cobalt::script::internal::UnionTypeTraits<T3> UnionTypeTraitsT3;
- typedef ::cobalt::script::internal::UnionTypeTraits<T4> UnionTypeTraitsT4;
-
- // 2. Let |types| be the flattened member types of the union type.
- // Forward declare all potential types
- T1 t1;
- T2 t2;
- T3 t3;
- T4 t4;
-
- // 4. If |V| is a platform object, then:
- // 1. If |types| includes an interface type that V implements, then return
- // the IDL value that is a reference to the object |V|.
- // 2. If |types| includes object, then return the IDL value that is a
- // reference to the object |V|.
- if (value.isObject()) {
- // The specification doesn't dictate what should happen if V implements
- // more than one of the interfaces. For example, if V implements interface
- // B and interface B inherits from interface A, what happens if both A and
- // B are union members? Blink doesn't seem to do anything special for this
- // case. Just choose the first interface in the flattened members that
- // matches.
-
- JS::RootedObject rooted_object(context);
- bool success = JS_ValueToObject(context, value, rooted_object.address());
- DCHECK(success);
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- const WrapperFactory* wrapper_factory =
- global_environment->wrapper_factory();
-
- if (UnionTypeTraitsT1::is_interface_type &&
- wrapper_factory->DoesObjectImplementInterface(
- rooted_object, UnionTypeTraitsT1::GetTypeID())) {
- FromJSValue(context, value, conversion_flags, exception_state, &t1);
- *out_union = script::UnionType4<T1, T2, T3, T4>(t1);
- return;
- }
-
- if (UnionTypeTraitsT2::is_interface_type &&
- wrapper_factory->DoesObjectImplementInterface(
- rooted_object, UnionTypeTraitsT2::GetTypeID())) {
- FromJSValue(context, value, conversion_flags, exception_state, &t2);
- *out_union = script::UnionType4<T1, T2, T3, T4>(t2);
- return;
- }
-
- if (UnionTypeTraitsT3::is_interface_type &&
- wrapper_factory->DoesObjectImplementInterface(
- rooted_object, UnionTypeTraitsT3::GetTypeID())) {
- FromJSValue(context, value, conversion_flags, exception_state, &t3);
- *out_union = script::UnionType4<T1, T2, T3, T4>(t3);
- return;
- }
-
- if (UnionTypeTraitsT4::is_interface_type &&
- wrapper_factory->DoesObjectImplementInterface(
- rooted_object, UnionTypeTraitsT4::GetTypeID())) {
- FromJSValue(context, value, conversion_flags, exception_state, &t4);
- *out_union = script::UnionType4<T1, T2, T3, T4>(t4);
- return;
- }
- }
-
- // 11. If |Type(V)| is Object, then:
- // 1. If |types| includes a sequence type, then
- // 1. Let |method| be the result of GetMethod(V, @@iterator)
- // 2. ReturnIfAbrupt(method)
- // 3. If method is not undefined, return the result of creating a sequence
- // of that type from |V| and |method|.
- if (value.isObject()) {
- if (UnionTypeTraitsT1::is_sequence_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t1);
- *out_union = script::UnionType4<T1, T2, T3, T4>(t1);
- return;
- }
-
- if (UnionTypeTraitsT2::is_sequence_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t2);
- *out_union = script::UnionType4<T1, T2, T3, T4>(t2);
- return;
- }
-
- if (UnionTypeTraitsT3::is_sequence_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t3);
- *out_union = script::UnionType4<T1, T2, T3, T4>(t3);
- return;
- }
-
- if (UnionTypeTraitsT4::is_sequence_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t4);
- *out_union = script::UnionType4<T1, T2, T3, T4>(t4);
- return;
- }
- }
-
- // 12. If |Type(V)| is Boolean, then:
- // 1. If |types| includes a boolean, then return the result of converting |V|
- // to boolean.
- if (value.isBoolean()) {
- if (UnionTypeTraitsT1::is_boolean_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t1);
- *out_union = script::UnionType4<T1, T2, T3, T4>(t1);
- return;
- }
-
- if (UnionTypeTraitsT2::is_boolean_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t2);
- *out_union = script::UnionType4<T1, T2, T3, T4>(t2);
- return;
- }
-
- if (UnionTypeTraitsT3::is_boolean_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t3);
- *out_union = script::UnionType4<T1, T2, T3, T4>(t3);
- return;
- }
-
- if (UnionTypeTraitsT4::is_boolean_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t4);
- *out_union = script::UnionType4<T1, T2, T3, T4>(t4);
- return;
- }
- }
-
- // 13. If |Type(V)| is a Number, then:
- // 1. If |types| includes a numeric type, then return the result of
- // converting |V| to that numeric type.
- if (value.isNumber()) {
- if (UnionTypeTraitsT1::is_numeric_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t1);
- *out_union = script::UnionType4<T1, T2, T3, T4>(t1);
- return;
- }
-
- if (UnionTypeTraitsT2::is_numeric_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t2);
- *out_union = script::UnionType4<T1, T2, T3, T4>(t2);
- return;
- }
-
- if (UnionTypeTraitsT3::is_numeric_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t3);
- *out_union = script::UnionType4<T1, T2, T3, T4>(t3);
- return;
- }
-
- if (UnionTypeTraitsT4::is_numeric_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t4);
- *out_union = script::UnionType4<T1, T2, T3, T4>(t4);
- return;
- }
- }
-
- // 14. If |types| includes a string type, then return the result of converting
- // |V| to that type.
- if (value.isString()) {
- if (UnionTypeTraitsT1::is_string_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t1);
- *out_union = script::UnionType4<T1, T2, T3, T4>(t1);
- return;
- }
-
- if (UnionTypeTraitsT2::is_string_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t2);
- *out_union = script::UnionType4<T1, T2, T3, T4>(t2);
- return;
- }
-
- if (UnionTypeTraitsT3::is_string_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t3);
- *out_union = script::UnionType4<T1, T2, T3, T4>(t3);
- return;
- }
-
- if (UnionTypeTraitsT4::is_string_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t4);
- *out_union = script::UnionType4<T1, T2, T3, T4>(t4);
- return;
- }
- }
-
- // 15. If |types| includes a numeric type, then return the result of
- // converting |V| to that numeric type.
- if (UnionTypeTraitsT1::is_numeric_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t1);
- *out_union = script::UnionType4<T1, T2, T3, T4>(t1);
- return;
- }
-
- if (UnionTypeTraitsT2::is_numeric_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t2);
- *out_union = script::UnionType4<T1, T2, T3, T4>(t2);
- return;
- }
-
- if (UnionTypeTraitsT3::is_numeric_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t3);
- *out_union = script::UnionType4<T1, T2, T3, T4>(t3);
- return;
- }
-
- if (UnionTypeTraitsT4::is_numeric_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t4);
- *out_union = script::UnionType4<T1, T2, T3, T4>(t4);
- return;
- }
-
- // 16. If |types| includes a boolean, then return the result of converting |V|
- // to boolean.
- if (UnionTypeTraitsT1::is_boolean_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t1);
- *out_union = script::UnionType4<T1, T2, T3, T4>(t1);
- return;
- }
-
- if (UnionTypeTraitsT2::is_boolean_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t2);
- *out_union = script::UnionType4<T1, T2, T3, T4>(t2);
- return;
- }
-
- if (UnionTypeTraitsT3::is_boolean_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t3);
- *out_union = script::UnionType4<T1, T2, T3, T4>(t3);
- return;
- }
-
- if (UnionTypeTraitsT4::is_boolean_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t4);
- *out_union = script::UnionType4<T1, T2, T3, T4>(t4);
- return;
- }
-
- // 17. Throw a TypeError.
- exception_state->SetSimpleException(kNotUnionType);
-}
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_UNION_TYPE_CONVERSION_IMPL_H_
diff --git a/src/cobalt/script/mozjs/union_type_conversion_impl.h.pump b/src/cobalt/script/mozjs/union_type_conversion_impl.h.pump
deleted file mode 100644
index 731a746..0000000
--- a/src/cobalt/script/mozjs/union_type_conversion_impl.h.pump
+++ /dev/null
@@ -1,231 +0,0 @@
-$$ This is a pump file for generating file templates. Pump is a python
-$$ script that is part of the Google Test suite of utilities. Description
-$$ can be found here:
-$$
-$$ http://code.google.com/p/googletest/wiki/PumpManual
-$$
-
-$$ Maximum number of different member types in a union.
-$var MAX_MEMBERS = 4
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef COBALT_SCRIPT_MOZJS_UNION_TYPE_CONVERSION_IMPL_H_
-#define COBALT_SCRIPT_MOZJS_UNION_TYPE_CONVERSION_IMPL_H_
-
-#include "cobalt/base/type_id.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/mozjs_object_handle.h"
-#include "cobalt/script/mozjs/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs/type_traits.h"
-#include "cobalt/script/union_type.h"
-
-// Conversion to/from JS::Value for IDL union types.
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-$range NUM_MEMBERS 2..MAX_MEMBERS
-$for NUM_MEMBERS [[
-
-$range TYPE 1..NUM_MEMBERS
-
-template <$for TYPE , [[typename T$(TYPE)]]>
-void ToJSValue(
- JSContext* context,
- const script::UnionType$(NUM_MEMBERS)<$for TYPE , [[T$(TYPE)]]>& in_union,
- JS::MutableHandleValue out_value) {
-$for TYPE [[
-
- if (in_union.template IsType<T$(TYPE)>()) {
- ToJSValue(context, in_union.template AsType<T$(TYPE)>(), out_value);
- return;
- }
-]]
-
- NOTREACHED();
- out_value.setUndefined();
-}
-
-template <$for TYPE , [[typename T$(TYPE)]]>
-void FromJSValue(JSContext* context, JS::HandleValue value,
- int conversion_flags, ExceptionState* exception_state,
- script::UnionType$(NUM_MEMBERS)<$for TYPE , [[T$(TYPE)]]>* out_union) {
- DCHECK_EQ(0, conversion_flags);
- // JS -> IDL type conversion procedure described here:
- // http://heycam.github.io/webidl/#es-union
-
- // TODO: Support Date, RegExp, DOMException, Error, ArrayBuffer, DataView,
- // TypedArrayName, callback functions, dictionary.
-
- // 1. If the union type includes a nullable type and |V| is null or undefined,
- // then return the IDL value null.
- if (value.isNull() || value.isUndefined()) {
- // Since the nullability should have been detected by the conversion for
- // base::optional, we should throw, because if we get here it means the
- // union does not include a nullable type, but have been passed a null
- // value.
- exception_state->SetSimpleException(kNotUnionType);
- return;
- }
-
- // Typedef for readability.
-
-$for TYPE [[
- typedef ::cobalt::script::internal::UnionTypeTraits<T$(TYPE)> UnionTypeTraitsT$(TYPE);
-
-]]
-
- // 2. Let |types| be the flattened member types of the union type.
- // Forward declare all potential types
-
-$for TYPE [[
- T$(TYPE) t$(TYPE);
-
-]]
-
- // 4. If |V| is a platform object, then:
- // 1. If |types| includes an interface type that V implements, then return
- // the IDL value that is a reference to the object |V|.
- // 2. If |types| includes object, then return the IDL value that is a
- // reference to the object |V|.
- if (value.isObject()) {
- // The specification doesn't dictate what should happen if V implements
- // more than one of the interfaces. For example, if V implements interface
- // B and interface B inherits from interface A, what happens if both A and
- // B are union members? Blink doesn't seem to do anything special for this
- // case. Just choose the first interface in the flattened members that
- // matches.
-
- JS::RootedObject rooted_object(context);
- bool success = JS_ValueToObject(context, value, rooted_object.address());
- DCHECK(success);
-
- MozjsGlobalEnvironment* global_environment =
- static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
- const WrapperFactory* wrapper_factory =
- global_environment->wrapper_factory();
-
-$for TYPE [[
-
- if (UnionTypeTraitsT$(TYPE)::is_interface_type &&
- wrapper_factory->DoesObjectImplementInterface(
- rooted_object, UnionTypeTraitsT$(TYPE)::GetTypeID())) {
- FromJSValue(context, value, conversion_flags, exception_state, &t$(TYPE));
- *out_union = script::UnionType$(NUM_MEMBERS)<$for TYPE , [[T$(TYPE)]]>(t$(TYPE));
- return;
- }
-
-]]
- }
-
- // 11. If |Type(V)| is Object, then:
- // 1. If |types| includes a sequence type, then
- // 1. Let |method| be the result of GetMethod(V, @@iterator)
- // 2. ReturnIfAbrupt(method)
- // 3. If method is not undefined, return the result of creating a sequence
- // of that type from |V| and |method|.
- if (value.isObject()) {
-$for TYPE [[
-
- if (UnionTypeTraitsT$(TYPE)::is_sequence_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t$(TYPE));
- *out_union = script::UnionType$(NUM_MEMBERS)<$for TYPE , [[T$(TYPE)]]>(t$(TYPE));
- return;
- }
-
-]]
- }
-
- // 12. If |Type(V)| is Boolean, then:
- // 1. If |types| includes a boolean, then return the result of converting |V|
- // to boolean.
- if (value.isBoolean()) {
-$for TYPE [[
-
- if (UnionTypeTraitsT$(TYPE)::is_boolean_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t$(TYPE));
- *out_union = script::UnionType$(NUM_MEMBERS)<$for TYPE , [[T$(TYPE)]]>(t$(TYPE));
- return;
- }
-
-]]
- }
-
- // 13. If |Type(V)| is a Number, then:
- // 1. If |types| includes a numeric type, then return the result of
- // converting |V| to that numeric type.
- if (value.isNumber()) {
-$for TYPE [[
-
- if (UnionTypeTraitsT$(TYPE)::is_numeric_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t$(TYPE));
- *out_union = script::UnionType$(NUM_MEMBERS)<$for TYPE , [[T$(TYPE)]]>(t$(TYPE));
- return;
- }
-
-]]
- }
-
- // 14. If |types| includes a string type, then return the result of converting
- // |V| to that type.
- if (value.isString()) {
-$for TYPE [[
-
- if (UnionTypeTraitsT$(TYPE)::is_string_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t$(TYPE));
- *out_union = script::UnionType$(NUM_MEMBERS)<$for TYPE , [[T$(TYPE)]]>(t$(TYPE));
- return;
- }
-
-]]
- }
-
- // 15. If |types| includes a numeric type, then return the result of
- // converting |V| to that numeric type.
-$for TYPE [[
-
- if (UnionTypeTraitsT$(TYPE)::is_numeric_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t$(TYPE));
- *out_union = script::UnionType$(NUM_MEMBERS)<$for TYPE , [[T$(TYPE)]]>(t$(TYPE));
- return;
- }
-
-]]
-
- // 16. If |types| includes a boolean, then return the result of converting |V|
- // to boolean.
-$for TYPE [[
-
- if (UnionTypeTraitsT$(TYPE)::is_boolean_type) {
- FromJSValue(context, value, conversion_flags, exception_state, &t$(TYPE));
- *out_union = script::UnionType$(NUM_MEMBERS)<$for TYPE , [[T$(TYPE)]]>(t$(TYPE));
- return;
- }
-
-]]
-
- // 17. Throw a TypeError.
- exception_state->SetSimpleException(kNotUnionType);
-}
-
-]] $$ for NUM_MEMBERS
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_UNION_TYPE_CONVERSION_IMPL_H_
diff --git a/src/cobalt/script/mozjs/util/algorithm_helpers.cc b/src/cobalt/script/mozjs/util/algorithm_helpers.cc
deleted file mode 100644
index 5d08029..0000000
--- a/src/cobalt/script/mozjs/util/algorithm_helpers.cc
+++ /dev/null
@@ -1,166 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "cobalt/script/mozjs/util/algorithm_helpers.h"
-
-#include "base/logging.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsarray.h"
-#include "third_party/mozjs/js/src/jsiter.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-namespace util {
-
-bool IsSameGcThing(JSContext* context, JS::HandleValue value1,
- JS::HandleValue value2) {
- if (value1.isNullOrUndefined()) {
- return value2.isNullOrUndefined();
- }
-
- if (!value1.isGCThing() || !value2.isGCThing()) {
- return false;
- }
-
- return value1.toGCThing() == value2.toGCThing();
-}
-
-bool GetIterator(JSContext* context, JS::HandleObject object,
- JS::MutableHandleObject out_iterator) {
- // Uses the jsiter API to get the iterator, as SM24 it doesn't seem to
- // implement Array[@@iterator] yet.
- JS::RootedValue iterator_value(context);
- if (!js::GetIterator(context, object, JSITER_FOR_OF, &iterator_value)) {
- return false;
- }
-
- JS::RootedObject iterator_object(context);
- if (!iterator_value.isObject() ||
- !JS_ValueToObject(context, iterator_value, iterator_object.address())) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(kNotObjectType);
- return false;
- }
-
- out_iterator.set(iterator_object);
- return true;
-}
-
-bool IteratorNext(JSContext* context, JS::HandleObject iterator,
- JS::MutableHandleObject out_iterator_result) {
- // IMPORTANT NOTE! If there is More, we cannot enter another script without
- // calling Next to clear the result, or the interpreter will assert.
- JS::RootedValue more(context);
- if (!js_IteratorMore(context, iterator, &more)) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(kNotIterableType);
- return false;
- }
-
- JS::RootedObject result(context, JS_NewObject(context, NULL, NULL, NULL));
- JS::RootedValue done(context);
- done.setBoolean(!JS::ToBoolean(more));
- JS_SetProperty(context, result, "done", done.address());
-
- if (JS::ToBoolean(done)) {
- out_iterator_result.set(result);
- return true;
- }
-
- JS::RootedValue value(context);
- if (!js_IteratorNext(context, iterator, &value)) {
- MozjsExceptionState exception(context);
- exception.SetSimpleException(kNotIterableType);
- return false;
- }
-
- JS_SetProperty(context, result, "value", value.address());
-
- out_iterator_result.set(result);
- return true;
-}
-
-bool IteratorComplete(JSContext* context, JS::HandleObject iterator_result) {
- JS::RootedValue done(context);
- if (!JS_GetProperty(context, iterator_result, "done", done.address())) {
- return false;
- }
-
- return JS::ToBoolean(done);
-}
-
-bool IteratorValue(JSContext* context, JS::HandleObject iterator_result,
- JS::MutableHandleValue out_result) {
- JS::RootedValue value(context);
- if (!JS_GetProperty(context, iterator_result, "value", value.address())) {
- return false;
- }
-
- out_result.set(value);
- return true;
-}
-
-bool IteratorStep(JSContext* context, JS::HandleObject iterator,
- JS::MutableHandleObject out_iterator_result) {
- JS::RootedObject result(context);
- if (!IteratorNext(context, iterator, &result)) {
- return false;
- }
-
- if (IteratorComplete(context, result)) {
- return false;
- }
- out_iterator_result.set(result);
- return true;
-}
-
-bool IteratorClose(JSContext* context, JS::HandleObject iterator) {
- return js::CloseIterator(context, iterator);
-}
-
-bool Call0(JSContext* context, JS::HandleFunction function,
- JS::HandleObject value, JS::MutableHandleValue out_result) {
- const size_t kNumArguments = 0;
- JS::Value *args = NULL;
- js::SetValueRangeToNull(args, kNumArguments);
- js::AutoValueArray auto_array_rooter(context, args, kNumArguments);
-
- return JS::Call(context, value, function, kNumArguments, args,
- out_result.address());
-}
-
-bool Invoke0(JSContext* context, JS::HandleObject value,
- const char* property_name, JS::MutableHandleValue out_result) {
- JS::RootedValue property(context);
- if (!JS_GetProperty(context, value, property_name, property.address())) {
- return false;
- }
-
- if (!property.isObject() ||
- !JS_ObjectIsCallable(context, JSVAL_TO_OBJECT(property))) {
- return false;
- }
-
- JS::RootedFunction function(context, JS_ValueToFunction(context, property));
- DCHECK(function);
-
- return util::Call0(context, function, value, out_result);
-}
-
-} // namespace util
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
diff --git a/src/cobalt/script/mozjs/util/algorithm_helpers.h b/src/cobalt/script/mozjs/util/algorithm_helpers.h
deleted file mode 100644
index 6845cc1..0000000
--- a/src/cobalt/script/mozjs/util/algorithm_helpers.h
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#ifndef COBALT_SCRIPT_MOZJS_UTIL_ALGORITHM_HELPERS_H_
-#define COBALT_SCRIPT_MOZJS_UTIL_ALGORITHM_HELPERS_H_
-
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-namespace util {
-// Whether |value1| and |value2| are both GC things and are the same GC thing.
-// i.e. Returns |false| if either value is not a GC thing.
-bool IsSameGcThing(JSContext* context, JS::HandleValue value1,
- JS::HandleValue value2);
-
-// https://tc39.github.io/ecma262/#sec-getiterator
-bool GetIterator(JSContext* context, JS::HandleObject object,
- JS::MutableHandleObject out_iterator);
-
-// https://tc39.github.io/ecma262/#sec-iteratornext
-bool IteratorNext(JSContext* context, JS::HandleObject iterator,
- JS::MutableHandleObject out_iterator_result);
-
-// https://tc39.github.io/ecma262/#sec-iteratorcomplete
-bool IteratorComplete(JSContext* context, JS::HandleObject iterator_result);
-
-// https://tc39.github.io/ecma262/#sec-iteratorvalue
-bool IteratorValue(JSContext* context, JS::HandleObject iterator_result,
- JS::MutableHandleValue out_result);
-
-// https://tc39.github.io/ecma262/#sec-iteratorstep
-//
-// TODO: out_iterator_result should probably be a Value so it can return false
-// or the next iterator record. Right now this and IteratorComplete are the only
-// functions where a false return value doesn't necessarily mean an error.
-bool IteratorStep(JSContext* context, JS::HandleObject iterator,
- JS::MutableHandleObject out_iterator_result);
-
-// https://tc39.github.io/ecma262/#sec-iteratorclose
-bool IteratorClose(JSContext* context, JS::HandleObject iterator);
-
-// https://tc39.github.io/ecma262/#sec-call
-// Call |function| on object |value| with 0 arguments.
-bool Call0(JSContext* context, JS::HandleFunction function,
- JS::HandleObject value, JS::MutableHandleValue out_result);
-
-// https://tc39.github.io/ecma262/#sec-invoke
-// Invoke a method named |property_name| on object |value| with 0 arguments.
-bool Invoke0(JSContext* context, JS::HandleObject value,
- const char* property_name, JS::MutableHandleValue out_result);
-} // namespace util
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-#endif // COBALT_SCRIPT_MOZJS_UTIL_ALGORITHM_HELPERS_H_
diff --git a/src/cobalt/script/mozjs/util/exception_helpers.cc b/src/cobalt/script/mozjs/util/exception_helpers.cc
deleted file mode 100644
index 7ffdbd4..0000000
--- a/src/cobalt/script/mozjs/util/exception_helpers.cc
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "cobalt/script/mozjs/util/exception_helpers.h"
-
-#include <algorithm>
-
-#include "cobalt/script/mozjs/conversion_helpers.h"
-#include "cobalt/script/mozjs/mozjs_exception_state.h"
-#include "third_party/mozjs/js/public/RootingAPI.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsdbgapi.h"
-#include "third_party/mozjs/js/src/jsscript.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-namespace util {
-
-std::string GetExceptionString(JSContext* context) {
- if (!JS_IsExceptionPending(context)) {
- return std::string("No exception pending.");
- }
- JS::RootedValue exception(context);
- JS_GetPendingException(context, exception.address());
- JS_ReportPendingException(context);
- return GetExceptionString(context, exception);
-}
-
-std::string GetExceptionString(JSContext* context,
- JS::HandleValue exception) {
- std::string exception_string;
- MozjsExceptionState exception_state(context);
- FromJSValue(context, exception, kNoConversionFlags, &exception_state,
- &exception_string);
- return exception_string;
-}
-
-void GetStackTrace(JSContext* context, size_t max_frames,
- nb::RewindableVector<StackFrame>* output) {
- DCHECK(output);
- output->rewindAll();
- JSAutoRequest auto_request(context);
- JS::StackDescription* stack_description =
- JS::DescribeStack(context, max_frames);
- if (max_frames == 0) {
- max_frames = static_cast<size_t>(stack_description->nframes);
- } else {
- max_frames =
- std::min(max_frames, static_cast<size_t>(stack_description->nframes));
- }
- JS::FrameDescription* stack_trace = stack_description->frames;
- for (size_t i = 0; i < max_frames; ++i) {
- output->grow(1);
- StackFrame& sf = output->back();
-
- sf.line_number = stack_trace[i].lineno;
- sf.column_number = stack_trace[i].columnno;
- sf.function_name = "global code";
- if (stack_trace[i].fun) {
- JS::RootedString rooted_string(context,
- JS_GetFunctionId(stack_trace[i].fun));
- if (rooted_string) {
- const jschar* jstring_raw = rooted_string->getChars(context);
-
- if (!jstring_raw) {
- sf.function_name = "";
- } else {
- // Note, this is a wide-string conversion.
- sf.function_name.assign(jstring_raw,
- jstring_raw + rooted_string->length());
- }
- } else {
- // anonymous function
- sf.function_name = "(anonymous function)";
- }
- }
- if (stack_trace[i].script) {
- sf.source_url = stack_trace[i].script->filename();
- }
- }
- JS::FreeStackDescription(context, stack_description);
-}
-
-} // namespace util
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
diff --git a/src/cobalt/script/mozjs/util/exception_helpers.h b/src/cobalt/script/mozjs/util/exception_helpers.h
deleted file mode 100644
index 32d317f..0000000
--- a/src/cobalt/script/mozjs/util/exception_helpers.h
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#ifndef COBALT_SCRIPT_MOZJS_UTIL_EXCEPTION_HELPERS_H_
-#define COBALT_SCRIPT_MOZJS_UTIL_EXCEPTION_HELPERS_H_
-
-#include <string>
-#include <vector>
-
-#include "cobalt/script/stack_frame.h"
-#include "nb/rewindable_vector.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-namespace util {
-
-std::string GetExceptionString(JSContext* context);
-std::string GetExceptionString(JSContext* context, JS::HandleValue exception);
-
-// Retrieves the current stack frame. Values are stored in the output vector.
-// RewindableVector<> will be unconditionally rewound and after this call will
-// contain the number of frames retrieved. The output size will be less than
-// or equal to max_frames.
-void GetStackTrace(JSContext* context, size_t max_frames,
- nb::RewindableVector<StackFrame>* output);
-} // namespace util
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-#endif // COBALT_SCRIPT_MOZJS_UTIL_EXCEPTION_HELPERS_H_
diff --git a/src/cobalt/script/mozjs/util/stack_trace_helpers.cc b/src/cobalt/script/mozjs/util/stack_trace_helpers.cc
deleted file mode 100644
index 1c1fcf1..0000000
--- a/src/cobalt/script/mozjs/util/stack_trace_helpers.cc
+++ /dev/null
@@ -1,152 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "cobalt/script/mozjs/util/stack_trace_helpers.h"
-
-#include <algorithm>
-#include <sstream>
-#include <vector>
-
-#include "base/logging.h"
-#include "base/stringprintf.h"
-#include "cobalt/script/mozjs/util/exception_helpers.h"
-#include "cobalt/script/stack_frame.h"
-#include "nb/thread_local_object.h"
-#include "starboard/memory.h"
-#include "starboard/once.h"
-#include "starboard/string.h"
-#include "starboard/types.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-namespace util {
-namespace {
-
-typedef nb::ThreadLocalObject<MozjsStackTraceGenerator>
- ThreadLocalJsStackTracer;
-
-SB_ONCE_INITIALIZE_FUNCTION(ThreadLocalJsStackTracer,
- s_thread_local_js_stack_tracer_singelton);
-
-void ToStringAppend(const StackFrame& sf, std::string* out) {
- base::SStringPrintf(out, "%s(%d,%d):%s", sf.source_url.c_str(),
- sf.line_number, sf.column_number,
- sf.function_name.c_str());
-}
-
-} // namespace.
-
-void SetThreadLocalJSContext(JSContext* context) {
- static_cast<MozjsStackTraceGenerator*>(
- ::cobalt::script::util::GetThreadLocalStackTraceGenerator())
- ->set_js_context(context);
-}
-
-JSContext* GetThreadLocalJSContext() {
- return static_cast<MozjsStackTraceGenerator*>(
- ::cobalt::script::util::GetThreadLocalStackTraceGenerator())
- ->js_context();
-}
-
-//////////////////////////////////// IMPL /////////////////////////////////////
-
-MozjsStackTraceGenerator::MozjsStackTraceGenerator() : js_context_(NULL) {}
-MozjsStackTraceGenerator::~MozjsStackTraceGenerator() {}
-
-bool MozjsStackTraceGenerator::Valid() { return js_context_ != NULL; }
-
-bool MozjsStackTraceGenerator::GenerateStackTrace(
- int depth, nb::RewindableVector<StackFrame>* out) {
- DCHECK(thread_checker_.CalledOnValidThread());
- out->rewindAll();
- if (!Valid()) {
- return false;
- }
- GetStackTrace(js_context_, depth, out);
- return !out->empty();
-}
-
-bool MozjsStackTraceGenerator::GenerateStackTraceLines(
- int depth, nb::RewindableVector<std::string>* out) {
- DCHECK(thread_checker_.CalledOnValidThread());
- out->rewindAll();
- nb::RewindableVector<StackFrame>& stack_frames = scratch_data_.stack_frames_;
- if (!GenerateStackTrace(depth, &stack_frames)) {
- return false;
- }
-
- for (size_t i = 0; i < stack_frames.size(); ++i) {
- std::string& current_string = out->grow(1);
- current_string.assign(""); // Should not deallocate memory.
- StackFrame& sf = stack_frames[i];
- ToStringAppend(sf, ¤t_string);
- }
- return true;
-}
-
-bool MozjsStackTraceGenerator::GenerateStackTraceString(int depth,
- std::string* out) {
- DCHECK(thread_checker_.CalledOnValidThread());
- out->assign(""); // Should not deallocate memory.
-
- nb::RewindableVector<StackFrame>& stack_frames = scratch_data_.stack_frames_;
- if (!GenerateStackTrace(depth, &stack_frames)) {
- return false;
- }
-
- for (size_t i = 0; i < stack_frames.size(); ++i) {
- cobalt::script::StackFrame& sf = stack_frames[i];
- ToStringAppend(sf, out);
- if (i < stack_frames.size() - 1) {
- base::SStringPrintf(out, "\n");
- }
- }
- return true;
-}
-
-bool MozjsStackTraceGenerator::GenerateStackTraceString(int depth, char* buff,
- size_t buff_size) {
- DCHECK(thread_checker_.CalledOnValidThread());
- SbMemorySet(buff, 0, buff_size);
- std::string& scratch_symbol = scratch_data_.symbol_;
-
- if (!GenerateStackTraceString(depth, &scratch_symbol)) {
- return false;
- }
-
- SbStringCopy(buff, scratch_symbol.c_str(), buff_size);
- return true;
-}
-
-JSContext* MozjsStackTraceGenerator::js_context() { return js_context_; }
-
-void MozjsStackTraceGenerator::set_js_context(JSContext* js_ctx) {
- js_context_ = js_ctx;
-}
-
-} // namespace util
-} // namespace mozjs
-
-namespace util {
-
-StackTraceGenerator* GetThreadLocalStackTraceGenerator() {
- return mozjs::util::s_thread_local_js_stack_tracer_singelton()->GetOrCreate();
-}
-
-} // namespace util
-
-} // namespace script
-} // namespace cobalt
diff --git a/src/cobalt/script/mozjs/util/stack_trace_helpers.h b/src/cobalt/script/mozjs/util/stack_trace_helpers.h
deleted file mode 100644
index b7ccbe8..0000000
--- a/src/cobalt/script/mozjs/util/stack_trace_helpers.h
+++ /dev/null
@@ -1,122 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef COBALT_SCRIPT_MOZJS_UTIL_STACK_TRACE_HELPERS_H_
-#define COBALT_SCRIPT_MOZJS_UTIL_STACK_TRACE_HELPERS_H_
-
-#include <string>
-#include <vector>
-
-#include "base/threading/thread_checker.h"
-#include "cobalt/script/stack_frame.h"
-#include "cobalt/script/util/stack_trace_helpers.h"
-#include "nb/rewindable_vector.h"
-
-struct JSContext;
-
-#if defined(STARBOARD_ALLOWS_MEMORY_TRACKING)
-#define ENABLE_JS_STACK_TRACE_IN_SCOPE(JS_CTX) \
- ::cobalt::script::mozjs::util::StackTraceScope stack_trace_scope_object( \
- JS_CTX)
-#else
-#define ENABLE_JS_STACK_TRACE_IN_SCOPE(JS_CTX)
-#endif
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-namespace util {
-
-// Usage:
-// void Function(JSContext* js_ctx, ...) {
-// ENABLE_JS_STACK_TRACE_IN_SCOPE(js_ctx);
-// ...
-// InvokeOtherFunctions();
-// }
-//
-// void InvokeOtherFunctions() {
-// ...
-// std::string stack_trace_str;
-// if (GetThreadLocalMozjsStackTraceGenerator()->GenerateStackTraceString(
-// 2, &stack_trace_str)) {
-// // Prints the stack trace from javascript.
-// SbLogRaw(stack_trace_str.c_str());
-// }
-// }
-class MozjsStackTraceGenerator
- : public ::cobalt::script::util::StackTraceGenerator {
- public:
- MozjsStackTraceGenerator();
- virtual ~MozjsStackTraceGenerator();
-
- // Returns |true| if the current MozjsStackTraceGenerator can generate
- // information about the stack.
- bool Valid();
-
- // Generates stack traces in the raw form. Returns true if any stack
- // frames were generated. False otherwise. Output vector will be
- // unconditionally rewound to being empty.
- bool GenerateStackTrace(int depth, nb::RewindableVector<StackFrame>* out);
-
- // Returns true if any stack traces were written. The output vector will be
- // re-wound to being empty.
- // The first position is the most immediate stack frame.
- bool GenerateStackTraceLines(int depth,
- nb::RewindableVector<std::string>* out);
-
- // Prints stack trace. Returns true on success.
- bool GenerateStackTraceString(int depth, std::string* out);
-
- bool GenerateStackTraceString(int depth, char* buff, size_t buff_size);
-
- // Gets the internal data structure used to generate stack traces.
- JSContext* js_context();
-
- // Internal only, do not set.
- void set_js_context(JSContext* js_ctx);
-
- private:
- JSContext* js_context_;
-
- // Recycles memory so that stack tracing is efficient.
- struct Scratch {
- nb::RewindableVector<StackFrame> stack_frames_;
- nb::RewindableVector<std::string> strings_stack_frames_;
- std::string symbol_;
- };
- Scratch scratch_data_;
- // Checks that each instance can only be used within the same thread.
- base::ThreadChecker thread_checker_;
-};
-
-// This should only be accessed by a scoped object.
-void SetThreadLocalJSContext(JSContext* context);
-JSContext* GetThreadLocalJSContext();
-
-// Useful for updating the most recent stack trace.
-struct StackTraceScope {
- explicit StackTraceScope(JSContext* js)
- : prev_context_(GetThreadLocalJSContext()) {
- SetThreadLocalJSContext(js);
- }
- ~StackTraceScope() { SetThreadLocalJSContext(prev_context_); }
- JSContext* prev_context_;
-};
-
-} // namespace util
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_UTIL_STACK_TRACE_HELPERS_H_
diff --git a/src/cobalt/script/mozjs/weak_heap_object.cc b/src/cobalt/script/mozjs/weak_heap_object.cc
deleted file mode 100644
index 72d0b67..0000000
--- a/src/cobalt/script/mozjs/weak_heap_object.cc
+++ /dev/null
@@ -1,102 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "cobalt/script/mozjs/weak_heap_object.h"
-
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "third_party/mozjs/js/src/gc/Marking.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-WeakHeapObject::WeakHeapObject(JSContext* context, JS::HandleValue value)
- : was_collected_(false) {
- MozjsGlobalEnvironment* global_environment =
- MozjsGlobalEnvironment::GetFromContext(context);
- Initialize(global_environment->weak_object_manager(), value);
-}
-
-WeakHeapObject::WeakHeapObject(JSContext* context, JS::HandleObject object)
- : was_collected_(false) {
- MozjsGlobalEnvironment* global_environment =
- MozjsGlobalEnvironment::GetFromContext(context);
- Initialize(global_environment->weak_object_manager(),
- OBJECT_TO_JSVAL(object));
-}
-
-WeakHeapObject::WeakHeapObject(const WeakHeapObject& other)
- : was_collected_(other.was_collected_) {
- Initialize(other.weak_object_manager_, other.value_);
-}
-
-WeakHeapObject& WeakHeapObject::operator=(const WeakHeapObject& rhs) {
- was_collected_ = rhs.was_collected_;
- Initialize(rhs.weak_object_manager_, rhs.value_);
- return *this;
-}
-
-void WeakHeapObject::Trace(JSTracer* trace) {
- if (!value_.isNullOrUndefined()) {
- JS_CallHeapValueTracer(trace, &value_, "WeakHeapObject::Trace");
- }
-}
-
-bool WeakHeapObject::IsObject() const {
- return value_.isObject();
-}
-
-bool WeakHeapObject::IsGcThing() const {
- // We have to check IsNull(), because null is apparently a GC Thing.
- return (!IsNull() && value_.isGCThing());
-}
-
-bool WeakHeapObject::WasCollected() const {
- return was_collected_;
-}
-
-WeakHeapObject::~WeakHeapObject() {
- // It's safe to call StopTracking even if StartTracking wasn't called. the
- // WeakObjectManager handles the case where it's not currently tracking the
- // WeakHeapObject.
- weak_object_manager_->StopTracking(this);
-}
-
-void WeakHeapObject::Initialize(WeakHeapObjectManager* weak_heap_object_manager,
- const JS::Value& value) {
- weak_object_manager_ = weak_heap_object_manager;
- value_ = value;
-
- // Don't bother registering if not a GC thing.
- if (IsGcThing()) {
- weak_object_manager_->StartTracking(this);
- }
-}
-
-bool WeakHeapObject::IsNull() const {
- return value_.isNullOrUndefined();
-}
-
-void WeakHeapObject::UpdateWeakPointerAfterGc() {
- if (js::gc::IsValueAboutToBeFinalized(value_.unsafeGet())) {
- DCHECK(IsGcThing());
- was_collected_ = true;
- value_.setNull();
- }
-}
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
diff --git a/src/cobalt/script/mozjs/weak_heap_object.h b/src/cobalt/script/mozjs/weak_heap_object.h
deleted file mode 100644
index 265afb2..0000000
--- a/src/cobalt/script/mozjs/weak_heap_object.h
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#ifndef COBALT_SCRIPT_MOZJS_WEAK_HEAP_OBJECT_H_
-#define COBALT_SCRIPT_MOZJS_WEAK_HEAP_OBJECT_H_
-
-#include "cobalt/script/mozjs/weak_heap_object_manager.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-// This class implements a weak reference to a JS::Value. The JS::Value that an
-// instance of this class is created with may get garbage collected. In that
-// case, subsequent calls to WeakHeapObject::Get() will return a NULL pointer.
-class WeakHeapObject {
- public:
- WeakHeapObject(JSContext* context, JS::HandleValue value);
- WeakHeapObject(JSContext* context, JS::HandleObject object);
- WeakHeapObject(const WeakHeapObject& other);
-
- WeakHeapObject& operator=(const WeakHeapObject& rhs);
- const JS::Value& GetValue() const { return value_.get(); }
- JSObject* GetObject() const {
- return value_.toObjectOrNull();
- }
-
- void Trace(JSTracer* trace);
- bool IsObject() const;
-
- // Whether the value is a GC Thing and not null or undefined.
- bool IsGcThing() const;
-
- // Whether the value was a GC Thing and has been actually GC'd.
- bool WasCollected() const;
-
- ~WeakHeapObject();
-
- private:
- void Initialize(WeakHeapObjectManager* weak_heap_object_manager,
- const JS::Value& value);
-
- bool IsNull() const;
- void UpdateWeakPointerAfterGc();
-
- WeakHeapObjectManager* weak_object_manager_;
- JS::Heap<JS::Value> value_;
- bool was_collected_;
-
- friend class WeakHeapObjectManager;
-};
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_WEAK_HEAP_OBJECT_H_
diff --git a/src/cobalt/script/mozjs/weak_heap_object_manager.cc b/src/cobalt/script/mozjs/weak_heap_object_manager.cc
deleted file mode 100644
index 4ddd809..0000000
--- a/src/cobalt/script/mozjs/weak_heap_object_manager.cc
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "cobalt/script/mozjs/weak_heap_object_manager.h"
-
-#include <utility>
-
-#include "base/logging.h"
-#include "cobalt/script/mozjs/weak_heap_object.h"
-#include "nb/memory_scope.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-void WeakHeapObjectManager::SweepUnmarkedObjects() {
- for (WeakHeapObjects::iterator it = weak_objects_.begin();
- it != weak_objects_.end();
- /* Incremented in the loop */) {
- if (MaybeSweep(*it)) {
- WeakHeapObjects::iterator erase_iterator = it++;
- weak_objects_.erase(erase_iterator);
- } else {
- ++it;
- }
- }
-}
-
-WeakHeapObjectManager::~WeakHeapObjectManager() {
- // If this is not empty, that means that some WeakHeapObject may outlive this
- // class.
- DCHECK(weak_objects_.empty());
-}
-
-void WeakHeapObjectManager::StartTracking(WeakHeapObject* weak_object) {
- TRACK_MEMORY_SCOPE("Javascript");
- std::pair<WeakHeapObjects::iterator, bool> pib =
- weak_objects_.insert(weak_object);
- DCHECK(pib.second) << "WeakHeapObject was already being tracked.";
-}
-
-void WeakHeapObjectManager::StopTracking(WeakHeapObject* weak_object) {
- // The WeakHeapObject may have already been removed from the weak_objects_
- // set during the sweep phase.
- WeakHeapObjects::iterator it = weak_objects_.find(weak_object);
- if (it != weak_objects_.end()) {
- weak_objects_.erase(it);
- }
-}
-
-bool WeakHeapObjectManager::MaybeSweep(WeakHeapObject* weak_object) {
- weak_object->UpdateWeakPointerAfterGc();
- return weak_object->WasCollected();
-}
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
diff --git a/src/cobalt/script/mozjs/weak_heap_object_manager.h b/src/cobalt/script/mozjs/weak_heap_object_manager.h
deleted file mode 100644
index 3445a27..0000000
--- a/src/cobalt/script/mozjs/weak_heap_object_manager.h
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#ifndef COBALT_SCRIPT_MOZJS_WEAK_HEAP_OBJECT_MANAGER_H_
-#define COBALT_SCRIPT_MOZJS_WEAK_HEAP_OBJECT_MANAGER_H_
-
-#include "base/hash_tables.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-class WeakHeapObject;
-
-// WeakHeapObjectManager holds a reference to all WeakHeapObject instances. The
-// SweepUnmarkedObjects function should be called during garbage collection
-// after the marking phase. The underlying JS::Heap<> handle for any unmarked
-// handles will be set to NULL.
-class WeakHeapObjectManager {
- public:
- // Iterates over all WeakHeapObjects and sets their JS::Heap<> handles to NULL
- // if the objects to which they hold a reference are about to be finalized.
- void SweepUnmarkedObjects();
- ~WeakHeapObjectManager();
-
- private:
- void StartTracking(WeakHeapObject* weak_object);
- void StopTracking(WeakHeapObject* weak_object);
-
- // Returns true if the underlying pointer is NULL, which will be the case if
- // the object has been swept.
- bool MaybeSweep(WeakHeapObject* weak_object);
-
- typedef base::hash_set<WeakHeapObject*> WeakHeapObjects;
- WeakHeapObjects weak_objects_;
-
- friend class WeakHeapObject;
-};
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_WEAK_HEAP_OBJECT_MANAGER_H_
diff --git a/src/cobalt/script/mozjs/wrapper_factory.cc b/src/cobalt/script/mozjs/wrapper_factory.cc
deleted file mode 100644
index 649bb9a..0000000
--- a/src/cobalt/script/mozjs/wrapper_factory.cc
+++ /dev/null
@@ -1,121 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#include "cobalt/script/mozjs/wrapper_factory.h"
-
-#include <utility>
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/mozjs/mozjs_wrapper_handle.h"
-#include "cobalt/script/mozjs/wrapper_private.h"
-#include "third_party/mozjs/js/src/jsproxy.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-void WrapperFactory::RegisterWrappableType(
- base::TypeId wrappable_type, const CreateWrapperFunction& create_function,
- const PrototypeClassFunction& class_function) {
- std::pair<WrappableTypeFunctionsHashMap::iterator, bool> pib =
- wrappable_type_functions_.insert(std::make_pair(
- wrappable_type,
- WrappableTypeFunctions(create_function, class_function)));
- DCHECK(pib.second)
- << "RegisterWrappableType registered for type more than once.";
-}
-
-JSObject* WrapperFactory::GetWrapperProxy(
- const scoped_refptr<Wrappable>& wrappable) const {
- if (!wrappable) {
- return NULL;
- }
-
- JS::RootedObject wrapper_proxy(
- context_,
- MozjsWrapperHandle::GetObjectProxy(GetCachedWrapper(wrappable.get())));
- if (!wrapper_proxy) {
- scoped_ptr<Wrappable::WeakWrapperHandle> object_handle =
- CreateWrapper(wrappable);
- SetCachedWrapper(wrappable.get(), object_handle.Pass());
- wrapper_proxy =
- MozjsWrapperHandle::GetObjectProxy(GetCachedWrapper(wrappable.get()));
- }
- DCHECK(wrapper_proxy);
- DCHECK(js::IsProxy(wrapper_proxy));
- return wrapper_proxy;
-}
-
-bool WrapperFactory::HasWrapperProxy(
- const scoped_refptr<Wrappable>& wrappable) const {
- return wrappable &&
- !!MozjsWrapperHandle::GetObjectProxy(
- GetCachedWrapper(wrappable.get()));
-}
-
-bool WrapperFactory::IsWrapper(JS::HandleObject wrapper) const {
- // If the object doesn't have a wrapper private, it means that it is not a
- // platform object.
- return (JS_GetClass(wrapper)->flags & JSCLASS_HAS_PRIVATE) &&
- JS_GetPrivate(wrapper) != NULL;
-}
-
-scoped_ptr<Wrappable::WeakWrapperHandle> WrapperFactory::CreateWrapper(
- const scoped_refptr<Wrappable>& wrappable) const {
- WrappableTypeFunctionsHashMap::const_iterator it =
- wrappable_type_functions_.find(wrappable->GetWrappableType());
- if (it == wrappable_type_functions_.end()) {
- NOTREACHED();
- return scoped_ptr<Wrappable::WeakWrapperHandle>();
- }
- JS::RootedObject new_proxy(
- context_, it->second.create_wrapper.Run(context_, wrappable));
- WrapperPrivate* wrapper_private =
- WrapperPrivate::GetFromProxyObject(context_, new_proxy);
- DCHECK(wrapper_private);
- return make_scoped_ptr<Wrappable::WeakWrapperHandle>(
- new MozjsWrapperHandle(wrapper_private));
-}
-
-bool WrapperFactory::DoesObjectImplementInterface(JS::HandleObject object,
- base::TypeId type_id) const {
- // If the object doesn't have a wrapper private which means it is not a
- // platform object, so the object doesn't implement the interface.
- if (!WrapperPrivate::HasWrapperPrivate(context_, object)) {
- return false;
- }
-
- WrappableTypeFunctionsHashMap::const_iterator it =
- wrappable_type_functions_.find(type_id);
- if (it == wrappable_type_functions_.end()) {
- NOTREACHED();
- return false;
- }
- const JSClass* proto_class = it->second.prototype_class.Run(context_);
- JS::RootedObject object_proto_object(context_);
- bool success =
- JS_GetPrototype(context_, object, object_proto_object.address());
- bool equality = false;
- while (!equality && success && object_proto_object) {
- // Get the class of the prototype.
- JSClass* object_proto_class = JS_GetClass(object_proto_object);
- equality = (object_proto_class == proto_class);
- // Get the prototype of the previous prototype.
- success = JS_GetPrototype(context_, object_proto_object,
- object_proto_object.address());
- }
- return equality;
-}
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
diff --git a/src/cobalt/script/mozjs/wrapper_factory.h b/src/cobalt/script/mozjs/wrapper_factory.h
deleted file mode 100644
index ffe4e3d..0000000
--- a/src/cobalt/script/mozjs/wrapper_factory.h
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#ifndef COBALT_SCRIPT_MOZJS_WRAPPER_FACTORY_H_
-#define COBALT_SCRIPT_MOZJS_WRAPPER_FACTORY_H_
-
-#include "base/bind.h"
-#include "base/hash_tables.h"
-#include "base/memory/ref_counted.h"
-#include "cobalt/base/type_id.h"
-#include "cobalt/script/wrappable.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-// Holds a mapping between Wrappable types and base::Callbacks that create
-// new Wrapper objects corresponding to the Wrappable type.
-// TODO: Investigate whether shared functionality with the JSC
-// version can be refactored out.
-class WrapperFactory : public Wrappable::CachedWrapperAccessor {
- public:
- // Callback to create a new JSObject that is a wrapper for the Wrappable.
- typedef base::Callback<JSObject*(JSContext*, const scoped_refptr<Wrappable>&)>
- CreateWrapperFunction;
-
- // Callback to get JSClass* of prototype.
- typedef base::Callback<const JSClass*(JSContext*)> PrototypeClassFunction;
-
- explicit WrapperFactory(JSContext* context) : context_(context) {}
- void RegisterWrappableType(base::TypeId wrappable_type,
- const CreateWrapperFunction& create_function,
- const PrototypeClassFunction& class_function);
-
- // Gets the Proxy for the Wrapper object for this Wrappable. It may create a
- // new Wrapper and Proxy.
- JSObject* GetWrapperProxy(const scoped_refptr<Wrappable>& wrappable) const;
-
- // Check whether the Proxy for the Wrapper object for this Wrappable exists
- // or not. This will NOT create a new Wrapper and Proxy if they do not
- // already exist.
- bool HasWrapperProxy(const scoped_refptr<Wrappable>& wrappable) const;
-
- // Returns true if this JSObject is a Wrapper object.
- bool IsWrapper(JS::HandleObject wrapper) const;
-
- bool DoesObjectImplementInterface(JS::HandleObject object,
- base::TypeId id) const;
-
- private:
- struct WrappableTypeFunctions {
- CreateWrapperFunction create_wrapper;
- PrototypeClassFunction prototype_class;
- WrappableTypeFunctions(const CreateWrapperFunction& create_wrapper,
- const PrototypeClassFunction& prototype_class)
- : create_wrapper(create_wrapper), prototype_class(prototype_class) {}
- };
-
- scoped_ptr<Wrappable::WeakWrapperHandle> CreateWrapper(
- const scoped_refptr<Wrappable>& wrappable) const;
-
- typedef base::hash_map<base::TypeId, WrappableTypeFunctions>
- WrappableTypeFunctionsHashMap;
-
- JSContext* context_;
- WrappableTypeFunctionsHashMap wrappable_type_functions_;
-};
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_WRAPPER_FACTORY_H_
diff --git a/src/cobalt/script/mozjs/wrapper_private.cc b/src/cobalt/script/mozjs/wrapper_private.cc
deleted file mode 100644
index 90257d4..0000000
--- a/src/cobalt/script/mozjs/wrapper_private.cc
+++ /dev/null
@@ -1,210 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "cobalt/script/mozjs/wrapper_private.h"
-
-#include "base/hash_tables.h"
-#include "cobalt/script/mozjs/mozjs_global_environment.h"
-#include "cobalt/script/mozjs/proxy_handler.h"
-#include "cobalt/script/mozjs/referenced_object_map.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-#include "third_party/mozjs/js/src/jsobj.h"
-#include "third_party/mozjs/js/src/jsproxy.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-void Tracer::Trace(Wrappable* wrappable) {
- // Clearly, a null wrappable could not possibly reference any other
- // wrappables.
- if (!wrappable) {
- return;
- }
-
- // Unfortunately, |JSTracer| will only supply us with a |JSRuntime|,
- // rather than a |JSContext|. Fortunately, Cobalt will only create one
- // global environment per runtime, so we can still safely get back to our
- // context, and thus our global environment.
- JSContext* context = NULL;
- JS_ContextIterator(js_tracer_->runtime, &context);
- DCHECK(context);
- MozjsGlobalEnvironment* global_environment =
- MozjsGlobalEnvironment::GetFromContext(context);
- DCHECK(global_environment);
-
- // Clearly, if we have already visited this wrappable during the current
- // tracing session, there is no need to visit it again. We rely on
- // |JS_SetGCCallback| in the |MozjsEngine| to properly manage clearing
- // |visited_wrappables_| in between GC sessions.
- base::hash_set<Wrappable*>* visited_wrappables =
- global_environment->visited_wrappables();
- DCHECK(visited_wrappables);
- if (!visited_wrappables->insert(wrappable).second) {
- return;
- }
-
- // There are now two cases left to handle. Since we cannot create the
- // wrapper while tracing due to internal SpiderMonkey restrictions, we
- // will instead directly call |TraceMembers| here if the wrapper does not
- // exist. In the case where the wrapper already does exist, we will pass
- // the wrapper to |JS_CallHeapObjectTracer|, and rely on SpiderMonkey to
- // begin another |WrapperPrivate::Trace| on that wrapper.
- WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
- if (!wrapper_factory->HasWrapperProxy(wrappable)) {
- frontier_.push_back(wrappable);
- } else {
- JSObject* proxy_object = wrapper_factory->GetWrapperProxy(wrappable);
- JSObject* target = js::GetProxyTargetObject(proxy_object);
- WrapperPrivate* wrapper_private =
- static_cast<WrapperPrivate*>(JS_GetPrivate(target));
- DCHECK(wrapper_private->context_ == context);
- DCHECK(wrapper_private->wrapper_proxy_);
- JS_CallHeapObjectTracer(js_tracer_, &wrapper_private->wrapper_proxy_,
- "WrapperPrivate::TraceWrappable");
- }
-
- DCHECK(JS_ContextIterator(js_tracer_->runtime, &context) == NULL);
-}
-
-void Tracer::TraceFrom(Wrappable* wrappable) {
- DCHECK(frontier_.empty());
- frontier_.push_back(wrappable);
- while (!frontier_.empty()) {
- Wrappable* wrappable = frontier_.back();
- frontier_.pop_back();
- wrappable->TraceMembers(this);
- }
-}
-
-// static
-void WrapperPrivate::AddPrivateData(JSContext* context,
- JS::HandleObject wrapper_proxy,
- const scoped_refptr<Wrappable>& wrappable) {
- DCHECK(js::IsProxy(wrapper_proxy));
- WrapperPrivate* private_data =
- new WrapperPrivate(context, wrappable, wrapper_proxy);
- JS::RootedObject target_object(context,
- js::GetProxyTargetObject(wrapper_proxy));
- JS_SetPrivate(target_object, private_data);
- DCHECK_EQ(JS_GetPrivate(target_object), private_data);
-}
-
-// static
-bool WrapperPrivate::HasWrapperPrivate(JSContext* context,
- JS::HandleObject object) {
- if (js::IsProxy(object)) {
- JS::RootedObject target_object(context, js::GetProxyTargetObject(object));
- return WrapperPrivate::HasWrapperPrivate(context, target_object);
- }
-
- return object->hasPrivate();
-}
-
-// static
-WrapperPrivate* WrapperPrivate::GetFromWrappable(
- const scoped_refptr<Wrappable>& wrappable, JSContext* context,
- WrapperFactory* wrapper_factory) {
- JS::RootedObject wrapper_proxy(context,
- wrapper_factory->GetWrapperProxy(wrappable));
- WrapperPrivate* private_data = GetFromProxyObject(context, wrapper_proxy);
- DCHECK(private_data);
- DCHECK_EQ(private_data->wrappable_, wrappable);
- return private_data;
-}
-
-// static
-WrapperPrivate* WrapperPrivate::GetFromWrapperObject(JS::HandleObject wrapper) {
- DCHECK(!js::IsProxy(wrapper));
- if (!(JS_GetClass(wrapper)->flags & JSCLASS_HAS_PRIVATE)) {
- return NULL;
- }
- WrapperPrivate* private_data =
- static_cast<WrapperPrivate*>(JS_GetPrivate(wrapper));
- DCHECK(private_data);
- return private_data;
-}
-
-// static
-WrapperPrivate* WrapperPrivate::GetFromProxyObject(
- JSContext* context, JS::HandleObject proxy_object) {
- DCHECK(js::IsProxy(proxy_object));
- JS::RootedObject target(context, js::GetProxyTargetObject(proxy_object));
- return GetFromWrapperObject(target);
-}
-
-// static
-WrapperPrivate* WrapperPrivate::GetFromObject(JSContext* context,
- JS::HandleObject object) {
- if (js::IsProxy(object)) {
- return GetFromProxyObject(context, object);
- } else {
- return GetFromWrapperObject(object);
- }
-}
-
-// static
-void WrapperPrivate::Finalizer(JSFreeOp* /* free_op */, JSObject* object) {
- WrapperPrivate* wrapper_private =
- reinterpret_cast<WrapperPrivate*>(JS_GetPrivate(object));
- DCHECK(wrapper_private);
- delete wrapper_private;
-}
-
-// static
-void WrapperPrivate::Trace(JSTracer* trace, JSObject* object) {
- WrapperPrivate* wrapper_private =
- reinterpret_cast<WrapperPrivate*>(JS_GetPrivate(object));
- // Verify that this trace function is called for the object (rather than the
- // proxy object).
- DCHECK(!js::IsProxy(object));
-
- // The GC could run on this object before we've had a chance to set its
- // private data, so we must handle the case where JS_GetPrivate returns NULL.
- if (wrapper_private) {
- // Verify that WrapperPrivate::wrapper_proxy_'s target object is this
- // object.
- DCHECK_EQ(object,
- js::GetProxyTargetObject(wrapper_private->wrapper_proxy_));
-
- // The wrapper's proxy object will keep the wrapper object alive, but the
- // reverse is not true, so we must trace it explicitly.
- JS_CallHeapObjectTracer(trace, &wrapper_private->wrapper_proxy_,
- "WrapperPrivate::Trace");
-
- MozjsGlobalEnvironment* global_environment =
- MozjsGlobalEnvironment::GetFromContext(wrapper_private->context_);
- intptr_t key = ReferencedObjectMap::GetKeyForWrappable(
- wrapper_private->wrappable_.get());
- global_environment->referenced_objects()->TraceReferencedObjects(trace,
- key);
- Tracer tracer(trace);
- tracer.TraceFrom(wrapper_private->wrappable_);
- }
-}
-
-WrapperPrivate::WrapperPrivate(JSContext* context,
- const scoped_refptr<Wrappable>& wrappable,
- JS::HandleObject wrapper_proxy)
- : context_(context), wrappable_(wrappable), wrapper_proxy_(wrapper_proxy) {
- DCHECK(js::IsProxy(wrapper_proxy));
-}
-
-WrapperPrivate::~WrapperPrivate() {
- wrapper_proxy_ = NULL;
-}
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
diff --git a/src/cobalt/script/mozjs/wrapper_private.h b/src/cobalt/script/mozjs/wrapper_private.h
deleted file mode 100644
index a016647..0000000
--- a/src/cobalt/script/mozjs/wrapper_private.h
+++ /dev/null
@@ -1,120 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#ifndef COBALT_SCRIPT_MOZJS_WRAPPER_PRIVATE_H_
-#define COBALT_SCRIPT_MOZJS_WRAPPER_PRIVATE_H_
-
-#include <vector>
-
-#include "base/memory/ref_counted.h"
-#include "base/memory/scoped_vector.h"
-#include "base/memory/weak_ptr.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/mozjs/wrapper_factory.h"
-#include "cobalt/script/wrappable.h"
-#include "third_party/mozjs/js/src/jsapi.h"
-
-namespace cobalt {
-namespace script {
-namespace mozjs {
-
-// Our mozjs specific implementation of |script::Tracer|. Tracing sessions
-// will be initiated from a |Wrapper| of SpiderMonkey's choice, and then it
-// will be the |mozjs::Tracer|'s job to assist SpiderMonkey's garbage
-// collector in traversing the graph of |Wrapper|s and |Wrappable|s.
-// |Wrappable|s will inform us about what they can reach through their
-// |TraceMembers| implementation, and then we will pass the reachable
-// |Wrappable|'s |Wrapper| to SpiderMonkey GC if it exists, and otherwise
-// continue traversing ourselves from |Wrappable| to (the unwrapped)
-// |Wrappable|.
-class Tracer : public ::cobalt::script::Tracer {
- public:
- explicit Tracer(JSTracer* js_tracer) : js_tracer_(js_tracer) {}
- void Trace(Wrappable* wrappable) OVERRIDE;
-
- void TraceFrom(Wrappable* wrappable);
-
- private:
- JSTracer* js_tracer_;
- // Pending |Wrappable|s that we must traverse ourselves, since they did not
- // have a |Wrapper|.
- std::vector<Wrappable*> frontier_;
-};
-
-// Contains private data associated with a JSObject representing a JS wrapper
-// for a Cobalt platform object. There should be a one-to-one mapping of such
-// JSObjects and WrapperPrivate instances, and the corresponding WrapperPrivate
-// must be destroyed when its JSObject is garbage collected.
-class WrapperPrivate : public base::SupportsWeakPtr<WrapperPrivate> {
- public:
- typedef std::vector<Wrappable*> WrappableVector;
-
- template <typename T>
- scoped_refptr<T> wrappable() const {
- return base::polymorphic_downcast<T*>(wrappable_.get());
- }
-
- JSObject* js_object_proxy() const { return wrapper_proxy_; }
-
- // Create a new WrapperPrivate instance and associate it with the wrapper.
- static void AddPrivateData(JSContext* context, JS::HandleObject wrapper_proxy,
- const scoped_refptr<Wrappable>& wrappable);
-
- // Return true if the object has wrapper private.
- static bool HasWrapperPrivate(JSContext* context, JS::HandleObject object);
-
- // Get the WrapperPrivate associated with the given Wrappable. A new JSObject
- // and WrapperPrivate object may be created.
- static WrapperPrivate* GetFromWrappable(
- const scoped_refptr<Wrappable>& wrappable, JSContext* context,
- WrapperFactory* wrapper_factory);
-
- // Get the |WrapperPrivate| instance associated with this |Wrapper| object.
- // Will return |NULL| if |object| does not have a |Wrappable|, which also
- // implies that it is not a |Wrapper|.
- static WrapperPrivate* GetFromWrapperObject(JS::HandleObject object);
-
- // Get the WrapperPrivate instance associated with the target of this proxy.
- static WrapperPrivate* GetFromProxyObject(JSContext* context,
- JS::HandleObject proxy_object);
-
- // Get the |WrapperPrivate| instance associated with the object, which may
- // be a proxy or a proxy target. Will return |NULL| if the |JSObject| that
- // results from traversing |object|'s proxy chain does not have a
- // |Wrappable|, which also implies that it is not a |Wrapper|.
- static WrapperPrivate* GetFromObject(JSContext* context,
- JS::HandleObject object);
-
- // Called when the wrapper object is about to be deleted by the GC.
- static void Finalizer(JSFreeOp* /* free_op */, JSObject* object);
-
- // Trace callback called during garbage collection.
- static void Trace(JSTracer* trace, JSObject* object);
-
- private:
- WrapperPrivate(JSContext* context, const scoped_refptr<Wrappable>& wrappable,
- JS::HandleObject wrapper_proxy);
- ~WrapperPrivate();
-
- JSContext* context_;
- scoped_refptr<Wrappable> wrappable_;
- JS::Heap<JSObject*> wrapper_proxy_;
-
- friend Tracer;
-};
-
-} // namespace mozjs
-} // namespace script
-} // namespace cobalt
-
-#endif // COBALT_SCRIPT_MOZJS_WRAPPER_PRIVATE_H_
diff --git a/src/cobalt/webdriver/algorithms.cc b/src/cobalt/webdriver/algorithms.cc
index a2fd622..0e2feb6 100644
--- a/src/cobalt/webdriver/algorithms.cc
+++ b/src/cobalt/webdriver/algorithms.cc
@@ -423,11 +423,6 @@
bool IsDisplayed(dom::Element* element) {
DCHECK(element);
- // Update the computed styles first to ensure we get up-to-date computed
- // styles.
- DCHECK(element->node_document());
- element->node_document()->UpdateComputedStyles();
-
// By convention, BODY element is always shown: BODY represents the document
// and even if there's nothing rendered in there, user can always see there's
// the document.
@@ -436,6 +431,18 @@
return true;
}
+ // Update the computed styles first to ensure we get up-to-date computed
+ // styles.
+ if (element->AsHTMLElement()) {
+ DCHECK(element->node_document());
+ // If the element is an HTML element, we can update for only its subtree.
+ element->node_document()->UpdateComputedStyleOnElementAndAncestor(
+ element->AsHTMLElement());
+ } else {
+ DCHECK(element->node_document());
+ element->node_document()->UpdateComputedStyles();
+ }
+
// Any element with hidden/collapsed visibility is not shown.
base::optional<std::string> visiblity_style =
GetComputedStyle(element, &cssom::CSSComputedStyleData::visibility);
diff --git a/src/cobalt/webdriver/element_driver.cc b/src/cobalt/webdriver/element_driver.cc
index 56c1450..b53ae7b 100644
--- a/src/cobalt/webdriver/element_driver.cc
+++ b/src/cobalt/webdriver/element_driver.cc
@@ -16,7 +16,11 @@
#include "cobalt/cssom/property_value.h"
#include "cobalt/dom/document.h"
+#include "cobalt/dom/dom_rect.h"
+#include "cobalt/dom/dom_rect_list.h"
#include "cobalt/dom/html_element.h"
+#include "cobalt/math/rect_f.h"
+#include "cobalt/math/size.h"
#include "cobalt/webdriver/algorithms.h"
#include "cobalt/webdriver/keyboard.h"
#include "cobalt/webdriver/search.h"
@@ -26,6 +30,8 @@
namespace webdriver {
namespace {
+const int kWebDriverMousePointerId = 0x12345678;
+
std::string GetTagName(dom::Element* element) {
DCHECK(element);
return element->tag_name().c_str();
@@ -64,14 +70,12 @@
const base::WeakPtr<dom::Element>& element, ElementMapping* element_mapping,
KeyboardEventInjector keyboard_event_injector,
PointerEventInjector pointer_event_injector,
- WheelEventInjector wheel_event_injector,
const scoped_refptr<base::MessageLoopProxy>& message_loop)
: element_id_(element_id),
element_(element),
element_mapping_(element_mapping),
keyboard_event_injector_(keyboard_event_injector),
pointer_event_injector_(pointer_event_injector),
- wheel_event_injector_(wheel_event_injector),
element_message_loop_(message_loop) {}
util::CommandResult<std::string> ElementDriver::GetTagName() {
@@ -99,8 +103,6 @@
}
util::CommandResult<void> ElementDriver::SendKeys(const protocol::Keys& keys) {
- typedef util::CommandResult<void> CommandResult;
-
// Translate the keys into KeyboardEvents. Reset modifiers.
scoped_ptr<Keyboard::KeyboardEventVector> events(
new Keyboard::KeyboardEventVector());
@@ -132,6 +134,14 @@
protocol::Response::kNoSuchElement);
}
+util::CommandResult<void> ElementDriver::SendClick(
+ const protocol::Button& button) {
+ return util::CallOnMessageLoop(element_message_loop_,
+ base::Bind(&ElementDriver::SendClickInternal,
+ base::Unretained(this), button),
+ protocol::Response::kStaleElementReference);
+}
+
util::CommandResult<bool> ElementDriver::Equals(
const ElementDriver* other_element_driver) {
return util::CallOnMessageLoop(
@@ -189,6 +199,78 @@
return CommandResult(protocol::Response::kSuccess);
}
+util::CommandResult<void> ElementDriver::SendClickInternal(
+ const protocol::Button& button) {
+ typedef util::CommandResult<void> CommandResult;
+ DCHECK_EQ(base::MessageLoopProxy::current(), element_message_loop_);
+ if (!element_) {
+ return CommandResult(protocol::Response::kStaleElementReference);
+ }
+ // First ensure that the element is displayed, and return an error if not.
+ if (!algorithms::IsDisplayed(element_.get())) {
+ return CommandResult(protocol::Response::kElementNotVisible);
+ }
+ // Click on an element.
+ // https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol#sessionsessionidelementidclick
+ // The Element Click clicks the in-view center point of the element
+ // https://w3c.github.io/webdriver/webdriver-spec.html#dfn-element-click
+
+ // An element's in-view center point is the origin position of the rectangle
+ // that is the intersection between the element's first DOM client rectangle
+ // and the initial viewport.
+ // https://w3c.github.io/webdriver/webdriver-spec.html#dfn-in-view-center-point
+ scoped_refptr<dom::DOMRectList> dom_rects = element_->GetClientRects();
+ if (dom_rects->length() == 0) {
+ return CommandResult(protocol::Response::kElementNotVisible);
+ }
+ scoped_refptr<dom::DOMRect> dom_rect = dom_rects->Item(0);
+ math::RectF rect(dom_rect->left(), dom_rect->top(), dom_rect->width(),
+ dom_rect->height());
+ DCHECK(element_->owner_document());
+ math::Size viewport_size = element_->owner_document()->viewport_size();
+ math::RectF viewport_rect(0, 0, viewport_size.width(),
+ viewport_size.height());
+ rect.Intersect(viewport_rect);
+ float x = rect.x() + rect.width() / 2;
+ float y = rect.y() + rect.height() / 2;
+
+ dom::PointerEventInit event;
+ event.set_screen_x(x);
+ event.set_screen_y(y);
+ event.set_client_x(x);
+ event.set_client_y(y);
+
+ event.set_pointer_type("mouse");
+ event.set_pointer_id(kWebDriverMousePointerId);
+#if SB_API_VERSION >= SB_POINTER_INPUT_API_VERSION
+ event.set_width(0.0f);
+ event.set_height(0.0f);
+ event.set_pressure(0.0f);
+ event.set_tilt_x(0.0f);
+ event.set_tilt_y(0.0f);
+#endif
+ event.set_is_primary(true);
+
+ event.set_button(0);
+ event.set_buttons(0);
+ pointer_event_injector_.Run(scoped_refptr<dom::Element>(),
+ base::Tokens::pointermove(), event);
+ event.set_buttons(1);
+#if SB_API_VERSION >= SB_POINTER_INPUT_API_VERSION
+ event.set_pressure(0.5f);
+#endif
+ pointer_event_injector_.Run(scoped_refptr<dom::Element>(),
+ base::Tokens::pointerdown(), event);
+ event.set_buttons(0);
+#if SB_API_VERSION >= SB_POINTER_INPUT_API_VERSION
+ event.set_pressure(0.0f);
+#endif
+ pointer_event_injector_.Run(scoped_refptr<dom::Element>(),
+ base::Tokens::pointerup(), event);
+
+ return CommandResult(protocol::Response::kSuccess);
+}
+
// Shared logic between FindElement and FindElements.
template <typename T>
util::CommandResult<T> ElementDriver::FindElementsInternal(
diff --git a/src/cobalt/webdriver/element_driver.h b/src/cobalt/webdriver/element_driver.h
index 5cdad82..aa8b3ef 100644
--- a/src/cobalt/webdriver/element_driver.h
+++ b/src/cobalt/webdriver/element_driver.h
@@ -27,9 +27,9 @@
#include "cobalt/dom/element.h"
#include "cobalt/dom/keyboard_event_init.h"
#include "cobalt/dom/pointer_event_init.h"
-#include "cobalt/dom/wheel_event_init.h"
#include "cobalt/webdriver/element_mapping.h"
#include "cobalt/webdriver/keyboard.h"
+#include "cobalt/webdriver/protocol/button.h"
#include "cobalt/webdriver/protocol/element_id.h"
#include "cobalt/webdriver/protocol/keys.h"
#include "cobalt/webdriver/protocol/search_strategy.h"
@@ -42,7 +42,7 @@
// ElementDriver could be considered a WebElement as described in the WebDriver
// spec.
-// https://code.google.com/p/selenium/wiki/JsonWireProtocol#WebElement
+// https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol#webelement
// Commands that interact with a WebElement, such as:
// /session/:sessionId/element/:id/some_command
// will map to a method on this class.
@@ -54,16 +54,12 @@
typedef base::Callback<void(scoped_refptr<dom::Element>, const base::Token,
const dom::PointerEventInit&)>
PointerEventInjector;
- typedef base::Callback<void(scoped_refptr<dom::Element>, const base::Token,
- const dom::WheelEventInit&)>
- WheelEventInjector;
ElementDriver(const protocol::ElementId& element_id,
const base::WeakPtr<dom::Element>& element,
ElementMapping* element_mapping,
KeyboardEventInjector keyboard_event_injector,
PointerEventInjector pointer_event_injector,
- WheelEventInjector wheel_event_injector,
const scoped_refptr<base::MessageLoopProxy>& message_loop);
const protocol::ElementId& element_id() { return element_id_; }
@@ -75,6 +71,7 @@
const protocol::SearchStrategy& strategy);
util::CommandResult<std::vector<protocol::ElementId> > FindElements(
const protocol::SearchStrategy& strategy);
+ util::CommandResult<void> SendClick(const protocol::Button& button);
util::CommandResult<bool> Equals(const ElementDriver* other_element_driver);
util::CommandResult<base::optional<std::string> > GetAttribute(
const std::string& attribute_name);
@@ -91,6 +88,8 @@
util::CommandResult<void> SendKeysInternal(
scoped_ptr<Keyboard::KeyboardEventVector> keyboard_events);
+ util::CommandResult<void> SendClickInternal(const protocol::Button& button);
+
// Shared logic between FindElement and FindElements.
template <typename T>
util::CommandResult<T> FindElementsInternal(
@@ -106,7 +105,6 @@
ElementMapping* element_mapping_;
KeyboardEventInjector keyboard_event_injector_;
PointerEventInjector pointer_event_injector_;
- WheelEventInjector wheel_event_injector_;
scoped_refptr<base::MessageLoopProxy> element_message_loop_;
friend class WindowDriver;
diff --git a/src/cobalt/webdriver/keyboard.h b/src/cobalt/webdriver/keyboard.h
index 356f40b..5f9c10b 100644
--- a/src/cobalt/webdriver/keyboard.h
+++ b/src/cobalt/webdriver/keyboard.h
@@ -21,6 +21,7 @@
#include "base/memory/ref_counted.h"
#include "cobalt/dom/keyboard_event.h"
+#include "cobalt/dom/keyboard_event_init.h"
namespace cobalt {
namespace webdriver {
diff --git a/src/cobalt/webdriver/protocol/button.cc b/src/cobalt/webdriver/protocol/button.cc
new file mode 100644
index 0000000..2350937
--- /dev/null
+++ b/src/cobalt/webdriver/protocol/button.cc
@@ -0,0 +1,43 @@
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "cobalt/webdriver/protocol/button.h"
+
+namespace cobalt {
+namespace webdriver {
+namespace protocol {
+namespace {
+const char kButtonKey[] = "button";
+}
+
+scoped_ptr<base::Value> Button::ToValue(const Button& button) {
+ scoped_ptr<base::DictionaryValue> button_object(new base::DictionaryValue());
+ button_object->SetInteger(kButtonKey, button.button_);
+ return button_object.PassAs<base::Value>();
+}
+
+base::optional<Button> Button::FromValue(const base::Value* value) {
+ const base::DictionaryValue* dictionary_value;
+ if (!value->GetAsDictionary(&dictionary_value)) {
+ return base::nullopt;
+ }
+ int button = 0;
+ dictionary_value->GetInteger(kButtonKey, &button);
+
+ return Button(button);
+}
+
+} // namespace protocol
+} // namespace webdriver
+} // namespace cobalt
diff --git a/src/cobalt/webdriver/protocol/button.h b/src/cobalt/webdriver/protocol/button.h
new file mode 100644
index 0000000..ee7dd23
--- /dev/null
+++ b/src/cobalt/webdriver/protocol/button.h
@@ -0,0 +1,48 @@
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef COBALT_WEBDRIVER_PROTOCOL_BUTTON_H_
+#define COBALT_WEBDRIVER_PROTOCOL_BUTTON_H_
+
+#include <string>
+
+#include "base/memory/scoped_ptr.h"
+#include "base/optional.h"
+#include "base/values.h"
+
+namespace cobalt {
+namespace webdriver {
+namespace protocol {
+
+// Represents the JSON parameters passed to the click, buttondown, and buttonup
+// WebDriver commands.
+// https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol#sessionsessionidelementidclick
+// https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol#sessionsessionidbuttondown
+// https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol#sessionsessionidbuttonup
+class Button {
+ public:
+ static scoped_ptr<base::Value> ToValue(const Button& button);
+ static base::optional<Button> FromValue(const base::Value* value);
+
+ int button() const { return button_; }
+
+ private:
+ explicit Button(const int button) : button_(button) {}
+ const int button_;
+};
+
+} // namespace protocol
+} // namespace webdriver
+} // namespace cobalt
+#endif // COBALT_WEBDRIVER_PROTOCOL_BUTTON_H_
diff --git a/src/cobalt/webdriver/protocol/moveto.cc b/src/cobalt/webdriver/protocol/moveto.cc
new file mode 100644
index 0000000..746f5db
--- /dev/null
+++ b/src/cobalt/webdriver/protocol/moveto.cc
@@ -0,0 +1,69 @@
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "cobalt/webdriver/protocol/moveto.h"
+
+namespace cobalt {
+namespace webdriver {
+namespace protocol {
+namespace {
+const char kElementKey[] = "element";
+const char kXoffsetKey[] = "xoffset";
+const char kYoffsetKey[] = "yoffset";
+} // namespace
+
+scoped_ptr<base::Value> Moveto::ToValue(const Moveto& moveto) {
+ scoped_ptr<base::DictionaryValue> moveto_object(new base::DictionaryValue());
+ if (moveto.element_) {
+ moveto_object->Set(kElementKey, ElementId::ToValue(*moveto.element_).get());
+ }
+ if (moveto.xoffset_) {
+ moveto_object->SetInteger(kXoffsetKey, *moveto.xoffset_);
+ }
+ if (moveto.yoffset_) {
+ moveto_object->SetInteger(kYoffsetKey, *moveto.yoffset_);
+ }
+ return moveto_object.PassAs<base::Value>();
+}
+
+base::optional<Moveto> Moveto::FromValue(const base::Value* value) {
+ const base::DictionaryValue* dictionary_value;
+ if (!value->GetAsDictionary(&dictionary_value)) {
+ return base::nullopt;
+ }
+
+ base::optional<ElementId> element;
+ const Value* element_value = NULL;
+ if (dictionary_value->Get(kElementKey, &element_value) && element_value) {
+ element = ElementId::FromValue(element_value);
+ }
+
+ int xoffset_value = 0;
+ base::optional<int> xoffset;
+ if (dictionary_value->GetInteger(kXoffsetKey, &xoffset_value)) {
+ xoffset = xoffset_value;
+ }
+
+ int yoffset_value = 0;
+ base::optional<int> yoffset;
+ if (dictionary_value->GetInteger(kYoffsetKey, &yoffset_value)) {
+ yoffset = yoffset_value;
+ }
+
+ return Moveto(element, xoffset, yoffset);
+}
+
+} // namespace protocol
+} // namespace webdriver
+} // namespace cobalt
diff --git a/src/cobalt/webdriver/protocol/moveto.h b/src/cobalt/webdriver/protocol/moveto.h
new file mode 100644
index 0000000..ae36058
--- /dev/null
+++ b/src/cobalt/webdriver/protocol/moveto.h
@@ -0,0 +1,50 @@
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef COBALT_WEBDRIVER_PROTOCOL_MOVETO_H_
+#define COBALT_WEBDRIVER_PROTOCOL_MOVETO_H_
+
+#include "base/memory/scoped_ptr.h"
+#include "base/optional.h"
+#include "base/values.h"
+#include "cobalt/webdriver/protocol/element_id.h"
+
+namespace cobalt {
+namespace webdriver {
+namespace protocol {
+
+// Represents the JSON parameters passed to the moveto WebDriver command.
+// https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol#sessionsessionidmoveto
+class Moveto {
+ public:
+ static scoped_ptr<base::Value> ToValue(const Moveto& moveto);
+ static base::optional<Moveto> FromValue(const base::Value* moveto);
+
+ const base::optional<ElementId>& element() const { return element_; }
+ const base::optional<int>& xoffset() const { return xoffset_; }
+ const base::optional<int>& yoffset() const { return yoffset_; }
+
+ private:
+ Moveto(const base::optional<ElementId>& element,
+ const base::optional<int>& xoffset, const base::optional<int>& yoffset)
+ : element_(element), xoffset_(xoffset), yoffset_(yoffset) {}
+ const base::optional<ElementId> element_;
+ const base::optional<int> xoffset_;
+ const base::optional<int> yoffset_;
+};
+
+} // namespace protocol
+} // namespace webdriver
+} // namespace cobalt
+#endif // COBALT_WEBDRIVER_PROTOCOL_MOVETO_H_
diff --git a/src/cobalt/webdriver/testdata/simple_test.py b/src/cobalt/webdriver/testdata/simple_test.py
new file mode 100755
index 0000000..61b6c21
--- /dev/null
+++ b/src/cobalt/webdriver/testdata/simple_test.py
@@ -0,0 +1,203 @@
+#!/usr/bin/env python
+#
+# Copyright 2017 Google Inc. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Simple script for Webdriver Wire Protocol communication."""
+
+import binascii
+import json
+import time
+import requests
+
+# This is a simple script for Webdriver Wire Protocol communication.
+# https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol
+
+WEBDRIVER_HOST = 'http://localhost:4444'
+
+GET = 'GET'
+POST = 'POST'
+DELETE = 'DELETE'
+
+
+def Request(request_type, path='', parameters=None):
+ """Perform a WebDriver JSON Wire Protocol Request.
+
+ Args:
+ request_type: GET, POST, or DELETE
+ path: optional path string for the request
+ parameters: optional parameter dictionary for the request
+
+ Returns:
+ The dictionary returned by the WebDriver server
+ """
+ url = '%s/%s' % (WEBDRIVER_HOST, path)
+ headers = {'content-type': 'application/json', 'Accept-Charset': 'UTF-8'}
+ if request_type == GET:
+ request = requests.get(url, data=json.dumps(parameters), headers=headers)
+ if request_type == POST:
+ request = requests.post(url, data=json.dumps(parameters), headers=headers)
+ if request_type == DELETE:
+ request = requests.delete(url, data=json.dumps(parameters), headers=headers)
+ result = request.text if request.headers[
+ 'content-type'] == 'text/plain' else request.json()
+ if request.status_code == 200:
+ return result
+ else:
+ print '*** Error %d: %s' % (request.status_code, result['value']['message']
+ if isinstance(result, dict) else result)
+ return None
+
+
+def SessionRequest(session_id, request_type, path=None, parameters=None):
+ """Perform a WebDriver JSON Wire Protocol Session Request.
+
+ Args:
+ session_id: Value for ':sessionId' for the request
+ request_type: GET, POST, or DELETE
+ path: optional path string for the request
+ parameters: optional parameter dictionary for the request
+
+ Returns:
+ The dictionary returned by the WebDriver server
+ """
+ if path:
+ return Request(request_type, 'session/%s/%s' % (session_id, path),
+ parameters)
+ return Request(request_type, 'session/%s' % (session_id), parameters)
+
+
+def ElementRequest(session_id,
+ element_id,
+ request_type,
+ path=None,
+ parameters=None):
+ return SessionRequest(session_id, request_type, 'element/%s/%s' %
+ (element_id[u'ELEMENT'], path), parameters)
+
+
+def GetSessionID():
+ """Retrieve a WebDriver JSON Wire Protocol Session.
+
+ Returns:
+ The value for ':sessionId' to be used for Session Requests
+ """
+ request = Request(POST, 'session', {'desiredCapabilities': {}})
+ if request:
+ session_id = request[u'sessionId']
+ else:
+ # If creating a new session id fails, use an already existing session.
+ request = Request(GET, 'sessions')
+ if request:
+ session_id = request['value'][0]
+ return session_id
+
+
+def DeleteSession(session_id):
+ """Delete a WebDriver JSON Wire Protocol Session.
+
+ Args:
+ session_id: Value for ':sessionId' for the request
+
+ Returns:
+ The dictionary returned by the WebDriver server
+ """
+ return SessionRequest(session_id, DELETE)
+
+
+def GetScreenShot(session_id, filename):
+ """Retrieve a Screenshot.
+
+ Args:
+ session_id: Value for ':sessionId' for the request
+ filename: The filename to write the PNG screenshot to
+ """
+ request = SessionRequest(session_id, GET, 'screenshot')
+ if request:
+ with open(filename, 'w') as f:
+ f.write(binascii.a2b_base64(request['value']))
+ f.close()
+
+
+def GetActiveElement(session_id):
+ return SessionRequest(session_id, POST, 'element/active')['value']
+
+
+def Moveto(session_id, element, xoffset, yoffset):
+ return SessionRequest(session_id, POST, 'moveto', {
+ u'element': element,
+ u'xoffset': xoffset,
+ u'yoffset': yoffset
+ })
+
+
+def Click(session_id, button):
+ return SessionRequest(session_id, POST, 'click', {u'button': button})
+
+
+def Buttondown(session_id, button):
+ return SessionRequest(session_id, POST, 'buttondown', {u'button': button})
+
+
+def Buttonup(session_id, button):
+ return SessionRequest(session_id, POST, 'buttonup', {u'button': button})
+
+
+def ElementName(session_id, element_id):
+ return ElementRequest(session_id, element_id, GET, 'name')
+
+
+def ElementText(session_id, element_id):
+ return ElementRequest(session_id, element_id, GET, 'text')
+
+
+def ElementClick(session_id, element_id, button):
+ return ElementRequest(session_id, element_id, POST, 'click',
+ {u'button': button})
+
+
+def ElementKeys(session_id, element_id, keys):
+ return ElementRequest(session_id, element_id, POST, 'value', {u'value': keys})
+
+
+def ElementFind(session_id, using, value):
+ return SessionRequest(session_id, POST, 'element',
+ {u'using': using,
+ u'value': value})['value']
+
+
+def MouseTest():
+ # Do a simple test that hovers the mouse to the right from the active
+ # element, then clicks on the element of class 'trending'.
+ session_id = GetSessionID()
+ active_element = GetActiveElement(session_id)
+ print 'active_element : %s' % active_element
+
+ for xoffset in range(0, 1900, 20):
+ print 'Moveto: %s' % Moveto(session_id, active_element, xoffset, 200)
+ time.sleep(0.05)
+
+ trending_element = ElementFind(session_id, 'class name', 'trending')
+ print 'trending_element : %s' % trending_element
+
+ print 'ElementClick: %s' % ElementClick(session_id, trending_element, 0)
+
+ DeleteSession(session_id)
+
+
+def main():
+ MouseTest()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/src/cobalt/webdriver/web_driver_module.cc b/src/cobalt/webdriver/web_driver_module.cc
index daec972..fbb6259 100644
--- a/src/cobalt/webdriver/web_driver_module.cc
+++ b/src/cobalt/webdriver/web_driver_module.cc
@@ -341,6 +341,26 @@
StringPrintf("/session/%s/cookie", kSessionIdVariable),
current_window_command_factory->GetCommandHandler(
base::Bind(&WindowDriver::AddCookie)));
+ webdriver_dispatcher_->RegisterCommand(
+ WebDriverServer::kPost,
+ StringPrintf("/session/%s/moveto", kSessionIdVariable),
+ current_window_command_factory->GetCommandHandler(
+ base::Bind(&WindowDriver::MouseMoveTo)));
+ webdriver_dispatcher_->RegisterCommand(
+ WebDriverServer::kPost,
+ StringPrintf("/session/%s/buttondown", kSessionIdVariable),
+ current_window_command_factory->GetCommandHandler(
+ base::Bind(&WindowDriver::MouseButtonDown)));
+ webdriver_dispatcher_->RegisterCommand(
+ WebDriverServer::kPost,
+ StringPrintf("/session/%s/buttonup", kSessionIdVariable),
+ current_window_command_factory->GetCommandHandler(
+ base::Bind(&WindowDriver::MouseButtonUp)));
+ webdriver_dispatcher_->RegisterCommand(
+ WebDriverServer::kPost,
+ StringPrintf("/session/%s/click", kSessionIdVariable),
+ current_window_command_factory->GetCommandHandler(
+ base::Bind(&WindowDriver::SendClick)));
// Element commands.
webdriver_dispatcher_->RegisterCommand(
@@ -374,6 +394,12 @@
element_command_factory->GetCommandHandler(
base::Bind(&ElementDriver::FindElements)));
webdriver_dispatcher_->RegisterCommand(
+ WebDriverServer::kPost,
+ StringPrintf("/session/%s/element/%s/click", kSessionIdVariable,
+ kElementId),
+ element_command_factory->GetCommandHandler(
+ base::Bind(&ElementDriver::SendClick)));
+ webdriver_dispatcher_->RegisterCommand(
WebDriverServer::kGet,
StringPrintf("/session/%s/element/%s/equals/%s", kSessionIdVariable,
kElementId, kOtherElementId),
@@ -411,14 +437,14 @@
webdriver_thread_.message_loop()->PostTask(
FROM_HERE, base::Bind(&WebDriverModule::StartServer,
base::Unretained(this), server_port, listen_ip));
-}
+} // NOLINT(readability/fn_size)
WebDriverModule::~WebDriverModule() {
webdriver_thread_.message_loop()->PostTask(
FROM_HERE, base::Bind(&WebDriverModule::StopServer,
base::Unretained(this)));
webdriver_thread_.Stop();
-}
+} // NOLINT(readability/fn_size)
void WebDriverModule::OnWindowRecreated() {
if (MessageLoop::current() != webdriver_thread_.message_loop()) {
diff --git a/src/cobalt/webdriver/web_driver_module.h b/src/cobalt/webdriver/web_driver_module.h
index 28e946b..d2bef0d 100644
--- a/src/cobalt/webdriver/web_driver_module.h
+++ b/src/cobalt/webdriver/web_driver_module.h
@@ -22,8 +22,10 @@
#include "base/memory/scoped_ptr.h"
#include "base/threading/thread_checker.h"
#include "cobalt/webdriver/dispatcher.h"
+#include "cobalt/webdriver/protocol/button.h"
#include "cobalt/webdriver/protocol/capabilities.h"
#include "cobalt/webdriver/protocol/element_id.h"
+#include "cobalt/webdriver/protocol/moveto.h"
#include "cobalt/webdriver/protocol/server_status.h"
#include "cobalt/webdriver/protocol/session_id.h"
#include "cobalt/webdriver/protocol/window_id.h"
diff --git a/src/cobalt/webdriver/webdriver.gyp b/src/cobalt/webdriver/webdriver.gyp
index 73cfe7d..6408c48 100644
--- a/src/cobalt/webdriver/webdriver.gyp
+++ b/src/cobalt/webdriver/webdriver.gyp
@@ -30,6 +30,8 @@
'element_driver.h',
'keyboard.cc',
'keyboard.h',
+ 'protocol/button.cc',
+ 'protocol/button.h',
'protocol/capabilities.cc',
'protocol/capabilities.h',
'protocol/cookie.h',
@@ -46,6 +48,8 @@
'protocol/log_entry.h',
'protocol/log_type.cc',
'protocol/log_type.h',
+ 'protocol/moveto.cc',
+ 'protocol/moveto.h',
'protocol/response.cc',
'protocol/response.h',
'protocol/search_strategy.cc',
diff --git a/src/cobalt/webdriver/window_driver.cc b/src/cobalt/webdriver/window_driver.cc
index 45fcfc2..5101204 100644
--- a/src/cobalt/webdriver/window_driver.cc
+++ b/src/cobalt/webdriver/window_driver.cc
@@ -18,7 +18,11 @@
#include "base/synchronization/waitable_event.h"
#include "cobalt/dom/document.h"
+#include "cobalt/dom/dom_rect.h"
#include "cobalt/dom/location.h"
+#include "cobalt/dom/pointer_event.h"
+#include "cobalt/dom/pointer_event_init.h"
+#include "cobalt/math/clamp.h"
#include "cobalt/script/global_environment.h"
#include "cobalt/webdriver/keyboard.h"
#include "cobalt/webdriver/search.h"
@@ -28,6 +32,8 @@
namespace webdriver {
namespace {
+const int kWebDriverMousePointerId = 0x12345678;
+
class SyncExecuteResultHandler : public ScriptExecutorResult::ResultHandler {
public:
void OnResult(const std::string& result) OVERRIDE {
@@ -110,17 +116,18 @@
const GetGlobalEnvironmentFunction& get_global_environment_function,
KeyboardEventInjector keyboard_event_injector,
PointerEventInjector pointer_event_injector,
- WheelEventInjector wheel_event_injector,
const scoped_refptr<base::MessageLoopProxy>& message_loop)
: window_id_(window_id),
window_(window),
get_global_environment_(get_global_environment_function),
keyboard_event_injector_(keyboard_event_injector),
pointer_event_injector_(pointer_event_injector),
- wheel_event_injector_(wheel_event_injector),
window_message_loop_(message_loop),
element_driver_map_deleter_(&element_drivers_),
- next_element_id_(0) {
+ next_element_id_(0),
+ pointer_buttons_(0),
+ pointer_x_(0),
+ pointer_y_(0) {
// The WindowDriver may have been created on some arbitrary thread (i.e. the
// thread that owns the Window). Detach the thread checker so it can be
// re-bound to the next thread that calls a webdriver API, which should be
@@ -338,6 +345,44 @@
protocol::Response::kNoSuchWindow);
}
+util::CommandResult<void> WindowDriver::MouseMoveTo(
+ const protocol::Moveto& moveto) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ return util::CallOnMessageLoop(window_message_loop_,
+ base::Bind(&WindowDriver::MouseMoveToInternal,
+ base::Unretained(this), moveto),
+ protocol::Response::kNoSuchWindow);
+}
+
+util::CommandResult<void> WindowDriver::MouseButtonDown(
+ const protocol::Button& button) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ return util::CallOnMessageLoop(
+ window_message_loop_,
+ base::Bind(&WindowDriver::MouseButtonDownInternal, base::Unretained(this),
+ button),
+ protocol::Response::kNoSuchWindow);
+}
+
+util::CommandResult<void> WindowDriver::MouseButtonUp(
+ const protocol::Button& button) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ return util::CallOnMessageLoop(
+ window_message_loop_,
+ base::Bind(&WindowDriver::MouseButtonUpInternal, base::Unretained(this),
+ button),
+ protocol::Response::kNoSuchWindow);
+}
+
+util::CommandResult<void> WindowDriver::SendClick(
+ const protocol::Button& button) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ return util::CallOnMessageLoop(window_message_loop_,
+ base::Bind(&WindowDriver::SendClickInternal,
+ base::Unretained(this), button),
+ protocol::Response::kNoSuchWindow);
+}
+
protocol::ElementId WindowDriver::ElementToId(
const scoped_refptr<dom::Element>& element) {
DCHECK_EQ(base::MessageLoopProxy::current(), window_message_loop_);
@@ -360,8 +405,10 @@
element_drivers_.insert(std::make_pair(
element_id.id(),
new ElementDriver(element_id, weak_element, this,
- keyboard_event_injector_, pointer_event_injector_,
- wheel_event_injector_, window_message_loop_)));
+ keyboard_event_injector_,
+ base::Bind(&WindowDriver::InjectPointerEvent,
+ base::Unretained(this)),
+ window_message_loop_)));
DCHECK(pair_it.second)
<< "An ElementDriver was already mapped to the element id: "
<< element_id.id();
@@ -473,6 +520,172 @@
return CommandResult(protocol::Response::kSuccess);
}
+void WindowDriver::InitPointerEvent(dom::PointerEventInit* event) {
+ event->set_buttons(pointer_buttons_);
+
+ event->set_screen_x(pointer_x_);
+ event->set_screen_y(pointer_y_);
+ event->set_client_x(pointer_x_);
+ event->set_client_y(pointer_y_);
+
+ event->set_pointer_type("mouse");
+ event->set_pointer_id(kWebDriverMousePointerId);
+#if SB_API_VERSION >= SB_POINTER_INPUT_API_VERSION
+ event->set_width(0.0f);
+ event->set_height(0.0f);
+ event->set_pressure(pointer_buttons_ ? 0.5f : 0.0f);
+ event->set_tilt_x(0.0f);
+ event->set_tilt_y(0.0f);
+#endif
+ event->set_is_primary(true);
+}
+
+void WindowDriver::InjectPointerEvent(scoped_refptr<dom::Element> element,
+ base::Token type,
+ const dom::PointerEventInit& event) {
+ pointer_x_ = event.screen_x();
+ pointer_y_ = event.screen_y();
+ pointer_event_injector_.Run(element, type, event);
+}
+
+util::CommandResult<void> WindowDriver::MouseMoveToInternal(
+ const protocol::Moveto& moveto) {
+ typedef util::CommandResult<void> CommandResult;
+ DCHECK_EQ(base::MessageLoopProxy::current(), window_message_loop_);
+ if (!window_) {
+ return CommandResult(protocol::Response::kNoSuchWindow);
+ }
+
+ // Move the mouse by an offset of the specified element. If no element is
+ // specified, the move is relative to the current mouse cursor. If an element
+ // is provided but no offset, the mouse will be moved to the center of the
+ // element.
+ // https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol#sessionsessionidmoveto
+ float x = 0;
+ float y = 0;
+ scoped_refptr<dom::Element> element;
+ const base::optional<protocol::ElementId>& element_id = moveto.element();
+ if (element_id) {
+ // The element to move to.
+ element = IdToElement(*element_id);
+ }
+ if (element) {
+ scoped_refptr<dom::DOMRect> rect = element->GetBoundingClientRect();
+ if (rect) {
+ if (moveto.xoffset()) {
+ // X offset to move to, relative to the top-left corner of the element.
+ x = rect->left() + *moveto.xoffset();
+ } else {
+ // If not specified, the mouse will move to the middle of the element.
+ x = rect->left() + rect->width() / 2;
+ }
+
+ if (moveto.yoffset()) {
+ // Y offset to move to, relative to the top-left corner of the element.
+ y = rect->top() + *moveto.yoffset();
+ } else {
+ // If not specified, the mouse will move to the middle of the element.
+ y = rect->top() + rect->height() / 2;
+ }
+ }
+ } else {
+ // If the element not specified or is null, the offset is relative to
+ // current position of the mouse.
+ x = pointer_x_;
+ y = pointer_y_;
+ if (moveto.xoffset()) {
+ x += *moveto.xoffset();
+ }
+ if (moveto.yoffset()) {
+ y += *moveto.yoffset();
+ }
+ }
+
+ pointer_x_ = math::Clamp(x, 0.0f, GetWeak()->inner_width());
+ pointer_y_ = math::Clamp(y, 0.0f, GetWeak()->inner_height());
+
+ dom::PointerEventInit event;
+ InitPointerEvent(&event);
+ pointer_event_injector_.Run(scoped_refptr<dom::Element>(),
+ base::Tokens::pointermove(), event);
+
+ return CommandResult(protocol::Response::kSuccess);
+}
+
+void WindowDriver::InjectMouseButtonUp(const protocol::Button& button) {
+ dom::PointerEventInit event;
+ event.set_button(button.button());
+
+ // The buttons attribute reflects the state of the mouse's buttons for any
+ // MouseEvent object (while it is being dispatched).
+ // https://www.w3.org/TR/2016/WD-uievents-20160804/#ref-for-dom-mouseevent-buttons-2
+ // Clear the buttons state bit corresponding to the button that has just been
+ // released.
+ pointer_buttons_ &= ~(1 << event.button());
+
+ InitPointerEvent(&event);
+
+ pointer_event_injector_.Run(scoped_refptr<dom::Element>(),
+ base::Tokens::pointerup(), event);
+}
+
+void WindowDriver::InjectMouseButtonDown(const protocol::Button& button) {
+ dom::PointerEventInit event;
+ event.set_button(button.button());
+
+ // The buttons attribute reflects the state of the mouse's buttons for any
+ // MouseEvent object (while it is being dispatched).
+ // https://www.w3.org/TR/2016/WD-uievents-20160804/#ref-for-dom-mouseevent-buttons-2
+ // Set the buttons state bit corresponding to the button that has just been
+ // pressed.
+ pointer_buttons_ |= 1 << event.button();
+
+ InitPointerEvent(&event);
+
+ pointer_event_injector_.Run(scoped_refptr<dom::Element>(),
+ base::Tokens::pointerdown(), event);
+}
+
+util::CommandResult<void> WindowDriver::MouseButtonDownInternal(
+ const protocol::Button& button) {
+ typedef util::CommandResult<void> CommandResult;
+ DCHECK_EQ(base::MessageLoopProxy::current(), window_message_loop_);
+ if (!window_) {
+ return CommandResult(protocol::Response::kNoSuchWindow);
+ }
+
+ InjectMouseButtonDown(button);
+
+ return CommandResult(protocol::Response::kSuccess);
+}
+
+util::CommandResult<void> WindowDriver::MouseButtonUpInternal(
+ const protocol::Button& button) {
+ typedef util::CommandResult<void> CommandResult;
+ DCHECK_EQ(base::MessageLoopProxy::current(), window_message_loop_);
+ if (!window_) {
+ return CommandResult(protocol::Response::kNoSuchWindow);
+ }
+
+ InjectMouseButtonUp(button);
+
+ return CommandResult(protocol::Response::kSuccess);
+}
+
+util::CommandResult<void> WindowDriver::SendClickInternal(
+ const protocol::Button& button) {
+ typedef util::CommandResult<void> CommandResult;
+ DCHECK_EQ(base::MessageLoopProxy::current(), window_message_loop_);
+ if (!window_) {
+ return CommandResult(protocol::Response::kNoSuchWindow);
+ }
+
+ InjectMouseButtonDown(button);
+ InjectMouseButtonUp(button);
+
+ return CommandResult(protocol::Response::kSuccess);
+}
+
util::CommandResult<protocol::ElementId>
WindowDriver::GetActiveElementInternal() {
typedef util::CommandResult<protocol::ElementId> CommandResult;
diff --git a/src/cobalt/webdriver/window_driver.h b/src/cobalt/webdriver/window_driver.h
index 3e2b47c..baba5a5 100644
--- a/src/cobalt/webdriver/window_driver.h
+++ b/src/cobalt/webdriver/window_driver.h
@@ -30,14 +30,17 @@
#include "base/threading/thread_checker.h"
#include "cobalt/dom/keyboard_event.h"
#include "cobalt/dom/pointer_event.h"
-#include "cobalt/dom/wheel_event.h"
+#include "cobalt/dom/pointer_event_init.h"
#include "cobalt/dom/window.h"
#include "cobalt/webdriver/element_driver.h"
#include "cobalt/webdriver/element_mapping.h"
#include "cobalt/webdriver/keyboard.h"
+#include "cobalt/webdriver/protocol/button.h"
#include "cobalt/webdriver/protocol/cookie.h"
+#include "cobalt/webdriver/protocol/element_id.h"
#include "cobalt/webdriver/protocol/frame_id.h"
#include "cobalt/webdriver/protocol/keys.h"
+#include "cobalt/webdriver/protocol/moveto.h"
#include "cobalt/webdriver/protocol/script.h"
#include "cobalt/webdriver/protocol/search_strategy.h"
#include "cobalt/webdriver/protocol/size.h"
@@ -61,9 +64,6 @@
typedef base::Callback<void(scoped_refptr<dom::Element>, const base::Token,
const dom::PointerEventInit&)>
PointerEventInjector;
- typedef base::Callback<void(scoped_refptr<dom::Element>, const base::Token,
- const dom::WheelEventInit&)>
- WheelEventInjector;
typedef base::Callback<scoped_refptr<script::GlobalEnvironment>()>
GetGlobalEnvironmentFunction;
@@ -72,7 +72,6 @@
const GetGlobalEnvironmentFunction& get_global_environment,
KeyboardEventInjector keyboard_event_injector,
PointerEventInjector pointer_event_injector,
- WheelEventInjector wheel_event_injector,
const scoped_refptr<base::MessageLoopProxy>& message_loop);
~WindowDriver();
const protocol::WindowId& window_id() { return window_id_; }
@@ -100,6 +99,10 @@
util::CommandResult<std::vector<protocol::Cookie> > GetCookie(
const std::string& name);
util::CommandResult<void> AddCookie(const protocol::Cookie& cookie);
+ util::CommandResult<void> MouseMoveTo(const protocol::Moveto& moveto);
+ util::CommandResult<void> MouseButtonDown(const protocol::Button& button);
+ util::CommandResult<void> MouseButtonUp(const protocol::Button& button);
+ util::CommandResult<void> SendClick(const protocol::Button& button);
private:
typedef base::hash_map<std::string, ElementDriver*> ElementDriverMap;
@@ -139,6 +142,27 @@
util::CommandResult<void> AddCookieInternal(const protocol::Cookie& cookie);
+ void InitPointerEvent(dom::PointerEventInit* event);
+
+ // Used to receive pointer positions from events injected from an
+ // ElementDriver.
+ void InjectPointerEvent(scoped_refptr<dom::Element> element, base::Token type,
+ const dom::PointerEventInit& event);
+
+ util::CommandResult<void> MouseMoveToInternal(const protocol::Moveto& moveto);
+
+ void InjectMouseButtonUp(const protocol::Button& button);
+
+ void InjectMouseButtonDown(const protocol::Button& button);
+
+ util::CommandResult<void> MouseButtonDownInternal(
+ const protocol::Button& button);
+
+ util::CommandResult<void> MouseButtonUpInternal(
+ const protocol::Button& button);
+
+ util::CommandResult<void> SendClickInternal(const protocol::Button& button);
+
util::CommandResult<protocol::ElementId> GetActiveElementInternal();
const protocol::WindowId window_id_;
@@ -148,7 +172,6 @@
KeyboardEventInjector keyboard_event_injector_;
PointerEventInjector pointer_event_injector_;
- WheelEventInjector wheel_event_injector_;
// Anything that interacts with the window must be run on this message loop.
scoped_refptr<base::MessageLoopProxy> window_message_loop_;
@@ -175,6 +198,10 @@
// Monotonically increasing number to provide unique element ids.
int32 next_element_id_;
+
+ int pointer_buttons_;
+ float pointer_x_;
+ float pointer_y_;
};
} // namespace webdriver
diff --git a/src/cobalt/xhr/xml_http_request.cc b/src/cobalt/xhr/xml_http_request.cc
index 4c2e893..7599751 100644
--- a/src/cobalt/xhr/xml_http_request.cc
+++ b/src/cobalt/xhr/xml_http_request.cc
@@ -82,7 +82,7 @@
return true;
}
-#if !defined(__LB_SHELL__FOR_RELEASE__)
+#if !defined(COBALT_BUILD_TYPE_GOLD)
const char* kStateNames[] = {"Unsent", "Opened", "HeadersReceived", "Loading",
"Done"};
const char* kMethodNames[] = {"GET", "POST", "HEAD", "DELETE", "PUT"};
@@ -104,7 +104,7 @@
return "";
}
}
-#endif // defined(__LB_SHELL__FOR_RELEASE__)
+#endif // defined(COBALT_BUILD_TYPE_GOLD)
bool IsForbiddenMethod(const std::string& method) {
for (size_t i = 0; i < arraysize(kForbiddenMethods); ++i) {
@@ -932,7 +932,7 @@
}
std::ostream& operator<<(std::ostream& out, const XMLHttpRequest& xhr) {
-#if !defined(__LB_SHELL__FOR_RELEASE__)
+#if !defined(COBALT_BUILD_TYPE_GOLD)
base::StringPiece response_text("");
if ((xhr.state_ == XMLHttpRequest::kDone) &&
(xhr.response_type_ == XMLHttpRequest::kDefault ||
diff --git a/src/net/dial/dial_http_server.cc b/src/net/dial/dial_http_server.cc
index 482d27d..3dde86f 100644
--- a/src/net/dial/dial_http_server.cc
+++ b/src/net/dial/dial_http_server.cc
@@ -140,7 +140,7 @@
void DialHttpServer::SendDeviceDescriptionManifest(int conn_id) {
DCHECK_EQ(message_loop_proxy_, base::MessageLoopProxy::current());
DialSystemConfig* system_config = DialSystemConfig::GetInstance();
-#if defined(__LB_SHELL__FOR_RELEASE__)
+#if defined(COBALT_BUILD_TYPE_GOLD)
const char* friendly_name = system_config->friendly_name();
#else
// For non-Gold builds, append the IP to the friendly name
diff --git a/src/net/url_request/url_request_context.cc b/src/net/url_request/url_request_context.cc
index 7dd2bb3..e090ded 100644
--- a/src/net/url_request/url_request_context.cc
+++ b/src/net/url_request/url_request_context.cc
@@ -40,7 +40,7 @@
}
URLRequestContext::~URLRequestContext() {
-#if !defined(__LB_SHELL__FOR_RELEASE__)
+#if !defined(COBALT_BUILD_TYPE_GOLD)
AssertNoURLRequests();
#endif
}
diff --git a/src/starboard/linux/x64x11/directgles/atomic_public.h b/src/starboard/linux/x64x11/directgles/atomic_public.h
deleted file mode 100644
index 7bd6e3b..0000000
--- a/src/starboard/linux/x64x11/directgles/atomic_public.h
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef STARBOARD_LINUX_X64X11_DIRECTGLES_ATOMIC_PUBLIC_H_
-#define STARBOARD_LINUX_X64X11_DIRECTGLES_ATOMIC_PUBLIC_H_
-
-#include "starboard/linux/shared/atomic_public.h"
-
-#endif // STARBOARD_LINUX_X64X11_DIRECTGLES_ATOMIC_PUBLIC_H_
diff --git a/src/starboard/linux/x64x11/directgles/configuration_public.h b/src/starboard/linux/x64x11/directgles/configuration_public.h
deleted file mode 100644
index 0158690..0000000
--- a/src/starboard/linux/x64x11/directgles/configuration_public.h
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// The Starboard configuration for Desktop X86 Linux configured for the future
-// starboard API.
-
-#ifndef STARBOARD_LINUX_X64X11_DIRECTGLES_CONFIGURATION_PUBLIC_H_
-#define STARBOARD_LINUX_X64X11_DIRECTGLES_CONFIGURATION_PUBLIC_H_
-
-// This is not a released configuration, so it should implement the
-// experimental API version to validate trunk's viability.
-#define SB_API_VERSION SB_EXPERIMENTAL_API_VERSION
-
-// Include the X64X11 Linux configuration.
-#include "starboard/linux/x64x11/configuration_public.h"
-
-#endif // STARBOARD_LINUX_X64X11_DIRECTGLES_CONFIGURATION_PUBLIC_H_
diff --git a/src/starboard/linux/x64x11/directgles/gyp_configuration.gypi b/src/starboard/linux/x64x11/directgles/gyp_configuration.gypi
deleted file mode 100644
index 09f46da..0000000
--- a/src/starboard/linux/x64x11/directgles/gyp_configuration.gypi
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright 2016 Google Inc. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-{
- 'variables': {
- # Use the direct-to-GLES rasterizer.
- 'rasterizer_type': 'direct-gles',
-
- # The rasterizer does not benefit much from rendering only the dirty
- # region. Disable this option since it costs GPU time.
- 'render_dirty_region_only': 0,
- },
- 'target_defaults': {
- 'default_configuration': 'linux-x64x11-directgles_debug',
- 'configurations': {
- 'linux-x64x11-directgles_debug': {
- 'inherit_from': ['debug_base'],
- },
- 'linux-x64x11-directgles_devel': {
- 'inherit_from': ['devel_base'],
- },
- 'linux-x64x11-directgles_qa': {
- 'inherit_from': ['qa_base'],
- },
- 'linux-x64x11-directgles_gold': {
- 'inherit_from': ['gold_base'],
- },
- }, # end of configurations
- },
-
- 'includes': [
- '../gyp_configuration.gypi',
- ],
-}
diff --git a/src/starboard/linux/x64x11/directgles/gyp_configuration.py b/src/starboard/linux/x64x11/directgles/gyp_configuration.py
deleted file mode 100644
index ca2ca64..0000000
--- a/src/starboard/linux/x64x11/directgles/gyp_configuration.py
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2016 Google Inc. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Starboard Linux X64 X11 future platform configuration for gyp_cobalt."""
-
-import logging
-
-# Import the shared Linux platform configuration.
-from starboard.linux.shared import gyp_configuration
-
-
-def CreatePlatformConfig():
- try:
- return gyp_configuration.PlatformConfig('linux-x64x11-directgles')
- except RuntimeError as e:
- logging.critical(e)
- return None
diff --git a/src/starboard/linux/x64x11/directgles/starboard_platform.gyp b/src/starboard/linux/x64x11/directgles/starboard_platform.gyp
deleted file mode 100644
index 9a450cc..0000000
--- a/src/starboard/linux/x64x11/directgles/starboard_platform.gyp
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright 2016 Google Inc. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-{
- 'includes': [
- '../starboard_platform.gypi'
- ],
- 'targets': [
- {
- 'target_name': 'starboard_platform',
- 'product_name': 'starboard_platform_future',
- 'type': 'static_library',
- 'sources': [
- '<@(starboard_platform_sources)',
- ],
- 'defines': [
- # This must be defined when building Starboard, and must not when
- # building Starboard client code.
- 'STARBOARD_IMPLEMENTATION',
- ],
- 'dependencies': [
- '<@(starboard_platform_dependencies)',
- ],
- },
- ],
-}
diff --git a/src/starboard/linux/x64x11/directgles/thread_types_public.h b/src/starboard/linux/x64x11/directgles/thread_types_public.h
deleted file mode 100644
index 4809a57..0000000
--- a/src/starboard/linux/x64x11/directgles/thread_types_public.h
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef STARBOARD_LINUX_X64X11_DIRECTGLES_THREAD_TYPES_PUBLIC_H_
-#define STARBOARD_LINUX_X64X11_DIRECTGLES_THREAD_TYPES_PUBLIC_H_
-
-#include "starboard/linux/shared/thread_types_public.h"
-
-#endif // STARBOARD_LINUX_X64X11_DIRECTGLES_THREAD_TYPES_PUBLIC_H_
diff --git a/src/starboard/log.h b/src/starboard/log.h
index bd0edef..b89afff 100644
--- a/src/starboard/log.h
+++ b/src/starboard/log.h
@@ -114,7 +114,7 @@
} // extern "C"
#endif
-#if defined(__LB_SHELL__FOR_RELEASE__)
+#if defined(COBALT_BUILD_TYPE_GOLD)
#define SB_LOGGING_IS_OFFICIAL_BUILD 1
#else
#define SB_LOGGING_IS_OFFICIAL_BUILD 0
diff --git a/src/starboard/raspi/2/directgles/atomic_public.h b/src/starboard/raspi/2/directgles/atomic_public.h
deleted file mode 100644
index d8c1445..0000000
--- a/src/starboard/raspi/2/directgles/atomic_public.h
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef STARBOARD_RASPI_2_DIRECTGLES_ATOMIC_PUBLIC_H_
-#define STARBOARD_RASPI_2_DIRECTGLES_ATOMIC_PUBLIC_H_
-
-#include "starboard/raspi/2/atomic_public.h"
-
-#endif // STARBOARD_RASPI_2_DIRECTGLES_ATOMIC_PUBLIC_H_
diff --git a/src/starboard/raspi/2/directgles/configuration_public.h b/src/starboard/raspi/2/directgles/configuration_public.h
deleted file mode 100644
index 92b76a8..0000000
--- a/src/starboard/raspi/2/directgles/configuration_public.h
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// The Starboard configuration for Raspberry PI 2 Raspbian.
-
-// Other source files should never include this header directly, but should
-// include the generic "starboard/configuration.h" instead.
-
-#ifndef STARBOARD_RASPI_2_DIRECTGLES_CONFIGURATION_PUBLIC_H_
-#define STARBOARD_RASPI_2_DIRECTGLES_CONFIGURATION_PUBLIC_H_
-
-#include "starboard/raspi/2/configuration_public.h"
-
-#endif // STARBOARD_RASPI_2_DIRECTGLES_CONFIGURATION_PUBLIC_H_
diff --git a/src/starboard/raspi/2/directgles/gyp_configuration.gypi b/src/starboard/raspi/2/directgles/gyp_configuration.gypi
deleted file mode 100644
index fdac07a..0000000
--- a/src/starboard/raspi/2/directgles/gyp_configuration.gypi
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 2017 Google Inc. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-{
- 'variables': {
- # Use the direct-to-GLES rasterizer.
- 'rasterizer_type': 'direct-gles',
-
- # The rasterizer does not benefit much from rendering only the dirty
- # region. Disable this option since it costs GPU time.
- 'render_dirty_region_only': 0,
- },
-
- 'target_defaults': {
- 'default_configuration': 'raspi-2-directgles_debug',
- 'configurations': {
- 'raspi-2-directgles_debug': {
- 'inherit_from': ['debug_base'],
- },
- 'raspi-2-directgles_devel': {
- 'inherit_from': ['devel_base'],
- },
- 'raspi-2-directgles_qa': {
- 'inherit_from': ['qa_base'],
- },
- 'raspi-2-directgles_gold': {
- 'inherit_from': ['gold_base'],
- },
- }, # end of configurations
- },
-
- 'includes': [
- '../architecture.gypi',
- '../../shared/gyp_configuration.gypi',
- ],
-}
diff --git a/src/starboard/raspi/2/directgles/gyp_configuration.py b/src/starboard/raspi/2/directgles/gyp_configuration.py
deleted file mode 100644
index 172b1d2..0000000
--- a/src/starboard/raspi/2/directgles/gyp_configuration.py
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright 2017 Google Inc. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Starboard Raspberry Pi 2 platform configuration for gyp_cobalt."""
-
-import logging
-import os
-import sys
-
-_SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__))
-sys.path.insert(0, os.path.join(_SCRIPT_DIR, '../..'))
-
-# pylint: disable=g-import-not-at-top
-from shared.gyp_configuration import RaspiPlatformConfig
-
-
-def CreatePlatformConfig():
- try:
- return RaspiPlatformConfig('raspi-2-directgles')
- except RuntimeError as e:
- logging.critical(e)
- return None
diff --git a/src/starboard/raspi/2/directgles/starboard_platform.gyp b/src/starboard/raspi/2/directgles/starboard_platform.gyp
deleted file mode 100644
index a304ac6..0000000
--- a/src/starboard/raspi/2/directgles/starboard_platform.gyp
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2017 Google Inc. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-{
- 'includes': [
- '../../shared/starboard_platform.gypi',
- ],
-}
diff --git a/src/starboard/raspi/2/directgles/thread_types_public.h b/src/starboard/raspi/2/directgles/thread_types_public.h
deleted file mode 100644
index 8e76ba5..0000000
--- a/src/starboard/raspi/2/directgles/thread_types_public.h
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef STARBOARD_RASPI_2_DIRECTGLES_THREAD_TYPES_PUBLIC_H_
-#define STARBOARD_RASPI_2_DIRECTGLES_THREAD_TYPES_PUBLIC_H_
-
-#include "starboard/raspi/2/thread_types_public.h"
-
-#endif // STARBOARD_RASPI_2_DIRECTGLES_THREAD_TYPES_PUBLIC_H_
diff --git a/src/starboard/shared/linux/socket_get_interface_address.cc b/src/starboard/shared/linux/socket_get_interface_address.cc
index 36f59bd..3a607d5 100644
--- a/src/starboard/shared/linux/socket_get_interface_address.cc
+++ b/src/starboard/shared/linux/socket_get_interface_address.cc
@@ -14,11 +14,21 @@
#include "starboard/socket.h"
+// linux/if.h assumes the symbols for structs defined in ifaddrs.h are
+// already present. These includes must be above <linux/if.h> below.
#include <arpa/inet.h>
#include <ifaddrs.h>
+
+#if SB_HAS_QUIRK(SOCKET_BSD_HEADERS)
+#include <errno.h>
+#include <net/if.h>
+#include <net/if_dl.h>
+#else
#include <linux/if.h>
#include <linux/if_addr.h>
#include <netdb.h>
+#endif
+
#include <netinet/in.h>
#include <string.h>
#include <sys/socket.h>
diff --git a/src/starboard/shared/starboard/player/filter/video_dmp_reader.cc b/src/starboard/shared/starboard/player/filter/video_dmp_reader.cc
new file mode 100644
index 0000000..2566b74
--- /dev/null
+++ b/src/starboard/shared/starboard/player/filter/video_dmp_reader.cc
@@ -0,0 +1,139 @@
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// This file is deliberately not using any Cobalt/Starboard specific API so it
+// can be used in an independent application.
+#include "cobalt/media/base/video_dmp_reader.h"
+
+#include <algorithm>
+
+namespace {
+
+template <typename T>
+bool ReadUnchecked(VideoDmpReader* reader, bool reverse_byte_order, T* value) {
+ if (!value) {
+ reader->ReportFatalError();
+ return false;
+ }
+
+ int bytes_to_read = static_cast<int>(sizeof(*value));
+ int bytes_read = reader->Read(value, bytes_to_read);
+
+ if (reverse_byte_order) {
+ std::reverse(reinterpret_cast<uint8_t*>(value),
+ reinterpret_cast<uint8_t*>(value + 1));
+ }
+
+ return bytes_to_read == bytes_read;
+}
+template <typename T>
+void ReadChecked(VideoDmpReader* reader, bool reverse_byte_order, T* value) {
+ if (!ReadUnchecked(reader, reverse_byte_order, value)) {
+ reader->ReportFatalError();
+ }
+}
+void ReadChecked(VideoDmpReader* reader, bool reverse_byte_order,
+ std::vector<uint8_t>* value) {
+ if (!value) {
+ reader->ReportFatalError();
+ }
+
+ uint32_t size;
+ ReadChecked(reader, reverse_byte_order, &size);
+
+ value->resize(size);
+
+ if (size == 0) {
+ return;
+ }
+
+ int bytes_read = reader->Read(value->data(), size);
+ if (bytes_read != size) {
+ reader->ReportFatalError();
+ }
+}
+
+VideoDmpReader::AccessUnit ReadAccessUnitChecked(
+ VideoDmpReader* reader, bool reverse_byte_order,
+ VideoDmpReader::AccessUnitType access_unit_type) {
+ int64_t timestamp;
+ ReadChecked(reader, reverse_byte_order, ×tamp);
+
+ std::vector<uint8_t> key_id, iv;
+ ReadChecked(reader, reverse_byte_order, &key_id);
+ ReadChecked(reader, reverse_byte_order, &iv);
+
+ uint32_t subsample_count;
+ ReadChecked(reader, reverse_byte_order, &subsample_count);
+
+ VideoDmpReader::Subsamples subsamples(subsample_count);
+ for (auto& subsample : subsamples) {
+ ReadChecked(reader, reverse_byte_order, &subsample.clear_bytes);
+ ReadChecked(reader, reverse_byte_order, &subsample.encrypted_bytes);
+ }
+
+ std::vector<uint8_t> data;
+ ReadChecked(reader, reverse_byte_order, &data);
+
+ return VideoDmpReader::AccessUnit(access_unit_type, timestamp, key_id, iv,
+ subsamples, std::move(data));
+}
+
+} // namespace
+
+void VideoDmpReader::Parse() {
+ reverse_byte_order_ = false;
+ uint32_t bom;
+ ReadChecked(this, reverse_byte_order_, &bom);
+ if (bom != kBOM) {
+ std::reverse(reinterpret_cast<uint8_t*>(&bom),
+ reinterpret_cast<uint8_t*>(&bom + 1));
+ if (bom != kBOM) {
+ ReportFatalError();
+ return;
+ }
+ reverse_byte_order_ = true;
+ }
+ uint32_t type;
+ EmeInitData eme_init_data;
+ while (ReadUnchecked(this, reverse_byte_order_, &type)) {
+ uint32_t size;
+ switch (type) {
+ case kRecordTypeAudioConfig:
+ ReadChecked(this, reverse_byte_order_, &size);
+ if (size != 0) {
+ ReportFatalError();
+ }
+ break;
+ case kRecordTypeVideoConfig:
+ ReadChecked(this, reverse_byte_order_, &size);
+ if (size != 0) {
+ ReportFatalError();
+ }
+ break;
+ case kRecordTypeEmeInitData:
+ ReadChecked(this, reverse_byte_order_, &eme_init_data);
+ eme_init_datas_.push_back(eme_init_data);
+ break;
+ case kRecordTypeAudioAccessUnit:
+ access_units_.push_back(ReadAccessUnitChecked(this, reverse_byte_order_,
+ kAccessUnitTypeAudio));
+ break;
+ case kRecordTypeVideoAccessUnit:
+ access_units_.push_back(ReadAccessUnitChecked(this, reverse_byte_order_,
+ kAccessUnitTypeVideo));
+ break;
+ }
+ }
+}
diff --git a/src/starboard/shared/starboard/player/filter/video_dmp_reader.h b/src/starboard/shared/starboard/player/filter/video_dmp_reader.h
new file mode 100644
index 0000000..6cd4486
--- /dev/null
+++ b/src/starboard/shared/starboard/player/filter/video_dmp_reader.h
@@ -0,0 +1,129 @@
+// Copyright 2017 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// TODO: Move this into Starboard
+
+// This file is deliberately not using any Cobalt/Starboard specific API so it
+// can be used in an independent application.
+#ifndef COBALT_MEDIA_BASE_VIDEO_DMP_READER_H_
+#define COBALT_MEDIA_BASE_VIDEO_DMP_READER_H_
+
+#include <string>
+#include <vector>
+
+// File: <BOM> <Record>*
+// BOM: 0x76543210
+// Record: <4 bytes fourcc type> + <4 bytes size> + <|size| bytes binary data>
+//
+// audio config:
+// fourcc type: 'acfg'
+// 2 bytes audio codec type in SbMediaAudioCodec
+// 2 bytes format_tag
+// 2 bytes number_of_channels
+// 4 bytes samples_per_second
+// 4 bytes average_bytes_per_second
+// 2 bytes block_alignment
+// 2 bytes bits_per_sample
+// 2 bytes audio_specific_config_size
+// |audio_specific_config_size| bytes audio specific config
+//
+// video config:
+// fourcc type: 'vcfg'
+// 2 bytes video codec type in SbMediaVideoCodec
+//
+// eme init data
+// fourcc type: 'emei'
+// 4 bytes size
+// |size| bytes eme init data
+// audio/video access unit;
+// fourcc type: 'adat'/'vdat'
+// <8 bytes time stamp in microseconds>
+// <4 bytes size of key_id> + |size| bytes of key id
+// <4 bytes size of iv> + |size| bytes of iv
+// <4 bytes count> (0 for non-encrypted AU/frame)
+// (subsample: 4 bytes clear size, 4 bytes encrypted size) * |count|
+// <4 bytes size>
+// |size| bytes encoded binary data
+class VideoDmpReader {
+ public:
+ enum {
+ kRecordTypeAudioConfig = 'acfg',
+ kRecordTypeVideoConfig = 'vcfg',
+ kRecordTypeEmeInitData = 'emei',
+ kRecordTypeAudioAccessUnit = 'adat',
+ kRecordTypeVideoAccessUnit = 'vdat',
+ };
+
+ enum AccessUnitType { kAccessUnitTypeAudio, kAccessUnitTypeVideo };
+
+ struct Subsample {
+ uint32_t clear_bytes;
+ uint32_t encrypted_bytes;
+ };
+
+ typedef std::vector<Subsample> Subsamples;
+ typedef std::vector<uint8_t> EmeInitData;
+
+ class AccessUnit {
+ public:
+ AccessUnit(AccessUnitType access_unit_type, int64_t timestamp,
+ const std::vector<uint8_t>& key_id,
+ const std::vector<uint8_t>& iv, const Subsamples& subsamples,
+ std::vector<uint8_t> data)
+ : access_unit_type_(access_unit_type),
+ timestamp_(timestamp),
+ key_id_(key_id),
+ iv_(iv),
+ subsamples_(subsamples),
+ data_(std::move(data)) {}
+ AccessUnitType access_unit_type() const { return access_unit_type_; }
+ int64_t timestamp() const { return timestamp_; }
+ // Returns empty vector when the AU is not encrypted.
+ const std::vector<uint8_t>& key_id() const { return key_id_; }
+ const std::vector<uint8_t>& iv() const { return iv_; }
+ const Subsamples& subsamples() const { return subsamples_; }
+ const std::vector<uint8_t> data() const { return data_; }
+
+ private:
+ AccessUnitType access_unit_type_;
+ int64_t timestamp_;
+ std::vector<uint8_t> key_id_;
+ std::vector<uint8_t> iv_;
+ Subsamples subsamples_;
+ std::vector<uint8_t> data_;
+ };
+
+ static const uint32_t kBOM = 0x76543210;
+
+ VideoDmpReader() : reverse_byte_order_(false) {}
+
+ // Abstract function implemented by the derived class to read data. When
+ // the return value is less than |bytes_to_read|, the stream reaches the end.
+ virtual size_t Read(void* buffer, size_t bytes_to_read) = 0;
+ virtual void ReportFatalError() = 0;
+
+ const std::vector<EmeInitData> eme_init_datas() const {
+ return eme_init_datas_;
+ }
+ const std::vector<AccessUnit>& access_units() const { return access_units_; }
+
+ void Parse();
+
+ private:
+ bool reverse_byte_order_;
+ std::vector<EmeInitData> eme_init_datas_;
+ std::vector<AccessUnit> access_units_;
+};
+
+#endif // COBALT_MEDIA_BASE_VIDEO_DMP_READER_H_
diff --git a/src/starboard/shared/uwp/window_create.cc b/src/starboard/shared/uwp/window_create.cc
index 9f9a0fa..2ca5590 100644
--- a/src/starboard/shared/uwp/window_create.cc
+++ b/src/starboard/shared/uwp/window_create.cc
@@ -17,6 +17,11 @@
#include "starboard/shared/uwp/application_uwp.h"
SbWindow SbWindowCreate(const SbWindowOptions* options) {
+ SbWindowOptions default_options;
+ if (options == nullptr) {
+ SbWindowSetDefaultOptions(&default_options);
+ options = &default_options;
+ }
return starboard::shared::uwp::ApplicationUwp::Get()->CreateWindowForUWP(
options);
}
diff --git a/src/starboard/shared/uwp/window_internal.cc b/src/starboard/shared/uwp/window_internal.cc
index 5363628..fd79b8d 100644
--- a/src/starboard/shared/uwp/window_internal.cc
+++ b/src/starboard/shared/uwp/window_internal.cc
@@ -15,7 +15,6 @@
#include <EGL/egl.h>
#include <windows.h>
-// For __getActivationFactoryByPCWSTR custom definition.
#include "starboard/shared/uwp/application_uwp.h"
#include "starboard/shared/uwp/window_internal.h"
@@ -23,9 +22,9 @@
// TODO: Make sure the width and height here behave well given that we want
// 1080 video, but perhaps 4k UI where applicable.
-SbWindowPrivate::SbWindowPrivate(const SbWindowOptions* /*options*/)
- : width(1920),
- height(1080) {
+SbWindowPrivate::SbWindowPrivate(const SbWindowOptions* options)
+ : width(options->size.width),
+ height(options->size.height) {
egl_native_window_ = reinterpret_cast<EGLNativeWindowType>(
starboard::shared::uwp::ApplicationUwp::Get()->GetCoreWindow().Get());
}
diff --git a/src/starboard/shared/uwp/window_set_default_options.cc b/src/starboard/shared/uwp/window_set_default_options.cc
index e7d13c6..38b5500 100644
--- a/src/starboard/shared/uwp/window_set_default_options.cc
+++ b/src/starboard/shared/uwp/window_set_default_options.cc
@@ -12,6 +12,11 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+#include "starboard/memory.h"
#include "starboard/window.h"
-void SbWindowSetDefaultOptions(SbWindowOptions* /*options*/) {}
+void SbWindowSetDefaultOptions(SbWindowOptions* options) {
+ SbMemorySet(options, 0, sizeof(*options));
+ options->size.width = 1920;
+ options->size.height = 1080;
+}
diff --git a/src/starboard/shared/win32/decode_target_internal.cc b/src/starboard/shared/win32/decode_target_internal.cc
index 125b186..a015cde 100644
--- a/src/starboard/shared/win32/decode_target_internal.cc
+++ b/src/starboard/shared/win32/decode_target_internal.cc
@@ -104,10 +104,31 @@
EGL_NONE};
EGLDisplay display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+
EGLConfig config;
+ EGLint attribute_list[] = {
+ EGL_SURFACE_TYPE, // this must be first
+ EGL_WINDOW_BIT | EGL_PBUFFER_BIT,
+ EGL_RED_SIZE,
+ 8,
+ EGL_GREEN_SIZE,
+ 8,
+ EGL_BLUE_SIZE,
+ 8,
+ EGL_ALPHA_SIZE,
+ 8,
+ EGL_BIND_TO_TEXTURE_RGBA,
+ EGL_TRUE,
+ EGL_RENDERABLE_TYPE,
+ EGL_OPENGL_ES2_BIT,
+ EGL_NONE
+ };
+
EGLint num_configs;
- bool ok = eglGetConfigs(display, &config, 1, &num_configs);
+ bool ok = eglChooseConfig(
+ display, attribute_list, &config, 1, &num_configs);
SB_DCHECK(ok);
+ SB_DCHECK(num_configs == 1);
GLuint gl_textures[2] = {0};
glGenTextures(2, gl_textures);
diff --git a/src/starboard/win/lib/gyp_configuration.gypi b/src/starboard/win/lib/gyp_configuration.gypi
index f530aed..9a3622e 100644
--- a/src/starboard/win/lib/gyp_configuration.gypi
+++ b/src/starboard/win/lib/gyp_configuration.gypi
@@ -14,7 +14,7 @@
{
'variables': {
- 'javascript_engine': 'mozjs',
+ 'javascript_engine': 'mozjs-45',
'cobalt_enable_jit': 0,
# TODO: In theory, there are tools that can combine static libraries into
# thick static libraries with all their transitive dependencies. Using
diff --git a/src/starboard/win/win32/gyp_configuration.gypi b/src/starboard/win/win32/gyp_configuration.gypi
index a0356ea..3ba6c7c 100644
--- a/src/starboard/win/win32/gyp_configuration.gypi
+++ b/src/starboard/win/win32/gyp_configuration.gypi
@@ -14,7 +14,7 @@
{
'variables': {
- 'javascript_engine': 'mozjs',
+ 'javascript_engine': 'mozjs-45',
'cobalt_enable_jit': 0,
'angle_build_winrt': 0,
'winrt': 0,
diff --git a/src/third_party/WebKit/.dir-locals.el b/src/third_party/WebKit/.dir-locals.el
new file mode 100644
index 0000000..3fe2340
--- /dev/null
+++ b/src/third_party/WebKit/.dir-locals.el
@@ -0,0 +1,15 @@
+;; Per-directory local variables for GNU Emacs 23 and later.
+
+;; Syntax: ((MODE (VAR . VAL) ...) ...)
+;; MODE is a symbol like `c-mode', or `nil' for all modes.
+((c-mode
+ (indent-tabs-mode . nil)
+ (c-basic-offset . 4))
+ (c++-mode
+ (indent-tabs-mode . nil)
+ (c-basic-offset . 4))
+ (java-mode
+ (indent-tabs-mode . nil)
+ (c-basic-offset . 4))
+ (change-log-mode
+ (indent-tabs-mode . nil)))
diff --git a/src/third_party/WebKit/.qmake.conf b/src/third_party/WebKit/.qmake.conf
new file mode 100644
index 0000000..646dc0c
--- /dev/null
+++ b/src/third_party/WebKit/.qmake.conf
@@ -0,0 +1,4 @@
+# The qmake generated module files belong into our Tools/qmake dir
+MODULE_QMAKE_OUTDIR = $$shadowed($$PWD/Tools/qmake)
+QMAKEPATH += $$PWD/Tools/qmake $$MODULE_QMAKE_OUTDIR
+load(qt_build_config)
diff --git a/src/third_party/WebKit/ChangeLog b/src/third_party/WebKit/ChangeLog
new file mode 100644
index 0000000..bdf1fd3
--- /dev/null
+++ b/src/third_party/WebKit/ChangeLog
@@ -0,0 +1,5523 @@
+2012-12-17 Kenneth Rohde Christiansen <kenneth@webkit.org>
+
+ Add manual test to verify that geometry methods (moveTo, etc) work
+ https://bugs.webkit.org/show_bug.cgi?id=105160
+
+ Reviewed by Alexis Menard.
+
+ * ManualTests/window-geometry.html: Added.
+
+2012-12-16 ChangSeok Oh <shivamidow@gmail.com>
+
+ [GTK][AC] Build failure with an option --with-acceleration-backend=clutter
+ https://bugs.webkit.org/show_bug.cgi?id=105027
+
+ Reviewed by Gustavo Noronha Silva.
+
+ I turned off opengl related variables, enable_glx, enable_egl and enable_gles2
+ when selecting clutter as the acceleration-backend. Because they seem useless for the AC by clutter.
+
+ * configure.ac:
+
+2012-12-15 Simon Fraser <simon.fraser@apple.com>
+
+ Fix repaint issues when resizing a window with centered content, for platforms with a tile cache
+ https://bugs.webkit.org/show_bug.cgi?id=105073
+
+ Reviewed by Dan Bernstein.
+
+ Add a manual test for window resize with a centered element.
+
+ * ManualTests/resize-repaint.html: Added.
+
+2012-12-13 Stephen White <senorblanco@chromium.org>
+
+ Added manual test for canvas setFont speed.
+ https://bugs.webkit.org/show_bug.cgi?id=104923
+
+ Reviewed by James Robinson.
+
+ * ManualTests/canvas-font-speed.html: Added.
+
+2012-12-13 Jerome Pasion <jerome.pasion@digia.com>
+
+ [Qt] Doc: Fixing Qt WebKit reference documentation.
+
+ Reviewed by Simon Hausmann.
+
+ Fixes:
+ -added \module for C++ classes and \qmlmodule for QML types
+ -added links to the Qt WebKit Examples pages
+ -fixed the qhp settings for Qt Creator
+
+ Task-number: QTBUG-28583
+ Task-number: QTBUG-28418
+ Task-number: QTBUG-27646
+
+ * Source/qtwebkit.qdocconf:
+
+2012-12-13 Jerome Pasion <Jerome.Pasion@digia.com>
+
+ [Qt] Fix missing doc dependency to examples
+
+ Reviewed by Simon Hausmann.
+
+ * Source/qtwebkit.qdocconf:
+
+2012-12-12 John Griggs <jgriggs@rim.com>
+
+ 2012-12-12 John Griggs <jgriggs@rim.com>
+
+ [BlackBerry] Update Media Controls for BlackBerry Platform
+ https://bugs.webkit.org/show_bug.cgi?id=104443
+ https://przilla.ott.qnx.com/bugzilla/show_bug.cgi?id=204748
+
+ Update Media Controls for BlackBerry platform to allow audio, embedded video and fullscreen video controls to be positioned and styled differently.
+
+ Reviewed by Rob Buis.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+
+2012-12-12 Xianzhu Wang <wangxianzhu@chromium.org>
+
+ Pre-painting should not paint out-of-view fixed position elements
+ https://bugs.webkit.org/show_bug.cgi?id=104724
+
+ Reviewed by James Robinson.
+
+ New manual test.
+
+ * ManualTests/compositing/fixed-position-out-of-view-scroll-prepaint.html: Added.
+
+2012-12-12 Krzysztof Czech <k.czech@samsung.com>
+
+ [EFL] Possibility to turn off accessibility feature for WebKit-EFL.
+ https://bugs.webkit.org/show_bug.cgi?id=103036
+
+ Reviewed by Laszlo Gombos.
+
+ Guard dependencies for accessibility (ATK), so that they can be turned off.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/WebKitFeatures.cmake:
+
+2012-12-12 Zan Dobersek <zandobersek@gmail.com>
+
+ [GTK] Remove the last of unnecessary configuration options in configure.ac
+ https://bugs.webkit.org/show_bug.cgi?id=104793
+
+ Reviewed by Martin Robinson.
+
+ Remove the last of the configuration options that don't introduce any dependencies and/or
+ are enabled by default in the GNUmakefile.features.am.in file.
+
+ * configure.ac:
+
+2012-12-11 Jocelyn Turcotte <jocelyn.turcotte@digia.com>
+
+ [Qt] Fix the inspector not showing up on Windows
+ https://bugs.webkit.org/show_bug.cgi?id=104677
+
+ Reviewed by Simon Hausmann.
+
+ Resources aren't transfered properly from a static WebCore to the final DLL
+ with MSVC since the linker only pick from the static lib symbols that
+ are referenced in the final binary.
+
+ Move the resource files directly to Qt5WebKit.dll to make sure that they are
+ available.
+
+ * Source/api.pri:
+
+2012-12-11 Xianzhu Wang <wangxianzhu@chromium.org>
+
+ Add window.internals.mainThreadScrollReasonsAsText for testing slow scrolling
+ https://bugs.webkit.org/show_bug.cgi?id=104714
+
+ Reviewed by Eric Seidel.
+
+ Export symbol Page::mainThreadScrollingReasonsAsText().
+
+ * Source/autotools/symbols.filter:
+
+2012-12-11 Michael Pruett <michael@68k.org>
+
+ [JSC] Add tests for explicit serialization values
+ https://bugs.webkit.org/show_bug.cgi?id=104423
+
+ Reviewed by Oliver Hunt.
+
+ Add tests for serialization and deserialization mechanisms of
+ the JSC implementation of SerializedScriptValue. Similar tests
+ already exist for the V8 implementation.
+
+ * Source/autotools/symbols.filter:
+
+2012-12-11 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ [GTK] Install GObject DOM bindings headers in its own directory
+ https://bugs.webkit.org/show_bug.cgi?id=104663
+
+ Reviewed by Gustavo Noronha Silva.
+
+ * GNUmakefile.am: Add GENSOURCES_WEBKITDOM and
+ webkitgtk_gdom_built_h_api variables.
+
+2012-12-11 Stephen Kelly <stephen.kelly@kdab.com>
+
+ WebKit tests for the Qt API should include tests of CMake config files
+ https://bugs.webkit.org/show_bug.cgi?id=104003
+
+ Reviewed by Simon Hausmann.
+
+ The Qt WebKit CI system is not going to run this test, but it can
+ be run locally and to test packages.
+
+ * Source/tests.pri:
+
+2012-12-11 Xabier Rodriguez Calvar <calvaris@igalia.com>
+
+ [GTK][jhbuild] Switch to GStreamer 1.0 build
+ https://bugs.webkit.org/show_bug.cgi?id=91727
+
+ Reviewed by Philippe Normand.
+
+ Switch build-webkit --gtk to GStreamer 1.0 support and build the
+ necessary GStreamer git modules from JHBuild.
+
+ * configure.ac: Removed GStreamer unstable API flag, made
+ GStreamer 1.0 default instead of 0.10 and made required version
+ 1.0.3. In case no GStreamer version is specified, it falls back to
+ 0.10. In case no video or web-audio are requested, GStreamer
+ and Farstream checks are not performed.
+
+2012-12-11 Zan Dobersek <zandobersek@gmail.com>
+
+ [GTK] Feature enabling/disabling should be possible through build-webkit
+ https://bugs.webkit.org/show_bug.cgi?id=99271
+
+ Reviewed by Gustavo Noronha Silva.
+
+ The autogen.sh script now calls the Tools/gtk/override-feature-defines script
+ before calling autoreconf. This ensures that Source/WebCore/GNUmakefile.features.am
+ is present and properly modified if the build-webkit script intends to override
+ any feature.
+
+ The Source/WebCore/GNUmakefile.features.am file is added to the ignored files list
+ so it doesn't pop out as a new, untracked file.
+
+ * .gitignore:
+ * autogen.sh:
+
+2012-12-10 Martin Robinson <mrobinson@igalia.com>
+
+ [GTK] Remove the Pango backend
+ https://bugs.webkit.org/show_bug.cgi?id=104569
+
+ Reviewed by Daniel Bates.
+
+ Always look for Freetype and Harfbuzz. We still depend on Pango for a few
+ things, so we cannot yet eliminate our dependency on Pango.
+
+ * configure.ac: Always look for FreeType/Harfbuzz.
+
+2012-12-10 Laszlo Gombos <l.gombos@samsung.com>
+
+ [EFL] Change the minimum required EFL version to 1.6
+ https://bugs.webkit.org/show_bug.cgi?id=104431
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Change the minimum required EFL version to 1.6 from 1.7 to enable
+ building on Tizen.
+
+ The elementary EFL package is only required to build MiniBrowser,
+ so I moved the required only to the Minibrowser CMake file.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-12-10 Alexis Menard <alexis@webkit.org>
+
+ [CSS3 Backgrounds and Borders] Remove CSS3_BACKGROUND feature flag.
+ https://bugs.webkit.org/show_bug.cgi?id=104539
+
+ Reviewed by Antonio Gomes.
+
+ As discussed on webkit-dev it is not needed to keep this feature flag
+ as support for <position> type is a small feature that is already
+ implemented by three other UAs. It was useful while landing this
+ feature as partial bits were landed one after one.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+ * configure.ac:
+
+2012-12-10 Jocelyn Turcotte <jocelyn.turcotte@digia.com>
+
+ [Qt] Remove the support for building a debug WebKit with a release Qt
+ https://bugs.webkit.org/show_bug.cgi?id=104560
+
+ Reviewed by Tor Arne Vestbø.
+
+ This creates issues with non-framework builds of Qt (necessary for debug-only
+ builds) since a Qt5 prefix is now added to the base target name.
+
+ * Source/api.pri:
+
+2012-12-09 Gustavo Noronha Silva <gustavo.noronha@collabora.com>
+
+ [Soup] utilize multipart/x-mixed-replace support recently added to libsoup
+ https://bugs.webkit.org/show_bug.cgi?id=94515
+
+ Reviewed by Martin Robinson.
+
+ * configure.ac: require soup 2.40.0, which adds the new support.
+
+2012-12-10 Martin Robinson <mrobinson@igalia.com>
+
+ [GTK] Bring Harfbuzz-ng support to Gtk
+ https://bugs.webkit.org/show_bug.cgi?id=92098
+
+ Reviewed by Gustavo Noronha Silva.
+
+ Add support for detecting HarfBuzz during configuration phase. Add these
+ flags to the FreeType ones since HarfBuzz support is part of the FreeType
+ backend.
+
+ * configure.ac: Detect HarfBuzz.
+
+2012-12-08 Seokju Kwon <seokju.kwon@gmail.com>
+
+ [EFL][WK2] Add Remote Web Inspector
+ https://bugs.webkit.org/show_bug.cgi?id=98705
+
+ Reviewed by Gyuyoung Kim.
+
+ Prepare inspectorPageIndex.html for remote web inspector.
+
+ * Source/PlatformEfl.cmake:
+
+2012-12-06 Rick Byers <rbyers@chromium.org>
+
+ CSS cursor property should support webkit-image-set
+ https://bugs.webkit.org/show_bug.cgi?id=99493
+
+ Reviewed by Beth Dakin.
+
+ Add ENABLE_MOUSE_CURSOR_SCALE (disabled by default)
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-12-06 Laszlo Gombos <l.gombos@samsung.com>
+
+ [EFL] Remove ENABLE_GLIB_SUPPORT CMake variable
+ https://bugs.webkit.org/show_bug.cgi?id=104278
+
+ Reviewed by Brent Fulgham.
+
+ The variable is unnecessary as glib is a required dependency
+ for the EFL port and glib is not used by other ports building
+ with CMake.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-12-06 Tony Chang <tony@chromium.org>
+
+ REGRESSION(r135082): Restore the ability to insert author level style sheets from script
+ https://bugs.webkit.org/show_bug.cgi?id=104042
+
+ Reviewed by Antti Koivisto.
+
+ Update exports for Internals.cpp.
+
+ * Source/autotools/symbols.filter:
+
+2012-12-06 Laszlo Gombos <l.gombos@samsung.com>
+
+ [EFL] Optimize binary size by removing dead sections on unix/gcc
+ https://bugs.webkit.org/show_bug.cgi?id=102827
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Turn on -ffunction-sections -fdata-sections --gc-section flags
+ on unix for the gcc toolchain for release builds to optimize binary
+ size for the Efl port.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-12-06 Seokju Kwon <seokju.kwon@gmail.com>
+
+ [EFL] Fix destination path in Source/PlatformEfl.cmake
+ https://bugs.webkit.org/show_bug.cgi?id=104237
+
+ Reviewed by Laszlo Gombos.
+
+ Remove InspectorBackendCommands.js when copying it for the consistency in Source/PlatformEfl.cmake.
+
+ * Source/PlatformEfl.cmake:
+
+2012-12-06 Shinya Kawanaka <shinyak@chromium.org>
+
+ Internals.getElementByIdInShadowRoot is nonsense now.
+ https://bugs.webkit.org/show_bug.cgi?id=104241
+
+ Reviewed by Kent Tamura.
+
+ * Source/autotools/symbols.filter:
+
+2012-12-05 Halton Huo <halton.huo@intel.com>
+
+ [CMake] Unify coding style for CMake files
+ https://bugs.webkit.org/show_bug.cgi?id=103605
+
+ Reviewed by Laszlo Gombos.
+
+ Update cmake files(.cmake, CMakeLists.txt) with following style rules:
+ 1. Indentation
+ 1.1 Use spaces, not tabs.
+ 1.2 Four spaces as indent.
+ 2. Spacing
+ 2.1 Place one space between control statements and their parentheses.
+ For eg, if (), else (), elseif (), endif (), foreach (),
+ endforeach (), while (), endwhile (), break ().
+ 2.2 Do not place spaces between function and macro statements and
+ their parentheses. For eg, macro(), endmacro(), function(),
+ endfunction().
+ 2.3 Do not place spaces between a command or function or macro and its
+ parentheses, or between a parenthesis and its content. For eg,
+ message("testing") not message( "testing") or message ("testing" )
+ 2.4 No space at line ending.
+ 3. Lowercase when call commands macros and functions. For eg,
+ add_executable() not ADD_EXECUTABLE(), set() not SET().
+
+ * CMakeLists.txt:
+ * Source/CMakeLists.txt:
+ * Source/PlatformEfl.cmake:
+ * Source/cmake/EFLHelpers.cmake:
+ * Source/cmake/FindATK.cmake:
+ * Source/cmake/FindCFLite.cmake:
+ * Source/cmake/FindCairo.cmake:
+ * Source/cmake/FindDBus.cmake:
+ * Source/cmake/FindDirectX.cmake:
+ * Source/cmake/FindE_DBus.cmake:
+ * Source/cmake/FindEcore.cmake:
+ * Source/cmake/FindEdje.cmake:
+ * Source/cmake/FindEet.cmake:
+ * Source/cmake/FindEeze.cmake:
+ * Source/cmake/FindEfreet.cmake:
+ * Source/cmake/FindEina.cmake:
+ * Source/cmake/FindElementary.cmake:
+ * Source/cmake/FindEnchant.cmake:
+ * Source/cmake/FindEvas.cmake:
+ * Source/cmake/FindFontconfig.cmake:
+ * Source/cmake/FindGLIB.cmake:
+ * Source/cmake/FindGStreamer.cmake:
+ * Source/cmake/FindGperf.cmake:
+ * Source/cmake/FindHarfBuzz.cmake:
+ * Source/cmake/FindICU.cmake:
+ * Source/cmake/FindLibSoup.cmake:
+ * Source/cmake/FindQuickTimeSDK.cmake:
+ * Source/cmake/FindSqlite.cmake:
+ * Source/cmake/OptionsBlackBerry.cmake:
+ * Source/cmake/OptionsCommon.cmake:
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/OptionsWinCE.cmake:
+ * Source/cmake/OptionsWindows.cmake:
+ * Source/cmake/WebKitFS.cmake:
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmake/WebKitHelpers.cmake:
+ * Source/cmake/WebKitMacros.cmake:
+ * Source/cmake/WebKitPackaging.cmake:
+ * Source/cmake/gtest/CMakeLists.txt:
+
+2012-12-05 Yong Li <yoli@rim.com>
+
+ [BlackBerry] Build with libjpegturbo
+ https://bugs.webkit.org/show_bug.cgi?id=104152
+
+ Reviewed by Rob Buis.
+
+ RIM PR# 196975.
+ This change is made by Ming Xie to link with libjpegturbo.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+
+2012-12-05 Leo Yang <leoyang@rim.com>
+
+ [BlackBerry] Enable CSS_IMAGE_RESOLUTION
+ https://bugs.webkit.org/show_bug.cgi?id=104132
+
+ Reviewed by Yong Li.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+
+2012-12-05 Laszlo Gombos <l.gombos@samsung.com>
+
+ [CMake] Enable to build WebKit sources without Tools
+ https://bugs.webkit.org/show_bug.cgi?id=103918
+
+ Reviewed by Gyuyoung Kim.
+
+ Turn on building Tools by default only if ENABLE_TOOLS is not explicitly set
+ (enabled or disabled) and the Tools directory exists for all CMake based ports.
+
+ This change enables the possibility to build WebKit even if the Tools directory
+ does not exists.
+
+ * CMakeLists.txt:
+
+2012-12-04 Kondapally Kalyan <kalyan.kondapally@intel.com>
+
+ [EFL][WK2][AC] USE_GRAPHICS_SURFACE should be enabled only if Xcomposite and Xrender extensions are found.
+ https://bugs.webkit.org/show_bug.cgi?id=103710.
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ When using GLX back-end we are dependent on GLX support, Xcomposite and Xrender extensions.
+ In this case, GraphicsSurface usage depends on Xcomposite and Xrender extensions.
+ USE_GRAPHICS_SURFACE should be enabled only if Xcomposite and Xrender extensions are found.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-12-03 Pierre Rossi <pierre.rossi@digia.com>
+
+ [Qt] another stab at fixing the windows build
+
+ It seems the QT_BUILD_{TARGET}_LIB are not set as they should by qt_module.prf.
+ Define them by hand to be on the safe side.
+
+ * Source/widgetsapi.pri:
+
+2012-12-03 Alexis Menard <alexis@webkit.org>
+
+ [EFL] Enable CSS3 background-position offsets by default.
+ https://bugs.webkit.org/show_bug.cgi?id=103879
+
+ Reviewed by Laszlo Gombos.
+
+ Enable the feature for EFL only.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-12-03 Alexis Menard <alexis@webkit.org>
+
+ [GTK] Enable CSS3 background-background position offset by default.
+ https://bugs.webkit.org/show_bug.cgi?id=103903
+
+ Reviewed by Philippe Normand.
+
+ Turn on the flag by default.
+
+ * configure.ac:
+
+2012-12-03 Cosmin Truta <ctruta@rim.com>
+
+ [BlackBerry] Enable HIDDEN_PAGE_DOM_TIMER_THROTTLING
+ https://bugs.webkit.org/show_bug.cgi?id=103842
+
+ Reviewed by Yong Li.
+
+ Set ENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING to ON.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+
+2012-12-03 Laszlo Gombos <l.gombos@samsung.com>
+
+ [CMake] Enable building WebKit2-only build for the EFL port
+ https://bugs.webkit.org/show_bug.cgi?id=103820
+
+ Reviewed by Gyuyoung Kim.
+
+ To create a WebKit2-only build for EFL use the following command:
+ build-webkit --efl --cmakeargs="-DENABLE_WEBKIT=OFF".
+
+ * CMakeLists.txt: Turn on WebKit1 support if it is not explicitly set (enabled or disabled) for
+ all CMake based ports.
+
+ * Source/cmake/OptionsEfl.cmake: Enable WebKit2
+ for the EFL port if it is not explicitly set (enabled or disabled).
+
+2012-12-03 Zeno Albisser <zeno@webkit.org>
+
+ [Qt][Mac] QtWebKitWidgets has wrong install_name.
+
+ This part got lost during the library split.
+ It was done for QtWebKit before, but it also
+ needs to be applied to QtWebKitWidgets.
+
+ Reviewed by Tor Arne Vestbø.
+
+ * Source/widgetsapi.pri:
+
+2012-11-30 Justin Novosad <junov@google.com>
+
+ [Chromium] Animation updates fail when using a canvas as a CSS backround-image style with -webkit-canvas
+ https://bugs.webkit.org/show_bug.cgi?id=103643
+
+ Reviewed by Stephen White.
+
+ New test to verify that elements using a canvas as a style image
+ source are redrawn when the canvas is animated. Added as a manual test
+ because the bug was not reproducible in DumpRenderTree.
+
+ * ManualTests/animated-canvas-as-background.html: Added.
+
+2012-11-30 Pierre Rossi <pierre.rossi@gmail.com>
+
+ [Qt] Unreviewed build break
+
+ Rubber-stamped by Simon Hausmann.
+
+ Poor man's way to trigger a clean build on a bot.
+
+ * WebKit.pro:
+
+2012-11-30 Simon Hausmann <simon.hausmann@digia.com>
+
+ [Qt] Unreviewed doc fix
+
+ Add additional search paths for API folders.
+
+ * Source/qtwebkit.qdocconf:
+
+2012-11-30 Simon Hausmann <simon.hausmann@digia.com>, Pierre Rossi <pierre.rossi@digia.com>
+
+ [Qt] Separate Qt WebKit into Qt WebKit and Qt WebKit Widgets
+ https://bugs.webkit.org/show_bug.cgi?id=99314
+
+ Reviewed by Tor Arne Vestbø.
+
+ This big change separates QtWebKit into QtWebKit and QtWebKitWidgets as
+ shared libraries.
+
+ It's a big refactoring that mostly involves moving WebCore dependent
+ code into QtWebKit and accessing it through exported QWebFrameAdapter
+ and QWebPageAdapter classes.
+
+ * Source/QtWebKit.pro:
+ * Source/api.pri:
+ * Source/sync.profile:
+ * Source/widgetsapi.pri: Added.
+ * WebKit.pro:
+
+2012-11-30 Tor Arne Vestbø <tor.arne.vestbo@digia.com>
+
+ [Qt] Build as a regular Qt module when production_build is enabled
+
+ Instead of always setting CONFIG+=force_independent. This means the
+ libs, headers, and documentation will end up in qtbase for developer
+ builds of Qt, instead of always in the QtWebKit build directory.
+
+ Reviewed by Simon Hausmann.
+
+ * Source/api.pri:
+
+2012-11-29 Rafael Weinstein <rafaelw@chromium.org>
+
+ [HTMLTemplateElement] Add feature flag
+ https://bugs.webkit.org/show_bug.cgi?id=103694
+
+ Reviewed by Adam Barth.
+
+ This flag will guard the implementation of the HTMLTemplateElement.
+ http://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/templates/index.html
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-11-28 Michael Pruett <michael@68k.org>
+
+ IndexedDB: Remove duplicate toWireString() and createFromWire() methods in JSC SerializedScriptValue
+ https://bugs.webkit.org/show_bug.cgi?id=103554
+
+ Reviewed by Kentaro Hara.
+
+ In r135022, duplicate createFromWire() and toWireString() methods
+ were added to the JSC version of SerializedScriptValue. In
+ order to allow the JSC SerializedScriptValue to compile when
+ ENABLE(INDEXED_DATABASE) is turned on, these new methods have
+ been removed and the old methods have been moved outside the
+ ENABLE(INDEXED_DATABASE) guard.
+
+ * Source/autotools/symbols.filter:
+
+2012-11-28 Shinya Kawanaka <shinyak@chromium.org>
+
+ [Shadow] Move Distribution stuffs from ShadowRoot
+ https://bugs.webkit.org/show_bug.cgi?id=103481
+
+ Reviewed by Hajime Morita.
+
+ * Source/autotools/symbols.filter:
+
+2012-11-26 Halton Huo <halton.huo@intel.com>
+
+ [EFL] CMake shows ENABLE_3D_RENDERING and ENABLE_WEBGL is still OFF when AC is enabled
+ https://bugs.webkit.org/show_bug.cgi?id=100829
+
+ Reviewed by Gyuyoung Kim.
+
+ In WebKitFeatures.cmake, only use ${_name} for condition to print
+ a option as ON will prevent the overridden ones in OptionsXXX.cmake,
+ should use ${_WEBKIT_AVAILABLE_OPTIONS_INITALVALUE_${_name}} instead.
+
+ * Source/cmake/OptionsEfl.cmake: Turn on ENABLE_3D_RENDERING and
+ ENABLE_WEBGL
+ * Source/cmake/WebKitFeatures.cmake: Use
+ ${_WEBKIT_AVAILABLE_OPTIONS_INITALVALUE_${_name}} to as value of
+ a feature is enabled. Adjust options in lexicographical order.
+
+2012-11-26 Kalev Lember <kalevlember@gmail.com>
+
+ [GTK] Explicitly link against librt
+ https://bugs.webkit.org/show_bug.cgi?id=103194
+
+ Reviewed by Martin Robinson.
+
+ Fixes broken build with undefined references to shm_open / shm_unlink
+ symbols. SharedMemoryUnix.cpp uses these so we need to link with -lrt.
+
+ * configure.ac:
+
+2012-11-26 Laszlo Gombos <l.gombos@samsung.com>
+
+ [CMake] Allow user specified compiler flags to take precedence
+ https://bugs.webkit.org/show_bug.cgi?id=103101
+
+ Reviewed by Brent Fulgham.
+
+ Make sure that compiler and linker flags specified by the build system
+ are always prepended to the variables that can be specified by the
+ environment and the user as well.
+
+ * Source/cmake/OptionsCommon.cmake:
+ * Source/cmake/OptionsWindows.cmake:
+ * Source/cmake/WebKitHelpers.cmake:
+
+2012-11-23 Alexis Menard <alexis@webkit.org>
+
+ [CSS3 Backgrounds and Borders] Implement new CSS3 background-position parsing.
+ https://bugs.webkit.org/show_bug.cgi?id=102104
+
+ Reviewed by Julien Chaffraix.
+
+ Protect the new feature behind a feature flag.
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+ * configure.ac:
+
+2012-11-23 Patrick Gansterer <paroga@webkit.org>
+
+ [CMake] Add support for winflexbison distribution
+ https://bugs.webkit.org/show_bug.cgi?id=102551
+
+ Reviewed by Laszlo Gombos.
+
+ Since GnuWin32 does not provide recent versions of bision and flex supporting
+ the alternative winflexbison distribution is the prefered option.
+
+ * Source/cmake/WebKitMacros.cmake:
+
+2012-11-23 Laszlo Gombos <l.gombos@samsung.com>
+
+ [EFL] Define WTF_PLATFORM_EFL in Platform.h
+ https://bugs.webkit.org/show_bug.cgi?id=101482
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Remove the definition of WTF_PLATFORM_EFL from the build system to
+ make the EFL port consistent with other ports.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-11-23 Krzysztof Czech <k.czech@samsung.com>
+
+ [EFL] Platform support for Accessibility feature.
+ https://bugs.webkit.org/show_bug.cgi?id=100848
+
+ Reviewed by Gyuyoung Kim.
+
+ Add support for ATK library.
+
+ * Source/cmake/FindATK.cmake: Added.
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-09-26 Gustavo Noronha Silva <gns@gnome.org>
+
+ [GTK] Split SVG from WebCore to work-around make limitation
+ https://bugs.webkit.org/show_bug.cgi?id=97735
+
+ Reviewed by Carlos Garcia Campos.
+
+ Add a new libtool convenience library, libWebCoreSVG.la, to work-around
+ make limitation when linking libWebCore.
+
+ * GNUmakefile.am: variables for the new library.
+
+2012-11-22 Simon Hausmann <simon.hausmann@digia.com>, Pierre Rossi <pierre.rossi@digia.com>
+
+ [Qt] Separate QWidget dependant code into separate WebKitWidgets static library
+ https://bugs.webkit.org/show_bug.cgi?id=102800
+
+ Reviewed by Tor Arne Vestbø.
+
+ This patch separates code that needs to use QWidget related APIs in
+ WebKit/qt/WebCoreSupport and Api from code that doesn't. This means for
+ example FrameLoaderClientQt.cpp remains in the WebKit1 static library,
+ while qwebpage.cpp and qwebframe.cpp become part of the WebKitWidgets
+ static library. WebKit1 is compiled without QT += widgets and therefore
+ any widget related dependency has been moved "up" and out of WebKit1 into
+ the WebKitWidgets library.
+
+ Between the code in WebKit.a and WebKitWidgets.a new adapters and
+ interfaces have been introduced, such as QWebPageAdapter and
+ QWebFrameAdapter. QWebPageAdapter, when used from WebKit1, is a way to
+ call out into the API layer, implemented by QWebPage (QWebPagePrivate).
+ The other way around if QWebPage wants to access WebCore or
+ WebCoreSupport related functionality, it will go through
+ QWebPageAdapater (as base class). The separation in the direction up
+ into the API layer is complete with this patch, no code in WebKit1
+ depends on QtWidgets. The separation the other way around, code in the
+ API layer not using any WebCore types, is not complete yet.
+
+ Some classes such as QWebSettings, QWebElement or
+ DumpRenderTreeSupportQt remain in WebKit1. While they are API layer,
+ they do not depend on widget related Qt APIs and they make much more
+ use of WebCore internal APIs and therefore are easier to keep in
+ WebKit1.
+
+ In the future we plan to place a real shared library boundary between
+ WebKit1 and WebKitWidgets, by keeping the WebKit1 static library as
+ part of the QtWebKit shared library and by turning the WebKitWidgets
+ static library into a shared one.
+
+
+ * Source/api.pri:
+ * WebKit.pro:
+
+2012-11-21 Ryuan Choi <ryuan.choi@gmail.com>
+
+ [EFL] Remove unnecessary definition, -DENABLE_SPELLCHECK=1
+ https://bugs.webkit.org/show_bug.cgi?id=102988
+
+ Reviewed by Laszlo Gombos.
+
+ Removed -DENABLE_SPELLCHECK=1 because feature macros are controlled by
+ WEBKIT_OPTION_XXX and cmakeconfig.h.cmake.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-11-21 Kondapally Kalyan <kalyan.kondapally@intel.com>
+
+ [EFL] GLX detection is broken.
+ https://bugs.webkit.org/show_bug.cgi?id=102687.
+
+ Reviewed by Laszlo Gombos.
+
+ HAVE_GLX is enabled only if WebGL is enabled. This is wrong and we should
+ explicitly test for GLX support.
+ This patch makes changes so that we check for glx.h header and sets HAVE_GLX flag appropriately.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-11-21 Yael Aharon <yael.aharon@intel.com>
+
+ [EFL] Turn on WTF_USE_TILED_BACKING_STORE by default
+ https://bugs.webkit.org/show_bug.cgi?id=101526
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Separate out ENABLE_WEBGL. It is not ready to be enabled by default.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-11-20 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r133859.
+ http://trac.webkit.org/changeset/133859
+ https://bugs.webkit.org/show_bug.cgi?id=102875
+
+ This patch makes API test broken (Requested by gyuyoung on
+ #webkit).
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-11-20 Elliott Sprehn <esprehn@chromium.org>
+
+ Store MutationObserver callback in a hidden property for V8
+ https://bugs.webkit.org/show_bug.cgi?id=102555
+
+ Reviewed by Adam Barth.
+
+ Test for reference cycle leaks with mutation observers. There doesn't seem
+ to be a way to check this for v8, but if you manually run you can see if it
+ leaks observers.
+
+ * ManualTests/leak-cycle-observer-wrapper.html: Added.
+
+2012-11-20 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Unreviewed. Update NEWS and configure.ac for 1.11.2 release
+
+ * configure.ac: Bump tarball version number, not updated in
+ previous commit by mistake.
+
+2012-11-20 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Unreviewed. Update NEWS and configure.ac for 1.11.2 release
+
+ * configure.ac: Bump version numbers.
+
+2012-11-19 Kihong Kwon <kihong.kwon@samsung.com>
+
+ Add PROXIMITY_EVENTS feature
+ https://bugs.webkit.org/show_bug.cgi?id=102658
+
+ Reviewed by Kentaro Hara.
+
+ Add PROXIMITY_EVENTS feature to cmake.
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-11-18 Laszlo Gombos <l.gombos@samsung.com>
+
+ Remove non-existent directories from the make system
+ https://bugs.webkit.org/show_bug.cgi?id=102632
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Remove (non-existent) symbian references from the exclude list for packaging.
+
+ * Source/cmake/WebKitPackaging.cmake:
+
+2012-11-18 Laszlo Gombos <l.gombos@samsung.com>
+
+ Remove non-existent directories from the make system
+ https://bugs.webkit.org/show_bug.cgi?id=102632
+
+ Reviewed by Adam Barth.
+
+ Remove (non-existent) symbian references from the exclude list for packaging.
+
+ * Source/cmake/WebKitPackaging.cmake:
+
+2012-11-18 Genevieve Mak <gmak@rim.com>
+
+ [BlackBerry] Enable Touch Sliders
+ https://bugs.webkit.org/show_bug.cgi?id=102516
+
+ Reviewed by Rob Buis.
+
+ Enabled for BlackBerry only
+ PR #242781
+ PR #176014
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-11-18 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Unreviewed. Fix GTK+ build after r135022.
+
+ * Source/autotools/symbols.filter: Add exports for
+ SerializedScriptValue changes.
+
+2012-11-16 Tony Chang <tony@chromium.org>
+
+ Remove ENABLE_CSS_HIERARCHIES since it's no longer in use
+ https://bugs.webkit.org/show_bug.cgi?id=102554
+
+ Reviewed by Andreas Kling.
+
+ As mentioned in https://bugs.webkit.org/show_bug.cgi?id=79939#c41 ,
+ we're going to revist this feature once additional vendor support is
+ achieved.
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-11-16 Ulan Degenbaev <ulan@chromium.org>
+
+ [V8] Increment the amount of externally allocated memory for the receiving V8 isolate when transferring ArrayBuffer
+ https://bugs.webkit.org/show_bug.cgi?id=94463
+
+ Reviewed by Kentaro Hara.
+
+ Call AdjustAmountOfExternalAllocatedMemory when V8ArrayBuffer is deserialized and transferred.
+
+ * ManualTests/typed-array-memory.html:
+
+2012-11-16 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r134908.
+ http://trac.webkit.org/changeset/134908
+ https://bugs.webkit.org/show_bug.cgi?id=102473
+
+ Broke the Apple Windows Debug build. (Requested by dydx on
+ #webkit).
+
+ * Source/autotools/symbols.filter:
+
+2012-11-16 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r134865.
+ http://trac.webkit.org/changeset/134865
+ https://bugs.webkit.org/show_bug.cgi?id=102466
+
+ Broke the Apple Windows Debug build. (Requested by dydx on
+ #webkit).
+
+ * Source/autotools/symbols.filter:
+
+2012-11-16 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
+
+ Avoid copying of ViewportArguments in computeViewportAttributes function
+ https://bugs.webkit.org/show_bug.cgi?id=102354
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Updated exported symbols for GTK.
+
+ * Source/autotools/symbols.filter:
+
+2012-11-15 Gustavo Noronha Silva <gns@gnome.org>
+
+ [GTK] Split WebCore/platform into a separate library
+ https://bugs.webkit.org/show_bug.cgi?id=94435
+
+ Reviewed by Martin Robinson.
+
+ More people have been reporting problems when linking WebCore because
+ the command line limit is being exceeded. Splitting WebCore a bit more
+ is in order.
+
+ * GNUmakefile.am: add variable that will hold the list of source files
+ for libWebCorePlatform .
+
+2012-11-15 Tony Chang <tony@chromium.org>
+
+ Generate Settings from a .in file
+ https://bugs.webkit.org/show_bug.cgi?id=100393
+
+ Reviewed by Adam Barth.
+
+ Generate SettingsMacros.h for cmake.
+
+ * Source/cmake/WebKitMacros.cmake:
+
+2012-11-15 Rick Byers <rbyers@chromium.org>
+
+ No tests for changing mouse cursors
+ https://bugs.webkit.org/show_bug.cgi?id=100550
+
+ Reviewed by Brent Fulgham.
+
+ Add necessary exports for Internals::getCurrentCursorInfo
+
+ * Source/autotools/symbols.filter:
+
+2012-11-15 Kent Tamura <tkent@chromium.org>
+
+ Support stand-alone month names in calendar picker
+ https://bugs.webkit.org/show_bug.cgi?id=102196
+
+ Reviewed by Kentaro Hara.
+
+ * ManualTests/forms/calendar-picker.html:
+ - Remove monthLabels arguments.
+ - Add a mock implementation of pagePopupController.formatMonth.
+
+2012-11-14 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r134741.
+ http://trac.webkit.org/changeset/134741
+ https://bugs.webkit.org/show_bug.cgi?id=102337
+
+ "Change is incorrect." (Requested by dydx on #webkit).
+
+ * Source/autotools/symbols.filter:
+
+2012-11-14 Daniel Bates <dbates@webkit.org>
+
+ Attempt to fix the Apple Windows Debug and GTK builds after <http://trac.webkit.org/changeset/134691>
+ (https://bugs.webkit.org/show_bug.cgi?id=96818)
+
+ Export symbols similar to the ones we added to WebCore.exp.in in
+ <http://trac.webkit.org/changeset/134691>.
+
+ * Source/autotools/symbols.filter:
+
+2012-11-14 KyungTae Kim <ktf.kim@samsung.com>
+
+ [EFL] Turn on error on warnings for "sign-compare"
+ https://bugs.webkit.org/show_bug.cgi?id=101761
+
+ Reviewed by Gyuyoung Kim.
+
+ Remove "-Wno-error=sign-compare" to turn on error on warnings for "sign-compare"
+
+ * Source/cmake/WebKitHelpers.cmake:
+
+2012-11-13 Hugo Parente Lima <hugo.lima@openbossa.org>
+
+ FindGLIB.cmake fails do find glib gmodule module.
+ https://bugs.webkit.org/show_bug.cgi?id=101784
+
+ Reviewed by Caio Marcelo de Oliveira Filho.
+
+ * Source/cmake/FindGLIB.cmake:
+
+2012-11-13 Huang Dongsung <luxtella@company100.net>
+
+ Coordinated Graphics: Directly composited animated GIFs only render the first image.
+ https://bugs.webkit.org/show_bug.cgi?id=102043
+
+ Reviewed by Noam Rosenthal.
+
+ Add a test to check that a gif animation can run on a compositing layer.
+
+ * ManualTests/animated-gif-on-compositing-layer.html: Added.
+
+2012-11-12 KyungTae Kim <ktf.kim@samsung.com>
+
+ [EFL] Turn on errors on warnings for WebKit1 and WebKit2 libraries
+ https://bugs.webkit.org/show_bug.cgi?id=101762
+
+ Reviewed by Gyuyoung Kim.
+
+ In case of EFL, add ENABLE_WERROR to EXTRA_COMPILER_FLAGS for WEBKIT and WEBKIT2
+
+ * Source/CMakeLists.txt:
+
+2012-11-12 Joe Mason <jmason@rim.com>
+
+ [BlackBerry] NetworkJob should not check if data is received with HEAD
+ https://bugs.webkit.org/show_bug.cgi?id=102034
+
+ Reviewed by George Staikos.
+
+ Internal PR: 241391
+
+ Add test that HEAD XMLHttpRequests return status 404 instead of calling onerror.
+
+ * ManualTests/blackberry/head-xhr-nonexistant-file.html: Added.
+
+2012-11-12 KyungTae Kim <ktf.kim@samsung.com>
+
+ [EFL] Turn on error on warnings for "switch"
+ https://bugs.webkit.org/show_bug.cgi?id=101760
+
+ Reviewed by Gyuyoung Kim.
+
+ Turn on error on warning for "switch" by removing "-Wno-error=switch"
+
+ * Source/cmake/WebKitHelpers.cmake:
+
+2012-11-11 Shinya Kawanaka <shinyak@chromium.org>
+
+ [Shadow] ElementShadow should have RuleFeatureSet for select attribute selectors.
+ https://bugs.webkit.org/show_bug.cgi?id=101180
+
+ Reviewed by Dimitri Glazkov.
+
+ Exposes necessary symbols.
+
+ * Source/autotools/symbols.filter:
+
+2012-11-11 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r134144.
+ http://trac.webkit.org/changeset/134144
+ https://bugs.webkit.org/show_bug.cgi?id=101876
+
+ seems to break win 7 chromium browser test (Requested by
+ hayato on #webkit).
+
+ * Source/autotools/symbols.filter:
+
+2012-11-09 Rick Byers <rbyers@chromium.org>
+
+ No tests for changing mouse cursors
+ https://bugs.webkit.org/show_bug.cgi?id=100550
+
+ Reviewed by Adam Barth.
+
+ Add necessary exports for Internals::getCurrentCursorInfo
+
+ * Source/autotools/symbols.filter:
+
+2012-11-09 Laszlo Gombos <l.gombos@samsung.com>
+
+ [EFL] Enable -Werror for the EFL port
+ https://bugs.webkit.org/show_bug.cgi?id=98715
+
+ Reviewed by Gyuyoung Kim.
+
+ Treat all warnings as errors, except the existing warnings in the
+ current code base ("unused-parameter", "sign-compare" and "switch").
+
+ Thanks for Raphael Kubo da Costa for the extra help.
+
+ * Source/CMakeLists.txt: Enable warnings as error for all libraries
+ (except WebKit and WebKit2) for the EFL port.
+ Other cmake-based ports are welcome to join.
+
+ * Source/cmake/WebKitHelpers.cmake: Treat warnings as errors by
+ default for cmake-based ports when ENABLE_WERROR is set.
+
+2012-11-08 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
+
+ [EFL] Turn WTF_USE_TILED_BACKING_STORE in OptionsEfl.cmake.
+ https://bugs.webkit.org/show_bug.cgi?id=101559
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Follow-up to 133859; also change the default value in
+ OptionsEfl.cmake so that the default changes for people not using
+ build-webkit (ie. users) as well.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-11-08 Yael Aharon <yael.aharon@intel.com>
+
+ [EFL] Turn on WTF_USE_TILED_BACKING_STORE by default
+ https://bugs.webkit.org/show_bug.cgi?id=101526
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Separate out ENABLE_WEBGL. It is not ready to be enabled by default.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-11-08 Laszlo Gombos <l.gombos@samsung.com>
+
+ [EFL] Remove non-variable options from the build system
+ https://bugs.webkit.org/show_bug.cgi?id=101506
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Remove WTF_USE_PTHREADS, WTF_USE_ICU_UNICODE, WTF_USE_CAIRO,
+ WTF_USE_FREETYPE and WTF_USE_HARFBUZZ_NG cmake variables
+ as these are always set to const 1 and not really configurable.
+
+ Remove the definition of ENABLE_CONTEXT_MENUS as this is already set to 1 by default in Platform.h.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-11-08 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r133865.
+ http://trac.webkit.org/changeset/133865
+ https://bugs.webkit.org/show_bug.cgi?id=101579
+
+ dependent patch has been rolled out. (Requested by drott on
+ #webkit).
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-11-08 Dominik Röttsches <dominik.rottsches@intel.com>
+
+ Unreviewed, rolling out r133859.
+ http://trac.webkit.org/changeset/133859
+ https://bugs.webkit.org/show_bug.cgi?id=101526
+
+ Breaks EFL bots test execution.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-11-08 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
+
+ [EFL] Turn WTF_USE_TILED_BACKING_STORE in OptionsEfl.cmake.
+ https://bugs.webkit.org/show_bug.cgi?id=101559
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Follow-up to 133859; also change the default value in
+ OptionsEfl.cmake so that the default changes for people not using
+ build-webkit (ie. users) as well.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-11-08 Yael Aharon <yael.aharon@intel.com>
+
+ [EFL] Turn on WTF_USE_TILED_BACKING_STORE by default
+ https://bugs.webkit.org/show_bug.cgi?id=101526
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Separate out ENABLE_WEBGL. It is not ready to be enabled by default.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-11-07 Keishi Hattori <keishi@webkit.org>
+
+ Implement week picking to calendar picker
+ https://bugs.webkit.org/show_bug.cgi?id=101449
+
+ Reviewed by Kent Tamura.
+
+ * ManualTests/forms/calendar-picker.html: Added test for week picker.
+
+2012-11-07 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r133841.
+ http://trac.webkit.org/changeset/133841
+ https://bugs.webkit.org/show_bug.cgi?id=101542
+
+ Reverted patches were innocent (Requested by shinyak on
+ #webkit).
+
+ * Source/autotools/symbols.filter:
+
+2012-11-07 Shinya Kawanaka <shinyak@chromium.org>
+
+ Unreviewed, rolling out r133428 and r133749
+ https://bugs.webkit.org/show_bug.cgi?id=101533
+
+ These patches might cause memory regression.
+
+ * Source/autotools/symbols.filter:
+
+2012-11-07 Shinya Kawanaka <shinyak@chromium.org>
+
+ [Shadow] Use setPseudo() instead of setShadowPseudoId().
+ https://bugs.webkit.org/show_bug.cgi?id=101306
+
+ Reviewed by Kent Tamura.
+
+ Exposes necessary symbols.
+
+ * Source/autotools/symbols.filter:
+
+2012-11-07 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
+
+ [Qt] Fix build of modules depending on QtWebKit when using prefix
+ https://bugs.webkit.org/show_bug.cgi?id=101437
+
+ Reviewed by Simon Hausmann.
+
+ .qmake.conf loads qt_build_config.prf, which nowadays is responsible for
+ adding the path to .qmake.super (before it was done by default_pre.prf,
+ so having setting the path in our default_pre wrapper was sufficient).
+
+ * .qmake.conf:
+
+2012-11-06 Keishi Hattori <keishi@webkit.org>
+
+ Implement month picking to calendar picker
+ https://bugs.webkit.org/show_bug.cgi?id=101333
+
+ Reviewed by Kent Tamura.
+
+ * ManualTests/forms/calendar-picker.html: Added test for month picker.
+
+2012-11-06 Laszlo Gombos <l.gombos@samsung.com>
+
+ [EFL] Simplify the build system
+ https://bugs.webkit.org/show_bug.cgi?id=101392
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Remove unused cmake variables. In addition there is no longer a need to define
+ WTF_USE_TEXTURE_MAPPER_GL in the build system as that is now handled in Platform.h
+ (see r133623).
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-11-05 Simon Hausmann <simon.hausmann@digia.com>
+
+ [Qt] Trivial unreviewed: Add missing module dependencies for builds in Qt CI system.
+
+ These fields aren't used by anyone except some perl scripts in the Qt CI builds.
+
+ * Source/sync.profile:
+
+2012-11-02 Adam Barth <abarth@webkit.org>
+
+ ENABLE(UNDO_MANAGER) is disabled everywhere and is not under active development
+ https://bugs.webkit.org/show_bug.cgi?id=100711
+
+ Reviewed by Eric Seidel.
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-11-02 Martin Robinson <mrobinson@igalia.com>
+
+ [GTK] Remove dependency on SoupPasswordManager
+ https://bugs.webkit.org/show_bug.cgi?id=100775
+
+ Reviewed by Carlos Garcia Campos.
+
+ Add a libsecret dependency to the build. This is necessary so that we can remove
+ a dependency on SoupPasswordManager.
+
+ * configure.ac: Look for libsecret using the pkg-config configuration macro.
+
+2012-11-02 Michael Brüning <michael.bruning@digia.com>
+
+ [Qt][WK2] ASSERT hit for every mouse click
+ https://bugs.webkit.org/show_bug.cgi?id=100607
+
+ Reviewed by Jocelyn Turcotte.
+
+ Added a test with a link that contains an <em> tag surrounding the entire inner text.
+ The test should be run on an assert enabled build and the assert should not be
+ triggered when tapping the link.
+
+ * ManualTests/tap-gesture-on-em-link-tap-highlight-assert.html: Added.
+
+2012-11-01 Ami Fischman <fischman@chromium.org>
+
+ HTMLMediaPlayer should free m_player when src is set/changed
+ https://bugs.webkit.org/show_bug.cgi?id=99647
+
+ Reviewed by Eric Carlson.
+
+ * ManualTests/media-players-are-dropped-on-error.html: Added.
+ Various scenarios are tested to make sure players aren't
+ leaked in different ways for each of them.
+
+2012-11-01 Beth Dakin <bdakin@apple.com>
+
+ https://bugs.webkit.org/show_bug.cgi?id=100917
+ There should be a way to dump the scrolling tree from the layout tests
+
+ Reviewed by Simon Fraser.
+
+ * Source/autotools/symbols.filter:
+
+2012-10-31 Thiago Marcos P. Santos <thiago.santos@intel.com>
+
+ Added viewport at-rule to the CSS parser and tokenizer
+ https://bugs.webkit.org/show_bug.cgi?id=95961
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Enable CSS Device Adaptation by default on EFL.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-10-31 Ian Vollick <vollick@chromium.org>
+
+ Add support for text-based repaint testing
+ https://bugs.webkit.org/show_bug.cgi?id=100584
+
+ Reviewed by Simon Fraser.
+
+ Allows tracked repaint rects to be dumped as text.
+
+ * Source/autotools/symbols.filter:
+ Exports for:
+ FrameView::setTracksRepaints(bool)
+ Frame::trackedRepaintRectsAsText() const
+
+
+2012-10-30 Vivek Galatage <vivekgalatage@gmail.com>
+
+ Add files generated by Windows to ignore list for git repository
+ https://bugs.webkit.org/show_bug.cgi?id=100729
+
+ Reviewed by Gyuyoung Kim.
+
+ Adding the additional files generated by windows port to the ignore list
+
+ * .gitignore:
+
+2012-10-30 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ [GTK] Add a configure option to build with -g1
+ https://bugs.webkit.org/show_bug.cgi?id=100670
+
+ Reviewed by Martin Robinson.
+
+ Add min and full options to the --enable-debug-symbols configure
+ option. Using --enable-debug-symbols=min will use -g1 instead of
+ -g (which is actually -g2). The first level is enough for most of
+ the cases, like getting a backtrace, and it's the only way to
+ build WebKit with debug symbols in a 32 bit system. The option
+ full is actually the same than yes for backwards compatibility.
+
+ * configure.ac:
+
+2012-10-26 Rob Buis <rbuis@rim.com>
+
+ [BlackBerry] Platform Abstraction for WebKit Resource/Image Loading
+ https://bugs.webkit.org/show_bug.cgi?id=100518
+
+ PR 231732
+
+ Reviewed by Yong Li.
+
+ Remove RESOURCE_PATH from webkit, this is now abstracted in our platform layer.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+
+2012-10-26 Regina Chung <heejin.r.chung@samsung.com>
+
+ [EFL][WK2] Enable WebGL
+ https://bugs.webkit.org/show_bug.cgi?id=97652
+
+ Reviewed by Gyuyoung Kim.
+
+ Use Graphics Surface to enable WebGL for WebKit2 EFL.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-10-26 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r132601.
+ http://trac.webkit.org/changeset/132601
+ https://bugs.webkit.org/show_bug.cgi?id=100494
+
+ It broke the Qt build (Requested by Ossy on #webkit).
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-10-26 Regina Chung <heejin.r.chung@samsung.com>
+
+ [EFL][WK2] Enable WebGL
+ https://bugs.webkit.org/show_bug.cgi?id=97652
+
+ Reviewed by Gyuyoung Kim.
+
+ Use Graphics Surface to enable WebGL for WebKit2 EFL.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-10-26 Thiago Marcos P. Santos <thiago.santos@intel.com>
+
+ Add feature flags for CSS Device Adaptation
+ https://bugs.webkit.org/show_bug.cgi?id=95960
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+ * configure.ac:
+
+2012-10-25 Yael Aharon <yael.aharon@intel.com>
+
+ [EFL][WK2][AC] Enable 3D_RENDERING flag
+ https://bugs.webkit.org/show_bug.cgi?id=99535
+
+ Reviewed by Laszlo Gombos.
+
+ Turn on the flag ENABLE_3D_RENDERING when WTF_USE_TILE_BACKING_STORE flag is on.
+ This flag controls perspective and preserves-3d behavior.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-10-25 Dominik Röttsches <dominik.rottsches@intel.com>
+
+ Adding feature for XHR_TIMEOUT
+
+ Conditionalize XHR timeout support
+ https://bugs.webkit.org/show_bug.cgi?id=100356
+
+ Reviewed by Adam Barth.
+
+ Adding feature for XHR_TIMEOUT to disable it on ports that don't have
+ network backend support for setTimeoutInterval.
+
+ * Source/cmake/OptionsEfl.cmake: Default ON on EFL.
+ * Source/cmake/WebKitFeatures.cmake: Default OFF for any CMAKE based port.
+ * Source/cmakeconfig.h.cmake: Adding define.
+ * configure.ac: Make autogen.sh support the --enable/--disable-xhr-timeout parameter.
+
+2012-10-25 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
+
+ Add setMediaTypeOverride to window.internals.settings
+ https://bugs.webkit.org/show_bug.cgi?id=100249
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Exported WebCore::Settings::setMediaTypeOverride(WTF::String const&) for GTK port.
+
+ * Source/autotools/symbols.filter:
+
+2012-10-24 Michael Carmody <mcarmody@rim.com>
+
+ [BlackBerry] change CMAKE_<CCXX|C>_FLAGS_<RELEASE|DEBUG> from enviroment flags
+ https://bugs.webkit.org/show_bug.cgi?id=100256
+
+ Reviewed by Rob Buis.
+
+ This allow override of compile flags without having to edit CMake files.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+
+2012-10-24 Priit Laes <plaes@plaes.org>
+
+ [GTK] ./configure output for CSS Shaders is broken
+ https://bugs.webkit.org/show_bug.cgi?id=100217
+
+ Reviewed by Martin Robinson.
+
+ Reformat CSS Filters / Shaders check to clean configure output.
+
+ * configure.ac:
+
+2012-10-24 Thiago Marcos P. Santos <thiago.santos@intel.com>
+
+ [EFL] run-webkit-tests writes garbage on stderr when running on Xvfb
+ https://bugs.webkit.org/show_bug.cgi?id=100243
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Search for X11 development libraries (and thus Xext), necessary to
+ disable the X extensions error reporting.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-10-24 Mario Sanchez Prada <mario@webkit.org>
+
+ [WK2] [GTK] TestWebKitAccessibility is not being run
+ https://bugs.webkit.org/show_bug.cgi?id=100102
+
+ Reviewed by Carlos Garcia Campos.
+
+ Moved check for at-spi2 after the definition of enable_webkit2,
+ since it's only needed for WebKit2GTK API tests.
+
+ * configure.ac: Moved the check for at-spi2 down in the file.
+
+2012-10-23 Martin Robinson <mrobinson@igalia.com>
+
+ POTFILES.in/.skip need updates for translators
+ https://bugs.webkit.org/show_bug.cgi?id=67580
+
+ Reviewed by Xan Lopez.
+
+ Now process POTFILES.in during configuration.
+
+ * configure.ac:
+
+2012-10-23 Kenneth Rohde Christiansen <kenneth@webkit.org>
+
+ Add support for resolution media query
+ https://bugs.webkit.org/show_bug.cgi?id=99077
+
+ Reviewed by Antti Koivisto.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+ Add support for the RESOLUTION_MEDIA_QUERY feature flag.
+
+ * Source/autotools/symbols.filter:
+
+ Export the WebCore::Settings setting.
+
+2012-10-23 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Unreviewed. Update NEWS and configure.ac for 1.11.1 release
+
+ * configure.ac: Bump version numbers.
+
+2012-10-23 Ryuan Choi <ryuan.choi@samsung.com>
+
+ [EFL][WK2] Add support for IMF composition
+ https://bugs.webkit.org/show_bug.cgi?id=89552
+
+ Reviewed by Gyuyoung Kim.
+
+ * Source/cmake/FindEcore.cmake: Checked Ecore_IMF.
+
+2012-10-23 Andras Becsi <andras.becsi@digia.com>
+
+ Remove devicePixelRatio from ViewportAttributes
+ https://bugs.webkit.org/show_bug.cgi?id=99845
+
+ Reviewed by Adam Barth.
+
+ * Source/autotools/symbols.filter: Update symbol.
+
+2012-10-22 Pavel Feldman <pfeldman@chromium.org>
+
+ Web Inspector: merge "docked" state into the "dock side" enum.
+ https://bugs.webkit.org/show_bug.cgi?id=99717
+
+ Reviewed by Vsevolod Vlasov.
+
+ Otherwise, it is hard to manage these inter-dependent flags.
+
+ * Source/autotools/symbols.filter:
+
+2012-10-19 Tony Chang <tony@chromium.org>
+
+ Unreviewed, rolling out r131936.
+ http://trac.webkit.org/changeset/131936
+ https://bugs.webkit.org/show_bug.cgi?id=99717
+
+ Broke the clang build
+
+ * Source/autotools/symbols.filter:
+
+2012-10-19 Dongwoo Joshua Im <dw.im@samsung.com>
+
+ Rename ENABLE_CSS3_TEXT_DECORATION to ENABLE_CSS3_TEXT
+ https://bugs.webkit.org/show_bug.cgi?id=99804
+
+ Reviewed by Julien Chaffraix.
+
+ CSS3 text related properties will be implemented under this flag,
+ including text decoration, text-align-last, and text-justify.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-10-18 Laszlo Gombos <l.gombos@samsung.com>
+
+ [EFL] Buildfix if Netscape plugin support is disabled
+ https://bugs.webkit.org/show_bug.cgi?id=99757
+
+ Reviewed by Gyuyoung Kim.
+
+ Set ENABLE_PLUGIN_PROCESS only if ENABLE_NETSCAPE_PLUGIN_API is set.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-10-18 Pablo Flouret <pablof@motorola.com>
+
+ Implement css3-conditional's @supports rule
+ https://bugs.webkit.org/show_bug.cgi?id=86146
+
+ Reviewed by Antti Koivisto.
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+ * configure.ac:
+ Add an ENABLE_CSS3_CONDITIONAL_RULES flag.
+
+2012-10-18 Simon Hausmann <simon.hausmann@digia.com>
+
+ [Qt] Clean up variables controlling Qt module creation/handling
+
+ Reviewed by Tor Arne Vestbø.
+
+ We now depend on a Qt 5 version that is new enough to allow us to
+ clean this up. Qt's default_pre.prf uses MODULE_QMAKE_OUTDIR, but
+ the other MODULE_BASE_* variables are onl used in qmodule.prf.
+
+ * Source/api.pri:
+
+2012-10-17 Tor Arne Vestbø <tor.arne.vestbo@digia.com>
+
+ [Qt] Modularize documentation for QtWebKit
+
+ Running 'make docs' would fail unless 'make qmake_all' was ran first,
+ but qmake_all involved generating all the derived sources, which seems
+ overly complex just for building documentation.
+
+ We solve this by preventing all subdirs except QtWebKit from having a
+ docs target. This would normally work fine on its own, but since we
+ use CONFIG += ordered, there's now a missing doc target for the
+ immediate dependency of the QtWebKit subdir. We solve this by adding
+ a dummy-target ourselves.
+
+ Finally, we clean up the qdocconf file to match the rest of the Qt
+ documentation modularization efforts.
+
+ Reviewed by Simon Hausmann.
+
+ * Source/QtWebKit.pro:
+ * Source/api.pri:
+ * Source/qtwebkit.qdocconf: Added.
+
+2012-10-17 Grzegorz Czajkowski <g.czajkowski@samsung.com>, Michal Roj <m.roj@sasmung.com>
+
+ [WK2][EFL] Implementation of spellchecking feature.
+ https://bugs.webkit.org/show_bug.cgi?id=91854
+
+ Reviewed by Gyuyoung Kim.
+
+ Define SPELLCHECK macro and enable it for WK2-Efl.
+ The spellchecking implementation is based on the Enchant library.
+ It can be used by other WebKit ports.
+
+ * Source/cmake/FindEnchant.cmake: Added.
+ * Source/cmake/OptionsEfl.cmake: Enable spellchecking feature for WebKit2-EFL.
+ * Source/cmake/WebKitFeatures.cmake: Define the SPELLCHECK macro.
+ * Source/cmakeconfig.h.cmake: Add the feature.
+
+2012-10-16 Pablo Flouret <pablof@motorola.com>
+
+ Pre-process CSSGrammar.y before running through bison.
+ https://bugs.webkit.org/show_bug.cgi?id=94290
+
+ Reviewed by Tony Chang.
+
+ * Source/cmake/WebKitMacros.cmake:
+ Use WebCore/css/makegrammar.pl to generate bison grammar files.
+
+2012-10-15 Jer Noble <jer.noble@apple.com>
+
+ WebAudio: limit output level to 0db
+ https://bugs.webkit.org/show_bug.cgi?id=95792
+ <rdar://problem/11966135>
+
+ Reviewed by Chris Rogers.
+
+ Add a manual test to determine that output volume has been limited to 0db.
+
+ * ManualTests/webaudio/limit-level-0db.html: Added.
+
+2012-10-16 Simon Hausmann <simon.hausmann@digia.com>
+
+ [Qt] Fix support for silent builds
+
+ Reviewed by Tor Arne Vestbø.
+
+ The .qmake.conf file in Qt modules usually contains a load(qt_build_config), which
+ ends up loading qmodule.pri, which contains the CONFIG += silent if Qt was configured
+ with -silent.
+
+ * .qmake.conf:
+
+2012-10-16 Simon Hausmann <simon.hausmann@digia.com>, Tor Arne Vestbø <tor.arne.vestbo@digia.com>
+
+ [Qt] Add logic for triggering clean builds on changes to build system files
+
+ Reviewed by Csaba Osztrogonác.
+
+ Add a line here that can be re-used for recording dummy commits to count how the clean-build-needed
+ logic failed.
+
+ * WebKit.pro:
+
+2012-10-16 Simon Hausmann <simon.hausmann@digia.com>
+
+ Unreviewed, rolling out r131436.
+ http://trac.webkit.org/changeset/131436
+
+ Broke various Qt bots strangely
+
+ * .qmake.conf:
+
+2012-10-16 Simon Hausmann <simon.hausmann@digia.com>
+
+ [Qt] Fix support for silent builds
+
+ Reviewed by Tor Arne Vestbø.
+
+ The .qmake.conf file in Qt modules usually contains a load(qt_build_config), which
+ ends up loading qmodule.pri, which contains the CONFIG += silent if Qt was configured
+ with -silent.
+
+ * .qmake.conf:
+
+2012-10-15 Ryuan Choi <ryuan.choi@samsung.com>
+
+ [EFL] Share resources installed for inspector
+ https://bugs.webkit.org/show_bug.cgi?id=98991
+
+ Reviewed by Gyuyoung Kim.
+
+ Now, WebKit1/Efl and WebKit2/Efl install same resources to different directory
+ when INSPECTOR is enabled.
+
+ This patch changes to install resources one time and share it.
+
+ * Source/PlatformEfl.cmake:
+ Extracted build scripts which install resources from WebKit/PlatformEfl.cmake.
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-10-15 Simon Hausmann <simon.hausmann@digia.com>
+
+ [Qt] Separate Qt WebKit into Qt WebKit and Qt WebKit Widgets
+ https://bugs.webkit.org/show_bug.cgi?id=88162
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Rename the QtWebKit module to QtWebKitWidgets.
+
+ * Source/api.pri:
+ * Source/sync.profile:
+
+2012-10-14 Patrick Gansterer <paroga@webkit.org>
+
+ Unreviewed, rolling out r130656.
+ http://trac.webkit.org/changeset/130656
+ https://bugs.webkit.org/show_bug.cgi?id=97592
+
+ Broke CMake build on Windows
+
+ * CMakeLists.txt:
+
+2012-10-12 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r131189.
+ http://trac.webkit.org/changeset/131189
+ https://bugs.webkit.org/show_bug.cgi?id=99187
+
+ Made inspector http tests crash on WK2. (Requested by rakuco
+ on #webkit).
+
+ * Source/PlatformEfl.cmake:
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-10-12 Ryuan Choi <ryuan.choi@samsung.com>
+
+ [EFL] Share resources installed for inspector
+ https://bugs.webkit.org/show_bug.cgi?id=98991
+
+ Reviewed by Gyuyoung Kim.
+
+ Now, WebKit1/Efl and WebKit2/Efl install same resources to different directory
+ when INSPECTOR is enabled.
+
+ This patch changes to install resources one time and share it.
+
+ * Source/PlatformEfl.cmake:
+ Extracted build scripts which install resources from WebKit/PlatformEfl.cmake.
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-10-12 Balazs Kelemen <kbalazs@webkit.org>
+
+ Unreviewed, rolling out r130389.
+ http://trac.webkit.org/changeset/130389
+ https://bugs.webkit.org/show_bug.cgi?id=98048
+
+ It broke chromium
+
+ * Source/autotools/symbols.filter:
+
+2012-10-11 Jinwoo Song <jinwoo7.song@samsung.com>
+
+ [CMAKE] Add HIDDEN_PAGE_DOM_TIMER_THROTTLING feature
+ https://bugs.webkit.org/show_bug.cgi?id=99030
+
+ Reviewed by Laszlo Gombos.
+
+ Add HIDDEN_PAGE_DOM_TIMER_THROTTLING feature which throttles DOM timers
+ on hidden pages to WebKitFeatures.cmake and cmakeconfig.h.cmake.
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-10-11 Ryosuke Niwa <rniwa@webkit.org>
+
+ Perf-o-matic build fixes.
+
+ Get the password from the first item of the array now that each JSON contains an array as
+ the top-level structure instead of a dictionary, which is the first item in the array.
+
+ Remove spaces after comma to save space in Runs objects to work-around the AppEngine's
+ object size limit. This should buy us a couple of days. We'll implement a proper fix later.
+
+ * Websites/webkit-perf.appspot.com/models.py:
+ (Runs.update_incrementally):
+ * Websites/webkit-perf.appspot.com/models_unittest.py:
+ (RunsTest.test_update_or_insert):
+ * Websites/webkit-perf.appspot.com/report_handler.py:
+ (ReportHandler.post):
+
+2012-10-10 Tony Chang <tony@chromium.org>
+
+ Unreviewed, rolling out r130937, r130949, r130955, and
+ r130957.
+ http://trac.webkit.org/changeset/130937
+ http://trac.webkit.org/changeset/130949
+ http://trac.webkit.org/changeset/130955
+ http://trac.webkit.org/changeset/130957
+ https://bugs.webkit.org/show_bug.cgi?id=94290
+
+ Breaks Qt build
+
+ * Source/cmake/WebKitMacros.cmake:
+
+2012-10-10 Pablo Flouret <pablof@motorola.com>
+
+ Pre-process CSSGrammar.y before running through bison.
+ https://bugs.webkit.org/show_bug.cgi?id=94290
+
+ Reviewed by Tony Chang.
+
+ * Source/cmake/WebKitMacros.cmake:
+ Use WebCore/css/makegrammar.pl to generate bison grammar files.
+
+2012-10-10 Simon Fraser <simon.fraser@apple.com>
+
+ Attempt to fix gtk build which controls exports via this mysteriously-named
+ file.
+
+ * Source/autotools/symbols.filter:
+
+2012-10-10 Shinya Kawanaka <shinyak@chromium.org>
+
+ Needs internal API to return distributed nodes for InsertionPoint
+ https://bugs.webkit.org/show_bug.cgi?id=98868
+
+ Reviewed by Hajime Morita.
+
+ * Source/autotools/symbols.filter:
+
+2012-10-10 Yong Li <yoli@rim.com>
+
+ [BlackBerry] Define WTF_USE_EXTRA_MACROS in cmake rather than Platform.h
+ https://bugs.webkit.org/show_bug.cgi?id=98819
+
+ Reviewed by Rob Buis.
+
+ And make it depend on SHARED_CORE
+ RIM PR# 221339.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+
+2012-10-10 Keishi Hattori <keishi@webkit.org>
+
+ REGRESSION (r129738): Calendar picker is too wide when the input is rtl
+ https://bugs.webkit.org/show_bug.cgi?id=98881
+
+ Reviewed by kent Tamura.
+
+ * ManualTests/forms/calendar-picker.html: Added isCalendarRTL parameters.
+
+2012-10-10 Christophe Dumez <christophe.dumez@intel.com>
+
+ [EFL][WK2] Port MiniBrowser to Elementary
+ https://bugs.webkit.org/show_bug.cgi?id=98748
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Bump EFL librairies dependencies to v1.7
+ and add Elementary as optional dependency now
+ that it is needed to build MiniBrowser.
+
+ * Source/cmake/FindEet.cmake: Added.
+ * Source/cmake/FindElementary.cmake: Added.
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-10-09 Simon Pena <spena@igalia.com>
+
+ [GTK] Add support for running JavaScript from GResources
+ https://bugs.webkit.org/show_bug.cgi?id=98488
+
+ Reviewed by Carlos Garcia Campos.
+
+ GResources allow embedding certain resources, frequently used, in a "bundle"
+ which can be kept separated or stored in the binary. This patch adds
+ support for running JavaScript from GResources.
+
+ * configure.ac: Add support for compiling GResources
+
+2012-10-09 Zan Dobersek <zandobersek@gmail.com>
+
+ Unreviewed GTK build fix after r130689.
+
+ Adding a required symbol to symbols.filter.
+
+ * Source/autotools/symbols.filter:
+
+2012-10-08 Laszlo Gombos <l.gombos@samsung.com>
+
+ [EFL] Add minimum version information for tool dependencies
+ https://bugs.webkit.org/show_bug.cgi?id=97592
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Capture the minimum version information for the tools that are required
+ to build the EFL port (or more generally WebKit).
+
+ * CMakeLists.txt:
+
+2012-10-08 Dongwoo Joshua Im <dw.im@samsung.com>
+
+ [EFL] Fix build break when WEB_AUDIO is enabled.
+ https://bugs.webkit.org/show_bug.cgi?id=98635
+
+ Unreviewed build fix.
+
+ Build error is occurred because of the new flag, ENABLE_LEGACY_WEB_AUDIO,
+ which was introduced by https://bugs.webkit.org/show_bug.cgi?id=97050.
+
+ * Source/cmakeconfig.h.cmake: Add ENABLE_LEGACY_WEB_AUDIO.
+
+2012-10-08 Joone Hur <joone.hur@intel.com>
+
+ [EFL] Add support for -webkit-sticky
+ https://bugs.webkit.org/show_bug.cgi?id=95182
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Turn on CSS sticky position by default for WebKitEfl,
+ but most of the CSS sticky position test cases still do not pass on WK1.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-10-05 José Dapena Paz <jdapena@igalia.com>
+
+ [GTK] Add support for creating EGL contexts
+ https://bugs.webkit.org/show_bug.cgi?id=77921
+
+ Reviewed by Martin Robinson.
+
+ This patch adds support for EGL, using OpenGL and OpenGL ES 2. Both
+ options are set up on compile time, with the configure options
+ --enable-egl and --enable-gles2.
+
+ The implementation only adds support for EGL on top of X11, to
+ isolate the changes to the minimum. More changes should come
+ later to enable EGL for other targets (as Wayland).
+
+ * GNUmakefile.am:
+ * configure.ac: new configure options --enable-egl and --enable-gles2.
+
+2012-10-04 Rob Buis <rbuis@rim.com>
+
+ [BlackBerry] Sync up CMake files
+ https://bugs.webkit.org/show_bug.cgi?id=98442
+
+ Reviewed by Gyuyoung Kim.
+
+ Amongst others some internal paths changed.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+
+2012-10-04 Christophe Dumez <christophe.dumez@intel.com>
+
+ [EFL] Add libxml 2.8.0 to jhbuild
+ https://bugs.webkit.org/show_bug.cgi?id=98418
+
+ Reviewed by Laszlo Gombos.
+
+ Bump dependency for libxml to 2.8.0 to match
+ jhbuild.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-10-04 Balazs Kelemen <kbalazs@webkit.org>
+
+ Don't allow to disable compositing in forced compositing mode
+ https://bugs.webkit.org/show_bug.cgi?id=98048
+
+ Reviewed by Jocelyn Turcotte.
+
+ Export Settings::setAcceleratedCompositingEnabled because it has been deinlined.
+
+ * Source/autotools/symbols.filter:
+
+2012-10-03 Ryuan Choi <ryuan.choi@samsung.com>
+
+ [EFL] Default.edj should be generated although ENABLE_WEBKIT disabled.
+ https://bugs.webkit.org/show_bug.cgi?id=97753
+
+ Reviewed by Laszlo Gombos.
+
+ default.edj is used in both webkit/efl and webkit2/efl.
+ However, it has been generated only when ENABLE_WEBKIT is enabled.
+
+ This patch separates the script which generates default.edj
+ from source/webkit/platformefl.cmake.
+
+ * Source/CMakeLists.txt:
+ * Source/PlatformEfl.cmake: Added to generate custom target for default theme.
+ * Source/cmake/OptionsEfl.cmake:
+ Moved directory generation from WebKit/PlatformEfl.cmake
+ because THEME_BINARY_DIR is used for both Default Theme and control theme in Tools.
+
+2012-10-03 Otto Derek Cheung <otcheung@rim.com>
+
+ [BlackBerry] Implementing the NetworkInfo API for BB port
+ https://bugs.webkit.org/show_bug.cgi?id=98273
+
+ Reviewed by Rob Buis.
+
+ Adding references to new classes added to support BlackBerry's
+ NetworkInfo implementation.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+
+2012-10-01 Keishi Hattori <keishi@webkit.org>
+
+ Calendar picker should use zero as default step base
+ https://bugs.webkit.org/show_bug.cgi?id=97976
+
+ Reviewed by Kent Tamura.
+
+ * ManualTests/forms/calendar-picker.html: Added stepBase parameters.
+
+2012-09-28 Mariusz Grzegorczyk <mariusz.g@samsung.com>
+
+ [WK2][GTK][EFL] Share WebKit2-GTK plugin process implementation with EFL port
+ https://bugs.webkit.org/show_bug.cgi?id=91844
+
+ Reviewed by Simon Hausmann.
+
+ Turn on Netscape Plugin API by default for WebKit2-Efl.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-09-28 Alpha Lam <hclam@chromium.org>
+
+ REGRESSION(r122215) - CachedImage::likelyToBeUsedSoon crashes on accessing a deleted CachedImageClient
+ https://bugs.webkit.org/show_bug.cgi?id=97749
+
+ Reviewed by James Robinson.
+
+ Added a manual test to demonstrate drag image and crashing.
+
+ * ManualTests/drag-image-no-crash.html: Added.
+
+2012-09-27 Keishi Hattori <keishi@webkit.org>
+
+ SuggestionPicker should support rtl
+ https://bugs.webkit.org/show_bug.cgi?id=97555
+
+ Reviewed by Kent Tamura.
+
+ * ManualTests/forms/calendar-picker.html: Added tests for Arabic with datalist.
+
+2012-09-27 Patrick Gansterer <paroga@webkit.org>
+
+ [WINCE] Enable JIT by default
+
+ * Source/cmake/OptionsWinCE.cmake:
+
+2012-09-26 Martin Robinson <mrobinson@igalia.com>
+
+ [GTK] Use XDamage to simplify RedirectedXCompositeWindow
+ https://bugs.webkit.org/show_bug.cgi?id=97267
+
+ Reviewed by Alejandro G. Castro.
+
+ Use XDamage to queue redraws of the widget when redirecting accelerated compositing
+ to an offscreen window. This allows removing a finicky timer-based approach, improves
+ performance, and allows simplifying things greatly.
+
+ * configure.ac: Add support for finding XDamage via pkg-config.
+
+2012-09-26 Simon Hausmann <simon.hausmann@digia.com>
+
+ [Qt] Remove Qt Quick 1 support
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ It is being moved to the Qt5 QtQuick1 module.
+
+ * Source/tests.pri:
+
+2012-09-26 Zan Dobersek <zandobersek@gmail.com>
+
+ [GTK] Enable some of the unstable CSS features
+ https://bugs.webkit.org/show_bug.cgi?id=97572
+
+ Reviewed by Martin Robinson.
+
+ Export the required RuntimeEnabledFeatures symbol.
+
+ * Source/autotools/symbols.filter:
+
+2012-09-25 Cosmin Truta <ctruta@rim.com>
+
+ [BlackBerry] Enable LLInt
+ https://bugs.webkit.org/show_bug.cgi?id=97604
+
+ Reviewed by Yong Li.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+
+2012-09-25 Ryosuke Niwa <rniwa@webkit.org>
+
+ Perf-o-matic should store "values" and support array'ed input
+ https://bugs.webkit.org/show_bug.cgi?id=97601
+
+ Reviewed by Dirk Pranke.
+
+ Support new JSON format where the outermost structure is an array instead of a dictionary and results may
+ contain "values". This change will let us remove some code from run-perf-tests.
+
+ Old: {"webkit-revision": 123456, "results": {"test": {"avg": 123}}
+ New: [{"webkit-revision": 123456, "results": {"test": {"avg": 123, values: [122, 123, 124]}}}]
+
+ * Websites/webkit-perf.appspot.com/app.yaml: Incremented the version number.
+ * Websites/webkit-perf.appspot.com/models.py:
+ (TestResult): Added values property.
+ (TestResult.get_or_insert_from_parsed_json): Pass in "values" to the constructor if the value is present.
+ (ReportLog.get_value): Use the first item in the array if self._parsed uses the new format.
+ (ReportLog.results_are_well_formed): Verifies that items in "values" are floats convertible. Also verify that
+ if the JSON uses new format, there is exactly one set of results. In theory, we could support multiple results
+ but we don't do that now for its complexity.
+ * Websites/webkit-perf.appspot.com/models_unittest.py:
+ (TestResultTests.test_get_or_insert_stat_value): Make sure values is present and is an empty list.
+ (TestResultTests.test_get_or_insert_stat_value_with_values): Added.
+ (ReportLogTests.test_results_are_well_formed):
+ (ReportLogTests.test_chromium_revision): Renamed from chromium_revision so that it actually runs.
+ (ReportLogTests.test_results_in_array):
+
+2012-09-25 Laszlo Gombos <l.gombos@samsung.com>
+
+ [EFL] Update minimal required versions for dependencies
+ https://bugs.webkit.org/show_bug.cgi?id=97523
+
+ Reviewed by Gyuyoung Kim.
+
+ Use the same versions numbers for dependencies as in Tools/efl/jhbuild.modules.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-09-24 Simon Hausmann <simon.hausmann@digia.com>
+
+ [Qt] Fix build with latest Qt 5
+ https://bugs.webkit.org/show_bug.cgi?id=97479
+
+ Reviewed by Tor Arne Vestbø.
+
+ Define MODULE_BASE_DIR before loading qt_module.prf, which now calls syncqt. MODULE_BASE_DIR is
+ passed as last parameter (source dir) to syncqt now, so set it to the directory that contains
+ sync.profile.
+
+ * Source/api.pri:
+
+2012-09-24 Bo Liu <boliu@chromium.org>
+
+ Reland "Add in-place reload behavior to ImagesEnabled setting" with optimizations
+ https://bugs.webkit.org/show_bug.cgi?id=97055
+
+ Reviewed by Adam Barth.
+
+ Relanding 128780, 128676, 128645. Was reverted in 128914 due to
+ performance regression in Chromium.
+
+ New changes in addition to previously reverted patches:
+
+ Refactored CachedResource::requestResource, loadResource, and
+ revalidateResource. Moved CachedResource::load method to end of
+ requestResource so there is one place where load is called for all
+ resources.
+
+ Added a enum parameter for requestResource and
+ determineRevalidationPolicy so that FrameLoaderClient::allowImage call
+ do not need to be called multiple times.
+
+ Removed CachedImage::load call in requestImage so it is not called
+ twice.
+
+ Removed unnecessary Frame.h includes in CachedResource and
+ CachedImage.
+
+ Removed dead load() method declaration in CachedImage.
+
+ Updated text expectation for two image-permissions tests to reflect
+ the removed calls to allowImage.
+
+ * Source/autotools/symbols.filter:
+
+2012-09-24 Byungwoo Lee <bw80.lee@samsung.com>
+
+ [CMake] Change hardcoded 'lib' and 'bin' in CMakeLists.txt to 'LIB_INSTALL_DIR' and 'EXEC_INSTALL_DIR'.
+ https://bugs.webkit.org/show_bug.cgi?id=97419
+
+ Reviewed by Gyuyoung Kim.
+
+ Use the value of LIB_INSTALL_DIR and EXEC_INSTALL_DIR instead of
+ hardcoding 'lib' and 'bin' for CMAKE_{ARCHIVE,LIBRARY,RUNTIME}_OUTPUT_DIRECTORY.
+
+ * CMakeLists.txt:
+ Use ${LIB_INSTALL_DIR} instead of hardcoding "lib".
+ Use ${EXEC_INSTALL_DIR} instead of hardcoding "bin".
+
+2012-09-24 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r129343.
+ http://trac.webkit.org/changeset/129343
+ https://bugs.webkit.org/show_bug.cgi?id=97479
+
+ It broke the build (Requested by Ossy_NIGHT on #webkit).
+
+ * Source/api.pri:
+
+2012-09-24 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r129388.
+ http://trac.webkit.org/changeset/129388
+ https://bugs.webkit.org/show_bug.cgi?id=97477
+
+ Caused an assertion in a WebKit2 unit test (Requested by
+ abarth on #webkit).
+
+ * Source/autotools/symbols.filter:
+
+2012-09-24 Dominik Röttsches <dominik.rottsches@intel.com>
+
+ [EFL][DRT] Enable Regions support
+ https://bugs.webkit.org/show_bug.cgi?id=83897
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Default build setting for CSS regions set to on.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-09-24 Bo Liu <boliu@chromium.org>
+
+ Reland "Add in-place reload behavior to ImagesEnabled setting" with optimizations
+ https://bugs.webkit.org/show_bug.cgi?id=97055
+
+ Reviewed by Adam Barth.
+
+ Relanding 128780, 128676, 128645. Was reverted in 128914 due to
+ performance regression in Chromium.
+
+ New changes in addition to previously reverted patches:
+
+ Refactored CachedResource::requestResource, loadResource, and
+ revalidateResource. Moved CachedResource::load method to end of
+ requestResource so there is one place where load is called for all
+ resources.
+
+ Added a enum parameter for requestResource and
+ determineRevalidationPolicy so that FrameLoaderClient::allowImage call
+ do not need to be called multiple times.
+
+ Removed CachedImage::load call in requestImage so it is not called
+ twice.
+
+ Removed unnecessary Frame.h includes in CachedResource and
+ CachedImage.
+
+ Removed dead load() method declaration in CachedImage.
+
+ Updated text expectation for two image-permissions tests to reflect
+ the removed calls to allowImage.
+
+ * Source/autotools/symbols.filter:
+
+2012-09-24 Vivek Galatage <vivekgalatage@gmail.com>
+
+ Web Inspector: implement testing harness for pure protocol tests.
+ https://bugs.webkit.org/show_bug.cgi?id=90675
+
+ Reviewed by Yury Semikhatsky.
+
+ Added export symbols required for Gtk+ to support the Inspector Protocol
+ testing harness.
+
+ * Source/autotools/symbols.filter:
+
+2012-09-24 Simon Hausmann <simon.hausmann@digia.com>
+
+ [Qt] Fix build with latest Qt 5
+
+ Reviewed by Tor Arne Vestbø.
+
+ Define MODULE_BASE_DIR before loading qt_module.prf, which now calls syncqt. MODULE_BASE_DIR is
+ passed as last parameter (source dir) to syncqt now, so set it to the directory that contains
+ sync.profile.
+
+ * Source/api.pri:
+
+2012-09-23 Keishi Hattori <keishi@webkit.org>
+
+ Add suggestionPicker to CalendarPicker
+ https://bugs.webkit.org/show_bug.cgi?id=97201
+
+ Reviewed by Kent Tamura.
+
+ * ManualTests/forms/calendar-picker.html: Added tests for SuggestionPicker.
+
+2012-09-21 Ami Fischman <fischman@chromium.org>
+
+ HTMLMediaElement isn't garbage collected between document reloads
+ https://bugs.webkit.org/show_bug.cgi?id=97020
+
+ Reviewed by Eric Carlson.
+
+ Manual test added: ManualTests/audio-freed-during-reload.html
+
+ * ManualTests/audio-freed-during-reload.html:
+
+2012-09-21 Chris Rogers <crogers@google.com>
+
+ Add Web Audio support for deprecated/legacy APIs
+ https://bugs.webkit.org/show_bug.cgi?id=97050
+
+ Reviewed by Eric Carlson.
+
+ * Source/cmake/WebKitFeatures.cmake:
+
+2012-09-21 Simon Hausmann <simon.hausmann@digia.com>
+
+ [Qt] Bail out when trying to build WebKit with Qt != 5
+
+ Reviewed by Tor Arne Vestbø.
+
+ Moved check for Qt version out of default_pre into top-level WebKit.pro,
+ because we never reach default_pre.prf due to the lack of .qmake.conf support
+ in older versions of Qt/QMake.
+
+ * WebKit.pro:
+
+2012-09-20 Simon Hausmann <simon.hausmann@digia.com>
+
+ [Qt] QtWebKit module header includes private dependencies
+
+ Reviewed by Tor Arne Vestbø.
+
+ Moved loading of webkit_modules.prf a few lines down after the definition
+ of QT_API_DEPENDS, because webkit_modules.prf does the sanitization of the
+ QT variable now and therefore needs QT_API_DEPENDS.
+
+ * Source/api.pri:
+
+2012-09-18 Sailesh Agrawal <sail@chromium.org>
+
+ Chromium: Scrollbar with tickmarks doesn't respond to clicks
+ https://bugs.webkit.org/show_bug.cgi?id=96049
+
+ Reviewed by Beth Dakin.
+
+ Update exported symbols.
+
+ * Source/autotools/symbols.filter:
+
+2012-09-18 Bo Liu <boliu@chromium.org>
+
+ Revert 128780, 128676, 128645
+ https://bugs.webkit.org/show_bug.cgi?id=97022
+
+ Reviewed by Adam Barth.
+
+ I made these revisions to add in-place reload behavior to ImagesEnabled setting.
+ Reverting this for now due to them causing performance regression in
+ chromium, possibly caused by increased calls to
+ PermissionClient::imageAllowed.
+
+ * Source/autotools/symbols.filter:
+
+2012-09-18 Ryuan Choi <ryuan.choi@samsung.com>
+
+ [CMAKE] Fix build break because of memory exhausted.
+ https://bugs.webkit.org/show_bug.cgi?id=77327
+
+ Reviewed by Gyuyoung Kim.
+
+ Added to avoid memory exhaustion on 32bit linux debug build.
+
+ * Source/cmake/OptionsCommon.cmake:
+
+2012-09-17 Rob Buis <rbuis@rim.com>
+
+ [BlackBerry] Enable VIDEO_TRACK
+ https://bugs.webkit.org/show_bug.cgi?id=96949
+
+ Reviewed by Antonio Gomes.
+
+ Turn on VIDEO_TRACK feature.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+
+2012-09-17 Zan Dobersek <zandobersek@gmail.com>
+
+ [Gtk] Remove configuration options for stable features that are currently enabled
+ https://bugs.webkit.org/show_bug.cgi?id=96621
+
+ Reviewed by Martin Robinson.
+
+ Remove configuration flags that were used for either features that were enabled
+ by default or were enabled only when unstable features support was enabled. In
+ any case the feature was removed only if it does not introduce a dependency.
+
+ * configure.ac:
+
+2012-09-17 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Auto-generate the module pri file for QtWebKit
+
+ Reviewed by Simon Hausmann.
+
+ * Source/api.pri:
+
+2012-09-14 Julien Chaffraix <jchaffraix@webkit.org>
+
+ Revert r127457 and following fixes due to several hit-testing regressions
+ https://bugs.webkit.org/show_bug.cgi?id=96830
+
+ Reviewed by Antonio Gomes.
+
+ This change reverts r127457, r127863 and r128505.
+
+ * Source/autotools/symbols.filter:
+
+2012-09-14 Adam Barth <abarth@webkit.org>
+
+ Remove webkitPostMessage
+ https://bugs.webkit.org/show_bug.cgi?id=96577
+
+ Reviewed by Ojan Vafai.
+
+ Add ENABLE_LEGACY_VENDOR_PREFIXES flag.
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-09-14 Jeffrey Pfau <jpfau@apple.com>
+
+ Allow third-party storage blocking setting to change while a page is loaded
+ https://bugs.webkit.org/show_bug.cgi?id=95790
+
+ Reviewed by Brady Eidson.
+
+ Update exported symbols.
+
+ * Source/autotools/symbols.filter:
+
+2012-09-14 Bo Liu <boliu@chromium.org>
+
+ Add in-place reload behavior to ImagesEnabled setting
+ https://bugs.webkit.org/show_bug.cgi?id=95478
+
+ Reviewed by Adam Barth.
+
+ Export WebCore::Settings::setImagesEnabled symbol.
+
+ * Source/autotools/symbols.filter:
+
+2012-09-14 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Fix handling of debug/release/debug_and_release/build_all
+
+ We now pick up the defaults from Qt, in default_pre (CONFIG already
+ contains the appropriate values for debug and release). We then let
+ the command line arguments to qmake, or the project files themselves,
+ override the configuration, and finally we sanitize the configuration
+ in default_post.
+
+ Reviewed by Simon Hausmann.
+
+ * Source/api.pri:
+
+2012-09-14 Keishi Hattori <keishi@webkit.org>
+
+ Add runtime flag that enables lang attribute for form controls in LayoutTests
+ https://bugs.webkit.org/show_bug.cgi?id=96636
+
+ Reviewed by Kent Tamura.
+
+ * Source/autotools/symbols.filter:
+
+2012-09-13 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
+
+ [CMake] Remove some redundant warning flags and enable a few more warnings.
+ https://bugs.webkit.org/show_bug.cgi?id=96654
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ * Source/cmake/WebKitHelpers.cmake: Remove a few warning flags
+ which are already enabled by -Wall and -Wextra, remove -W which
+ looks useless and also enable a few more warnings by removing
+ their -Wno-foo counterparts which were present.
+
+2012-09-13 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Ensure that QT is finalized before loading qt_module.prf
+
+ As qt_module.prf does dependency tracking based on the content of the
+ QT variable. The intermediate WebKit modules modify the variable in
+ their .pri files, so we have to ensure we've loaded all the modules
+ before loading qt_module.
+
+ Reviewed by Tor Arne Vestbø.
+ Patch by Oswald Buddenhagen <oswald.buddenhagen@nokia.com> on 2012-09-13
+
+ * Source/api.pri:
+
+2012-09-13 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Make sure LIBS, PKGCONFIG, and QT, do not affect QtWebKit's prl file
+
+ Unless it's actually a dependency of the public QtWebKit API.
+
+ We could replace every occurance of LIBS, PKGCONFIG, and QT, in the pri
+ files with their _PRIVATE equivivalent, but that's likely to break when
+ someone adds a new QT/LIBS/PKGCONFIG += foo line somewhere. Instead we
+ clean up the variables in default_post.
+
+ This means that the CONFIG -= explicitlib in linkAgainstLibrary() is no
+ longer needed, as it was a workaround for the intermediate libraries ending
+ up in the prl file. And, since CONFIG -= staticlib was there to support
+ the explicitlib option, we can remove that too (as well as the exception
+ for gprof, since it would be empty). If gprof needs tweaks to always link
+ statically they should go in gprof.prf.
+
+ Reviewed by Simon Hausmann.
+
+ * Source/api.pri:
+
+2012-09-13 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
+
+ [Qt] Fllow rename of qt_module_config.prf to qt_module.prf
+
+ Reviewed by Tor Arne Vestbø.
+
+ * Source/api.pri:
+
+2012-09-13 Simon Hausmann <simon.hausmann@nokia.com>
+
+ [Qt] syncqt isn't re-run when WebKit1.pro changes and we're building with --no-webkit2
+ https://bugs.webkit.org/show_bug.cgi?id=96545
+
+ Reviewed by Tor Arne Vestbø.
+
+ Do the QMAKE_INTERNAL_INCLUDED_FILES trick separately for WebKit1.pro and WebKit2/Target.pri,
+ depending on build?(webkit1) and build?(webkit2), as discussed earlier.
+
+ * Source/api.pri:
+
+2012-09-12 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r127876.
+ http://trac.webkit.org/changeset/127876
+ https://bugs.webkit.org/show_bug.cgi?id=96600
+
+ mouse click doesn't work for spin button if spin button in
+ iframe (Requested by yosin on #webkit).
+
+ * Source/autotools/symbols.filter:
+
+2012-09-12 KyungTae Kim <ktf.kim@samsung.com>
+
+ [EFL] Support download attribute feature
+ https://bugs.webkit.org/show_bug.cgi?id=96462
+
+ Reviewed by Gyuyoung Kim.
+
+ * Source/cmake/OptionsEfl.cmake: Enable DOWNLOAD_ATTRIBUTE feature.
+
+2012-09-12 Sami Kyostila <skyostil@google.com>
+
+ Rename OVERFLOW_SCROLLING as ACCELERATED_OVERFLOW_SCROLLING
+ https://bugs.webkit.org/show_bug.cgi?id=96251
+
+ Reviewed by Simon Fraser.
+
+ Rename OVERFLOW_SCROLLING as ACCELERATED_OVERFLOW_SCROLLING to better describe
+ the feature it controls.
+
+ * Source/cmakeconfig.h.cmake:
+
+2012-09-11 Ryuan Choi <ryuan.choi@samsung.com>
+
+ [CMAKE] Supply feature defines to CodeGeneratorTestRunner.
+ https://bugs.webkit.org/show_bug.cgi?id=96273
+
+ Reviewed by Gyuyoung Kim.
+
+ * Source/cmake/WebKitFeatures.cmake: Generated FEATURE_DEFINES_WITH_SPACE_SEPARATOR.
+
+2012-09-11 Arnaud Renevier <a.renevier@sisa.samsung.com>
+
+ [Gtk] allow building with css-shaders
+ https://bugs.webkit.org/show_bug.cgi?id=95603
+
+ Reviewed by Martin Robinson.
+
+ if unstable features and accelerated compositing are turned on, and
+ acceleration backend is opengl, then build CSS Shaders and CSS
+ Filters.
+
+ * configure.ac:
+
+2012-09-11 Marcelo Lira <marcelo.lira@openbossa.org>
+
+ Restore original value of mock scrollbars enabled in InternalSettings
+ https://bugs.webkit.org/show_bug.cgi?id=87680
+
+ Reviewed by Adam Barth.
+
+ Added backup support for mock scrollbars state in
+ InternalSettings::Backup, and removed support for these
+ from Qt's DumpRenderTree.
+
+ * Source/autotools/symbols.filter:
+
+2012-09-11 Raphael Kubo da Costa <rakuco@webkit.org>
+
+ [EFL] Rewrite the EFL-related Find modules
+ https://bugs.webkit.org/show_bug.cgi?id=95237
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ FindEFL.cmake had several problems which caused unnecessary trouble
+ when building the EFL port under some setups:
+
+ o It looked for some modules (such as ecore) more than once for no
+ reason, which led to people adding libraries and include paths in
+ different ways across the build system.
+
+ o It depended on pkg-config being present for the searches to
+ succeed.
+
+ o It obtained the library definitions from pkg-config, so
+ ${FOO_LIBRARIES} would be set to something like "foo;bar" which
+ expanded to "-lfoo -lbar" to the linker. If a wrong -L<path> was
+ passed before that, the wrong library installation would end up
+ being picked up.
+
+ o Due to the problem above, we also needed to set the LINK_FLAGS
+ property for each target with the value of ${FOO_LDFLAGS}, which was
+ also obtained from pkg-config and sort of compensated the fact that
+ the libraries did not use absolute paths and added the required -L
+ paths. This also included dependencies for these libraries, so we
+ ended up including libraries indirectly, which is bad.
+
+ We have now replaced that file with a set of Find-modules which are
+ much more granular, each of them responsible for looking for a
+ single library and its components and setting library and include
+ locations the right way (with FIND_PATH() and FIND_LIBRARY()), so
+ that all the problems above are fixed.
+
+ * Source/cmake/EFLHelpers.cmake: Added.
+ * Source/cmake/FindEDBus.cmake: Added.
+ * Source/cmake/FindEFL.cmake: Removed.
+ * Source/cmake/FindEcore.cmake: Added.
+ * Source/cmake/FindEdje.cmake: Added.
+ * Source/cmake/FindEeze.cmake: Added.
+ * Source/cmake/FindEfreet.cmake: Added.
+ * Source/cmake/FindEina.cmake: Added.
+ * Source/cmake/FindEvas.cmake: Added.
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-09-11 Simon Hausmann <simon.hausmann@nokia.com>
+
+ [Qt] In-source builds are broken
+
+ Reviewed by Tor Arne Vestbø.
+
+ The Tools sub-directory contains a Makefile checked into SVN. For in-source builds let's not try to
+ overwrite it but instead generate a dedicated Makefile.Tools.
+
+ * Makefile:
+ * WebKit.pro:
+
+2012-09-11 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Add a configure step to the Qt build system
+
+ This allows building the Qt port using just 'qmake WebKit.pro'. Using
+ the build-webkit script is still supported, and will add slightly more
+ logic to the build, such as detecting the need for clean or incremental
+ builds.
+
+ Internally, the build system now uses a new variable, WEBKIT_CONFIG, for
+ all things related to configuring the build, such as use/have/enable flags,
+ and these are translated to defines in default_post. Project files should
+ no longer check contains(DEFINES,...) to detect features, but use the new
+ enable?(), use?(), and have?() functions. The no_webkit1 and no_webkit2
+ options have been translated into WEBKIT_CONFIG options as well, and can
+ be checked using build?().
+
+ Reviewed by Simon Hausmann.
+
+ * Source/QtWebKit.pro:
+ * Source/api.pri:
+ * Source/tests.pri:
+ * WebKit.pro:
+
+2012-09-10 Thiago Marcos P. Santos <thiago.santos@intel.com>
+
+ [CMake][EFL] Enable the LLInt
+ https://bugs.webkit.org/show_bug.cgi?id=92682
+
+ Reviewed by Csaba Osztrogonác.
+
+ Added LLInt to CMake buildsystem and enabled it by default on EFL.
+ Note that Ruby is not enforced: a secondary check is done when LLInt
+ is enabled on the JSC's CMakeLists.txt.
+
+ * CMakeLists.txt:
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-09-07 Simon Fraser <simon.fraser@apple.com>
+
+ box-shadow causes overlay scrollbars to be in the wrong position when element is composited
+ https://bugs.webkit.org/show_bug.cgi?id=85647
+
+ Reviewed by James Robinson.
+
+ Test overlay scrollbars in composited layers.
+
+ * ManualTests/scrollbars/scrollbars-in-composited-layers.html: Added.
+
+2012-09-07 Martin Robinson <mrobinson@igalia.com>
+
+ [GTK] Move user agent helpers to WebCore
+ https://bugs.webkit.org/show_bug.cgi?id=95745
+
+ Reviewed by Carlos Garcia Campos.
+
+ Added an autoconf step for the new user agent shared code header in
+ WebCore. This is necessary so that we can use the user agent version
+ based on the information in the configure.ac file.
+
+ * configure.ac:
+
+2012-09-07 Allan Sandfeld Jensen <allan.jensen@nokia.com>
+
+ Simplify hitTestResultAtPoint and nodesFromRect APIs
+ https://bugs.webkit.org/show_bug.cgi?id=95720
+
+ Reviewed by Antonio Gomes.
+
+ Update exported symbols.
+
+ * Source/autotools/symbols.filter:
+
+2012-09-07 Zan Dobersek <zandobersek@gmail.com>
+
+ [GTK] Multiple feature defines in webcore_cppflags can occur
+ https://bugs.webkit.org/show_bug.cgi?id=95942
+
+ Reviewed by Martin Robinson.
+
+ Add the feature_defines_unstable variable that should control values of feature
+ defines for unstable features when unstable features are not enabled (e.g. release builds).
+
+ * GNUmakefile.am:
+
+2012-09-06 Zan Dobersek <zandobersek@gmail.com>
+
+ [Gtk] Remove configuration options for features that are not supported by the Gtk port
+ https://bugs.webkit.org/show_bug.cgi?id=87664
+
+ Reviewed by Martin Robinson.
+
+ Remove configuration options for features that are completely unsupported by the GTK port.
+ They only bloat the configure.ac file. They should be re-added when the feature becomes
+ supported and introduces an external dependency that the users might want to avoid.
+
+ * configure.ac:
+
+2012-09-06 Simon Hausmann <simon.hausmann@nokia.com>
+
+ [Qt] Fix build with ANGLE on platforms that provide EGL/GLESv2
+ https://bugs.webkit.org/show_bug.cgi?id=95965
+
+ Reviewed by Tor Arne Vestbø.
+
+ Add ANGLE as separate static library to the build and dependencies.
+
+ * Source/api.pri:
+ * WebKit.pro:
+
+2012-09-05 George Staikos <staikos@webkit.org>
+
+ [BlackBerry] Match th ebuild flags from the platform library
+ https://bugs.webkit.org/show_bug.cgi?id=95423
+
+ Reviewed by Antonio Gomes.
+
+ Unaligned build flags can cause crashes and other strange behavior.
+ These two were not defined here but were defined on the system.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+
+2012-09-05 Kaustubh Atrawalkar <kaustubh@motorola.com>
+
+ [DRT] LTC:: Move printing related APIs from LayoutTestController to Internals
+ https://bugs.webkit.org/show_bug.cgi?id=92735
+
+ Reviewed by Hajime Morita.
+
+ Move numberOfPages, pageProperty & pageSizeAndMarginsInPixels in Internals and remove duplicated code from DumprenderTree & WebkitTestRunner.
+ Added symbols for GTK builds for corresponding APIs.
+
+ * Source/autotools/symbols.filter:
+
+2012-09-04 Julien Chaffraix <jchaffraix@webkit.org>
+
+ REGRESSION(r120832): RenderLayer::clampScrollOffset doesn't properly clamp
+ https://bugs.webkit.org/show_bug.cgi?id=95776
+
+ Reviewed by Simon Fraser.
+
+ * ManualTests/select-menu-list-wrongly-positioned.html: Added.
+
+2012-09-04 Michał Pakuła vel Rutka <m.pakula@samsung.com>
+
+ [EFL] Context menu restore.
+ https://bugs.webkit.org/show_bug.cgi?id=74179
+
+ Reviewed by Gyuyoung Kim.
+
+ Adds context menu support for EFL port using non-CROSS_PLATFORM_CONTEXT_MENUS
+ approach, the same as used in WebKit2.
+
+ * Source/cmake/OptionsEfl.cmake: Turn on CONTEXT_MENUS flag for EFL port
+
+2012-09-04 Allan Sandfeld Jensen <allan.jensen@nokia.com>
+
+ Allow child-frame content in hit-tests.
+ https://bugs.webkit.org/show_bug.cgi?id=95204
+
+ Reviewed by Antonio Gomes.
+
+ Update exported symbols.
+
+ * Source/autotools/symbols.filter:
+
+2012-09-04 Jinwoo Song <jinwoo7.song@samsung.com>
+
+ [CMAKE] Update cmakeconfig.h.cmake
+ https://bugs.webkit.org/show_bug.cgi?id=95712
+
+ Reviewed by Gyuyoung Kim.
+
+ Update feature definitions which are missing compared to WebKitFeatures.cmake
+
+ * Source/cmakeconfig.h.cmake:
+
+2012-09-03 Jinwoo Song <jinwoo7.song@samsung.com>
+
+ [EFL] Use WebKitVersion.h to get version information
+ https://bugs.webkit.org/show_bug.cgi?id=95669
+
+ Reviewed by Gyuyoung Kim.
+
+ WEBKIT_USER_AGENT_MAJOR_VERSION and WEBKIT_USER_AGENT_MINOR_VERSION
+ are defined as constant in the OptionsEfl.cmake. But we do not need
+ to define these here but can use the defined constant in WebKitVersion.h.
+
+ WebKitVersion.h is already generated with the version information
+ from the Source/WebCore/Configurations/Version.xcconfig.
+
+ * Source/cmake/OptionsEfl.cmake: Do not set WEBKIT_USER_AGENT_* variables.
+ * Source/cmakeconfig.h.cmake: Remove WEBKIT_USER_AGENT_* definitions
+ as no more port uses.
+
+2012-08-31 Tony Chang <tony@chromium.org>
+
+ Remove ENABLE_CSS3_FLEXBOX compile time flag
+ https://bugs.webkit.org/show_bug.cgi?id=95382
+
+ Reviewed by Ojan Vafai.
+
+ Everyone is already enabling this by default and the spec has stablized.
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+ * configure.ac:
+
+2012-08-30 JungJik Lee <jungjik.lee@samsung.com>
+
+ [EFL][WK2] Add WebMemorySampler feature.
+ https://bugs.webkit.org/show_bug.cgi?id=91214
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Set WebMemorySampler feature on in EFL port.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-08-30 Rob Buis <rbuis@rim.com>
+
+ [CMake] Suppress ANGLE compilation warnings
+ https://bugs.webkit.org/show_bug.cgi?id=95377
+
+ Reviewed by Antonio Gomes.
+
+ Change WEBKIT_SET_EXTRA_COMPILER_FLAGS so it has an option to suppress C++ warnings.
+
+ * Source/cmake/WebKitHelpers.cmake:
+
+2012-08-29 Thiago Macieira <thiago.macieira@intel.com>
+
+ Tell git-archive to not export .gitattributes and .gitignore
+
+ Reviewed by Simon Hausmann.
+
+ Exclude git specific files from archives created via git-archive.
+
+ * .gitattributes:
+
+2012-08-28 Mario Sanchez Prada <msanchez@igalia.com>
+
+ Add directory generated by Eclipse to .gitignore
+ https://bugs.webkit.org/show_bug.cgi?id=95231
+
+ Reviewed by Andreas Kling.
+
+ * .gitignore: Ignore .settings directory.
+
+2012-08-27 Rob Buis <rbuis@rim.com>
+
+ [BlackBerry] remove -fno-rtti option in CMAKE_C_FLAGS
+ https://bugs.webkit.org/show_bug.cgi?id=95089
+
+ Reviewed by Antonio Gomes.
+
+ This option does not make sense for compiling C and gives a warning.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+
+2012-08-27 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
+
+ Rename RegisterProtocolHandler API to NavigatorContentUtils
+ https://bugs.webkit.org/show_bug.cgi?id=94920
+
+ Reviewed by Adam Barth.
+
+ Modified configuration files so that they contain renamed NavigatorContentUtils-prefixed files.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-08-23 Kevin Ollivier <kevino@theolliviers.com>
+
+ [wx] Unreviewed build fix. Disable compilation of WebDOM file for now,
+ add the opentype directory, and remove old ATSUI files no longer in the tree.
+
+ * wscript:
+
+2012-08-22 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
+
+ [EFL] Use WTF_USE_SOUP instead BUILDING_SOUP__
+ https://bugs.webkit.org/show_bug.cgi?id=94744
+
+ Reviewed by Gustavo Noronha Silva.
+
+ There is no need to define BUILDING_SOUP__ if only WTF_USE_SOUP
+ is used.
+
+ * GNUmakefile.am:
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-08-23 Zan Dobersek <zandobersek@gmail.com>
+
+ [Gtk] Move feature defines processing into a GNUmakefile that's simple to autogenerate
+ https://bugs.webkit.org/show_bug.cgi?id=87127
+
+ Reviewed by Martin Robinson.
+
+ Add 'feature_defines_defaults' and 'feature_defines_overrides' variables
+ and define them, along with 'feature_defines' (changed from the all-caps version),
+ before webcore_cppflags.
+
+ * GNUmakefile.am:
+
+2012-08-23 Martin Robinson <mrobinson@igalia.com>
+
+ [GTK] The tarball should be called webkitgtk-x.x.x.tar.xz
+ https://bugs.webkit.org/show_bug.cgi?id=94572
+
+ Reviewed by Carlos Garcia Campos.
+
+ Change the name of the tarball to match the name of the library
+ and to disambiguate it from other WebKit ports.
+
+ * configure.ac: Update the tarball name.
+
+2012-08-23 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Unreviewed. Bump WebKitGTK+ version number.
+
+ * configure.ac: Bump version number to 1.11.0 now that we branched
+ for 1.10.
+
+2012-08-23 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ REGRESSION(r126306): it broke the plugin process
+ https://bugs.webkit.org/show_bug.cgi?id=94797
+
+ Reviewed by Xan Lopez.
+
+ * GNUmakefile.am:
+
+2012-08-22 Beth Dakin <bdakin@apple.com>
+
+ https://bugs.webkit.org/show_bug.cgi?id=94401
+ Add support for making a web site become paginated using overflow:
+ paged-x | paged-y
+ -and corresponding-
+ <rdar://problem/11831783>
+
+ Reviewed by Dave Hyatt.
+
+ * Source/autotools/symbols.filter:
+
+2012-08-22 Gustavo Noronha Silva <gns@gnome.org>
+
+ [GTK] Split WebCore/platform into a separate library
+ https://bugs.webkit.org/show_bug.cgi?id=94435
+
+ Reviewed by Martin Robinson.
+
+ More people have been reporting problems when linking WebCore because
+ the command line limit is being exceeded. Splitting WebCore a bit more
+ is in order.
+
+ * GNUmakefile.am: add variable that will hold the list of source files
+ for libWebCorePlatform .
+
+2012-08-21 Thiago Marcos P. Santos <thiago.santos@intel.com>
+
+ [EFL] Enable CSS Text Decoration by default
+ https://bugs.webkit.org/show_bug.cgi?id=94483
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ By enabling this feature by default, it will get tested by the bots
+ and we can make sure no regressions will happen.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-08-21 Ulan Degenbaev <ulan@chromium.org>
+
+ Call AdjustAmountOfExternalAllocatedMemory when V8ArrayBuffer constructed and destructed
+ https://bugs.webkit.org/show_bug.cgi?id=92993
+
+ Reviewed by Kenneth Russell.
+
+ Call AdjustAmountOfExternalAllocatedMemory when V8ArrayBuffer
+ is constructed and destructed so that V8's garbage collection
+ heuristics can account for the memory held by these objects.
+
+ * ManualTests/typed-array-memory.html: Added.
+
+2012-08-21 Martin Robinson <mrobinson@igalia.com>
+
+ [GTK] Using a native window for the WebView breaks GtkOverlay
+ https://bugs.webkit.org/show_bug.cgi?id=90085
+
+ Reviewed by Alejandro G. Castro.
+
+ * configure.ac: Parse xcomposite pkg-config file during configuration.
+
+2012-08-21 Patrick Gansterer <paroga@webkit.org>
+
+ Build fix for WinCE after r115348.
+
+ * Source/cmake/OptionsWindows.cmake: Removed duplicated WEBKIT_OPTION_DEFAULT_PORT_VALUE().
+
+2012-08-20 George Staikos <staikos@webkit.org>
+
+ [BlackBerry] Enable XHR Response BLOB
+ https://bugs.webkit.org/show_bug.cgi?id=94525
+
+ Reviewed by Rob Buis.
+
+ Add the XHR response blob enable feature to the cmake build system and
+ enable it for BlackBerry.
+
+ * Source/cmake/OptionsBlackBerry.cmake: Add the feature and enable
+ * Source/cmakeconfig.h.cmake: Add the feature
+
+2012-08-20 Dominik Röttsches <dominik.rottsches@intel.com>
+
+ [EFL] Get rid of pango backend support once harfbuzz-ng is working
+ https://bugs.webkit.org/show_bug.cgi?id=92102
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Removing choice of font backend, Pango detection not required any more.
+
+ * Source/cmake/FindPango.cmake: Removed.
+ * Source/cmake/LibFindMacros.cmake: Removed.
+ * Source/cmake/OptionsEfl.cmake: Removing choice of font backend.
+
+2012-08-17 Raphael Kubo da Costa <rakuco@webkit.org>
+
+ [CMake] Add FindDBus.cmake and use it in the EFL port.
+ https://bugs.webkit.org/show_bug.cgi?id=94319
+
+ Reviewed by Daniel Bates.
+
+ Currently, the Battery Status-related code in the EFL port uses
+ libdbus but does not directly include its directories or link
+ against it, relying instead on the compiler flags coming via
+ EDbus's pkg-config information.
+
+ That will break once we stop obtaining EFL's include directories
+ and library paths from pkg-config, so write FindDBus.cmake to
+ prepare for that.
+
+ * Source/cmake/FindDBus.cmake: Added.
+ * Source/cmake/OptionsEfl.cmake: Look for D-Bus if BATTERY_STATUS
+ support is enabled.
+
+2012-08-17 Rob Buis <rbuis@rim.com>
+
+ [BlackBerry] Remove some shared libraries from linking
+ https://bugs.webkit.org/show_bug.cgi?id=94253
+
+ Reviewed by Yong Li.
+
+ Remove some shared libraries.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+
+2012-08-16 Gustavo Noronha Silva <gns@gnome.org>
+
+ Unreviewed speculative 32 bits build fix.
+
+ * Source/autotools/symbols.filter: add symbol version that gets
+ generated in 32 bits build.
+
+2012-08-16 Max Feil <mfeil@rim.com>
+
+ [BlackBerry] Some media controls are mispositioned for dynamic live streams (HLS)
+ https://bugs.webkit.org/show_bug.cgi?id=94176
+
+ Reviewed by Antonio Gomes.
+
+ An automated layout test is not possible for this patch because
+ dynamic live streams require a special dedicated web server.
+ Putting an external video URL into an automated test is not
+ correct either. So I have created a manual test that points to
+ an external HLS video that works today.
+
+ * ManualTests/blackberry/video-hls-controls.html: Added.
+
+2012-08-16 Marja Hölttä <marja@chromium.org>
+
+ FormController, WebHistoryItem: Enable reading selected file names from document state
+ https://bugs.webkit.org/show_bug.cgi?id=91231
+
+ Reviewed by Jochen Eisinger.
+
+ This change enables Chromium to set up file permissions properly when
+ the session restore feature restores a page with selected files.
+
+ * Source/autotools/symbols.filter: Exported FormController::getReferencedFilePaths and HistoryController::saveDocumentAndScrollState.
+
+2012-08-15 Kent Tamura <tkent@chromium.org>
+
+ Calendar Picker: Localize numbers in a calendar picker
+ https://bugs.webkit.org/show_bug.cgi?id=93704
+
+ Reviewed by Hajime Morita.
+
+ * ManualTests/forms/calendar-picker.html:
+ Add a mock pagePopupController.localizeNumberString().
+
+2012-08-15 Ryosuke Niwa <rniwa@webkit.org>
+
+ Update manual tests and comments to refer to TestRunner instead of LayoutTestController
+ https://bugs.webkit.org/show_bug.cgi?id=94168
+
+ Reviewed by Kent Tamura.
+
+ * ManualTests/resources/multiFileResources/post-echo-and-notify-done.cgi:
+
+2012-08-15 Bruno de Oliveira Abinader <bruno.abinader@basyskom.com>
+
+ [css3-text] Add CSS3 Text decoration compile flag
+ https://bugs.webkit.org/show_bug.cgi?id=93863
+
+ Reviewed by Julien Chaffraix.
+
+ This patch handles the compile flag implementation, which will come disabled by
+ default, thus not exposing the CSS3 text decoration features to the web, unless
+ when explicitly enabling it with "--css3-text-decoration" build parameter.
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+ * configure.ac:
+
+2012-08-15 Brady Eidson <beidson@apple.com>
+
+ Removing a plug-in element from a page opened in a background tab in Safari crashes
+ <rdar://problem/12057991> and https://bugs.webkit.org/show_bug.cgi?id=93913
+
+ Reviewed by Beth Dakin.
+
+ * Source/autotools/symbols.filter: Allow this symbol through for DRT's sake.
+
+2012-08-14 Keishi Hattori <keishi@webkit.org>
+
+ Share common code between calendar picker and color suggestion picker
+ https://bugs.webkit.org/show_bug.cgi?id=93802
+
+ Reviewed by Kent Tamura.
+
+ * ManualTests/forms/calendar-picker.html:
+ * ManualTests/forms/color-suggestion-picker.html:
+
+2012-08-14 Milian Wolff <milian.wolff@kdab.com>
+
+ [Qt] QtWebKit linking fails for QNX cross build
+ https://bugs.webkit.org/show_bug.cgi?id=93460
+
+ Reviewed by Simon Hausmann.
+
+ The GCC 4.4.2 used by the QNX BBNDK 2.0.1 fails to link QtWebKit.
+ Apparently it does not properly support the linker invokation using
+ -Wl,-whole-archive -l... -Wl,-no-whole-archive
+ yielding a "cc: no files to process" error. This patch works around
+ this issue by adding an empty dummy file (and thus object file) to
+ the linking stage.
+
+ * Source/api.pri:
+
+2012-08-14 Keishi Hattori <keishi@webkit.org>
+
+ Move page popup resources to separate directory
+ https://bugs.webkit.org/show_bug.cgi?id=93932
+
+ Reviewed by Kent Tamura.
+
+ * ManualTests/forms/calendar-picker.html:
+ * ManualTests/forms/color-suggestion-picker.html:
+
+2012-08-11 Raphael Kubo da Costa <rakuco@webkit.org>
+
+ [CMake] Rewrite FindLibSoup2.cmake.
+ https://bugs.webkit.org/show_bug.cgi?id=93191
+
+ Reviewed by Rob Buis.
+
+ The existing LibSoup2 was imported from somewhere else and not
+ only did it contain a lot of unnecessary cruft to look for libsoup
+ 2.2 (which we do not support anyway), but it also relied on the
+ paths returned by pkg-config for setting the library and include
+ paths.
+
+ For one, this meant "-lsoup-2.4" was passed to the linked instead
+ of "-L/path/to/libsoup-2.4.so", which would sometimes make a
+ system version of libsoup to be picked up instead of the one
+ installed by, say, jhbuild.
+
+ The new FindLibSoup.cmake now only looks for libsoup 2.4 and
+ relies on pkg-config solely for retrieving the current LibSoup
+ version.
+
+ * Source/cmake/FindLibSoup.cmake: Added.
+ * Source/cmake/FindLibSoup2.cmake: Removed.
+ * Source/cmake/OptionsEfl.cmake: Look for LibSoup instead of
+ LibSoup2, look for the GObject component of Glib.
+
+2012-08-13 Raphael Kubo da Costa <rakuco@webkit.org>
+
+ [CMake] Remove glib-related Find modules and write single new one instead.
+ https://bugs.webkit.org/show_bug.cgi?id=93786
+
+ Reviewed by Rob Buis.
+
+ As part of the ongoing effort to write proper Find modules that use
+ absolute include and library paths instead of the short ones from
+ pkg-config, replace Find{GIO,Glib,Gthread}.cmake with a single
+ FindGLIB.cmake that optionally detects components such as GIO and
+ GObject.
+
+ Library paths are now defined as "/full/path/to/libfoo.so" instead of
+ simply "foo", so that the linker receives a full path and we can then
+ avoid accidentally picking up a libfoo.so installed into /usr/lib
+ instead of a local one built with jhbuild.
+
+ * Source/cmake/FindGIO.cmake: Removed.
+ * Source/cmake/FindGLIB.cmake: Added.
+ * Source/cmake/FindGlib.cmake: Removed.
+ * Source/cmake/FindGthread.cmake: Removed.
+ * Source/cmake/OptionsEfl.cmake: Look for GLIB with the GIO component.
+
+2012-08-13 Zan Dobersek <zandobersek@gmail.com>
+
+ [Gtk] Remove SVG_FEATURES and HTML_FEATURES from Source/WebCore/GNUmakefile.am
+ https://bugs.webkit.org/show_bug.cgi?id=90693
+
+ Reviewed by Philippe Normand.
+
+ Remove exportation of SVG_FLAGS and HTML_FLAGS as Automake conditionals
+ as they are not required anymore.
+
+ * configure.ac:
+
+2012-08-12 Loïc Yhuel <loic.yhuel@softathome.com>
+
+ [Qt] Make it possible to build without QtTest/QtPrintSupport
+ https://bugs.webkit.org/show_bug.cgi?id=93492
+
+ Reviewed by Tor Arne Vestbø.
+
+ * Source/QtWebKit.pro: Disable tests if no testlib
+
+2012-08-10 Rob Buis <rbuis@rim.com>
+
+ [BlackBerry] Enable relro link option for JSC executable
+ https://bugs.webkit.org/show_bug.cgi?id=93726
+
+ Reviewed by Yong Li.
+
+ Enable relro link option for JSC executable.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+
+2012-08-09 Raphael Kubo da Costa <rakuco@webkit.org>
+
+ [CMake] Bump minimum required version to 2.8.3.
+ https://bugs.webkit.org/show_bug.cgi?id=93450
+
+ Reviewed by Daniel Bates.
+
+ Following the discussion in bug 93189, it was decided that bumping
+ the minimum required version from 2.8.0 to 2.8.3 was a good thing
+ due to additional features, such as improved
+ FIND_PACKAGE_HANDLE_STANDARD_ARGS() support and better argument
+ handling in the PKG_CHECK_MODULES() call.
+
+ CMake 2.8.3 was released almost two years ago, so people are
+ expected to have it or a later version installed.
+
+ * CMakeLists.txt:
+
+2012-08-08 Shane Stephens <shanestephens@google.com>
+
+ Compile flag for CSS Hierarchies
+ https://bugs.webkit.org/show_bug.cgi?id=92433
+
+ Reviewed by Tony Chang.
+
+ * Source/cmake/WebKitFeatures.cmake:
+
+2012-08-08 Ming Xie <mxie@rim.com>
+
+ [BlackBerry] Fix "-fPIC" define in the BlackBerry build
+ https://bugs.webkit.org/show_bug.cgi?id=93548
+
+ Reviewed by Rob Buis.
+
+ In the current CMake release (version 2.8.5), ${CMAKE_SHARED
+ _LIBRARY_C_FLAGS} and ${CMAKE_SHARED_LIBRARY_CXX_FLAGS} is
+ set to empty (See cmake/Modules/Platform/QNX.cmake)
+
+ This breaks the assumption which WebKit CMake build system
+ makes in Source/cmake/WebKitHelper.cmake
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+
+2012-08-08 Philippe Normand <pnormand@igalia.com>
+
+ [GStreamer] 0.11 build broken (again)
+ https://bugs.webkit.org/show_bug.cgi?id=93474
+
+ Reviewed by Martin Robinson.
+
+ * configure.ac: Disable media-stream build if GStreamer 0.11
+ support is enabled, due to farstream-0.1 still messing up with
+ gstreamer-0.10 include path.
+
+2012-08-07 YoungTaeck Song <youngtaeck.song@samsung.com>
+
+ [WK2][EFL] Implement accelerated compositing on WK2 Efl port
+ https://bugs.webkit.org/show_bug.cgi?id=89840
+
+ Reviewed by Noam Rosenthal.
+
+ Implement accelerated composition with TiledBackingStore on WK2 Efl port.
+ This implementation is based on COORDINATED_GRAPHICS.
+ Add COORDINATED_GRAPHICS related definitions in OptionsEfl.cmake.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-08-07 No'am Rosenthal <noam.rosenthal@nokia.com>
+
+ [Qt] Make it possible to build without QtQuick
+
+ Reviewed by Simon Hausmann.
+
+ * Source/QtWebKit.pro:
+ * Source/tests.pri:
+
+2012-07-19 Simon Hausmann <simon.hausmann@nokia.com>
+
+ [Qt] Remove Qt 4 specific code paths
+ https://bugs.webkit.org/show_bug.cgi?id=88161
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ * Source/api.pri:
+ * WebKit.pro:
+
+2012-08-06 Gyuyoung Kim <gyuyoung.kim@samsung.com>
+
+ [EFL] Enable link prefetch
+ https://bugs.webkit.org/show_bug.cgi?id=93281
+
+ Reviewed by Kentaro Hara.
+
+ * Source/cmake/OptionsEfl.cmake: Enable LINK_PREFETCH by default.
+
+2012-08-06 Xan Lopez <xlopez@igalia.com>
+
+ [GTK] Cleanup configure.ac build options output
+ https://bugs.webkit.org/show_bug.cgi?id=93245
+
+ Reviewed by Laszlo Gombos.
+
+ Remove duplicated elements, sort alphabetically.
+
+ * configure.ac: ditto.
+
+2012-08-06 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Unreviewed. Update NEWS and configure.ac for 1.9.6 release
+
+ * configure.ac: Bump version numbers.
+
+2012-08-03 Patrick Gansterer <paroga@webkit.org>
+
+ [CMake][WIN] Disable C++ exceptions and RTTI
+ https://bugs.webkit.org/show_bug.cgi?id=93104
+
+ Reviewed by Ryosuke Niwa.
+
+ Both features are not used in WebKit, so remove them to safe some code.
+ Also enable compilation of plain c files with multiple processes.
+
+ * Source/cmake/OptionsWindows.cmake:
+
+2012-08-03 Mario Sanchez Prada <msanchez@igalia.com>
+
+ Unreviewed build fix for GTK after r124479.
+
+ * Source/autotools/symbols.filter: Removed unneeded symbol.
+
+2012-08-03 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
+
+ [Qt] Populate .qmake.cache from the top-level project file
+
+ This makes it possible to build webkit without using the perl build
+ script. The duplicated logic in build-webkit will be removed when we
+ remove the Qt4 code paths. The build-webkit script will then simply
+ call 'qmake WebKit.pro' from WEBKITOUTPUTDIR.
+
+ Reviewed by Tor Arne Vestbø.
+
+ * WebKit.pro:
+
+2012-08-03 Dominik Röttsches <dominik.rottsches@intel.com>
+
+ [cmake] Cleanup FindHarfBuzz.cmake
+ https://bugs.webkit.org/show_bug.cgi?id=92984
+
+ Reviewed by Hajime Morita.
+
+ Cleanup which didn't make it into my previous ptch.
+
+ * Source/cmake/FindHarfBuzz.cmake: Remove duplicate line, add a bit of documentation.
+
+2012-08-03 Joone Hur <joone.hur@intel.com>
+
+ [EFL][DRT] WebKitAnimation API compile-time disabled
+ https://bugs.webkit.org/show_bug.cgi?id=84593
+
+ Reviewed by Laszlo Gombos.
+
+ Enable ENABLE_ANIMATION_API by default on the Efl port.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-08-02 Zan Dobersek <zandobersek@gmail.com>
+
+ Unreviewed attempt at fixing the GTK 64-bit debug build.
+
+ * Source/autotools/symbols.filter:
+
+2012-08-02 Martin Robinson <mrobinson@igalia.com>
+
+ [GTK] When farstream is not present do not enable MediaStream
+
+ Reviewed by Philippe Normand.
+
+ When farstream libraries are no present, simply do not build MediaStream
+ support.
+
+ * configure.ac:
+
+2012-08-01 Jian Li <jianli@chromium.org>
+
+ Add new CSS property "-webkit-widget-region" to expose dashboard region support for other port
+ https://bugs.webkit.org/show_bug.cgi?id=90298
+
+ Reviewed by Adam Barth.
+
+ * configure.ac: Add ENABLE_WIDGET_REGION define.
+
+2012-07-31 Joshua Netterfield <jnetterfield@rim.com>
+
+ [BlackBerry] Enable CSS Filter Effects
+ https://bugs.webkit.org/show_bug.cgi?id=92685
+
+ Reviewed by Rob Buis.
+
+ Enable CSS filter effects, with the exception of custom effects (CSS shaders) and reference effects (SVG effects)
+
+ Internally reviewed by Arvid Nilsson <anilsson@rim.com> and Antonio Gomes <agomes@rim.com>.
+
+ * Source/cmake/OptionsBlackBerry.cmake: Add LayerFilterRenderer
+ * Source/cmakeconfig.h.cmake: Acknowledge CSS filter effects
+
+2012-07-31 Ryosuke Niwa <rniwa@webkit.org>
+
+ Perf-o-matic: dashboard images are not generated properly from incrementally updated JSON
+ https://bugs.webkit.org/show_bug.cgi?id=92717
+
+ Reviewed by Hajime Morita.
+
+ Sort the values by timestamp. Unfortunately, there isn't a good way of testing this fix.
+
+ * Websites/webkit-perf.appspot.com/models.py:
+ (Runs.chart_params):
+
+2012-07-31 Danilo Cesar Lemes de Paula <danilo.cesar@collabora.co.uk>
+
+ add Farstream flags/deps to WebKit, for WebRTC
+ https://bugs.webkit.org/show_bug.cgi?id=87524
+
+ Reviewed by Philippe Normand.
+
+ Since Farstream will be used as the backend for GTK's WebRTC, this
+ patch adds it as a dependency to the build system.
+
+ * GNUmakefile.am:
+ * configure.ac:
+
+2012-07-30 Ryosuke Niwa <rniwa@webkit.org>
+
+ /api/test/runs/chart expires on perf-o-matic
+ https://bugs.webkit.org/show_bug.cgi?id=92714
+
+ Reviewed by Hajime Morita.
+
+ Don't update the entire JSON while generating the dashboard images.
+ This is a bug and not doing this will reduce the server load significantly.
+
+ * Websites/webkit-perf.appspot.com/controller.py:
+ (RunsChartHandler.post):
+
+2012-07-30 Dominik Röttsches <dominik.rottsches@intel.com>
+
+ Avoid Assertion Failure in HarfBuzzRun::characterIndexForXPosition
+ https://bugs.webkit.org/show_bug.cgi?id=92376
+
+ Reviewed by Tony Chang.
+
+ Added manual test to reliably reproduce assertion failure which is solved by this patch.
+
+ * ManualTests/harfbuzz-mouse-selection-crash.html: Added.
+
+2012-07-29 Vsevolod Vlasov <vsevik@chromium.org>
+
+ Web Inspector: Resource agent's reference to cached resources should be weak.
+ https://bugs.webkit.org/show_bug.cgi?id=92108
+
+ Reviewed by Pavel Feldman.
+
+ * Source/autotools/symbols.filter:
+
+2012-07-30 Shinya Kawanaka <shinyak@chromium.org>
+
+ Prohibit having AuthorShadowDOM of input or textarea element for a while and having a flag to enable it in Internals.
+ https://bugs.webkit.org/show_bug.cgi?id=92611
+
+ Reviewed by Hajime Morita.
+
+ * Source/autotools/symbols.filter:
+
+2012-07-30 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r124000.
+ http://trac.webkit.org/changeset/124000
+ https://bugs.webkit.org/show_bug.cgi?id=92632
+
+ seems to have broken chromium Range_InstanceSizeUnknown unit
+ test across many platforms (Requested by tomhudson on
+ #webkit).
+
+ * Source/autotools/symbols.filter:
+
+2012-07-30 Patrick Gansterer <paroga@webkit.org>
+
+ Replace UnicodeWinCE with UnicodeWchar
+ https://bugs.webkit.org/show_bug.cgi?id=92539
+
+ Reviewed by Ryosuke Niwa.
+
+ UnicodeWinCE never contained WinCE specific code. UnicodeWchar
+ is a replacement for it, which is mainly based on the functions
+ from <wchar.h>. It is ment as a minimal Unicode backend, which
+ can be used very easy and has no external dependencies.
+
+ * Source/cmake/OptionsWinCE.cmake:
+
+2012-07-29 Vsevolod Vlasov <vsevik@chromium.org>
+
+ Web Inspector: Resource agent's reference to cached resources should be weak.
+ https://bugs.webkit.org/show_bug.cgi?id=92108
+
+ Reviewed by Pavel Feldman.
+
+ * Source/autotools/symbols.filter:
+
+2012-07-29 Rik Cabanier <cabanier@adobe.com>
+
+ Add ENABLE_CSS_COMPOSITING flag
+ https://bugs.webkit.org/show_bug.cgi?id=92553
+
+ Reviewed by Dirk Schulze.
+
+ Adds compiler flag CSS_COMPOSITING to build systems to enable CSS blending and compositing. See spec https://dvcs.w3.org/hg/FXTF/rawfile/tip/compositing/index.html
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+ * configure.ac:
+
+2012-07-27 Kihong Kwon <kihong.kwon@samsung.com>
+
+ [EFL] Support for HTML media capture
+ https://bugs.webkit.org/show_bug.cgi?id=91842
+
+ Reviewed by Ryosuke Niwa.
+
+ Add HTML media capture feature, and enable that on the Efl port.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-07-27 Ryosuke Niwa <rniwa@webkit.org>
+
+ Unreviewed perf-o-matic build fix for dashboard image generation.
+ Also, only show Parser/html5-full-render on the dashboard by default
+ so that it won't take forever to load it.
+
+ * Websites/webkit-perf.appspot.com/controller.py:
+ (schedule_runs_update):
+ (RunsChartHandler.post):
+ * Websites/webkit-perf.appspot.com/models.py:
+ (Runs.chart_params):
+ (DashboardImage.get_image):
+ * Websites/webkit-perf.appspot.com/models_unittest.py:
+ (RunsTest.test_chart_params_with_value):
+
+2012-07-27 Dominik Röttsches <dominik.rottsches@intel.com>
+
+ [Cairo] Add complex font drawing using HarfbuzzNG
+ https://bugs.webkit.org/show_bug.cgi?id=91864
+
+ Reviewed by Simon Hausmann and Martin Robinson.
+
+ Configuring Freetype backend to use HarfBuzz by default.
+
+ * Source/cmake/FindHarfBuzz.cmake: Added pkgconfig based discovery of HarfBuzz.
+ * Source/cmake/OptionsEfl.cmake: Adding Harfbuzz configuration.
+
+2012-07-26 Dan Bernstein <mitz@apple.com>
+
+ When Safari 6 is launched via the WebKit Xcode workspace, it does not link against the built frameworks
+ https://bugs.webkit.org/show_bug.cgi?id=92331
+
+ Reviewed by Mark Rowe.
+
+ Changed references to the Safari executable to the SafariForWebKitDevelopment binary.
+
+ * WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme:
+ * WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme:
+
+2012-07-26 Keishi Hattori <keishi@webkit.org>
+
+ Implement ColorSuggestionPicker page popup
+ https://bugs.webkit.org/show_bug.cgi?id=92109
+
+ Reviewed by Kent Tamura.
+
+ * ManualTests/forms/color-suggestion-picker.html: Added. Tests colorSuggestionPicker.{js,css}
+
+2012-07-26 Zoltan Nyul <zoltan.nyul@intel.com>
+
+ [EFL] EFL port should use XDG paths
+ https://bugs.webkit.org/show_bug.cgi?id=91719
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Efreet library added.
+
+ * Source/cmake/FindEFL.cmake:
+
+2012-07-26 Kaustubh Atrawalkar <kaustubh@motorola.com>
+
+ [DRT] LTC:: pageNumberForElementById() could be moved to Internals.
+ https://bugs.webkit.org/show_bug.cgi?id=92091
+
+ Reviewed by Adam Barth.
+
+ Exporting Internals::pageNumber symbols for the Gtk build.
+
+ * Source/autotools/symbols.filter:
+
+2012-07-25 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r123606.
+ http://trac.webkit.org/changeset/123606
+ https://bugs.webkit.org/show_bug.cgi?id=92247
+
+ broke Windows build of Chromium (Requested by tomhudson on
+ #webkit).
+
+ * ManualTests/forms/color-suggestion-picker.html: Removed.
+
+2012-07-25 Keishi Hattori <keishi@webkit.org>
+
+ Implement ColorSuggestionPicker page popup
+ https://bugs.webkit.org/show_bug.cgi?id=92109
+
+ Reviewed by Kent Tamura.
+
+ * ManualTests/forms/color-suggestion-picker.html: Added. Tests colorSuggestionPicker.{js,css}
+
+2012-07-23 Kent Tamura <tkent@chromium.org>
+
+ [GTK] Remove unnecessary trailing space in the previous commit.
+
+ * Source/autotools/symbols.filter:
+
+2012-07-23 Kent Tamura <tkent@chromium.org>
+
+ [GTK] Attempt to fix build
+
+ * Source/autotools/symbols.filter: Export DocumentMarkerController::addTextMatchMarker.
+
+2012-07-23 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r123184, r123195, and r123197.
+ http://trac.webkit.org/changeset/123184
+ http://trac.webkit.org/changeset/123195
+ http://trac.webkit.org/changeset/123197
+ https://bugs.webkit.org/show_bug.cgi?id=92049
+
+ pagecycler regression (Requested by morrita on #webkit).
+
+ * Source/autotools/symbols.filter:
+
+2012-07-23 Roger Fong <roger_fong@apple.com>
+
+ If select element in Windows is off screen horizontally,
+ menu is either inappropriately resized or positioned offscreen.
+ https://bugs.webkit.org/show_bug.cgi?id=91913
+ <rdar://problem/7611229>
+
+ Reviewed by Tim Horton.
+
+ Add a manual test to verify that popup menus render in the correct place.
+
+ * ManualTests/win/select-menu-off-screen.html: Added.
+
+2012-07-23 Simon Fraser <simon.fraser@apple.com>
+
+ Implement sticky positioning
+ https://bugs.webkit.org/show_bug.cgi?id=90046
+
+ Reviewed by Ojan Vafai.
+
+ Add ENABLE_CSS_STICKY_POSITION, defaulting to off initially.
+
+ Sort the ENABLE_CSS lines in the file.
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-07-23 Patrick Gansterer <paroga@webkit.org>
+
+ [WINCE] Define NOMINMAX in the build system instead of Platform.h
+ https://bugs.webkit.org/show_bug.cgi?id=91938
+
+ Reviewed by Ryosuke Niwa.
+
+ Define it in OptionsWindows.cmake, since NOMINMAX
+ should to be defined for all windows ports.
+
+ * Source/cmake/OptionsWinCE.cmake:
+ * Source/cmake/OptionsWindows.cmake:
+
+2012-07-22 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r123298 and r123301.
+ http://trac.webkit.org/changeset/123298
+ http://trac.webkit.org/changeset/123301
+ https://bugs.webkit.org/show_bug.cgi?id=91953
+
+ We need to think some more about the intricacies of exposing a
+ CMake option for ENABLE_DFG_JIT as this option is specific to
+ the port and architecture. (Requested by dydx on #webkit).
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-07-22 Daniel Bates <dbates@webkit.org>
+
+ Fix the Windows CE build after <http://trac.webkit.org/changeset/123298>
+ (https://bugs.webkit.org/show_bug.cgi?id=91939)
+
+ Disable the DFG JIT across all CMake ports (by default) (*). Enabling DFG JIT
+ breaks the Windows CE build as the Windows CE port builds with the JIT disabled
+ (ENABLE_JIT := 0) and hence ENABLE_ASSEMBLER := 0.
+
+ (*) We should look to further discuss with CMake port maintainers about enabling
+ the DFG JIT by default.
+
+ * Source/cmake/WebKitFeatures.cmake:
+
+2012-07-23 Kent Tamura <tkent@chromium.org>
+
+ Rename ENABLE_METER_TAG and ENABLE_PROGRESS_TAG to ENABLE_METER_ELEMENT and ENABLE_PROGRESS_ELEMENT respectively
+ https://bugs.webkit.org/show_bug.cgi?id=91941
+
+ Reviewed by Kentaro Hara.
+
+ A flag name for an elmement should be ENABLE_*_ELEMENT.
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+ * configure.ac:
+
+2012-07-22 Patrick Gansterer <paroga@webkit.org>
+
+ [CMake] Add option for ENABLE_DFG_JIT
+ https://bugs.webkit.org/show_bug.cgi?id=91939
+
+ Reviewed by Daniel Bates.
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-07-22 Kent Tamura <tkent@chromium.org>
+
+ Rename ENABLE_DETAILS to ENABLE_DETAILS_ELEMENT
+ https://bugs.webkit.org/show_bug.cgi?id=91928
+
+ Reviewed by Kentaro Hara.
+
+ A flag name for an elmement should be ENABLE_*_ELEMENT.
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+ * configure.ac:
+
+2012-07-20 Kent Tamura <tkent@chromium.org>
+
+ Rename ENABLE_DATALIST to ENABLE_DATALIST_ELEMENT
+ https://bugs.webkit.org/show_bug.cgi?id=91846
+
+ Reviewed by Kentaro Hara.
+
+ A flag name for an elmement should be ENABLE_*_ELEMENT.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+ * configure.ac:
+
+2012-07-19 MORITA Hajime <morrita@google.com>
+
+ [Refactoring] Replace Node's Document pointer with a TreeScope pointer
+ https://bugs.webkit.org/show_bug.cgi?id=59816
+
+ Reviewed by Ryosuke Niwa.
+
+ * Source/autotools/symbols.filter: Added newly exported symbols.
+
+2012-07-19 Christophe Dumez <christophe.dumez@intel.com>
+
+ [EFL] Bump libsoup dependency to v2.39.4.1 to fix cookie issues
+ https://bugs.webkit.org/show_bug.cgi?id=91741
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Bump libsoup dependency in CMake to v2.39.4.1 to fix issues
+ with cookies in non-suffixed/private domains [GNOME #679230].
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-07-19 Mario Sanchez Prada <msanchez@igalia.com>
+
+ [GTK] Enable MHTML support by default at build time
+ https://bugs.webkit.org/show_bug.cgi?id=89987
+
+ Reviewed by Carlos Garcia Campos.
+
+ Enable MHTML support by default for GTK in configure.ac.
+
+ * configure.ac:
+
+2012-07-18 Christophe Dumez <christophe.dumez@intel.com>
+
+ [CMake][EFL] Should try to find the same libsoup version pulled by jhbuild
+ https://bugs.webkit.org/show_bug.cgi?id=91626
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Bump required version of libsoup in CMake to 2.39.3. This is the first
+ tarball version to contain the API we need (soup_cookie_jar_get_cookies()
+ and soup_cookie_jar_set_cookie_with_first_party()).
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-07-18 Varun Jain <varunjain@chromium.org>
+
+ [chromium] Drag image for image elements should be scaled with device scale factor.
+ https://bugs.webkit.org/show_bug.cgi?id=89688
+
+ Reviewed by Adam Barth.
+
+ * ManualTests/chromium/drag-image-accounts-for-device-scale.html:
+
+2012-07-18 Thiago Marcos P. Santos <thiago.santos@intel.com>
+
+ [CMake] Make gtest a shared library
+ https://bugs.webkit.org/show_bug.cgi?id=90973
+
+ Reviewed by Daniel Bates.
+
+ It's nicer to make it a shared library because it might improve
+ linking time and we don't need to force gtest users to link with gtest
+ dependencies like pthreads (which causes linking errors when it is not
+ available).
+
+ * Source/cmake/gtest/CMakeLists.txt:
+
+2012-07-17 Gabor Ballabas <gaborb@inf.u-szeged.hu>
+
+ [Qt][V8] Remove the V8 related codepaths and configuration
+ https://bugs.webkit.org/show_bug.cgi?id=90863
+
+ Reviewed by Simon Hausmann.
+
+ * Source/api.pri:
+ * WebKit.pro:
+
+2012-07-17 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r122834.
+ http://trac.webkit.org/changeset/122834
+ https://bugs.webkit.org/show_bug.cgi?id=91492
+
+ it broke the chromium (Requested by kkristof on #webkit).
+
+ * Source/api.pri:
+ * WebKit.pro:
+
+2012-07-17 Gabor Ballabas <gaborb@inf.u-szeged.hu>
+
+ [Qt][V8] Remove the V8 related codepaths and configuration
+ https://bugs.webkit.org/show_bug.cgi?id=90863
+
+ Reviewed by Simon Hausmann.
+
+ * Source/api.pri:
+ * WebKit.pro:
+
+2012-07-17 David Barr <davidbarr@chromium.org>
+
+ Introduce ENABLE_CSS_IMAGE_ORIENTATION compile flag
+ https://bugs.webkit.org/show_bug.cgi?id=89055
+
+ Reviewed by Kent Tamura.
+
+ The css3-images module is at candidate recommendation.
+ http://www.w3.org/TR/2012/CR-css3-images-20120417/#the-image-orientation
+
+ Add a configuration option for CSS image-orientation support, disabling it by default.
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-07-16 Pete Williamson <petewil@google.com>
+
+ Expose an export for the iconUrl list so Internals can use it
+ https://bugs.webkit.org/show_bug.cgi?id=88665
+
+ Reviewed by Kent Tamura.
+
+ * Source/autotools/symbols.filter: export iconURLs
+
+2012-07-16 Hajime Morrita <morrita@chromium.org>
+
+ WebCore needs WEBCORE_TESTING macro to mark methods being exported for testing.
+ https://bugs.webkit.org/show_bug.cgi?id=90764
+
+ Reviewed by Adam Barth.
+
+ Removed symbols which are now covered by WEBCORE_TESTING.
+
+ * Source/autotools/symbols.filter:
+
+2012-07-16 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Unreviewed. Update NEWS and configure.ac for 1.9.5 release
+
+ * configure.ac: Bump version number.
+
+2012-07-12 Josh Hawn <jhawn@apple.com>
+
+ Fix for WebContext::getWebCoreStatistics() causes crash if no m_process
+ https://bugs.webkit.org/show_bug.cgi?id=91116
+
+ Reviewed by Simon Fraser.
+
+ * Source/WebKit2/UIProcess/WebContext.cpp:
+ WebContext::getWebCoreStatistics():
+ Now invalidates callback if no m_process.
+
+2012-07-13 Thiago Marcos P. Santos <thiago.santos@intel.com>
+
+ [CMake] Proper handling of ENABLE_API_TESTS build option
+ https://bugs.webkit.org/show_bug.cgi?id=91221
+
+ Reviewed by Rob Buis.
+
+ Make the flag reusable across the ports using CMake. We are about to enable the WTF,
+ WebCore and WebKit 2 API's at Tools/TestWebKitAPI and other ports using CMake can get
+ it almost for free.
+
+ * CMakeLists.txt:
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-07-11 Matt Falkenhagen <falken@chromium.org>
+
+ Add dialog element feature toggle to InternalSettings
+ https://bugs.webkit.org/show_bug.cgi?id=90934
+
+ Reviewed by Hajime Morita.
+
+ * Source/autotools/symbols.filter: Added newly exported symbol.
+
+2012-07-11 Arnaud Renevier <a.renevier@sisa.samsung.com>
+
+ [Gtk] allow building with css-filters
+ https://bugs.webkit.org/show_bug.cgi?id=90908
+
+ Add support for css-filters in Source/WebCore/GNUmakefile.am
+ configure.ac
+
+ Reviewed by Eric Seidel.
+
+ * configure.ac:
+
+2012-07-10 Gyuyoung Kim <gyuyoung.kim@samsung.com>
+
+ [CMAKE] Add missing feature macros
+ https://bugs.webkit.org/show_bug.cgi?id=90890
+
+ Reviewed by Eric Seidel.
+
+ ENABLE_CSS_EXCLUSIONS, ENABLE_CSS_REGIONS, ENABLE_TEXT_AUTOSIZING macros
+ haven't defined in cmake feature list.
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-07-10 Kent Tamura <tkent@chromium.org>
+
+ RTL calendar picker for <input type=date> is too narrow and clipped
+ https://bugs.webkit.org/show_bug.cgi?id=90864
+
+ Reviewed by Kentaro Hara.
+
+ * ManualTests/forms/calendar-picker.html:
+ - Add isRTL:true for the arabic setting
+ - Reset the iframe size when the setting is changed.
+
+2012-07-10 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r122178.
+ http://trac.webkit.org/changeset/122178
+ https://bugs.webkit.org/show_bug.cgi?id=90857
+
+ browser tests, PrerenderBrowserTest.PrerenderFavicon and other
+ tests, started to fail (Requested by hayato on #webkit).
+
+ * Source/autotools/symbols.filter:
+
+2012-07-09 Matt Falkenhagen <falken@chromium.org>
+
+ Add ENABLE_DIALOG_ELEMENT and skeleton files
+ https://bugs.webkit.org/show_bug.cgi?id=90521
+
+ Reviewed by Kent Tamura.
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-07-09 Pete Williamson <petewil@google.com>
+
+ Expose an export for the iconUrl list so Internals can use it
+ https://bugs.webkit.org/show_bug.cgi?id=88665
+
+ Reviewed by Kent Tamura.
+
+ * Source/autotools/symbols.filter: export iconURLs
+
+2012-07-09 Mike Lattanzio <mlattanzio@rim.com>
+
+ [BlackBerry] meta viewport initial-scale doesn't factor in device pixel ratio
+ https://bugs.webkit.org/show_bug.cgi?id=90575
+
+ Reviewed by Rob Buis.
+
+ Add a manual test to verify wide content doesn't interfere
+ with initial-scale calculations.
+
+ Internal review from Konrad Piascik.
+
+ * ManualTests/blackberry/meta-viewport-initial-scale-wide-content.html: Added.
+
+2012-07-09 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r122107.
+ http://trac.webkit.org/changeset/122107
+ https://bugs.webkit.org/show_bug.cgi?id=90794
+
+ Build failure on Mac debug bots (Requested by falken_ on
+ #webkit).
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-07-09 Matt Falkenhagen <falken@chromium.org>
+
+ Add ENABLE_DIALOG_ELEMENT and skeleton files
+ https://bugs.webkit.org/show_bug.cgi?id=90521
+
+ Reviewed by Kent Tamura.
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-07-06 Thiago Marcos P. Santos <thiago.santos@intel.com>
+
+ [EFL][CMake] Move gtest sources to an upper level
+ https://bugs.webkit.org/show_bug.cgi?id=90602
+
+ Reviewed by Chang Shu.
+
+ CTest was enabled for all the ports, but used only by EFL. Now
+ ENABLE_API_TESTS has to be defined, which will also build gtest.
+
+ * CMakeLists.txt:
+ * Source/CMakeLists.txt:
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/gtest/CMakeLists.txt: Added.
+
+2012-07-06 Zan Dobersek <zandobersek@gmail.com>
+
+ [Gtk] Add a configuration option for disabling unstable features in releases
+ https://bugs.webkit.org/show_bug.cgi?id=87995
+
+ Reviewed by Martin Robinson.
+
+ Add a configuration flag for enabling the unstable features - features of which
+ support in the Gtk port is being worked on but is not yet complete. The primary
+ use of this flag is when compiling through the build-webkit script.
+
+ All the features that are currently enabled when building through build-webkit but
+ are disabled by default when executing the configure script directly have their default
+ value (when the correspondent flag is not passed) set to 'yes' when unstable features
+ are enabled and 'no' otherwise. This way unstable features are kept disabled when performing
+ a release build (unless they are specifically enabled).
+
+ * configure.ac:
+
+2012-07-06 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
+
+ [Qt] Remove custom qmake logic for module creation
+
+ Qmake now has the necessary hooks to cleanly override the build locations.
+
+ https://bugs.webkit.org/show_bug.cgi?id=90461
+
+ Reviewed by Tor Arne Vestbø.
+
+ * Source/api.pri:
+
+2012-07-06 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
+
+ [Qt] Add top-level .qmake.conf
+
+ With Qt5, this makes setting $QMAKEPATH externally unnecessary.
+
+ The magic in the perl scripts to set QMAKEPATH is still there, as it doesn't
+ hurt, and is still required for Qt4.
+
+ https://bugs.webkit.org/show_bug.cgi?id=90461
+
+ Reviewed by Tor Arne Vestbø.
+
+ * .qmake.conf: Added.
+ * WebKit.pro:
+
+2012-07-06 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
+
+ [Qt] Let qt_module_config create the forwarding module pri file
+
+ https://bugs.webkit.org/show_bug.cgi?id=90461
+
+ Reviewed by Tor Arne Vestbø.
+
+ * Source/sync.profile:
+
+2012-07-06 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
+
+ [Qt] Don't let qt_webkit.pri proclaim its own location
+
+ This won't work any more with recent Qt5 versions, as the forwarding
+ pri is created by qt_module_config, which needs MODULE_PRI to be set
+ up already.
+
+ We also need to load build_config, not qt_module.
+
+ https://bugs.webkit.org/show_bug.cgi?id=90461
+
+ Reviewed by Tor Arne Vestbø.
+
+ * Source/api.pri:
+
+2012-07-06 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
+
+ [Qt] Remove redundant CONFIG+=module
+
+ qt_module_config takes care of that.
+
+ In api.pri we are actually testing the flag ourselves, so now we need to
+ test a related flag qt_module_config sets instead.
+
+ https://bugs.webkit.org/show_bug.cgi?id=90461
+
+ Reviewed by Tor Arne Vestbø.
+
+ * Source/api.pri:
+
+2012-07-06 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
+
+ [Qt] Adjust to changed generation of master include file
+
+ The responsiblity for creating the master include was moved out of syncqt.
+ @ignore_for_master_contents still stays, as syncqt (ab-)uses this for
+ determining whether a header is private.
+
+ https://bugs.webkit.org/show_bug.cgi?id=90461
+
+ Reviewed by Tor Arne Vestbø.
+
+ * Source/sync.profile:
+
+2012-07-05 Rob Buis <rbuis@rim.com>
+
+ [CMake] Fix some CMake warnings
+ https://bugs.webkit.org/show_bug.cgi?id=90558
+
+ Fix WebKit options so they match with FeatureList.pm.
+
+ Reviewed by Dan Bates.
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-07-05 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Move Webkit1 before WebKit2 in the build order
+
+ Reviewed by Csaba Osztrogonác.
+
+ * WebKit.pro:
+
+2012-07-05 Ryuan Choi <ryuan.choi@samsung.com>
+
+ [CMAKE] Unreviewd typo fix after r121857
+
+ * Source/cmake/WebKitMacros.cmake:
+
+2012-07-05 Dongwoo Im <dw.im@samsung.com>
+
+ [EFL] Enable the CUSTOM_SCHEME_HANDLER feature as default.
+ https://bugs.webkit.org/show_bug.cgi?id=88608
+
+ Reviewed by Hajime Morita.
+
+ * Source/cmake/OptionsEfl.cmake: Enable the CUSTOM_SCHEME_HANDLER feature as default.
+
+2012-07-05 Ryuan Choi <ryuan.choi@samsung.com>
+
+ [Wk2][EFL] EFL needs a WebKitTestRunner
+ https://bugs.webkit.org/show_bug.cgi?id=87659
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ * Source/CMakeLists.txt:
+ Set compiler flags for WebCoreTestSupport to be linked into TestRunnerInjectedBundle
+ shared library.
+ * Source/cmake/WebKitMacros.cmake: Remove unnecessary dependency.
+
+2012-07-04 John Mellor <johnme@chromium.org>
+
+ Text Autosizing: Add compile flag and runtime setting
+ https://bugs.webkit.org/show_bug.cgi?id=87394
+
+ This patch renames Font Boosting to Text Autosizing.
+
+ Reviewed by Adam Barth.
+
+ * configure.ac:
+
+2012-07-04 Ryuan Choi <ryuan.choi@samsung.com>
+
+ [CMAKE] Add GENERATE_BINDINGS macro to share the codes which use generate-bindings.pl.
+ https://bugs.webkit.org/show_bug.cgi?id=90258
+
+ Reviewed by Rob Buis.
+
+ This new macro calls generate-bindings.pl and append generated sources
+ into proper source list.
+
+ * Source/cmake/WebKitMacros.cmake:
+
+2012-07-04 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Get rid of un-needed QT += declarative for Qt 5
+
+ The declarative module has been renamed to quick1 in Qt 5, and the
+ engine-only module for Qt 5 is named 'qml'. For many of the instances
+ we could just remove 'declarative', since the project file was only
+ used for Qt5/WebKit2 builds. In the other cases the module was wrapped
+ in a haveQt(4) scope.
+
+ Reviewed by Csaba Osztrogonác.
+
+ * Source/api.pri:
+
+2012-07-03 Christophe Dumez <christophe.dumez@intel.com>
+
+ [EFL] Enable CSS variables support at compile time
+ https://bugs.webkit.org/show_bug.cgi?id=90448
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Turn on CSS_VARIABLES flag by default on EFL port.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-07-03 George Staikos <staikos@webkit.org>
+
+ [BlackBerry] Enable microdata support for BlackBerry.
+ https://bugs.webkit.org/show_bug.cgi?id=90429
+
+ Reviewed by Rob Buis.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+
+2012-07-03 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Make use of .qmake.cache for caching features
+
+ Instead of loading() features from the files that need them (and re-running
+ a bunch of checks), we now run feature detection as part of configure.pro,
+ and have build-webkit write the computed feature-defines and CONFIG to
+ .qmake.cache, which is then loaded by qmake _before_ even defaults_pre
+ when building WebKit.pro.
+
+ At some point we'll be able to selectivly prevent running of config tests
+ in configure.pro, which means we don't need a separate code-path for
+ the build-webkit --help case.
+
+ We should also move the code in build-webkit that now uses .webkit.config
+ to detect clean builds, to use .qmake.cache, since we now store the same
+ thing there.
+
+ Original patch by Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
+
+ Reviewed by Tor Arne Vestbø.
+
+ * Source/QtWebKit.pro:
+ * Source/api.pri:
+ * Source/tests.pri:
+ * WebKit.pro:
+
+2012-07-03 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r121766.
+ http://trac.webkit.org/changeset/121766
+ https://bugs.webkit.org/show_bug.cgi?id=90465
+
+ It caused flakey build errors on the bots (Requested by Ossy
+ on #webkit).
+
+ * Source/QtWebKit.pro:
+ * Source/api.pri:
+ * Source/tests.pri:
+ * WebKit.pro:
+
+2012-07-03 George Staikos <staikos@webkit.org>
+
+ [BlackBerry] Enable Custom Scheme Handlers for BlackBerry.
+ https://bugs.webkit.org/show_bug.cgi?id=90422
+
+ Reviewed by Rob Buis.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+
+2012-07-03 George Staikos <staikos@webkit.org>
+
+ [BlackBerry] Enable RegisterProtocolHandler for BlackBerry.
+ https://bugs.webkit.org/show_bug.cgi?id=90422
+
+ Reviewed by Rob Buis.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+
+2012-07-03 Priit Laes <plaes@plaes.org>
+
+ [GTK] Need to bump libsoup requirements (for `soup_cookie_jar_get_cookie_list`)
+ https://bugs.webkit.org/show_bug.cgi?id=90332
+
+ Reviewed by Gustavo Noronha Silva.
+
+ * configure.ac: Bump libsoup requirements to 2.39.2
+
+2012-07-03 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Make use of .qmake.cache for caching features
+
+ Instead of loading() features from the files that need them (and re-running
+ a bunch of checks), we now run feature detection as part of configure.pro,
+ and have build-webkit write the computed feature-defines and CONFIG to
+ .qmake.cache, which is then loaded by qmake _before_ even defaults_pre
+ when building WebKit.pro.
+
+ At some point we'll be able to selectivly prevent running of config tests
+ in configure.pro, which means we don't need a separate code-path for
+ the build-webkit --help case.
+
+ We should also move the code in build-webkit that now uses .webkit.config
+ to detect clean builds, to use .qmake.cache, since we now store the same
+ thing there.
+
+ Original patch by Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
+
+ Reviewed by Tor Arne Vestbø.
+
+ * Source/QtWebKit.pro:
+ * Source/api.pri:
+ * Source/tests.pri:
+ * WebKit.pro:
+
+2012-07-03 Christophe Dumez <christophe.dumez@intel.com>
+
+ [EFL] Enable MICRODATA support
+ https://bugs.webkit.org/show_bug.cgi?id=90377
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Turn on MICRODATA support by default for EFL port.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-07-02 George Staikos <staikos@webkit.org>
+
+ [BlackBerry] Enable scoped style for BlackBerry.
+ https://bugs.webkit.org/show_bug.cgi?id=90418
+
+ Reviewed by Rob Buis.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-07-02 Xiaobo Wang <xbwang@torchmobile.com.cn>
+
+ [BlackBerry] Use PUBLIC_BUILD to enable/disable DRT
+ https://bugs.webkit.org/show_bug.cgi?id=90271
+
+ Reviewed by George Staikos.
+
+ RIM PR #154707
+
+ Currently DRT code will be compiled only if ENABLE_DRT is set, and it's not
+ defined by default.
+ We should enable DRT by default unless PUBLIC_BUILD is set. In this way we don't
+ need to rebuild webkit before running DRT.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-07-02 Thiago Marcos P. Santos <thiago.santos@intel.com>
+
+ [EFL][CMake] Integrate API unit tests with CTest
+ https://bugs.webkit.org/show_bug.cgi?id=87251
+
+ Reviewed by Daniel Bates.
+
+ Enable CTest on the root CMakeLists.txt as it is expected
+ to be here. This will create a new build target ("make test")
+ to run all the API unit tests.
+
+ * CMakeLists.txt:
+
+2012-07-01 Christophe Dumez <christophe.dumez@intel.com>
+
+ [EFL] Add Gamepad support
+ https://bugs.webkit.org/show_bug.cgi?id=90170
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ * Source/cmake/FindEFL.cmake: Bump EFL libs dependencies.
+ * Source/cmake/OptionsEfl.cmake: Turn on GAMEPAD flag on EFL port.
+ * Source/cmakeconfig.h.cmake: Add GAMEPAD flag to CMake.
+
+2012-06-30 Jason Liu <jason.liu@torchmobile.com.cn>
+
+ [BlackBerry] WebView/Browser cause blank screen when selecting a dropdown field.
+ https://bugs.webkit.org/show_bug.cgi?id=90241
+
+ This issue is caused by single quotes in option's labels.
+ We should use the escape character of single quotes in JavaScript's string which
+ starts and ends with single quotes.
+ So we replace lablels' single quotes with its escape character during generating the
+ select popUp's HTML.
+
+
+ Reviewed by George Staikos.
+
+ * ManualTests/blackberry/select-popup-items-unicode-display.html:
+
+2012-06-29 Luiz Agostini <luiz.agostini@nokia.com>
+
+ [Qt][WK2] Private non-QtQuick API
+ https://bugs.webkit.org/show_bug.cgi?id=84532
+
+ Reviewed by Noam Rosenthal.
+
+ API tests for QRawWebView.
+
+ * Source/tests.pri:
+
+2012-06-29 Zan Dobersek <zandobersek@gmail.com>
+
+ Unreviewed build fix after r121518, adding a missing symbol to symbols.filter.
+
+ * Source/autotools/symbols.filter:
+
+2012-06-28 MORITA Hajime <morrita@google.com>
+
+ [Refactoring] NodeRenderingContext ctor could be built on top of the ComposedShadowTreeWalker
+ https://bugs.webkit.org/show_bug.cgi?id=89732
+
+ Reviewed by Dimitri Glazkov.
+
+ * Source/autotools/symbols.filter:
+
+2012-06-28 Jason Liu <jason.liu@torchmobile.com.cn>
+
+ [BlackBerry] Selection items show as garbage for non-ascii characters.
+ https://bugs.webkit.org/show_bug.cgi?id=89969
+
+ Add charset utf-8 to the select popup's page.
+
+ Reviewed by Antonio Gomes.
+
+ * ManualTests/blackberry/select-popup-items-unicode-display.html: Added.
+
+2012-06-28 Christophe Dumez <christophe.dumez@intel.com>
+
+ [EFL] Enable support for HTML5 datalist
+ https://bugs.webkit.org/show_bug.cgi?id=90157
+
+ Reviewed by Martin Robinson.
+
+ Turn on DATALIST flag by default on EFL port to
+ support HTML5 datalist tag.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-06-27 Zan Dobersek <zandobersek@gmail.com>
+
+ [Gtk] Add support for the Gamepad API
+ https://bugs.webkit.org/show_bug.cgi?id=87503
+
+ Reviewed by Carlos Garcia Campos.
+
+ Only enable the Gamepad feature on Linux as support
+ for other operating systems is not present.
+
+ Check for the GIO Unix and GUdev dependencies when the
+ Gamepad feature is enabled.
+
+ * configure.ac:
+
+2012-06-25 Simon Hausmann <simon.hausmann@nokia.com>
+
+ [Qt] Make it possible to build WebKit without QtWidgets
+ https://bugs.webkit.org/show_bug.cgi?id=78109
+
+ Reviewed by Tor Arne Vestbø.
+
+ * Source/QtWebKit.pro: Don't build WK1 tests and examples if WK1 is disabled.
+ * Source/api.pri: Move WK1 sources away from here and use WEBKIT += webkit1 instead
+ * WebKit.pro: Add WK1 to SUBDIRS unless no_webkit1 is set.
+
+2012-06-25 Gyuyoung Kim <gyuyoung.kim@samsung.com>
+
+ [EFL] Implement Network Information API
+ https://bugs.webkit.org/show_bug.cgi?id=87067
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ * Source/cmake/FindEFL.cmake: Find eeze library in build system.
+
+2012-06-25 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Unreviewed. Update NEWS and configure.ac for 1.9.4 release
+
+ * configure.ac: Bump version number.
+
+2012-06-22 Joshua Netterfield <jnetterfield@rim.com>
+
+ [BlackBerry] Sanitize GLSL code using ANGLE.
+
+ BlackBerry port does not sanitize GLSL code with ANGLE
+ https://bugs.webkit.org/show_bug.cgi?id=89583
+
+ Reviewed by Rob Buis.
+
+ * Source/cmake/OptionsBlackBerry.cmake: Include ANGLE openGL headers as system headers in BlackBerry port.
+
+2012-06-21 Kalev Lember <kalevlember@gmail.com>
+
+ [GTK] Fix NPAPI plugins on Windows
+ https://bugs.webkit.org/show_bug.cgi?id=54531
+
+ Reviewed by Martin Robinson.
+
+ Define XP_WIN on Windows for plugin support.
+
+ * GNUmakefile.am:
+
+2012-06-21 Ryuan Choi <ryuan.choi@gmail.com>
+
+ [EFL][WK2] Make WebKit2/Efl headers and resources installable.
+ https://bugs.webkit.org/show_bug.cgi?id=88207
+
+ Reviewed by Chang Shu.
+
+ * Source/cmake/OptionsCommon.cmake:
+ Provide new variable, EXEC_INSTALL_DIR to determine where to install
+ executables.
+
+2012-06-21 Ryuan Choi <ryuan.choi@samsung.com>
+
+ [EFL[WK2] Add WKViewEfl and WebKit2 API Object to represent Evas_Object.
+ https://bugs.webkit.org/show_bug.cgi?id=88935
+
+ Reviewed by Chang Shu.
+
+ * Source/cmake/OptionsEfl.cmake: Defines BUILDING_EFL__.
+
+2012-06-20 Varun Jain <varunjain@chromium.org>
+
+ Account for device scale factor when creating image for dragging.
+ https://bugs.webkit.org/show_bug.cgi?id=89489
+
+ Reviewed by Adam Barth.
+
+ * ManualTests/chromium/drag-image-accounts-for-device-scale.html: Added.
+
+2012-06-18 Philippe Normand <pnormand@igalia.com>
+
+ [GStreamer] 0.11 video-sink
+ https://bugs.webkit.org/show_bug.cgi?id=77087
+
+ Reviewed by Martin Robinson.
+
+ * configure.ac: Fix required gstreamer 0.11 version
+
+2012-06-19 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
+
+ [Qt] Fix the Windows build when Qt is built without -release or -debug
+ https://bugs.webkit.org/show_bug.cgi?id=89471
+
+ Reviewed by Tor Arne Vestbø.
+
+ Make sure that we at least remove build_all on Windows for api.pri,
+ as WebCore wasn't built for all configurations.
+
+ * Source/api.pri:
+
+2012-06-19 Mike West <mkwst@chromium.org>
+
+ Introduce ENABLE_CSP_NEXT configuration flag.
+ https://bugs.webkit.org/show_bug.cgi?id=89300
+
+ Reviewed by Adam Barth.
+
+ The 1.0 draft of the Content Security Policy spec is just about to
+ move to Last Call. We'll hide work on the upcoming 1.1 spec behind
+ this ENABLE flag, disabled by default.
+
+ Spec: https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-06-19 Joel Dillon <joel.dillon@codethink.co.uk>, Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
+
+ [Qt] Allow the modules file generation to work on Windows.
+ https://bugs.webkit.org/show_bug.cgi?id=89010
+
+ Reviewed by Csaba Osztrogonác.
+
+ Add calls to toSystemPath and use QMAKE_DIR_SEP where necessary.
+
+ * Source/api.pri:
+
+2012-06-19 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
+
+ [Qt] Fix TARGET not properly being set for QtWebKitd5.dll when building in debug.
+ https://bugs.webkit.org/show_bug.cgi?id=88880
+
+ load(qt_module_config) adjusts the TARGET to add the "d" suffix when doing
+ the debug build_pass. When doing the first pass, qt_module_config.prf doesn't
+ adjust the target since it is in debug_and_release and expects the debug
+ build_pass to come later. However, since we remove debug_and_release from CONFIG
+ right after this, the TARGET hasn't been adjusted and the debug build_pass
+ will not happen.
+
+ Work around it by disabling this optimization on Windows.
+
+ Reviewed by Tor Arne Vestbø.
+
+ * Source/api.pri:
+
+2012-06-19 Mike West <mkwst@chromium.org>
+
+ Add a scheme registry for bypassing Content Security Policy.
+ https://bugs.webkit.org/show_bug.cgi?id=89373
+
+ Reviewed by Adam Barth.
+
+ * Source/autotools/symbols.filter:
+
+2012-06-18 Rob Buis <rbuis@rim.com>
+
+ [BlackBerry] Enable LEGACY_VIEWPORT_ADAPTION
+ https://bugs.webkit.org/show_bug.cgi?id=89381
+
+ Reviewed by Antonio Gomes.
+
+ PR 163598
+
+ Enable LEGACY_VIEWPORT_ADAPTION.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+
+2012-06-17 Philippe Normand <pnormand@igalia.com>
+
+ Unreviewed, GTK 64-bit build fix after r120551.
+
+ * Source/autotools/symbols.filter:
+
+2012-06-17 Philippe Normand <pnormand@igalia.com>
+
+ Unreviewed, GTK build fix after r120397.
+
+ * Source/autotools/symbols.filter:
+
+2012-06-14 Kent Tamura <tkent@chromium.org>
+
+ Validate form state strings in FormController::setStateForNewFormElements()
+ https://bugs.webkit.org/show_bug.cgi?id=88768
+
+ Reviewed by Hajime Morita.
+
+ * Source/autotools/symbols.filter: Expose some symbols used by Internals.cpp.
+
+2012-06-14 Chris Guan <chris.guan@torchmobile.com.cn>
+
+ [Blackberry] add a new Api named setAllowNotification
+ https://bugs.webkit.org/show_bug.cgi?id=88950
+
+ Reviewed by Antonio Gomes.
+
+ Add a new API named setAllowNotification in webpage class to
+ let client set those allowed domains into notifications.
+
+ Test case:
+ * ManualTests/blackberry/notification.html: Added.
+
+2012-06-13 Zan Dobersek <zandobersek@gmail.com>
+
+ [Gtk] Enable link prefetch support in the developer builds
+ https://bugs.webkit.org/show_bug.cgi?id=89011
+
+ Reviewed by Martin Robinson.
+
+ Rather export an automake conditional than define a preprocessor
+ macro for enabling link prefetch support.
+
+ * configure.ac:
+
+2012-06-13 Robin Cao <robin.cao@torchmobile.com.cn>
+
+ [BlackBerry] Enable MEDIA_STREAM by default
+ https://bugs.webkit.org/show_bug.cgi?id=88849
+
+ Reviewed by Antonio Gomes.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-06-12 MORITA Hajime <morrita@google.com>
+
+ Shadow Pseudo ID should be able to nest to point nested shadow DOM.
+ https://bugs.webkit.org/show_bug.cgi?id=62218
+
+ Reviewed by Dimitri Glazkov.
+
+ * Source/autotools/symbols.filter:
+
+2012-06-12 Christophe Dumez <christophe.dumez@intel.com>
+
+ [EFL] Enable SHADOW_DOM flag
+ https://bugs.webkit.org/show_bug.cgi?id=87732
+
+ Reviewed by Kentaro Hara.
+
+ Enable SHADOW_DOM flag by default at compile time for EFL port.
+
+ * Source/autotools/symbols.filter: Fix GTK build by adding new symbol.
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-06-12 Christophe Dumez <christophe.dumez@intel.com>
+
+ [EFL] enable LEGACY_WEBKIT_BLOB_BUILDER flag
+ https://bugs.webkit.org/show_bug.cgi?id=88715
+
+ Reviewed by Noam Rosenthal.
+
+ Enable LEGACY_WEBKIT_BLOB_BUILDER flag by default on EFL port.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-06-12 Thiago Marcos P. Santos <thiago.santos@intel.com>
+
+ [CMake] Enabled CSS_BOX_DECORATION_BREAK by default
+ https://bugs.webkit.org/show_bug.cgi?id=88850
+
+ Reviewed by Alexis Menard.
+
+ Enabled it by default on CMake ports like in other ports.
+ This patch is a follow up to r120029.
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-06-11 Kaustubh Atrawalkar <kaustubh@motorola.com>
+
+ [DRT] LTC:: counterValueForElementById() could be moved to Internals.
+ https://bugs.webkit.org/show_bug.cgi?id=84406
+
+ Reviewed by Hajime Morita.
+
+ Exporting Internals::counterValueForElement symbols for the Gtk build.
+
+ * Source/autotools/symbols.filter:
+
+2012-06-11 Alexis Menard <alexis.menard@openbossa.org>
+
+ [CSS3 Backgrounds and Borders] Protect box-decoration-break behind a feature flag.
+ https://bugs.webkit.org/show_bug.cgi?id=88804
+
+ Reviewed by Tony Chang.
+
+ Protect box-decoration-break behind a feature flag enabled by default.
+
+ * configure.ac:
+
+2012-06-11 Arnaud Renevier <arno@renevier.net>
+
+ Replace obsolete mkdir_p variable with MKDIR_P
+ https://bugs.webkit.org/show_bug.cgi?id=88790
+
+ Reviewed by Martin Robinson.
+
+ * GNUmakefile.am:
+ * configure.ac:
+
+2012-06-11 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Unreviewed. Fix make distcheck issues.
+
+ * GNUmakefile.am: Initialize jscore nosource variables.
+
+2012-06-10 Darin Adler <darin@apple.com>
+
+ Remove unneeded callRemovedLastRef function from TreeShared refactoring
+ https://bugs.webkit.org/show_bug.cgi?id=88653
+
+ Reviewed by Sam Weinig.
+
+ * Source/autotools/symbols.filter: Filter removedLastRef instead of
+ callRemovedLastRef.
+
+2012-06-09 Sukolsak Sakshuwong <sukolsak@google.com>
+
+ Add UNDO_MANAGER flag
+ https://bugs.webkit.org/show_bug.cgi?id=87908
+
+ Reviewed by Tony Chang.
+
+ * Source/cmake/WebKitFeatures.cmake:
+
+2012-06-08 Martin Robinson <mrobinson@igalia.com>
+
+ Fix the GTK+ build when OpenGL is enabled.
+
+ * configure.ac: Fix the build.
+
+2012-06-08 Martin Robinson <mrobinson@igalia.com>
+
+ [GTK] build accelerated compositing on by default if OpenGL is present
+ https://bugs.webkit.org/show_bug.cgi?id=88677
+
+ Reviewed by Alejandro G. Castro.
+
+ Build accelerated compositing by default if OpenGL is present, just like WebGL.
+ Also prevent enabling WebGL if Clutter is turned on.
+
+ * configure.ac: Build AC by default.
+
+2012-06-08 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ [GTK] Add API to get the library version to WebKit2 GTK+
+ https://bugs.webkit.org/show_bug.cgi?id=88426
+
+ Reviewed by Martin Robinson.
+
+ * configure.ac: Generate WebKitVersion.h from WebKitVersion.h.in
+ file.
+
+2012-06-08 Ion Rosca <rosca@adobe.com>
+
+ Some overlay scrollbar API calls in ScrollAnimatorMac can lead to an assertion in RenderBox::mapAbsoluteToLocalPoint
+ https://bugs.webkit.org/show_bug.cgi?id=74111
+
+ Reviewed by Simon Fraser.
+
+ * ManualTests/scrollbar-crash-on-hide-scrolled-area.html: Added.
+
+2012-06-07 Kentaro Hara <haraken@chromium.org>
+
+ Reduce Node object size from 72 byte to 64 byte
+ https://bugs.webkit.org/show_bug.cgi?id=88528
+
+ Reviewed by Ryosuke Niwa.
+
+ Added a symbol for callRemovedLastRef().
+
+ * Source/autotools/symbols.filter:
+
+2012-06-07 Patrick Gansterer <paroga@webkit.org>
+
+ Build fix for WinCE after r113570.
+
+ * Source/cmake/OptionsWinCE.cmake:
+
+2012-06-07 Adam Barth <abarth@webkit.org>
+
+ Settings::defaultDeviceScaleFactor is redundant with Page::deviceScaleFactor
+ https://bugs.webkit.org/show_bug.cgi?id=88375
+
+ Reviewed by James Robinson.
+
+ This symbol no longer exists.
+
+ * Source/autotools/symbols.filter:
+
+2012-06-06 David Kilzer <ddkilzer@apple.com>
+
+ Teach git about localizable *.strings files
+ <http://webkit.org/b/88447>
+
+ Reviewed by Adam Roben.
+
+ * .gitattributes: Set diff attribute for *.strings files so
+ git-diff doesn't complain about them being binary files once the
+ git-config command is run.
+
+2012-06-06 Andy Wingo <wingo@igalia.com>
+
+ [GTK] Enable the LLInt
+ https://bugs.webkit.org/show_bug.cgi?id=88315
+
+ Reviewed by Filip Pizlo.
+
+ * configure.ac: Require Ruby, to build the low-level interpreter.
+
+2012-06-06 Sam D <dsam2912@gmail.com>
+
+ Web Inspector: Option for selecting/deselecting all breakpoints in breakpoint pane
+ https://bugs.webkit.org/show_bug.cgi?id=87644
+
+ Reviewed by Pavel Feldman.
+
+ Added an option to enable/disable all breakpoints in Breakpoint pane.
+
+ * Source/WebCore/English.lproj/localizedStrings.js:
+ * Source/WebCore/inspector/front-end/BreakpointManager.js:
+ (WebInspector.BreakpointManager.prototype.enableAllBreakpoints):
+ (WebInspector.BreakpointManager.prototype.disableAllBreakpoints):
+ * Source/WebCore/inspector/front-end/BreakpointsSidebarPane.js:
+ (WebInspector.JavaScriptBreakpointsSidebarPane.prototype._breakpointContextMenu.enabledBreakpointCount):
+ (WebInspector.JavaScriptBreakpointsSidebarPane.prototype._breakpointContextMenu):
+
+2012-06-05 Danilo Cesar Lemes de Paula <danilo.cesar@collabora.co.uk>
+
+ [GTK] show the feature list in alphabetical order
+ https://bugs.webkit.org/show_bug.cgi?id=88343
+
+ Reviewed by Gustavo Noronha Silva.
+
+ * configure.ac:
+
+2012-06-05 Dongwoo Im <dw.im@samsung.com>
+
+ Add 'isProtocolHandlerRegistered' and 'unregisterProtocolHandler'.
+ https://bugs.webkit.org/show_bug.cgi?id=73176
+
+ Reviewed by Adam Barth.
+
+ Two more APIs are added in Custom Scheme Handler specification.
+ http://dev.w3.org/html5/spec/Overview.html#custom-handlers
+ One is 'isProtocolHandlerRegistered' to query whether the specific URL
+ is registered or not.
+ The other is 'unregisterProtocolHandler' to remove the registered URL.
+
+ * Source/cmake/WebKitFeatures.cmake: Add a macro 'ENABLE_CUSTOM_SCHEME_HANDLER'.
+ * Source/cmakeconfig.h.cmake: Add a macro 'ENABLE_CUSTOM_SCHEME_HANDLER'.
+
+2012-06-04 Hugo Parente Lima <hugo.lima@openbossa.org>
+
+ Turn LEGACY_VIEWPORT_ADAPTION USE flag into an ENABLE flag.
+ https://bugs.webkit.org/show_bug.cgi?id=88243
+
+ Reviewed by Adam Barth.
+
+ * Source/cmake/WebKitFeatures.cmake:
+
+2012-06-04 Sadrul Habib Chowdhury <sadrul@chromium.org>
+
+ [chromium] Fix software rendering for device-scale-factor > 1
+ https://bugs.webkit.org/show_bug.cgi?id=88136
+
+ Reviewed by Darin Fisher.
+
+ Export WebCore::Page::setDeviceScaleFactor and WebCore::Settings::setDefaultDeviceScaleFactor.
+
+ * Source/autotools/symbols.filter:
+
+2012-06-04 Kevin Greer <kgr@chromium.org>
+
+ [chromium] Issue async events for console.time/timeEnd
+ https://bugs.webkit.org/show_bug.cgi?id=88003
+
+ Reviewed by Pavel Feldman.
+
+ * ../../Source/WebCore/page/Console.cpp:
+
+2012-06-04 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Unreviewed. Update NEWS and configure.ac for 1.9.3 release
+
+ * configure.ac: Bump version number.
+
+2012-06-02 Kevin Ollivier <kevino@theolliviers.com>
+
+ [wx] Unreviewed build fix. Temporarily disable DerivedSources cleanup on Windows.
+
+ * wscript:
+
+2012-06-01 Simon Hausmann <simon.hausmann@nokia.com>
+
+ [Qt] Use -Werror only in developer builds
+
+ Rubber-stamped by Tor Arne Vestbø.
+
+ In production builds -Werror with custom toolchains and wierd system
+ headers, -Werror is of no use and just creates confusion. So use it
+ only if Qt is configured with -developer-build.
+
+ * Source/api.pri: qt_developer_build determination moved to default_pre.prf
+
+2012-06-01 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
+
+ [Qt] Move QObject bridge related tests from tst_qwebframe to tst_qobjectbridge
+ https://bugs.webkit.org/show_bug.cgi?id=88117
+
+ Reviewed by Noam Rosenthal.
+
+ * Source/tests.pri: Add new entry for tst_qobjectbridge.
+
+2012-06-01 Christophe Dumez <christophe.dumez@intel.com>
+
+ [EFL] EFL port does not enable WEB_INTENTS_TAG flag
+ https://bugs.webkit.org/show_bug.cgi?id=86866
+
+ Reviewed by Adam Barth.
+
+ Enable WEB_INTENTS_TAG flag by default on EFL port.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-05-31 Christophe Dumez <christophe.dumez@intel.com>
+
+ [EFL] Enable CSS_IMAGE_SET flag
+ https://bugs.webkit.org/show_bug.cgi?id=87727
+
+ Reviewed by Adam Roben.
+
+ Add CSS_IMAGE_SET flag to CMake and enable it by default on EFL port.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-05-30 Kevin Ollivier <kevino@theolliviers.com>
+
+ [wx] Unreviewed build fix. Add needed file back to the wx build.
+
+ * wscript:
+
+2012-05-30 Mariusz Grzegorczyk <mariusz.g@samsung.com>, Ryuan Choi <ryuan.choi@samsung.com>
+
+ [EFL][WK2] Fix WebKit2-EFL build
+ https://bugs.webkit.org/show_bug.cgi?id=83693
+
+ Reviewed by Carlos Garcia Campos.
+
+ * Source/cmake/OptionsEfl.cmake: Define BUILDING_SOUP__ to build WebKit2/Efl.
+
+2012-05-29 Jonathan Dong <jonathan.dong@torchmobile.com.cn>
+
+ [BlackBerry] Loading media data with http authentication
+ https://bugs.webkit.org/show_bug.cgi?id=84214
+
+ Reviewed by George Staikos.
+
+ Added a manual test case which needs user to provide a HTTP server
+ with HTTP authentication support when loading the specified media
+ resource. The test case will test if the media resource is successfully
+ loaded.
+
+ * ManualTests/blackberry/video-load-with-authentication.html: Added.
+
+2012-05-29 Simon Fraser <simon.fraser@apple.com>
+
+ Incomplete repaint on twitter.com when replying to a tweet
+ https://bugs.webkit.org/show_bug.cgi?id=87553
+
+ Reviewed by Dean Jackson.
+
+ Manual test that adds a transform to a layer, forcing that
+ layer to gain backing store.
+
+ * ManualTests/compositing/requires-backing-change.html: Added.
+
+2012-05-29 David Barr <davidbarr@chromium.org>
+
+ Introduce ENABLE_CSS_IMAGE_RESOLUTION compile flag
+ https://bugs.webkit.org/show_bug.cgi?id=87685
+
+ Reviewed by Eric Seidel.
+
+ Add a configuration option for CSS image-resolution support, disabling it by default.
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-05-25 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
+
+ WebKitTestRunner needs to support layoutTestController.setJavaScriptProfilingEnabled
+ https://bugs.webkit.org/show_bug.cgi?id=42328
+
+ Reviewed by Eric Seidel.
+
+ * Source/autotools/symbols.filter: Added needed symbols for GTK build.
+
+2012-05-28 Gyuyoung Kim <gyuyoung.kim@samsung.com>
+
+ Move allowRoundingHacks to Internals interface
+ https://bugs.webkit.org/show_bug.cgi?id=87328
+
+ Reviewed by Hajime Morita.
+
+ * Source/autotools/symbols.filter: Add allowRoundingHacks symbol filter.
+
+2012-05-27 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
+
+ [EFL] Enable blob support for the EFL port
+ https://bugs.webkit.org/show_bug.cgi?id=85363
+
+ Reviewed by Hajime Morita.
+
+ Enable Blob support by default for the EFL port.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-05-27 Raphael Kubo da Costa <rakuco@webkit.org>
+
+ [CMake] Make WEBKIT_SET_EXTRA_COMPILER_FLAGS work with clang.
+ https://bugs.webkit.org/show_bug.cgi?id=87597
+
+ Reviewed by Daniel Bates.
+
+ Building with clang requires at least the -fPIC option being
+ passed correctly, just like it is needed with gcc. clang is also
+ compatible with most of gcc's compiler options, so we only need to
+ check for clang besides g++ in the macro definition.
+
+ * Source/cmake/WebKitHelpers.cmake: Check for "Clang" and use
+ CMAKE_COMPILER_IS_GNUCXX for the previous check, as it is shorter
+ and achieves the same effect.
+
+2012-05-25 Zan Dobersek <zandobersek@gmail.com>
+
+ configure.ac has duplicated AC_MSG_RESULT([$enable_sandbox]) and nothing for seamless iframes
+ https://bugs.webkit.org/show_bug.cgi?id=87453
+
+ Reviewed by Eric Seidel.
+
+ Report the value of $enable_iframe_seamless rather than $enable_sandbox
+ after checking whether to enable the iframe seamless option.
+
+ * configure.ac:
+
+2012-05-25 Zan Dobersek <zandobersek@gmail.com>
+
+ [Gtk] Remove configuration options that do not apply anymore
+ https://bugs.webkit.org/show_bug.cgi?id=87509
+
+ Reviewed by Martin Robinson.
+
+ Remove configuration options for enabling or disabling HTML5 datagrid,
+ DOM storage, image resizer API and sandboxed iframe support. These
+ features were either turned on by default with the feature defines
+ removed from the code or removed from the source.
+
+ * configure.ac:
+
+2012-05-25 Zalan Bujtas <zbujtas@gmail.com>
+
+ [Qt] Broken controls rendering when transform is applied.
+ https://bugs.webkit.org/show_bug.cgi?id=87483
+
+ Reviewed by Simon Hausmann.
+
+ * ManualTests/qt/control_paiting_with_transforms.html: Added.
+
+2012-05-24 Tim Horton <timothy_horton@apple.com>
+
+ Add feature defines for web-facing parts of CSS Regions and Exclusions
+ https://bugs.webkit.org/show_bug.cgi?id=87442
+ <rdar://problem/10887709>
+
+ Reviewed by Dan Bernstein.
+
+ * configure.ac:
+
+2012-05-24 Kent Tamura <tkent@chromium.org>
+
+ PAGE_POPUP: window.setValueAndClosePopup should be moved to a
+ per-context property of DOMWindow.
+ https://bugs.webkit.org/show_bug.cgi?id=87086
+
+ Reviewed by Adam Barth.
+
+ * ManualTests/forms/calendar-picker.html:
+ Introduce pseudo window.pagePopupController.
+
+2012-05-24 Philippe Normand <pnormand@igalia.com>
+
+ [GTK] Add --enable-css3-flexbox configure option after r118304.
+ https://bugs.webkit.org/show_bug.cgi?id=87455
+
+ Reviewed by Xan Lopez.
+
+ * configure.ac:
+
+2012-05-24 John Mellor <johnme@chromium.org>
+
+ Font Boosting: Add compile flag and runtime setting
+ https://bugs.webkit.org/show_bug.cgi?id=87394
+
+ Reviewed by Adam Barth.
+
+ Add ENABLE_FONT_BOOSTING.
+
+ * configure.ac:
+
+2012-05-23 Raphael Kubo da Costa <rakuco@webkit.org>
+
+ [CMake] Unreviewed, add ENABLE_CSS3_FLEXBOX after r118304.
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-05-23 Xiaobo Wang <xbwang@torchmobile.com.cn>
+
+ [BlackBerry] Reset JS state for each test
+ https://bugs.webkit.org/show_bug.cgi?id=86899
+
+ Reviewed by Nikolas Zimmermann.
+
+ * DumpRenderTree/blackberry/DumpRenderTree.cpp:
+ (BlackBerry::WebKit::DumpRenderTree::resetToConsistentStateBeforeTesting):
+
+2012-05-22 Dongwoo Im <dw.im@samsung.com>
+
+ [EFL] Implements the registerProtocolHandler method and option.
+ https://bugs.webkit.org/show_bug.cgi?id=73638
+
+ Reviewed by Andreas Kling.
+
+ The registerProtocolHandler() method allows Web sites to register themselves
+ as possible handlers for particular schemes.
+
+ http://dev.w3.org/html5/spec/Overview.html#dom-navigator-registerprotocolhandler
+
+ * Source/cmake/OptionsEfl.cmake: Adds the build option.
+ * Source/cmakeconfig.h.cmake: Adds the build option.
+
+2012-05-22 Kangil Han <kangil.han@samsung.com>
+
+ [EFL][DRT] Implement touch event
+ https://bugs.webkit.org/show_bug.cgi?id=86720
+
+ Reviewed by Hajime Morita.
+
+ Currently EFL DRT doesn't support touch event.
+ Therefore, this patch enabled it and implemented some eventSender function callbacks.
+
+ * Source/cmake/FindEFL.cmake: Add ecore-input to dependency check.
+ * Source/cmake/OptionsEfl.cmake: Enable touch event option.
+
+== Rolled over to ChangeLog-2012-05-22 ==
diff --git a/src/third_party/WebKit/ChangeLog-2012-05-22 b/src/third_party/WebKit/ChangeLog-2012-05-22
new file mode 100644
index 0000000..7dbe9d2
--- /dev/null
+++ b/src/third_party/WebKit/ChangeLog-2012-05-22
@@ -0,0 +1,20796 @@
+2012-05-22 Christophe Dumez <christophe.dumez@intel.com>
+
+ [EFL] EFL's DRT needs to print information about received Web Intents
+ https://bugs.webkit.org/show_bug.cgi?id=86864
+
+ Reviewed by Adam Barth.
+
+ Enable Web Intents by default on EFL port.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-05-21 Raphael Kubo da Costa <rakuco@webkit.org>
+
+ [EFL] Unreviewed build fix when ENABLE_VIDEO is off and ENABLE_VIDEO_TRACK is not.
+
+ Do not enable VIDEO_TRACK if VIDEO itself has been disabled.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-05-21 Raphael Kubo da Costa <rakuco@webkit.org>
+
+ [EFL] Do not enable Web Audio support by default at build time.
+ https://bugs.webkit.org/show_bug.cgi?id=86982
+
+ Reviewed by Philippe Normand.
+
+ Follow-up to r115800. Even though Web Audio support is disabled by
+ default in build-webkit, enabling it in OptionsEfl.cmake will turn
+ it on when building the port without build-webkit.
+
+ Since Web Audio support for the EFL port does not seem to be fully
+ working yet, it is better to disable it in all cases.
+
+ * Source/cmake/OptionsEfl.cmake: Remove option override for
+ ENABLE_WEB_AUDIO.
+
+2012-05-21 Dominic Mazzoni <dmazzoni@google.com>
+
+ AX: A disabled select element should not be exposed as focusable
+ https://bugs.webkit.org/show_bug.cgi?id=86949
+
+ Reviewed by Chris Fleizach.
+
+ * LayoutTests/accessibility/disabled-controls-not-focusable-expected.txt: Added.
+ * LayoutTests/accessibility/disabled-controls-not-focusable.html: Added.
+ * Source/WebCore/accessibility/AccessibilityListBox.h:
+ (AccessibilityListBox):
+ * Source/WebCore/accessibility/AccessibilityMenuList.cpp:
+ (WebCore::AccessibilityMenuList::canSetFocusAttribute):
+ (WebCore):
+ * Source/WebCore/accessibility/AccessibilityMenuList.h:
+ (AccessibilityMenuList):
+
+2012-05-20 George Staikos <staikos@webkit.org>
+
+ [BlackBerry] Define navigator.vendor for BlackBerry.
+ https://bugs.webkit.org/show_bug.cgi?id=86975
+
+ Reviewed by Antonio Gomes.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+
+2012-05-20 Kevin Ollivier <kevino@theolliviers.com>
+
+ [wx] Unreviewed build fix. Clean up no longer used files in DerivedSources.
+
+ * wscript:
+
+2012-05-19 Kevin Ollivier <kevino@theolliviers.com>
+
+ [wx] Unreviewed build fix. Remove a couple files wx doesn't use from the build.
+
+ * wscript:
+
+2012-05-18 Christophe Dumez <christophe.dumez@intel.com>
+
+ [EFL] Web Intents code is not compiling
+ https://bugs.webkit.org/show_bug.cgi?id=85364
+
+ Reviewed by Adam Barth.
+
+ Remove broken CMake directive for WEB_INTENTS.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-05-18 Adrian Bunk <bunk@stusta.de>
+
+ [GTK] Remove the obsolete AM_PROG_CC_STDC
+ https://bugs.webkit.org/show_bug.cgi?id=85250
+
+ Reviewed by Martin Robinson.
+
+ * configure.ac:
+
+2012-05-18 Raphael Kubo da Costa <rakuco@webkit.org>
+
+ [CMake] Unreviewed, remove ENABLE_CSS_GRID_LAYOUT option after r117613.
+
+ * Source/cmake/WebKitFeatures.cmake:
+
+2012-05-18 Shezan Baig <shezbaig.wk@gmail.com>
+
+ Expose FrameSelection::absoluteCaretBounds via window.internals
+ https://bugs.webkit.org/show_bug.cgi?id=86390
+
+ Reviewed by Ryosuke Niwa.
+
+ Exports necessary symbols.
+
+ * Source/autotools/symbols.filter:
+
+2012-05-18 Martin Robinson <mrobinson@igalia.com>
+
+ Get IndexedDB closer to building for GTK+.
+
+ Reviewed by Philippe Normand.
+
+ * configure.ac: Make out the IndexedDB imply USE_LEVELDB, as LevelDB is the
+ only IndexedDB backend at the moment. Also mark IndexedDB as incomplete.
+
+2012-05-18 Zalan Bujtas <zbujtas@gmail.com>
+
+ [Qt] Gesture tap highlighter needs to take overflow clip into account.
+ https://bugs.webkit.org/show_bug.cgi?id=84989
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ * ManualTests/qt/tap-highlighting-overflow-hidden.html: Added.
+
+2012-05-18 Christophe Dumez <christophe.dumez@intel.com>
+
+ [EFL] Add simple implementation of Web Intents
+ https://bugs.webkit.org/show_bug.cgi?id=86354
+
+ Reviewed by Eric Seidel.
+
+ Enable WEB_INTENTS flag by default on EFL port.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-05-17 Dan Bernstein <mitz@apple.com>
+
+ REGRESSION (r117428): WebKit API/SPI was removed
+ https://bugs.webkit.org/show_bug.cgi?id=86748
+
+ Reverted r117428.
+
+ * Source/autotools/symbols.filter:
+
+2012-05-17 Thiago Marcos P. Santos <thiago.santos@intel.com>
+
+ [EFL] Fix link error caused by not directly linking with edbus
+ https://bugs.webkit.org/show_bug.cgi?id=86747
+
+ Unreviewed build fix.
+
+ * Source/cmake/FindEFL.cmake:
+
+2012-05-17 Gyuyoung Kim <gyuyoung.kim@samsung.com>
+
+ Convert setDomainRelaxationForbiddenForURLScheme to use InternalSettings interface
+ https://bugs.webkit.org/show_bug.cgi?id=86704
+
+ Reviewed by Eric Seidel.
+
+ * Source/autotools/symbols.filter: Add setDomainRelaxationForbiddenForURLScheme symbol filter.
+
+2012-05-16 Kihong Kwon <kihong.kwon@samsung.com>
+
+ [EFL] Support for Battery Status API on the WebKit-Efl
+ https://bugs.webkit.org/show_bug.cgi?id=83254
+
+ Reviewed by Chang Shu.
+
+ Add dependency check for e_ukit package which is in the e_dbus library.
+
+ * Source/cmake/FindEFL.cmake:
+
+2012-05-16 Varun Jain <varunjain@google.com>
+
+ [chromium] No modifier flags (shift/ctrl/alt) in drag&drop events on chromium linux
+ https://bugs.webkit.org/show_bug.cgi?id=86236
+
+ Reviewed by Tony Chang.
+
+ * ManualTests/chromium/modifiers-during-drag-and-drop.html: Added.
+
+2012-05-16 Keishi Hattori <keishi@webkit.org>
+
+ [chromium] Add WebKit API to access inner text value of input element
+ https://bugs.webkit.org/show_bug.cgi?id=85353
+
+ Reviewed by Kent Tamura.
+
+ * Source/autotools/symbols.filter: Added HTMLInputElement::setEditingValue
+
+2012-05-15 Kihong Kwon <kihong.kwon@samsung.com>
+
+ [EFL] Enable Fullscreen API
+ https://bugs.webkit.org/show_bug.cgi?id=85870
+
+ Reviewed by Antonio Gomes.
+
+ Enable FULLSCREEN_API on the Efl port.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-05-14 Shinya Kawanaka <shinyak@chromium.org>
+
+ document.execCommand('Indent') in the direct child of ShadowRoot causes a crash.
+ https://bugs.webkit.org/show_bug.cgi?id=86341
+
+ Reviewed by Ryosuke Niwa.
+
+ Exports necessary symbols.
+
+ * Source/autotools/symbols.filter:
+
+2012-05-14 Luke Macpherson <macpherson@chromium.org>
+
+ Introduce ENABLE_CSS_VARIABLES compile flag.
+ https://bugs.webkit.org/show_bug.cgi?id=86338
+
+ Reviewed by Dimitri Glazkov.
+
+ Add a configuration option for CSS Variables support, disabling it by default.
+
+ * Source/cmake/WebKitFeatures.cmake:
+
+2012-05-14 Kevin Ollivier <kevino@theolliviers.com>
+
+ [wx] Unreviewed build fix. Fix wxMSW build, and make sure we properly
+ define WebKitVersion.h as a build target for all platforms to avoid
+ unnecessary rebuilds.
+
+ * wscript:
+
+2012-05-11 Jeffrey Pfau <jpfau@apple.com>
+
+ REGRESSION (r114170): Scroll areas in nested frames improperly placed when tiled drawing is enabled
+ https://bugs.webkit.org/show_bug.cgi?id=86239
+
+ Reviewed by Anders Carlsson.
+
+ * ManualTests/resources/frame-textarea.html: Added.
+ * ManualTests/scrollable-positioned-frame.html: Added.
+ * ManualTests/scrollable-positioned-nested-frame.html: Added.
+
+2012-05-11 Kevin Ollivier <kevino@theolliviers.com>
+
+ [wx] Unreviewed build fix, exclude some files we don't use from the build.
+
+ * wscript:
+
+2012-05-11 Tommy Widenflycht <tommyw@google.com>
+
+ MediaStream API: Fix a reference counting issue in UserMediaRequest
+ https://bugs.webkit.org/show_bug.cgi?id=86210
+
+ Reviewed by Abhishek Arya.
+
+ * ManualTests/user-media-request-crash.html: Added.
+
+2012-05-11 Christophe Dumez <christophe.dumez@intel.com>
+
+ Web Intents code only supports V8
+ https://bugs.webkit.org/show_bug.cgi?id=85954
+
+ Reviewed by Adam Barth.
+
+ Add ENABLE_WEB_INTENTS flag to CMake.
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-05-11 Xiaobo Wang <xbwang@torchmobile.com.cn>
+
+ [BlackBerry] Update DumpRenderTree.cpp to also run ref-tests if there're any
+ https://bugs.webkit.org/show_bug.cgi?id=86055
+
+ Reviewed by Rob Buis.
+
+ Ref-tests are tests with suffix "-expected", "-expected-mismatch" and a valid
+ extension(".html", ".htm", etc.).
+ Currently torch-launcher only run tests parsed by NRWT, with ref-tests
+ excluded. As a result, if a test have ref-tests (which were not run), our
+ DumpRenderTree Perl script will think there's a crash and exit with code 1.
+ So NRWT will report the result as CRASH.
+ We need to update DumpRenderTree.cpp to try to find ref-tests and run them.
+
+ * DumpRenderTree/blackberry/DumpRenderTree.cpp:
+ (BlackBerry::WebKit::DumpRenderTree::DumpRenderTree):
+ (BlackBerry::WebKit::DumpRenderTree::getRefTests):
+ (WebKit):
+ (BlackBerry::WebKit::DumpRenderTree::runCurrentTest):
+ (BlackBerry::WebKit::DumpRenderTree::runRemainingTests):
+ (BlackBerry::WebKit::DumpRenderTree::runTests):
+ * DumpRenderTree/blackberry/DumpRenderTreeBlackBerry.h:
+ (DumpRenderTree):
+
+2012-05-10 MORITA Hajime <morrita@google.com>
+
+ ElementShadow should minimize the usage of "ShadowRoot" name
+ https://bugs.webkit.org/show_bug.cgi?id=85970
+
+ Reviewed by Dimitri Glazkov.
+
+ Removed symbols which no longer exists
+
+ * Source/autotools/symbols.filter:
+
+2012-05-10 Gyuyoung Kim <gyuyoung.kim@samsung.com>
+
+ Move resumeAnimations to use Internals interface
+ https://bugs.webkit.org/show_bug.cgi?id=86063
+
+ Reviewed by Alexey Proskuryakov.
+
+ * Source/autotools/symbols.filter: Add a symbol filter for resumeAnimations.
+
+2012-05-10 Zan Dobersek <zandobersek@gmail.com>
+
+ [GTK] ENABLE_IFRAME_SEAMLESS support
+ https://bugs.webkit.org/show_bug.cgi?id=85843
+
+ Reviewed by Eric Seidel.
+
+ Add a configuration option for enabling the iframe seamless
+ attribute support, enabling it by default.
+
+ * configure.ac:
+
+2012-05-09 Stephen Chenney <schenney@chromium.org>
+
+ SVG Filters allow invalid elements as children
+ https://bugs.webkit.org/show_bug.cgi?id=83979
+
+ Reviewed by Nikolas Zimmermann.
+
+ This test will crash upon load in Chromium, unless the associated fix is in.
+
+ * ManualTests/bugzilla-83979.svg: Added.
+
+2012-05-09 Kent Tamura <tkent@chromium.org>
+
+ Calendar Picker: Fix a crash by changing input type.
+ https://bugs.webkit.org/show_bug.cgi?id=86007
+
+ Reviewed by Hajime Morita.
+
+ * ManualTests/forms/calendar-picker-crash-by-type-change.html: Added.
+
+2012-05-09 Gyuyoung Kim <gyuyoung.kim@samsung.com>
+
+ Move suspendAnimations to use Internals interface.
+ https://bugs.webkit.org/show_bug.cgi?id=85986
+
+ Reviewed by Ryosuke Niwa.
+
+ * Source/autotools/symbols.filter: Add a symbol filter for suspendAnimations.
+
+2012-05-09 Hugo Parente Lima <hugo.lima@openbossa.org>
+
+ Use suitable viewport values on XHTML-MP pages.
+ https://bugs.webkit.org/show_bug.cgi?id=85425
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Add LEGACY_VIEWPORT_ADAPTION use feature to cmake build system,
+ this feature will enable the use of a suitable viewport size
+ on legacy XHTML-MP pages.
+
+ * Source/cmake/WebKitFeatures.cmake:
+
+2012-05-09 Crystal Zhang <haizhang@rim.com>
+
+ [BlackBerry] Enable PAGE_POPUP in make file, and implement required methods
+ https://bugs.webkit.org/show_bug.cgi?id=85907
+
+ Reviewed by Rob Buis.
+
+ Enable PAGE_POPUP option in make files.
+
+ Internal reviewed by Yong Li.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-05-09 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ [GTK] Split WebKit2 Makefile moving source code listings to GNUmakefile.list.am
+ https://bugs.webkit.org/show_bug.cgi?id=85985
+
+ Reviewed by Gustavo Noronha Silva.
+
+ * GNUmakefile.am:
+
+2012-05-09 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ [GTK] Use independent version numbers for public libraries
+ https://bugs.webkit.org/show_bug.cgi?id=85984
+
+ Reviewed by Gustavo Noronha Silva.
+
+ * configure.ac: Define LIBJAVASCRIPTCOREGTK_VERSION and
+ LIBWEBKIT2GTK_VERSION using the same version as
+ LIBWEBKITGTK_VERSION for backwards compatibility.
+
+2012-05-08 Raphael Kubo da Costa <rakuco@webkit.org>
+
+ [CMake] FindGStreamer: Fix the build with static WebCore.
+ https://bugs.webkit.org/show_bug.cgi?id=85930
+
+ Reviewed by Daniel Bates.
+
+ Building WebCore statically was failing because files in
+ WebCore/platform/gstreamer when ENABLE_VIDEO was set required
+ gstreamer-base, which was not being linked to after r116453.
+
+ Fix that by looking for gstreamer-base, requiring and linking
+ against it if GStreamer is used.
+
+ * Source/cmake/FindGStreamer.cmake:
+
+2012-05-08 Raphael Kubo da Costa <rakuco@webkit.org>
+
+ [CMake] Rewrite FindGStreamer.cmake.
+ https://bugs.webkit.org/show_bug.cgi?id=85857
+
+ Reviewed by Daniel Bates.
+
+ We are currently kind of duplicating the same
+ FindGStreamer-Foo.cmake file whenever a new GStreamer plugin needs
+ to be found. Besides this approach not scaling very well, it
+ relies on pkg-config for version checking, uses the LibFindMacros
+ package that we should deprecate and all the find files could be
+ merged into one, with users using the COMPONENTS feature of the
+ FIND_PACKAGE() call to find the desired plugins.
+
+ FindGStreamer.cmake has then been rewritten to take all that into
+ account:
+ - The LibFindMacros.cmake package is not used anymore.
+ - Version check is performed in the CMake file itself by parsing
+ the gstversion.h header.
+ - All GStreamer plugins are searched and the COMPONENTS keyword
+ used in the FIND_PACKAGE() call is used to check which plugins are
+ required.
+ - The plugins-base and base GStreamer plugins are not searched, as
+ they were not used anywhere in the build system.
+
+ * Source/cmake/FindGStreamer-App.cmake: Removed.
+ * Source/cmake/FindGStreamer-Audio.cmake: Removed.
+ * Source/cmake/FindGStreamer-Base.cmake: Removed.
+ * Source/cmake/FindGStreamer-FFT.cmake: Removed.
+ * Source/cmake/FindGStreamer-Interfaces.cmake: Removed.
+ * Source/cmake/FindGStreamer-Pbutils.cmake: Removed.
+ * Source/cmake/FindGStreamer-Plugins-Base.cmake: Removed.
+ * Source/cmake/FindGStreamer-Video.cmake: Removed.
+ * Source/cmake/FindGStreamer.cmake: Rewrite as described above.
+ * Source/cmake/OptionsEfl.cmake: Use COMPONENTS to specify which
+ GStreamer plugins to look for.
+
+2012-05-08 Ryosuke Niwa <rniwa@webkit.org>
+
+ perf-o-matic fix attempt for dashboard images.
+
+ Rubber-stamped by Antti Koivisto.
+
+ Also stop generating images for 30, 90, and 365 days since they have been timing out.
+
+ * Websites/webkit-perf.appspot.com/controller.py:
+ (schedule_runs_update):
+ * Websites/webkit-perf.appspot.com/models.py:
+ (Runs.chart_params):
+
+2012-05-08 Christophe Dumez <christophe.dumez@intel.com>
+
+ [CMake] Add ENABLE_IFRAME_SEAMLESS flag
+ https://bugs.webkit.org/show_bug.cgi?id=85838
+
+ Reviewed by Eric Seidel.
+
+ Add ENABLE_IFRAME_SEAMLESS flag to CMake and enable it by default.
+ This flag was introduced by r116356.
+
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-05-08 Balazs Kelemen <kbalazs@webkit.org>
+
+ [Qt] X11 plugins need to be reworked for Qt5+WK1
+ https://bugs.webkit.org/show_bug.cgi?id=80691
+
+ Reviewed by Simon Hausmann.
+
+ Implement basic windowless plugin support with Qt5.
+
+ * Source/api.pri: Need private API's to be able
+ to use QApplicationPrivate::windowForWidget.
+
+2012-05-07 Dave Tu <dtu@chromium.org>
+
+ Adjust flakiness dashboard gpu_tests image diff URLs.
+ https://bugs.webkit.org/show_bug.cgi?id=85423
+
+ Reviewed by Ojan Vafai.
+
+ * Tools/TestResultServer/static-dashboards/flakiness_dashboard.js:
+
+2012-05-07 Liam Quinn <lquinn@rim.com>
+
+ [BlackBerry] WWW-Authenticate header on 200 response pops up authentication dialog
+ https://bugs.webkit.org/show_bug.cgi?id=85643
+
+ Reviewed by George Staikos.
+
+ RIM PR: 151992
+ Added manual test for WWW-Authenticate header on a 200 response.
+
+ * ManualTests/blackberry/http-auth-on-200.php: Added.
+
+2012-05-07 Simon Hausmann <simon.hausmann@nokia.com>
+
+ [Qt] Unreviewed trivial build fix: Don't include bytearraytestdata.h in the QtWebKit
+ module header.
+
+ * Source/sync.profile:
+
+2012-05-06 MORITA Hajime <morrita@google.com>
+
+ https://bugs.webkit.org/show_bug.cgi?id=85265
+ [Shadow DOM] ShadowTree needs a better name
+
+ Reviewed by Dimitri Glazkov.
+
+ * Source/autotools/symbols.filter: Updated exported symbol names according to the rename.
+
+2012-05-06 Dan Bernstein <mitz@apple.com>
+
+ Part of: Building and debugging WebKit in the Xcode IDE requires a lot of setup
+ https://bugs.webkit.org/show_bug.cgi?id=85739
+
+ Reviewed by Daniel Bates.
+
+ * WebKit.xcworkspace: Added.
+ * WebKit.xcworkspace/contents.xcworkspacedata: Added.
+ * WebKit.xcworkspace/xcshareddata: Added.
+ * WebKit.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: Added.
+ * WebKit.xcworkspace/xcshareddata/xcschemes: Added.
+ * WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme: Added
+ this scheme, which builds all source projects and runs WebProcess with
+ Safari as the client executable.
+ * WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme: Added
+ this scheme, which builds all source projects and runs Safari.
+ * WebKit.xcworkspace/xcshareddata/xcschemes/All Tools.xcscheme: Added
+ this scheme, which builds all tools projects and runs DumpRenderTree.
+
+2012-05-06 Gustavo Noronha Silva <gns@gnome.org>
+
+ [GTK] Enable WebKit2 build by default (again)
+ https://bugs.webkit.org/show_bug.cgi?id=85750
+
+ * configure.ac: enable wk2 build by default.
+
+2012-05-06 Gyuyoung Kim <gyuyoung.kim@samsung.com>
+
+ Convert isPageBoxVisible to use Internals interface.
+ https://bugs.webkit.org/show_bug.cgi?id=85692
+
+ Reviewed by Darin Adler.
+
+ * Source/autotools/symbols.filter: Add isPageBoxVisible symbol filter.
+
+2012-05-06 Jonathan Dong <jonathan.dong@torchmobile.com.cn>
+
+ [BlackBerry] Enable credential persistance and auto fill
+ https://bugs.webkit.org/show_bug.cgi?id=85572
+
+ Reviewed by Rob Buis.
+
+ Enable credential persistance and auto fill feature by adding
+ ENABLE_BLACKBERRY_CREDENTIAL_PERSIST=1.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+
+2012-05-05 Gustavo Noronha Silva <gns@gnome.org>
+
+ Unreviewed preparation for 1.9.2.
+
+ * configure.ac: bump version to 1.9.2 and bump libtool version.
+
+2012-05-04 Jer Noble <jer.noble@apple.com>
+
+ Flash of white when exiting full screen HTML5 video
+ https://bugs.webkit.org/show_bug.cgi?id=85438
+
+ Reviewed by Sam Weinig.
+
+ * ManualTests/fullscreen/full-screen-flash.html: Added.
+
+2012-05-04 Jer Noble <jer.noble@apple.com>
+
+ Taking a visibility:hidden element full screen causes full screen window to disappear.
+ https://bugs.webkit.org/show_bug.cgi?id=85432
+
+ Reviewed by Maciej Stachowiak.
+
+ * ManualTests/fullscreen/full-screen-zero-width.html: Added.
+
+2012-05-04 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Unreviewed, rolling out r116075.
+ http://trac.webkit.org/changeset/116075
+
+ WebKit2 build was broken while WebKit2 build was disabled in bots,
+ so nobody noticed it. Disable the WebKit2 build for now to keep
+ the bots green again until we find the actual commit that
+ broke the WebKit2 build.
+
+ * configure.ac:
+
+2012-05-04 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Unreviewed. Enable WebKit2 by default in configure.
+
+ This was removed in r115624 to make sure release 1.9.1 didn't have
+ WebKit2 enabled by default, because we are using the same library
+ versions for WebKit1 and WebKit2.
+
+ * configure.ac: Enable WebKit2 by default.
+
+2012-05-03 Raphael Kubo da Costa <rakuco@webkit.org>
+
+ [CMake] Rewrite FindCairo.cmake.
+ https://bugs.webkit.org/show_bug.cgi?id=84895
+
+ Reviewed by Daniel Bates.
+
+ The old approach relied on pkg-config for finding Cairo (which
+ introduced a dependency on pkg-config that could be avoided), used
+ the LibFindMacros code that we should probably remove in the
+ future and did not use the FindPackageHandleStandardArguments
+ module.
+
+ Change all that by rewriting the module.
+ - Use the pkg-config output optionally instead of requiring it
+ like LibFindMacros did.
+ - Remove the implicit dependency on FreeType which often found it
+ the wrong way via pkg-config and without considering
+ CMAKE_PREFIX_PATH.
+ - Retrieve the Cairo version by looking at cairo-version.h instead
+ of relying on pkg-config. It requires some additional code for
+ checking if the desired version has been found, but that will not
+ be needed once we start depending on CMake 2.8.3 or later.
+
+ The only downside is that FPHSA sets <UPPERCASED_NAME>_FOUND
+ instead of <Name>_FOUND, and to keep things consistent
+ Cairo_LIBRARIES and Cairo_INCLUDE_DIRS have become CAIRO_LIBRARIES
+ and CAIRO_INCLUDE_DIRS.
+
+ * Source/cmake/FindCairo.cmake:
+
+2012-05-03 Mike Fenton <mifenton@rim.com>
+
+ Rename attribute.
+
+ [BlackBerry] Add special attribute for alternate selection touch handling.
+ https://bugs.webkit.org/show_bug.cgi?id=85284
+
+ Reviewed by Rob Buis.
+
+ * ManualTests/blackberry/selection-touch-override.html:
+
+2012-05-03 Gyuyoung Kim <gyuyoung.kim@samsung.com>
+
+ [CMAKE] Remove unneeded keyword in WebKitFeatures.cmake
+ https://bugs.webkit.org/show_bug.cgi?id=85461
+
+ Reviewed by Eric Seidel.
+
+ DEFAULT keyword wasn't removed on Bug 72815.
+
+ * Source/cmake/WebKitFeatures.cmake: Remove DEFAULT keyword in ENABLE_DRAG_SUPPORT field.
+
+2012-05-02 Simon Hausmann <simon.hausmann@nokia.com>
+
+ [Qt] Unreviewed prospective QtMobility build fix.
+
+ * Source/api.pri: The Qt 4 equivalent of QT += sensors should be handled by
+ WebCore.pri, but somehow it isn't.
+
+2012-05-02 Lars Knudsen <lars.knudsen@nokia.com>
+
+ [Qt] Make DeviceMotion and DeviceOrientation work with WebKit2
+ https://bugs.webkit.org/show_bug.cgi?id=64595
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Moving DeviceMotion and DeviceOrientation clients and providers
+ to WebCore. This is done to allow clean dependencies when
+ statically linking WK2.
+
+ * Source/api.pri:
+
+2012-05-02 Dongwoo Im <dw.im@samsung.com>
+
+ [EFL] Implement the Web Audio API feature.
+ https://bugs.webkit.org/show_bug.cgi?id=78688
+
+ Reviewed by Philippe Normand.
+
+ Implement the Web Audio API feature on the EFL port.
+ https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html
+
+ * Source/cmake/FindGStreamer-Audio.cmake: Added. Find the pkgconfig of the GStreamer-audio.
+ * Source/cmake/FindGStreamer-FFT.cmake: Added. Find the pkgconfig of the GStreamer-fft.
+ * Source/cmake/OptionsEfl.cmake: Add the ENABLE_WEB_AUDIO option.
+ * Source/cmakeconfig.h.cmake: Add the ENABLE_WEB_AUDIO option.
+
+2012-05-01 Landry Breuil <landry@openbsd.org>
+
+ [GTK] Fix gstreamer detection during configure
+ https://bugs.webkit.org/show_bug.cgi?id=84325
+
+ Reviewed by Philippe Normand.
+
+ * configure.ac: Fix GSTREAMER_REQUIRED_VERSION and
+ GSTREAMER_PLUGINS_BASE_REQUIRED_VERSION assignments.
+
+2012-05-01 Mike Fenton <mifenton@rim.com>
+
+ Add special attribute for alternate selection touch handling.
+ https://bugs.webkit.org/show_bug.cgi?id=85284
+
+ Reviewed by Antonio Gomes.
+
+ PR 152975.
+
+ Add manual test for -bb-selection-touchoverride.
+
+ Reviewed Internally by Gen Mak.
+
+ * ManualTests/blackberry/selection-touch-override.html: Added.
+
+2012-04-25 Raphael Kubo da Costa <rakuco@webkit.org>
+
+ [CMake] Add a proper license to FindSqlite.cmake.
+ https://bugs.webkit.org/show_bug.cgi?id=84901
+
+ Reviewed by Daniel Bates.
+
+ FindSqlite.cmake referenced COPYING-CMAKE-SCRIPTS, which was
+ supposed to contain its license. This file, however, was not
+ imported with FindSqlite.cmake into the tree.
+
+ Add it from kdelibs (where the Find file came from) at git
+ revision [1]. Also worth mentioning is that Alexander Neundorf
+ added Gilles Caulier as the script author in revision [2].
+
+ [1] https://projects.kde.org/projects/kde/kdelibs/repository/revisions/c27925edf98b9952aeada677dfc74ce9c809c48a
+ [2] https://projects.kde.org/projects/kde/kdelibs/repository/revisions/14d0a92e04e1a200d6e58397e57a29194a0819cf
+
+ * Source/cmake/FindSqlite.cmake:
+
+2012-04-30 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ [GTK] Update NEWS and configure.ac for 1.9.1 release
+ https://bugs.webkit.org/show_bug.cgi?id=85175
+
+ Reviewed by Philippe Normand.
+
+ * configure.ac: Bumped version number. Disable WebKit2 by default
+ for now, since we still don't use a different libtool version for
+ libwebkit2gtk. It will be enabled again after the release and the
+ library version will be reworked for the next release.
+
+2012-04-30 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Unreviewed. Fix make distcheck.
+
+ * GNUmakefile.am: Add ALL_MOFILES declaration.
+
+2012-04-28 Yury Semikhatsky <yurys@chromium.org>
+
+ Unreviewed. Gtk build fix after r115553.
+
+ * Source/autotools/symbols.filter:
+
+2012-04-26 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ [SOUP] Add a way to register custom uri schemes in WebKit2
+ https://bugs.webkit.org/show_bug.cgi?id=84130
+
+ Reviewed by Martin Robinson.
+
+ * GNUmakefile.am: Add BUILDING_SOUP__ macro to compilation.
+
+2012-04-26 Antonio Gomes <agomes@rim.com>
+
+ [BlackBerry] properly disable DRAG_SUPPORT
+ https://bugs.webkit.org/show_bug.cgi?id=84952
+
+ Reviewed by Daniel Bates.
+
+ Add CMake build options to toggle DRAG_SUPPORT on/off,
+ and set its value for BlackBerry port.
+
+ * Source/cmake/OptionsBlackBerry.cmake: Toggled in ON.
+ * Source/cmake/OptionsBlackBerry.cmake: Toggled OFF.
+ * Source/cmake/OptionsWinCE.cmake: Toggled it OFF.
+ * Source/cmake/OptionsWindows.cmake: Toggled it ON.
+ * Source/cmakeconfig.h.cmake:
+
+2012-04-26 Antonio Gomes <agomes@rim.com>
+
+ [BlackBerry] Add smooth_scrolling options to CMAKE and enable it for Blackberry
+ https://bugs.webkit.org/show_bug.cgi?id=84954
+
+ Reviewed by Daniel Bates.
+
+ * Source/cmakeconfig.h.cmake: Make it possible for CMake builds to
+ toggle SMOOTH_SCROLLING on/off
+ * Source/cmake/OptionsBlackBerry.cmake: ... and set it to ON by defualt
+ for the Blackberry port.
+
+2012-04-26 Christophe Dumez <christophe.dumez@intel.com>
+
+ [EFL] Enable VIDEO_TRACK feature
+ https://bugs.webkit.org/show_bug.cgi?id=84830
+
+ Reviewed by Gustavo Noronha Silva.
+
+ Enable VIDEO_TRACK feature by default on EFL port.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-04-24 Kent Tamura <tkent@chromium.org>
+
+ Calendar Picker: Resize to minimal size to fit the content
+ https://bugs.webkit.org/show_bug.cgi?id=84826
+
+ Reviewed by Hajime Morita.
+
+ * ManualTests/forms/calendar-picker.html:
+ Sync with the size specified in CalendarPickerElement.cpp.
+
+2012-04-25 Allan Sandfeld Jensen <allan.jensen@nokia.com>
+
+ [Qt] Zoom back can overscroll document edges.
+ https://bugs.webkit.org/show_bug.cgi?id=84851
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Manual test for overscroll on zoom-back. Needs to be manual since we do not yet
+ have automatic testing for this type of UI-side behaviour.
+
+ * ManualTests/qt/double-tap-overscroll.html: Added.
+
+2012-04-24 Yael Aharon <yael.aharon@nokia.com>
+
+ Fixed background is scrolling in http://www.nieuwecode.nl/ in Qt webkit2
+ https://bugs.webkit.org/show_bug.cgi?id=83980
+
+ Reviewed by Simon Fraser.
+
+ * ManualTests/fixed-position-no-z-index.html: Added.
+
+2012-04-24 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ [GTK] Build and run TestWebKitAPI unit tests
+ https://bugs.webkit.org/show_bug.cgi?id=84325
+
+ Reviewed by Philippe Normand.
+
+ * GNUmakefile.am: Include makefiles to build gtest and
+ TestWebKitAPI. Add BUILDING_WEBKIT2__ macro to compilation when
+ building WebKit2.
+
+2012-04-24 Charles Wei <charles.wei@torchmobile.com.cn>
+
+ [BlackBerry] Input Range element expects mouse events
+ https://bugs.webkit.org/show_bug.cgi?id=84571
+
+ Reviewed by Antonio Gomes.
+
+ Input element with Range type expects mouse events to
+ drag the handle. Note that Input Range could appear
+ in both the web page directly, or in some shadow tree,
+ like the MediaControlTimeline and MediaControlVolume.
+ * ManualTests/blackberry/slider-thumb-consumes-event.html: Added.
+
+2012-04-24 Christophe Dumez <christophe.dumez@intel.com>
+
+ [EFL] Enable Web Timing
+ https://bugs.webkit.org/show_bug.cgi?id=84705
+
+ Reviewed by Tony Gentilcore.
+
+ Enable Web Timing in EFL port for for performance profiling and
+ improvement.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-04-23 Kent Tamura <tkent@chromium.org>
+
+ Add test function to get placeholder string
+ https://bugs.webkit.org/show_bug.cgi?id=84536
+
+ Reviewed by Ryosuke Niwa.
+
+ * Source/autotools/symbols.filter:
+ Expose Node::textContent and HTMLTextFormControlElement::placeholderShouldBeVisible.
+
+2012-04-22 Sriram Neelakandan <sriram.neelakandan@gmail.com>
+
+ [Gtk] Added MOZ_X11 build flag for TARGET_X11
+ [Qt] Added MOZ_X11 build flag for !embedded
+ [CMake] Added MOZ_X11 build flag for WTF_OS_UNIX
+ https://bugs.webkit.org/show_bug.cgi?id=40785
+
+ Reviewed by Anders Carlsson.
+
+ * GNUmakefile.am:
+ * Source/cmake/OptionsCommon.cmake:
+
+2012-04-22 Adrian Bunk <bunk@stusta.de>
+
+ [GTK] Remove the obsolete Hildon UI extensions
+ https://bugs.webkit.org/show_bug.cgi?id=83420
+
+ Reviewed by Martin Robinson.
+
+ * configure.ac:
+
+2012-04-18 Thiago Marcos P. Santos <thiago.santos@intel.com>
+
+ [CMake] Use jsc target instead of ONLY_BUILD_JAVASCRIPTCORE
+ https://bugs.webkit.org/show_bug.cgi?id=84229
+
+ CMake caches ONLY_BUILD_JAVASCRIPTCORE=1 and will reuse the setting for
+ subsequent builds, stopping WebCore from being built ever again.
+
+ Instead of trying to emulate a build target using command line options,
+ just build the existing jsc target directly.
+
+ Reviewed by Rob Buis.
+
+ * CMakeLists.txt:
+
+2012-04-18 Jason Liu <jason.liu@torchmobile.com.cn>
+
+ [BlackBerry] HTTP GET header has a "Cookie" when refreshing a page after cookies have been cleared.
+ https://bugs.webkit.org/show_bug.cgi?id=84223
+
+ Reviewed by George Staikos.
+
+ * ManualTests/blackberry/clear-cookie-refresh-result.php: Added.
+ * ManualTests/blackberry/clear-cookie-refresh.php: Added.
+
+2012-04-17 Yong Li <yoli@rim.com>
+
+ REGRESSION (r105453): Crash when handling touch events
+ https://bugs.webkit.org/show_bug.cgi?id=81958
+
+ Reviewed by Antonio Gomes.
+
+ Add a manual test for this issue because DumpRenderTree
+ currently cannot send a group of touch points with
+ different touch states in one shot.
+
+ * ManualTests/resources/iframe-reloaded-on-touch.html: Added.
+ * ManualTests/touch-stale-iframe-crash.html: Added.
+
+2012-04-17 Kent Tamura <tkent@chromium.org>
+
+ Calendar Picker: Support RTL layout
+ https://bugs.webkit.org/show_bug.cgi?id=83668
+
+ Reviewed by Hajime Morita.
+
+ * ManualTests/forms/calendar-picker.html:
+ Add Arabic parameters.
+ Add <select> to select a locale.
+
+2012-04-16 Dave Tu <dtu@chromium.org>
+
+ Re-add GPU DEPS builders to flakiness dashboard.
+ https://bugs.webkit.org/show_bug.cgi?id=84056
+
+ Reviewed by Ojan Vafai.
+
+ * Tools/TestResultServer/static-dashboards/builders.js:
+
+2012-04-16 Gustavo Noronha Silva <gns@gnome.org>
+
+ [GTK] Bump dependency on GTK+ 3.x to match reality
+ https://bugs.webkit.org/show_bug.cgi?id=84060
+
+ Rubber-stamped by Martin Robinson.
+
+ * configure.ac: Bump GTK+ 3 requirement to 3.4.0. In practice we
+ already depend on this version because of our dependency on a recent
+ glib, which causes linking issues with older GTK+; also bump glib to
+ its earliest version.
+
+2012-04-16 Philippe Normand <pnormand@igalia.com>
+
+ [GTK] GStreamer 1.0 support in configure.ac
+ https://bugs.webkit.org/show_bug.cgi?id=84029
+
+ Reviewed by Martin Robinson.
+
+ The GStreamer version was recently changed to 1.0 in the git
+ repositories of the project so we need to reflect this change in
+ configure.ac.
+
+ * configure.ac:
+
+2012-04-16 Yael Aharon <yael.aharon@nokia.com>
+
+ [Qt][WK2] Fixed elements position is wrong after zooming.
+ https://bugs.webkit.org/show_bug.cgi?id=83981
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ * ManualTests/remove-add-fixed-position.html: Added.
+
+2012-04-13 Jason Liu <jason.liu@torchmobile.com.cn>
+
+ [BlackBerry] Sign in cookie for ESPN.com does not retain login account (for fantasy sports).
+ https://bugs.webkit.org/show_bug.cgi?id=83760
+
+ Reviewed by George Staikos.
+
+ * ManualTests/blackberry/http-cookie-database-set.php: Added.
+ * ManualTests/blackberry/http-cookie-database-update.php: Added.
+
+2012-04-13 Thiago Marcos P. Santos <thiago.santos@intel.com>
+
+ [EFL] Add API for color chooser
+ https://bugs.webkit.org/show_bug.cgi?id=83692
+
+ Enables INPUT_TYPE_COLOR by default on the EFL port.
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/WebKitFeatures.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-04-12 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ [GTK] Enable WebKit2 by default in configure
+ https://bugs.webkit.org/show_bug.cgi?id=83753
+
+ Reviewed by Martin Robinson.
+
+ * configure.ac:
+
+2012-04-12 Bear Travis <betravis@adobe.com>
+
+ [CSS Exclusions] Add flag to enable / disable exclusions at runtime
+ https://bugs.webkit.org/show_bug.cgi?id=83313
+
+ Reviewed by Ryosuke Niwa.
+
+ Adding the GTK symbols
+
+ * Source/autotools/symbols.filter:
+
+2012-04-12 George Staikos <staikos@webkit.org>
+
+ Enable the fullscreen API for BlackBerry.
+ https://bugs.webkit.org/show_bug.cgi?id=83757
+
+ Reviewed by Antonio Gomes.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+
+2012-04-12 Yael Aharon <yael.aharon@nokia.com>
+
+ [Qt][WK2] Nested fixed elements scroll too fast
+ https://bugs.webkit.org/show_bug.cgi?id=83720
+
+ Reviewed by Noam Rosenthal.
+
+ * ManualTests/nested-fixed-position.html: Added.
+
+2012-03-15 Martin Robinson <mrobinson@igalia.com>
+
+ [CAIRO] Make GLContextGLX a subclass of GLContext
+ https://bugs.webkit.org/show_bug.cgi?id=81285
+
+ Reviewed by Gustavo Noronha Silva.
+
+ * GNUmakefile.am: Add a configuration option for activating GLX.
+ This is selected automatically now, but in the future there will be
+ the choice to turn on EGL and turn off GLX at compilation time.
+ * configure.ac: Ditto.
+
+2012-04-10 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
+
+ [Qt] InspectorServer: Add an API level auto test
+ https://bugs.webkit.org/show_bug.cgi?id=83594
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ * Source/tests.pri:
+
+2012-04-11 Patrick Gansterer <paroga@webkit.org>
+
+ [CMake] Add WEBKIT_CREATE_FORWARDING_HEADERS macro
+ https://bugs.webkit.org/show_bug.cgi?id=83574
+
+ Reviewed by Daniel Bates.
+
+ This new macro generates forwarding headers with absolute paths to the original files.
+ It accepts a list of files and/or a list of directories as input.
+
+ * Source/cmake/WebKitMacros.cmake:
+
+2012-04-10 Yael Aharon <yael.aharon@nokia.com>
+
+ Initial support for fixed position elements in Qt WebKit2
+ https://bugs.webkit.org/show_bug.cgi?id=81786
+
+ Reviewed by Noam Rosenthal.
+
+ * ManualTests/fixed-position.html: Added.
+
+2012-04-10 Raphael Kubo da Costa <rakuco@webkit.org>
+
+ [CMake] Do not pass -P to the preprocessor when running make_names.pl.
+ https://bugs.webkit.org/show_bug.cgi?id=83225
+
+ Reviewed by Rob Buis.
+
+ This is necessary to make CMake-based ports build with the
+ recently-released GCC 4.7.0, whose preprocessor seems to ignore
+ empty lines when -P is passed to it. Such behavior breaks
+ make_names.pl (in fact, InFilesParser.pm), which expects an empty
+ line to separate common and specific sections in .in files.
+
+ A fix for this same problem has been supposedly done in r84123,
+ but as the CMake-based ports always pass --preprocessor to the
+ Perl tools the fix never reached us.
+
+ The idea is to define CODE_GENERATOR_PREPROCESSOR_WITH_LINEMARKERS
+ for (!MSVC && !QNX) and use it in the macros which call
+ make_names.pl.
+
+ * Source/cmake/OptionsCommon.cmake:
+ * Source/cmake/WebKitMacros.cmake:
+
+2012-04-10 Patrick Gansterer <paroga@webkit.org>
+
+ [CMake][WIN] Add /MP flag when using a compiler with support for it
+ https://bugs.webkit.org/show_bug.cgi?id=83577
+
+ Reviewed by Daniel Bates.
+
+ * Source/cmake/OptionsWindows.cmake:
+
+2012-04-10 Patrick Gansterer <paroga@webkit.org>
+
+ [CMake] Add missing DERIVED_SOURCES_WEBKIT_DIR variable
+ https://bugs.webkit.org/show_bug.cgi?id=83573
+
+ Reviewed by Daniel Bates.
+
+ We need this variable when ports want to generate files in the WebKit target.
+
+ * CMakeLists.txt:
+
+2012-04-10 Patrick Gansterer <paroga@webkit.org>
+
+ [CMake] Enable USE_FOLDERS property
+ https://bugs.webkit.org/show_bug.cgi?id=83571
+
+ Reviewed by Daniel Bates.
+
+ Setting the FOLDER property on targets gives more structure
+ to the generated Visual Studio solutions.
+ This does not affect other CMake generators.
+
+ * Source/cmake/OptionsCommon.cmake:
+
+2012-04-06 Ryosuke Niwa <rniwa@webkit.org>
+
+ Update perf-o-matic config.js per upstream change.
+
+ * Websites/webkit-perf.appspot.com/js/config.js:
+ (var):
+
+2012-04-09 Dale Curtis <dalecurtis@chromium.org>
+
+ Remove unworkable video-buffering-repaints-controls test.
+ https://bugs.webkit.org/show_bug.cgi?id=83097
+
+ Replaces the automated test for progress bar repaints during buffering
+ with a manual test entry.
+
+ Reviewed by Eric Carlson.
+
+ * ManualTests/media-controls.html:
+
+2012-04-09 Ming Xie <mxie@rim.com>
+
+ [BlackBerry] Allow simulator to use GLES2 acceleration
+ https://bugs.webkit.org/show_bug.cgi?id=81672
+
+ Reviewed by Rob Buis.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+
+2012-04-09 Zalan Bujtas <zbujtas@gmail.com>
+
+ [Qt][WK2] Fail to activate links after double tap gesture.
+ https://bugs.webkit.org/show_bug.cgi?id=83468
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ * ManualTests/link-activation-fails-after-double-tap-gesture.html: Added.
+
+2012-04-09 Martin Robinson <mrobinson@igalia.com>
+
+ [soup] Crash while loading http://www.jusco.cn
+ https://bugs.webkit.org/show_bug.cgi?id=68238
+
+ Reviewed by Philippe Normand.
+
+ * configure.ac: Bumped the libsoup dependency to 2.37.90.
+
+2012-04-09 Abhishek Arya <inferno@chromium.org>
+
+ Crash due to floats not cleared before starting SVG <text> layout.
+ https://bugs.webkit.org/show_bug.cgi?id=83021
+
+ Reviewed by Dirk Schulze.
+
+ * ManualTests/svg-text-float-not-removed-crash.html: Added.
+
+2012-04-09 Patrick Gansterer <paroga@webkit.org>
+
+ [CMake] Build fix for USE_SYSTEM_MALLOC after r113570.
+
+ * Source/cmakeconfig.h.cmake:
+
+2012-04-09 Patrick Gansterer <paroga@webkit.org>
+
+ [CMake] Share build system options across ports
+ https://bugs.webkit.org/show_bug.cgi?id=72815
+
+ Reviewed by Daniel Bates.
+
+ Don't define the generic features for every port again.
+ Add a few macros for reusing the central defined options.
+
+ * CMakeLists.txt:
+ * Source/cmake/OptionsBlackBerry.cmake:
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/OptionsWinCE.cmake:
+ * Source/cmake/WebKitFeatures.cmake:
+
+2012-04-07 Rob Buis <rbuis@rim.com>
+
+ [BlackBerry] Add Battery Status API support
+ https://bugs.webkit.org/show_bug.cgi?id=82615
+
+ Reviewed by George Staikos.
+
+ Enable BATTERY_STATUS.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+
+2012-04-06 Martin Robinson <mrobinson@igalia.com>
+
+ Fix the GTK+ debug build.
+
+ * Source/autotools/symbols.filter: Add a missing symbol to the symbols.list file.
+
+2012-04-05 George Staikos <staikos@webkit.org>
+
+ Compile the vibration module for BlackBerry.
+ https://bugs.webkit.org/show_bug.cgi?id=83340
+
+ Reviewed by Rob Buis.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+
+2012-04-05 Ryosuke Niwa <rniwa@webkit.org>
+
+ perf-o-matic should include unit in runs JSON responses
+ https://bugs.webkit.org/show_bug.cgi?id=83294
+
+ Reviewed by Tony Chang.
+
+ This is a follow up to r112829. Report the unit in /api/test/runs so that the frontend can show it.
+ Fixed a bug in Test.update_or_insert that it didn't store the unit when it first created the Test object.
+
+ Also increment perf-o-matic's version to 18.
+
+ * Websites/webkit-perf.appspot.com/app.yaml: Incremented the version.
+ * Websites/webkit-perf.appspot.com/models.py:
+ (Test.update_or_insert.execute): Store unit when creating a test.
+ (Runs.to_json): Include unit.
+ * Websites/webkit-perf.appspot.com/models_unittest.py: Added tests.
+ (TestModelTests.test_update_or_insert_with_unit):
+ (RunsTest.test_to_json_without_results):
+ (RunsTest.test_to_json_with_results):
+ (RunsTest.test_to_json_with_unit):
+
+2012-03-14 Antonio Gomes <agomes@rim.com>
+
+ Extend HitTestResult to support not "discarding" shadow content in favor of its DOM ancestor
+ https://bugs.webkit.org/show_bug.cgi?id=80847
+
+ Reviewed by David Hyatt.
+
+ Exporting Internals::nodesFromRect symbols for the Gtk build.
+
+ * Source/autotools/symbols.filter:
+
+2012-04-05 Jonathan Dong <jonathan.dong@torchmobile.com.cn>
+
+ [BlackBerry] Clear local storage won't take effect until browser exit and relaunch
+ https://bugs.webkit.org/show_bug.cgi?id=83253
+
+ Reviewed by Rob Buis.
+
+ RIM PR: #146871
+ Added a manual test case to test the behavior when press
+ button "Clear Local Storage" from browser settings.
+ It has to be a manual test as it requires user interaction.
+
+ * ManualTests/blackberry/clear-localstorage.html: Added.
+
+2012-04-04 Kent Tamura <tkent@chromium.org>
+
+ Add JavaScript and CSS code for the calendar picker implementation
+ https://bugs.webkit.org/show_bug.cgi?id=83011
+
+ Reviewed by Hajime Morita.
+
+ * ManualTests/forms/calendar-picker.html: Added.
+
+2012-04-04 Hayato Ito <hayato@chromium.org>
+
+ Remove ReifiedTreeTraversal.
+ https://bugs.webkit.org/show_bug.cgi?id=83110
+
+ Reviewed by Dimitri Glazkov.
+
+ * Source/autotools/symbols.filter:
+
+2012-04-04 Shinya Kawanaka <shinyak@chromium.org>
+
+ Shadow DOM is exposed in JS.
+ https://bugs.webkit.org/show_bug.cgi?id=82607
+
+ Reviewed by Hajime Morita.
+
+ * Source/autotools/symbols.filter:
+
+2012-04-03 Tony Chang <tony@chromium.org>
+
+ remove WebKit files from .gitattributes
+ https://bugs.webkit.org/show_bug.cgi?id=82966
+
+ Reviewed by Adam Barth.
+
+ * .gitattributes: These entries were never updated from the move to
+ Source/WebKit so they're probably not needed.
+
+2012-04-03 Keishi Hattori <keishi@webkit.org>
+
+ Disable ENABLE_DATALIST for now
+ https://bugs.webkit.org/show_bug.cgi?id=82871
+
+ Reviewed by Kent Tamura.
+
+ We should disable ENABLE_DATALIST because
+ - We need platform-dependent implementation, and non-BlackBerry platforms don't have it.
+ - We need to hide the content of <datalist>, but it is shown for now.
+
+ * Source/cmake/OptionsEfl.cmake: Disabled ENABLE_DATALIST.
+
+2012-04-02 Balazs Kelemen <kbalazs@webkit.org>
+
+ [Qt][WK2] Set up plugin process on Unix
+ https://bugs.webkit.org/show_bug.cgi?id=72121
+
+ Reviewed by Simon Hausmann.
+
+ * Source/QtWebKit.pro: Add PluginProcess subproject.
+
+2012-04-02 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r112868, r112879, and r112881.
+ http://trac.webkit.org/changeset/112868
+ http://trac.webkit.org/changeset/112879
+ http://trac.webkit.org/changeset/112881
+ https://bugs.webkit.org/show_bug.cgi?id=82901
+
+ "Build fail on bots." (Requested by kbalazs on #webkit).
+
+ * Source/QtWebKit.pro:
+
+2012-04-02 Balazs Kelemen <kbalazs@webkit.org>
+
+ [Qt][WK2] Set up plugin process on Unix
+ https://bugs.webkit.org/show_bug.cgi?id=72121
+
+ Reviewed by Simon Hausmann.
+
+ * Source/QtWebKit.pro: Add PluginProcess subproject.
+
+2012-04-02 Hayato Ito <hayato@chromium.org>
+
+ [Shadow DOM] Introduce ComposedShadowTreeWalker as a successor of ReifiedTreeTraversal APIs
+ https://bugs.webkit.org/show_bug.cgi?id=82009
+
+ Reviewed by Dimitri Glazkov.
+
+ * Source/autotools/symbols.filter:
+
+2012-04-01 Ryosuke Niwa <rniwa@webkit.org>
+
+ Perf-o-matic build fix after 112829 for Chromium-style tests.
+
+ * Websites/webkit-perf.appspot.com/report_process_handler.py:
+ (ReportProcessHandler.post):
+
+2012-04-01 Ryosuke Niwa <rniwa@webkit.org>
+
+ perf-o-matic should store test results' units
+ https://bugs.webkit.org/show_bug.cgi?id=82852
+
+ Reviewed by Kentaro Hara.
+
+ * Websites/webkit-perf.appspot.com/models.py:
+ (Test):
+ (Test.update_or_insert): Added "unit" to the argument list.
+ (Test.update_or_insert.execute): Store the unit.
+ (ReportLog.results_are_well_formed): Moved from ReportHandler.
+ (ReportLog.results_are_well_formed._is_float_convertible): Ditto.
+ * Websites/webkit-perf.appspot.com/models_unittest.py:
+ (TestModelTests.test_update_or_insert): Added a test case for "unit" argument.
+ (TestModelTests.test_update_or_insert_to_update): Ditto.
+ (ReportLogTests.test_results_are_well_formed): Added.
+ (ReportLogTests.test_results_are_well_formed.assert_results_are_well_formed): Added.
+ * Websites/webkit-perf.appspot.com/report_handler.py:
+ (ReportHandler.post): Calls ReportLog.results_are_well_formed.
+ * Websites/webkit-perf.appspot.com/report_process_handler.py:
+ (ReportProcessHandler.post): Passes results['unit'] to Test.update_or_insert.
+
+2012-04-01 Ryosuke Niwa <rniwa@webkit.org>
+
+ Admin page should lexicologically sort tests
+ https://bugs.webkit.org/show_bug.cgi?id=82849
+
+ Rubber-stamped by Hajime Morita.
+
+ * Websites/webkit-perf.appspot.com/js/admin.js:
+ * Websites/webkit-perf.appspot.com/js/config.js:
+ (sortProperties):
+ (fetchDashboardManifest):
+
+2012-04-01 Ryosuke Niwa <rniwa@webkit.org>
+
+ Revert an inadvertently committed change.
+
+ * Websites/webkit-perf.appspot.com/app.yaml:
+
+2012-04-01 Ryosuke Niwa <rniwa@webkit.org>
+
+ perf-o-matic should have a way to hide some platforms and tests
+ https://bugs.webkit.org/show_bug.cgi?id=82842
+
+ Reviewed by Hajime Morita.
+
+ * Websites/webkit-perf.appspot.com/admin.html:
+ * Websites/webkit-perf.appspot.com/admin_handlers.py:
+ (AdminDashboardHandler.get_branches): Change the json format to allow platforms and tests to have
+ "hidden" boolean states.
+ (AdminDashboardHandler.get_platforms): Ditto.
+ (AdminDashboardHandler.get_builders): Just a cleanup. There is no clean for it to have a limit.
+ (AdminDashboardHandler.get_tests): Change the json format to add "hidden" boolean states.
+ (ChangeVisibilityHandler): Added.
+ (ChangeVisibilityHandler.post): Added. Changes the hidden-state (visibility) of a platform and a test.
+ * Websites/webkit-perf.appspot.com/app.yaml: Make sure everything under /admin/ requires admin privilege.
+ * Websites/webkit-perf.appspot.com/create_handler.py:
+ (CreateHandler.post): Don't emit LF after 'OK'.
+ * Websites/webkit-perf.appspot.com/css/admin.css: Added a bunch of rules for hide/show button.
+ * Websites/webkit-perf.appspot.com/js/admin.js:
+ (submitXHR): Extracted.
+ (createKeyNameReloader): Added hide/show button on each item and the corresponding ajax request.
+ * Websites/webkit-perf.appspot.com/json_generators.py:
+ (DashboardJSONGenerator.__init__): Skip hidden tests and platforms.
+ (ManifestJSONGenerator.__init__): Ditto.
+ * Websites/webkit-perf.appspot.com/json_generators_unittest.py: Added tests to ensure perf-o-matic
+ doesn't include hidden tests and platforms in dashboard and manifest json responses.
+ (DashboardJSONGeneratorTest.test_value_with_hidden_platform_and_tesst):
+ (ManifestJSONGeneratorTest.test_value_two_tests):
+ (ManifestJSONGeneratorTest.test_value_with_hidden_platform_and_test):
+ * Websites/webkit-perf.appspot.com/main.py:
+ * Websites/webkit-perf.appspot.com/models.py:
+ (Platform): Added the "hidden" property.
+ (Test): Ditto. Also removed the comment about this class only exists for efficiency purposes since that's
+ no longer true.
+
+2012-04-01 Gyuyoung Kim <gyuyoung.kim@samsung.com>
+
+ Support the Network Information API
+ https://bugs.webkit.org/show_bug.cgi?id=73528
+
+ Reviewed by Adam Barth.
+
+ Add network information API feature.
+
+ * Source/cmake/OptionsEfl.cmake: Add NETWORK_INFO feature.
+ * Source/cmakeconfig.h.cmake: Add NETWORK_INFO feature.
+
+2012-03-31 Jonathan Dong <jonathan.dong@torchmobile.com.cn>
+
+ [BlackBerry] http authenticate dialog popup only once no matter authentication pass or fail
+ https://bugs.webkit.org/show_bug.cgi?id=80135
+
+ Reviewed by Rob Buis.
+
+ RIM PR: 145660
+ Added manual test for testing the behavior of http authentication
+ challenge dialog. Both of these two files should be served over http.
+
+ * ManualTests/blackberry/http-auth-challenge.html: Added.
+ * ManualTests/blackberry/http-auth-challenge.php: Added.
+
+2012-03-30 Eli Fidler <efidler@rim.com>
+
+ Enable OpenType Sanitizer for BlackBerry port.
+ https://bugs.webkit.org/show_bug.cgi?id=82782
+
+ Reviewed by Eric Seidel.
+
+ * Source/cmake/OptionsBlackBerry.cmake: define USE(OPENTYPE_SANITIZER)
+
+2012-03-30 Zalan Bujtas <zbujtas@gmail.com>
+
+ Fix defective size_t overflow in GestureTapHighlighter.
+ https://bugs.webkit.org/show_bug.cgi?id=82605
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ * ManualTests/tap-gesture-in-iframe-with-tap-highlight-crash.html: Added.
+
+2012-03-30 David Barr <davidbarr@chromium.org>
+
+ Split up top-level .gitignore and .gitattributes
+ https://bugs.webkit.org/show_bug.cgi?id=82687
+
+ Reviewed by Tor Arne Vestbø.
+
+ Jeff King <peff@peff.net> suggested this on the git mailing list.
+ http://article.gmane.org/gmane.comp.version-control.git/194294
+ He reported a 1.6 times speed up for 'git status'.
+
+ * .gitattributes:
+ * .gitignore:
+ * ManualTests/.gitattributes: Added.
+ * Source/.gitignore: Added.
+ * Websites/.gitattributes: Added.
+
+2012-03-30 Keishi Hattori <keishi@webkit.org>
+
+ Change ENABLE_INPUT_COLOR to ENABLE_INPUT_TYPE_COLOR and enable it for chromium
+ https://bugs.webkit.org/show_bug.cgi?id=80972
+
+ Reviewed by Kent Tamura.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+ * configure.ac:
+
+2012-03-30 Charles Wei <charles.wei@torchmobile.com.cn>
+
+ [BlackBerry] Add more ENABLERS to cmakeconfig.h.cmake
+ https://bugs.webkit.org/show_bug.cgi?id=82594
+
+ Reviewed by Rob Buis.
+
+ Upstreaming feature enablers in cmakeconfig.h.cmake for BlackBerry porting,
+ and clean up obsolete MACROs in OptionsBlackBerry.cmake.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-03-29 Dave Tu <dtu@chromium.org>
+
+ Add new chrome.webkit GPU bot to flakiness dashboard.
+ https://bugs.webkit.org/show_bug.cgi?id=82562
+
+ Reviewed by Ojan Vafai.
+
+ * Tools/TestResultServer/static-dashboards/builders.js:
+
+2012-03-29 Kevin Ollivier <kevino@theolliviers.com>
+
+ [wx] Unreviewed build fix. Remove a couple sources wx
+ should not build.
+
+ * wscript:
+
+2012-03-29 Zalan Bujtas <zbujtas@gmail.com>
+
+ Remove redundant updateViewportArguments() call when page is restored from page cache.
+ https://bugs.webkit.org/show_bug.cgi?id=82500
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Add manual test for history navigation with viewport width check.
+
+ * ManualTests/viewport-width-test-after-history-navigation.html: Added.
+
+2012-03-28 Kevin Ollivier <kevino@theolliviers.com>
+
+ [wx] Unreviewed. Build fix, move WTF back into JSCore target
+ until issues with JSCore not linking in all WTF symbols are resolved.
+
+ * wscript:
+
+2012-03-28 Sergio Villar Senin <svillar@igalia.com>
+
+ [Soup] DNS prefetching spams resolver, shoots self in the foot
+ https://bugs.webkit.org/show_bug.cgi?id=41630
+
+ Reviewed by Martin Robinson.
+
+ Bump libsoup and glib dependencies.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * configure.ac:
+
+2012-03-28 Xan Lopez <xlopez@igalia.com>
+
+ [GTK] Respect NOCONFIGURE option in autogen.sh
+ https://bugs.webkit.org/show_bug.cgi?id=82447
+
+ Reviewed by Philippe Normand.
+
+ Make autogen.sh follow the new build-api for GNOME, see
+ http://people.gnome.org/~walters/docs/build-api.txt
+
+ * autogen.sh: respect the NOCONFIGURE environment flag, per the
+ new GNOME build-api.
+
+2012-03-27 Ryosuke Niwa <rniwa@webkit.org>
+
+ Perf-o-matic build fix.
+
+ * Websites/webkit-perf.appspot.com/controller.py:
+ (RunsChartHandler.post):
+ * Websites/webkit-perf.appspot.com/models.py:
+ (Runs.chart_params):
+
+2012-03-27 Dave Tu <dtu@chromium.org>
+
+ Show image diffs for gpu_tests on flakiness dashboard
+ https://bugs.webkit.org/show_bug.cgi?id=81848
+
+ Reviewed by Ojan Vafai.
+
+ Add a new results layout for gpu_tests that pulls the image diffs in
+ addition to the text output. Also add new gpu_tests builders.
+
+ * Tools/TestResultServer/static-dashboards/builders.js: Update
+ gpu_tests builders.
+ * Tools/TestResultServer/static-dashboards/dashboard_base.js: Add a
+ function to check for GPU test type.
+ * Tools/TestResultServer/static-dashboards/flakiness_dashboard.html:
+ Add new GPU results layout.
+
+2012-03-26 Ryosuke Niwa <rniwa@webkit.org>
+
+ Trigger a build on Chromium Linux boxes to see if clean builds succeed or not.
+
+2012-03-26 Leo Yang <leo.yang@torchmobile.com.cn>
+
+ [BlackBerry] Skeleton code of AsyncFileSystemBlackBerry.cpp
+ https://bugs.webkit.org/show_bug.cgi?id=82157
+
+ Reviewed by Rob Buis.
+
+ * Source/cmake/OptionsBlackBerry.cmake: Turn on ENABLE_FILE_SYSTEM for blackberry.
+
+2012-03-25 Hayato Ito <hayato@chromium.org>
+
+ [Shadow DOM] Add Reified DOM Tree traversal internal APIs.
+ https://bugs.webkit.org/show_bug.cgi?id=79197
+
+ Reviewed by Dimitri Glazkov.
+
+ Add internal APIs which can be used to traverse Reified DOM tree, which is
+ a result of node distribution algorithm explained in Shadow DOM spec.
+ https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html
+
+ Every public functions defined in ReifiedTreeTraversal are static
+ functions and are named in a similar way to ones defined in WebCore::Node class.
+ The only difference is that ReifiedTreeTraversal APIs consider shadow
+ hosts and also traverse nodes is Shadow DOM subtrees, crossing shadow's upper and lower boundary
+ transparently.
+
+ There is no actual client which uses these APIs. Follow-up patches for FocusNavigation
+ and EventDispatcher will use the APIs so that they can traverse node in reified tree order.
+
+ * Source/autotools/symbols.filter:
+
+2012-03-25 Kevin Ollivier <kevino@theolliviers.com>
+
+ [wx] Unreviewed build fix. Move WTF to its own static lib build.
+
+ * wscript:
+
+2012-03-24 Kevin Ollivier <kevino@theolliviers.com>
+
+ [wx] Unreviewed. Fix the build after WTF move.
+
+ * wscript:
+
+2012-03-23 Dave Michael <dmichael@chromium.org>
+
+ Relanding(r111754): HTMLPluginElement is not destroyed on reload or navigation if getNPObject is called
+ https://bugs.webkit.org/show_bug.cgi?id=80428
+
+Reviewed by Eric Seidel and Ryosuke Niwa.
+
+ Test: plugins/netscape-dom-access-and-reload.html
+
+ * Source/autotools/symbols.filter: Export a symbol for InspectorCounters::counterValue.
+
+2012-03-23 Ryosuke Niwa <rniwa@webkit.org>
+
+ REGRESSION(r111754): plugins/reloadplugins-and-pages.html fails on all platforms
+ https://bugs.webkit.org/show_bug.cgi?id=82035
+
+ * Source/autotools/symbols.filter:
+
+2012-03-22 Raphael Kubo da Costa <rakuco@FreeBSD.org>
+
+ [CMake] Unreviewed build fix after r111778.
+
+ * Source/CMakeLists.txt: Build WTF/.
+
+2012-03-22 Martin Robinson <mrobinson@igalia.com>
+
+ Fixed the GTK+ WTF/JavaScriptCore build after r111778.
+
+ * GNUmakefile.am: Remove a couple unnecessary gnumake variables.
+
+2012-03-22 Csaba Osztrogonác <ossy@webkit.org>
+
+ Actually move WTF files to their new home
+ https://bugs.webkit.org/show_bug.cgi?id=81844
+
+ [Qt] Unreviewed buildfix after r111778.
+
+ * Source/api.pri:
+
+2012-03-22 Ming Xie <mxie@rim.com>
+
+ OLD_COMPILE_FLAGS was set incorrectly in WebKitHelpers.cmake
+ https://bugs.webkit.org/show_bug.cgi?id=81961
+
+ Reviewed by Rob Buis.
+
+ This fixes the regression introduced by r109292
+
+ * Source/cmake/WebKitHelpers.cmake:
+
+2012-03-22 Dave Michael <dmichael@chromium.org>
+
+ HTMLPluginElement is not destroyed on reload or navigation if getNPObject is called
+ https://bugs.webkit.org/show_bug.cgi?id=80428
+
+ Reviewed by Eric Seidel.
+
+ Test: plugins/netscape-dom-access-and-reload.html
+
+ * Source/autotools/symbols.filter: Export a symbol for InspectorCounters::counterValue.
+
+2012-03-22 Kevin Ollivier <kevino@theolliviers.com>
+
+ [wx] Unreviewed. Adding Source/WTF to the build and updating
+ waf port list.
+
+ * wscript:
+
+2012-03-21 Ryosuke Niwa <rniwa@webkit.org>
+
+ Add the forgotten admin.html after r108917.
+
+ * Websites/webkit-perf.appspot.com/admin.html: Added.
+
+2012-03-21 Ryosuke Niwa <rniwa@webkit.org>
+
+ Increment the perf-o-matic app version.
+
+ * Websites/webkit-perf.appspot.com/app.yaml:
+
+2012-03-20 Eric Seidel <eric@webkit.org>
+
+ Move wtf/Platform.h from JavaScriptCore to Source/WTF/wtf
+ https://bugs.webkit.org/show_bug.cgi?id=80911
+
+ Reviewed by Adam Barth.
+
+ * CMakeLists.txt: Define WTF_DIR
+
+2012-03-20 Ryosuke Niwa <rniwa@webkit.org>
+
+ Perf-o-matic: don't query datastore to generate chart API urls
+ https://bugs.webkit.org/show_bug.cgi?id=81499
+
+ Reviewed by Hajime Morita.
+
+ Parse json text to extract timestamps and test values instead of iterating
+ through the data store.
+
+ * Websites/webkit-perf.appspot.com/create_handler.py:
+ (CreateHandler.post):
+ * Websites/webkit-perf.appspot.com/models.py:
+ (Runs._timestamp_and_value_from_json_entry):
+ (Runs):
+ (Runs.to_json):
+ (Runs.chart_params):
+
+2012-03-20 Gyuyoung Kim <gyuyoung.kim@samsung.com>
+
+ Convert hasSpellingMarker to use Internals interface.
+ https://bugs.webkit.org/show_bug.cgi?id=81300
+
+ Reviewed by Ryosuke Niwa.
+
+ * Source/autotools/symbols.filter: Export a symbol for hasSpellingMarker.
+
+2012-03-19 Tony Chang <tony@chromium.org>
+
+ clean up gitignore
+ https://bugs.webkit.org/show_bug.cgi?id=81594
+
+ Reviewed by James Robinson.
+
+ * .gitignore: .suo files are per-user files used by VS2010. .ninja
+ files are no longer generated in the tree-- they are generated in the
+ build directory.
+
+2012-03-17 Charles Wei <charles.wei@torchmobile.com.cn>
+
+ [BlackBerry] Enable Web Timing for performance profiling and improvement.
+ https://bugs.webkit.org/show_bug.cgi?id=81085
+
+ Reviewed by Rob Buis.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-03-16 Kihong Kwon <kihong.kwon@samsung.com>
+
+ Support for Battery Status API.
+ https://bugs.webkit.org/show_bug.cgi?id=62698
+
+ Enable BATTERY_STATUS for WebKit-Efl.
+ http://www.w3.org/TR/battery-status/
+
+ Reviewed by Adam Barth.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-03-15 Patrick Gansterer <paroga@webkit.org>
+
+ [EFL] Make zlib a general build requirement
+ https://bugs.webkit.org/show_bug.cgi?id=80153
+
+ Reviewed by Hajime Morita.
+
+ After r109538 WebSocket module needs zlib to support deflate-frame extension.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-03-15 Rob Buis <rbuis@rim.com>
+
+ [BlackBerry] Remove some features that we do not have anymore
+ https://bugs.webkit.org/show_bug.cgi?id=81274
+
+ Reviewed by Antonio Gomes.
+
+ Remove some features that we do not have anymore, code was removed some time ago.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+
+2012-03-14 Matt Falkenhagen <falken@chromium.org>
+
+ Allow per-script font settings to be specified in layout tests
+ https://bugs.webkit.org/show_bug.cgi?id=78184
+
+ Reviewed by Hajime Morita.
+
+ This adds per-script font settings to InternalSettings, so it can be used in layout tests instead of
+ the per-script font settings support in DumpRenderTree overridePreference, which has only been implemented
+ for Chromium so far.
+
+ * Source/autotools/symbols.filter: Added symbols.
+
+2012-03-14 Thiago Marcos P. Santos <thiago.santos@intel.com>
+
+ [EFL] Enable HTML5 Summary and Details elements
+ https://bugs.webkit.org/show_bug.cgi?id=81027
+
+ Enabling Summary and Details elements by default and removing related
+ tests from skip list since they should pass now.
+
+ Reviewed by Antonio Gomes.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-03-14 Andrey Kosyakov <caseq@chromium.org>
+
+ Web Inspector: add didCancelFrame timeline event
+ https://bugs.webkit.org/show_bug.cgi?id=80994
+
+ Reviewed by Pavel Feldman.
+
+ * Source/autotools/symbols.filter:
+
+2012-03-14 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Deal with multiple paths in QMAKE_EXTRA_MODULE_FORWARDS
+
+ Reviewed by Simon Hausmann.
+
+ * Source/api.pri:
+
+2012-03-14 Max Vujovic <mvujovic@adobe.com>
+
+ GTK 32-bit Linux Release build failing after r110580 (from bug 80338)
+ https://bugs.webkit.org/show_bug.cgi?id=81063
+
+ Prospective build fix for GTK 32-bit Linux Release.
+
+ Reviewed by Martin Robinson.
+
+ * Source/autotools/symbols.filter: Adding symbol for ClientRectList(Vector<FloatQuad>) for
+ GTK 32-bit.
+
+2012-03-13 Dan Bernstein <mitz@apple.com>
+
+ <rdar://problem/11025225> Assertion failure in RenderView::computeRectForRepaint() (!repaintContainer || repaintContainer == this) at store.apple.com
+ https://bugs.webkit.org/show_bug.cgi?id=81051
+
+ Reviewed by Simon Fraser.
+
+ * ManualTests/inline-repaint-container.html: Added.
+
+2012-03-13 Adam Barth <abarth@webkit.org> && Benjamin Poulain <bpoulain@apple.com>
+
+ Always enable ENABLE(CLIENT_BASED_GEOLOCATION)
+ https://bugs.webkit.org/show_bug.cgi?id=78853
+
+ Reviewed by Adam Barth.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/OptionsWinCE.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-03-13 Max Vujovic <mvujovic@adobe.com>
+
+ Add a method to window.internals to enable testing of inspector highlight rects
+ https://bugs.webkit.org/show_bug.cgi?id=80338
+
+ Reviewed by Pavel Feldman.
+
+ * Source/autotools/symbols.filter: Export symbols for GTK.
+
+2012-03-12 Scott Byer <scottbyer@chromium.org>
+
+ Cleanup obsolete files.
+ https://bugs.webkit.org/show_bug.cgi?id=80737
+
+ Reviewed by James Robinson.
+
+ * wscript:
+
+2012-03-12 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Make sure we set the right library version for Qt 4
+
+ r110272 accedentally pruned the variable that ensures this.
+
+ Reviewed by Simon Hausmann.
+
+ * Source/api.pri:
+
+2012-03-10 Ryosuke Niwa <rniwa@webkit.org>
+
+ Increment the perf-o-matic app version.
+
+ * Websites/webkit-perf.appspot.com/app.yaml:
+
+2012-03-09 Jon Lee <jonlee@apple.com>
+
+ Add support for ENABLE(LEGACY_NOTIFICATIONS)
+ https://bugs.webkit.org/show_bug.cgi?id=80497
+
+ Reviewed by Adam Barth.
+
+ Prep for b80472: Update API for Web Notifications
+ * Source/cmake/OptionsBlackBerry.cmake:
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/OptionsWinCE.cmake:
+ * Source/cmakeconfig.h.cmake:
+ * configure.ac:
+
+2012-03-09 Csaba Osztrogonác <ossy@webkit.org>
+
+ [Qt] Disable WebGL performance tests temporarily.
+ https://bugs.webkit.org/show_bug.cgi?id=80503
+
+ Rubber-stamped by Simon Hausmann.
+
+ * Source/tests.pri:
+
+2012-03-09 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r110191, r110202, and r110279.
+ http://trac.webkit.org/changeset/110191
+ http://trac.webkit.org/changeset/110202
+ http://trac.webkit.org/changeset/110279
+ https://bugs.webkit.org/show_bug.cgi?id=80694
+
+ They broke !ENABLE(INSPECTOR) builds (Requested by Ossy on
+ #webkit).
+
+ * Source/autotools/symbols.filter:
+
+2012-03-08 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Use Qt's module system for install rules and depending on QtWebKit
+
+ Instead of rolling our own install rules we now use the same approach as
+ every other Qt module, by loading qt_module.prf and qt_module_config.prf.
+
+ This ensures that we follow the same semantics as the rest of Qt on
+ what sort of config options are enabled by default (create_cmake eg.).
+ It also allows us to use QT += webkit instead of the workaround we had
+ with CONFIG += qtwebkit.
+
+ We do however force Qt to always treat our build as a non-developer build,
+ so the libraries will end up in the WebKit lib directory instead of the
+ qtbase directory (as with a normal developer-build). This allows us to
+ keep the webkit-build self-contained. If Qt is a developer build we still
+ copy the module file manually to Qt, so that you don't have to install
+ WebKit to make it available.
+
+ For non-developer builds of Qt, it is still possible to use the built
+ WebKit libraries without having to install them, by having the variable
+ QMAKE_EXTRA_MODULE_FORWARDS set in the project's .qmake.cache file,
+ pointing to $WEBKITOUTUTDIR/$CONFIGURATION/modules.
+
+ https://bugs.webkit.org/show_bug.cgi?id=80590
+
+ Reviewed by Simon Hausmann.
+
+ * Source/api.pri:
+ * Source/sync.profile:
+
+2012-03-08 Ryosuke Niwa <rniwa@webkit.org>
+
+ perf-o-matic should incrementally update JSON responses
+ https://bugs.webkit.org/show_bug.cgi?id=79898
+
+ Reviewed by Eric Seidel.
+
+ Now that Runs object store test_runs and averages separately,
+ we can update JSON data incrementally without degrading values.
+
+ Also fixed the order of arguments passed to DashboardImage.needs_update
+ in schedule_runs_update. This bug had caused all chart images to be
+ updated on every new report.
+
+ * Websites/webkit-perf.appspot.com/controller.py:
+ (schedule_runs_update):
+ * Websites/webkit-perf.appspot.com/models.py:
+ (Runs.update_or_insert):
+ (Runs.update_incrementally):
+ (Runs):
+ (Runs.get_by_objects):
+ * Websites/webkit-perf.appspot.com/models_unittest.py:
+ (RunsTest._create_results):
+ (RunsTest.test_generate_runs):
+ (RunsTest.test_update_or_insert):
+ (RunsTest.test_update_incrementally):
+ (RunsTest.test_to_json_with_results):
+ * Websites/webkit-perf.appspot.com/report_process_handler.py:
+ (ReportProcessHandler.post):
+
+2012-03-08 Max Vujovic <mvujovic@adobe.com>
+
+ Add a method to window.internals to enable testing of inspector highlight rects
+ https://bugs.webkit.org/show_bug.cgi?id=80338
+
+ Reviewed by Pavel Feldman.
+
+ * Source/autotools/symbols.filter: Export symbols for GTK.
+
+2012-03-05 Ryosuke Niwa <rniwa@webkit.org>
+
+ Turn Runs class into a proper model to implement incremental JSON update
+ https://bugs.webkit.org/show_bug.cgi?id=80364
+
+ Reviewed by Hajime Morita.
+
+ Move Runs from json_generators.py to models.py and turn it into a proper Model.
+
+ Now most JSON responses are held by Runs objects instead of PersistentCache.
+ Added some tests around update_or_insert and json_by_ids to test PersistentCache-like
+ behavior but there should be no user-visible behavioral differences.
+
+ * Websites/webkit-perf.appspot.com/controller.py:
+ (RunsUpdateHandler.post):
+ (CachedRunsHandler.get):
+ (RunsChartHandler.post):
+ * Websites/webkit-perf.appspot.com/json_generators.py:
+ (ManifestJSONGenerator.value):
+ * Websites/webkit-perf.appspot.com/json_generators_unittest.py:
+ (ManifestJSONGeneratorTest.test_value_two_tests):
+ * Websites/webkit-perf.appspot.com/models.py:
+ (Test):
+ (Runs):
+ (Runs._generate_runs):
+ (Runs._entry_from_build_and_result):
+ (Runs._key_name):
+ (Runs.update_or_insert):
+ (Runs.json_by_ids):
+ (Runs.to_json):
+ (Runs.chart_params):
+ * Websites/webkit-perf.appspot.com/models_unittest.py:
+ (RunsTest):
+ (RunsTest.setUp):
+ (RunsTest._create_results):
+ (RunsTest.test_generate_runs):
+ (RunsTest.test_update_or_insert):
+ (RunsTest.test_json_by_ids):
+ (RunsTest.test_to_json_without_results):
+ (RunsTest.test_to_json_with_results):
+ (RunsTest._assert_entry):
+ (RunsTest.test_run_from_build_and_result):
+ (RunsTest.test_run_from_build_and_result.create_build):
+ (RunsTest.test_chart_params_with_value):
+ (RunsTest.test_chart_params_with_value.split_as_int):
+
+2012-03-07 Simon Hausmann <simon.hausmann@nokia.com>
+
+ [Qt] Fix compilation without QtQuick1
+ https://bugs.webkit.org/show_bug.cgi?id=80503
+
+ Reviewed by Tor Arne Vestbø.
+
+ * Source/tests.pri: Compile qml1 tests only with Qt 4 for the moment.
+
+2012-03-07 Mark Rowe <mrowe@apple.com>
+
+ Teach make to build WTF.
+
+ * Source/Makefile:
+
+2012-03-06 Raphael Kubo da Costa <kubo@profusion.mobi>
+
+ [CMake] Make the removal of transitive library dependencies work with CMake < 2.8.7.
+ https://bugs.webkit.org/show_bug.cgi?id=80469
+
+ Reviewed by Antonio Gomes.
+
+ * CMakeLists.txt: Do not set the CMAKE_LINK_INTERFACE_LIBRARIES
+ variable here; it was introduced in CMake 2.8.7 so we can't depend
+ on it as we actually support CMake >= 2.8.0.
+
+2012-03-06 Hajime Morrita <morrita@chromium.org>
+
+ https://bugs.webkit.org/show_bug.cgi?id=79935
+ REGRESSION: <content> element is not HTMLUnknownElement when Shadow DOM API is disabled
+
+ Reviewed by Adam Barth.
+
+ Added a newly exported symbol.
+
+ * Source/autotools/symbols.filter:
+
+2012-03-06 Raphael Kubo da Costa <kubo@profusion.mobi>
+
+ undefined reference to JSC::IdentifierTable::~IdentifierTable() on EFL port
+ https://bugs.webkit.org/show_bug.cgi?id=80282
+
+ Reviewed by Antonio Gomes.
+
+ Remove transitive library dependencies; they are especially
+ dangerous when one ends up linking against WTF, JSC and then WTF
+ again, since some symbols will not be defined.
+
+ Passing --no-copy-dt-needed-entries and --as-needed to the linker
+ (which some recent Linux distros do by default) makes the issue
+ even more evident.
+
+ * CMakeLists.txt: Set CMAKE_LINK_INTERFACE_LIBRARIES to an empty
+ list to prevent implicit transitive library dependencies from
+ being created by default.
+
+2012-03-05 Ryosuke Niwa <rniwa@webkit.org>
+
+ Perf-o-matic should memcache dashboard images
+ https://bugs.webkit.org/show_bug.cgi?id=80349
+
+ Reviewed by Eric Seidel.
+
+ Added DashboardImage.create and DashboardImage.get_image to encapsulate memcache.
+ Also replaced transaction in DashboardImage.set_cache by a single put since it duplicates
+ what put does by default.
+
+ Also removed redundant cache_* functions and merged them into handler code.
+
+ * Websites/webkit-perf.appspot.com/controller.py:
+ (ManifestUpdateHandler.post):
+ (CachedManifestHandler.get):
+ (DashboardUpdateHandler.post):
+ (CachedDashboardHandler.get):
+ (RunsUpdateHandler):
+ (RunsUpdateHandler.post):
+ (RunsChartHandler):
+ (RunsChartHandler.post):
+ (DashboardImageHandler.get):
+ * Websites/webkit-perf.appspot.com/models.py:
+ (PersistentCache.set_cache):
+ (DashboardImage):
+ (DashboardImage.create):
+ (DashboardImage.get_image):
+ * Websites/webkit-perf.appspot.com/models_unittest.py:
+ (PersistentCacheTests.setUp):
+ (PersistentCacheTests.test_set_cache):
+ (PersistentCacheTests.test_get_cache):
+ (DashboardImageTests.setUp):
+ (DashboardImageTests):
+ (DashboardImageTests.test_create):
+ (DashboardImageTests.test_get):
+
+2012-03-05 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r109760.
+ http://trac.webkit.org/changeset/109760
+ https://bugs.webkit.org/show_bug.cgi?id=80320
+
+ Caused many GTK+ tests to crash (Requested by mrobinson on
+ #webkit).
+
+ * configure.ac:
+
+2012-03-05 Kangil Han <kangil.han@samsung.com>
+
+ [CMake][DRT] Add WebCoreTestSupport.
+ https://bugs.webkit.org/show_bug.cgi?id=79896
+
+ Reviewed by Daniel Bates.
+
+ Add WebCoreTestSupport library for DRT in CMake.
+ We will use internals object by linking this library on DRT.
+
+ * CMakeLists.txt:
+
+2012-03-05 Martin Robinson <mrobinson@igalia.com>
+
+ [soup] Crash while loading http://www.jusco.cn
+ https://bugs.webkit.org/show_bug.cgi?id=68238
+
+ Reviewed by Philippe Normand.
+
+ * configure.ac: Bumped the libsoup dependency to 2.37.90.
+
+2012-03-04 Raphael Kubo da Costa <kubo@profusion.mobi>
+
+ [CMake] Libraries are installed to /usr/lib and not /usr/lib64 on x86_64
+ https://bugs.webkit.org/show_bug.cgi?id=71507
+
+ Reviewed by Antonio Gomes.
+
+ * Source/cmake/OptionsCommon.cmake: Provide two variables which
+ can be changed via CMake: LIB_SUFFIX, which is often used in CMake
+ projects to let the user choose whether a suffix should be added
+ to the library installation directory (such as 32 or 64), and
+ LIB_INSTALL_DIR, which takes LIB_SUFFIX into account to determine
+ whether to install libraries.
+
+2012-03-03 Hans Wennborg <hans@chromium.org>
+
+ Implement Speech JavaScript API
+ https://bugs.webkit.org/show_bug.cgi?id=80019
+
+ Reviewed by Adam Barth.
+
+ Add ENABLE_SCRIPTED_SPEECH.
+
+ * configure.ac:
+
+2012-03-02 Alexandre Rostovtsev <tetromino@gentoo.org>
+
+ Make webkit-gtk translations respect LINGUAS
+ https://bugs.webkit.org/show_bug.cgi?id=79605
+
+ Reviewed by Martin Robinson.
+
+ PO_LINGUAS, USER_LINGUAS, and USE_LINGUAS added to root
+ GNUmakefile.am to ensure that they can be used in the definition of
+ MOFILES that will be generated by automake.
+
+ * GNUmakefile.am:
+
+2012-03-02 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Remove deleted file from api.pro
+
+ Reviewed by Noam Rosenthal.
+
+ * Source/api.pri:
+
+2012-03-02 Simon Hausmann <simon.hausmann@nokia.com>
+
+ [Qt] Compile WebCore without QtWidgets
+ https://bugs.webkit.org/show_bug.cgi?id=80141
+
+ Reviewed by Tor Arne Vestbø.
+
+ * Source/api.pri: Use QT += opengl for the WebKit1 bits, such as the QGLWidget
+ usage in PageClientQt.cpp. Previously this dependency came implicitly through WebCore.pri.
+
+2012-03-02 Byungwoo Lee <bw80.lee@samsung.com>
+
+ [EFL] Build warning : comparison between signed and unsigned integer expressions.
+ https://bugs.webkit.org/show_bug.cgi?id=79860
+
+ Reviewed by Hajime Morita.
+
+ Fixed build warnings which are getting generated when comparing signed
+ and unsigned integer expressions.
+
+ * Source/WebCore/bindings/js/JSDocumentCustom.cpp:
+ * Source/WebCore/platform/ContextMenu.cpp:
+ * Source/WebKit/efl/ewk/ewk_view_single.cpp:
+
+2012-03-02 Simon Hausmann <simon.hausmann@nokia.com>
+
+ [Qt] Move QStyle theming code out of WebCore into WebKit1
+ https://bugs.webkit.org/show_bug.cgi?id=80128
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ * Source/api.pri: Adjust to moving source files.
+
+2012-03-01 Ryosuke Niwa <rniwa@webkit.org>
+
+ Perf-o-matic: generate dashboard images for 30, 90, and 365 days
+ https://bugs.webkit.org/show_bug.cgi?id=80016
+
+ Reviewed by Eric Seidel.
+
+ Add the ability to generate graphs for 30, 90, and 365 day graphs but only occasionally
+ according to the heuristics in DashboardImage.needs_update.
+
+ Also fix a bug in Runs.chart_params that y-axis grid was set to an incorrect value.
+
+ * Websites/webkit-perf.appspot.com/controller.py:
+ (schedule_runs_update):
+ (RunsChartHandler.post):
+ * Websites/webkit-perf.appspot.com/json_generators.py:
+ (Runs.chart_params):
+ * Websites/webkit-perf.appspot.com/json_generators_unittest.py:
+ (RunsTest.test_chart_params_with_value):
+ * Websites/webkit-perf.appspot.com/models.py:
+ (DashboardImage):
+ (DashboardImage.needs_update):
+ * Websites/webkit-perf.appspot.com/models_unittest.py:
+ (HelperTests._assert_there_is_exactly_one_id_holder_and_matches):
+ (HelperTests.test_create_in_transaction_with_numeric_id_holder.execute):
+ (HelperTests.test_create_in_transaction_with_numeric_id_holder):
+ (HelperTests.test_failing_in_create_in_transaction_with_numeric_id_holder):
+ (HelperTests.test_raising_in_create_in_transaction_with_numeric_id_holder):
+ (HelperTests.test_delete_model_with_numeric_id_holder.execute):
+ (HelperTests.test_delete_model_with_numeric_id_holder):
+ (HelperTests.test_model_from_numeric_id.execute):
+ (HelperTests):
+ (HelperTests.test_model_from_numeric_id):
+ (BranchTests.test_create_if_possible):
+ (PlatformTests.test_create_if_possible):
+ (BuilderTests.test_create):
+ (BuilderTests.test_update_password):
+ (BuilderTests.test_hashed_password):
+ (BuilderTests.test_authenticate):
+ (_create_some_builder):
+ (_create_build):
+ (BuildTests.test_get_or_insert_from_log):
+ (TestModelTests.test_update_or_insert):
+ (TestModelTests.test_update_or_insert_to_update):
+ (TestModelTests.test_merge):
+ (TestResultTests.test_get_or_insert_value):
+ (TestResultTests.test_get_or_insert_stat_value):
+ (TestResultTests.test_replace_to_change_test_name):
+ (TestResultTests.test_replace_to_change_test_name_with_stat_value):
+ (TestResultTests.test_replace_to_change_test_name_overrides_conflicting_result):
+ (ReportLogTests._create_log_with_payload):
+ (ReportLogTests.test_builder):
+ (ReportLogTests.test_branch):
+ (ReportLogTests.test_platform):
+ (PersistentCacheTests._assert_persistent_cache):
+ (PersistentCacheTests.test_set):
+ (PersistentCacheTests.test_get):
+ (DashboardImageTests):
+ (DashboardImageTests.test_needs_update):
+
+2012-03-01 Kangil Han <kangil.han@samsung.com>
+
+ [DRT] Remove all PlainTextController usages in existing tests by adding internal API
+ https://bugs.webkit.org/show_bug.cgi?id=78570
+
+ Reviewed by Hajime Morita.
+
+ This patch will remove all PlainTextController usages
+ in existing DRT tests by adding internal API to WebCore/testing/Internals
+
+ * Source/autotools/symbols.filter:
+
+2012-02-29 Ryosuke Niwa <rniwa@webkit.org>
+
+ Perf-o-matic build fix. Also toggle the switch to start using ping images on the dashboard after r109190.
+
+ * Websites/webkit-perf.appspot.com/controller.py:
+ (schedule_runs_update):
+ (schedule_report_process):
+ * Websites/webkit-perf.appspot.com/js/admin.js:
+ (bind):
+ * Websites/webkit-perf.appspot.com/js/config.js:
+
+2012-02-29 Raphael Kubo da Costa <kubo@profusion.mobi>
+
+ [CMake] Unreviewed, fix build on 64-bit platforms with SHARED_CORE=ON after r109197.
+ https://bugs.webkit.org/show_bug.cgi?id=79965
+
+ This partially reverts r66714, in that whether -fPIC is passed to
+ the compiler does not depend on the value of SHARED_CORE anymore:
+ since we always build WTF as a static library, it will always need
+ -fPIC because our shared libraries are built with it.
+
+ * Source/cmake/WebKitHelpers.cmake: Always pass -fPIC to
+ STATIC_LIBRARY targets.
+
+2012-02-29 Raphael Kubo da Costa <kubo@profusion.mobi>
+
+ [CMake] Unreviewed, fix build on 64-bit platforms with SHARED_CORE=ON after r109197.
+
+ This partially reverts r66714, in that whether -fPIC is passed to
+ the compiler does not depend on the value of SHARED_CORE anymore:
+ since we always build WTF as a static library, it will always need
+ -fPIC because our shared libraries are built with it.
+
+ * Source/cmake/WebKitHelpers.cmake: Always pass -fPIC to
+ STATIC_LIBRARY targets.
+
+2012-02-29 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Unreviewed. Bump WebKitGTK+ version number.
+
+ * configure.ac: Bump version number to 1.9.0 now that we branched
+ for 1.8.
+
+2012-02-29 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Unreviewed. Fix GTK+ build.
+
+ * Source/autotools/symbols.filter: Add symbol.
+
+2012-02-28 Raphael Kubo da Costa <kubo@profusion.mobi>
+
+ [CMake] Always build wtf as a static library.
+ https://bugs.webkit.org/show_bug.cgi?id=79857
+
+ Reviewed by Eric Seidel.
+
+ * CMakeLists.txt: Put static libraries in ${CMAKE_BINARY_DIR} too
+ to have them grouped with the shared ones.
+
+2012-02-28 Ryosuke Niwa <rniwa@webkit.org>
+
+ perf-o-matic: generate dashboard images using Google Chart Tools
+ https://bugs.webkit.org/show_bug.cgi?id=79838
+
+ Reviewed by Hajime Morita.
+
+ Rename RunsJSONGenerator to Runs and added an ability to generate parameters for Google chart tool.
+ Also added RunsChartHandler to make url-fetches these images and DashboardImageHandler to serve them.
+ The image is stored in DashboardImage model.
+
+ We can't enable flip the switch to use images yet because we don't create images on fly (they're
+ generated when runs are updated; i.e. bots upload new results). We should be able to flip the switch
+ once this patch lands and all perf bots cycle.
+
+ We probably make way too many calls to Google chart tool's server with this preliminary design but we
+ can easily move this task into the backend and run it via a cron job once we know it works.
+
+ * Websites/webkit-perf.appspot.com/controller.py:
+ (schedule_runs_update):
+ (RunsUpdateHandler.post):
+ (RunsChartHandler):
+ (RunsChartHandler.get):
+ (RunsChartHandler.post):
+ (DashboardImageHandler):
+ (DashboardImageHandler.get):
+ (schedule_report_process):
+ * Websites/webkit-perf.appspot.com/json_generators.py:
+ (ManifestJSONGenerator.value):
+ (Runs):
+ (Runs.__init__):
+ (Runs.value):
+ (Runs.chart_params):
+ * Websites/webkit-perf.appspot.com/json_generators_unittest.py:
+ (RunsTest):
+ (RunsTest._create_results):
+ (RunsTest.test_generate_runs):
+ (RunsTest.test_value_without_results):
+ (RunsTest.test_value_with_results):
+ (RunsTest.test_run_from_build_and_result):
+ (RunsTest.test_chart_params_with_value):
+ (RunsTest.test_chart_params_with_value.split_as_int):
+ * Websites/webkit-perf.appspot.com/main.py:
+ * Websites/webkit-perf.appspot.com/models.py:
+ (PersistentCache.get_cache):
+ (DashboardImage):
+ (DashboardImage.key_name):
+
+2012-02-28 Dave Tu <dtu@chromium.org>
+
+ Add new GPU builders to flakiness dashboard.
+ https://bugs.webkit.org/show_bug.cgi?id=79839
+
+ Reviewed by Ojan Vafai.
+
+ * Tools/TestResultServer/static-dashboards/builders.js:
+
+2012-02-28 Shinya Kawanaka <shinyak@chromium.org>
+
+ Element should be able to have multiple shadow roots.
+ https://bugs.webkit.org/show_bug.cgi?id=77931
+
+ Reviewed by Hajime Morita.
+
+ * Source/autotools/symbols.filter:
+
+2012-02-27 Shinya Kawanaka <shinyak@chromium.org>
+
+ Element::removeShadowRoot() and setShadowRoot() should be moved into ShadowTree.
+ https://bugs.webkit.org/show_bug.cgi?id=78313
+
+ Reviewed by Hajime Morita.
+
+ * Source/autotools/symbols.filter:
+
+2012-02-27 Dave Tu <dtu@chromium.org>
+
+ Update flakiness dashboard unit test.
+ https://bugs.webkit.org/show_bug.cgi?id=79711
+
+ Reviewed by Ojan Vafai.
+
+ * Tools/TestResultServer/static-dashboards/flakiness_dashboard_tests.js:
+
+2012-02-27 Ryosuke Niwa <rniwa@webkit.org>
+
+ Extract the logic to merge tests from MergeTestsHandler and add unit tests
+ https://bugs.webkit.org/show_bug.cgi?id=79602
+
+ Reviewed by Hajime Morita.
+
+ Extracted Test.merge and TestResult.replace_to_change_test_name out of MergeTestsHandler,
+ and moved MergeTestsHandler into admin_handlers.py where it belongs.
+
+ Added new backend "model-manipulator" to execute tasks to merge tests.
+
+ Also revive the inadvertently removed manual submission form on the admin page.
+
+ * Websites/webkit-perf.appspot.com/admin_handlers.py:
+ (AdminDashboardHandler.get_tests):
+ (MergeTestsHandler):
+ (MergeTestsHandler.post):
+ * Websites/webkit-perf.appspot.com/app.yaml:
+ * Websites/webkit-perf.appspot.com/backends.yaml: Added.
+ * Websites/webkit-perf.appspot.com/css/admin.css:
+ * Websites/webkit-perf.appspot.com/js/admin.js:
+ * Websites/webkit-perf.appspot.com/main.py:
+ * Websites/webkit-perf.appspot.com/merge_tests_handler.py: Removed.
+ * Websites/webkit-perf.appspot.com/models.py:
+ (Test):
+ (Test.merge):
+ (TestResult.replace_to_change_test_name):
+ * Websites/webkit-perf.appspot.com/models_unittest.py:
+ (DataStoreTestsBase.assertOnlyInstance):
+ (DataStoreTestsBase):
+ (DataStoreTestsBase.assertOnlyInstances):
+ (DataStoreTestsBase.assertEqualUnorderedModelList):
+ (DataStoreTestsBase.assertEqualUnorderedList):
+ (_create_build):
+ (TestModelTests.test_merge):
+ (TestResultTests):
+ (TestResultTests.test_get_or_insert_value):
+ (TestResultTests.test_get_or_insert_stat_value):
+ (TestResultTests.test_replace_to_change_test_name):
+ (TestResultTests.test_replace_to_change_test_name_with_stat_value):
+ (TestResultTests.test_replace_to_change_test_name_overrides_conflicting_result):
+
+2012-02-27 ChangSeok Oh <shivamidow@gmail.com>
+
+ [EFL] Support mutation observers
+ https://bugs.webkit.org/show_bug.cgi?id=79603
+
+ Reviewed by Eric Seidel.
+
+ Added a build-option for the mutation observers feature.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2012-02-26 Shinya Kawanaka <shinyak@chromium.org>
+
+ Rename ShadowRootList to ShadowTree.
+ https://bugs.webkit.org/show_bug.cgi?id=79342
+
+ Reviewed by Hajime Morita.
+
+ * Source/autotools/symbols.filter:
+
+2012-02-26 Chang Wan Hong <jourmoon@company100.net>
+
+ Update .gitignore for project property files generated by Eclipse.
+ https://bugs.webkit.org/show_bug.cgi?id=79463
+
+ Reviewed by Andreas Kling.
+
+ * .gitignore: Ignore .project and .cproject
+
+2012-02-25 Ryosuke Niwa <rniwa@webkit.org>
+
+ Perf-o-matic build fix after r108917. I need a scrollbar in order see all the tests.
+
+ * Websites/webkit-perf.appspot.com/css/admin.css:
+ (html):
+
+2012-02-25 Ryosuke Niwa <rniwa@webkit.org>
+
+ perf-o-matic needs a better admin page
+ https://bugs.webkit.org/show_bug.cgi?id=79585
+
+ Reviewed by Sam Weinig.
+
+ Add admin/ to replace admin/create-models.html and admin/merge-tests.
+
+ Also update MergeTestHandler to accept JSON requests and add "Admin" navigation link on all pages.
+
+ * Websites/webkit-perf.appspot.com/admin_handlers.py: Added.
+ * Websites/webkit-perf.appspot.com/controller.py:
+ (RunsUpdateHandler.post): Fix a regression from r108399.
+ * Websites/webkit-perf.appspot.com/css/admin.css: Added.
+ * Websites/webkit-perf.appspot.com/js/admin.js: Added.
+ * Websites/webkit-perf.appspot.com/js/config.js:
+ * Websites/webkit-perf.appspot.com/main.py:
+ * Websites/webkit-perf.appspot.com/merge_tests.html: Removed.
+ * Websites/webkit-perf.appspot.com/merge_tests_handler.py:
+ (MergeTestsHandler):
+ (MergeTestsHandler.post):
+ * Websites/webkit-perf.appspot.com/static: Removed.
+ * Websites/webkit-perf.appspot.com/static/create-models.html: Removed.
+
+2012-02-24 Ryosuke Niwa <rniwa@webkit.org>
+
+ Increment perf-o-matic version.
+
+ * Websites/webkit-perf.appspot.com/app.yaml:
+
+2012-02-23 Konrad Piascik <kpiascik@rim.com>
+
+ Upstream BlackBerry Cookie Management Classes
+ https://bugs.webkit.org/show_bug.cgi?id=73654
+
+ Reviewed by Rob Buis.
+
+ Manual test to see in milliseconds how quickly 100 writes followed by 100 reads take.
+ This test is ran twice and the average read and write for each of the 2 runs is shown.
+
+ * ManualTests/cookieSpeedTest.html: Added.
+
+2012-02-23 Dave Tu <dtu@chromium.org>
+
+ Add Chromium gpu_tests to the flakiness dashboard
+ https://bugs.webkit.org/show_bug.cgi?id=79300
+
+ Reviewed by Ojan Vafai.
+
+ * Tools/TestResultServer/static-dashboards/builders.js:
+ * Tools/TestResultServer/static-dashboards/dashboard_base.js:
+
+2012-02-23 Patrick Gansterer <paroga@webkit.org>
+
+ [CMake] Add WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS macro
+ https://bugs.webkit.org/show_bug.cgi?id=79371
+
+ Reviewed by Daniel Bates.
+
+ Add a new macro to handle the inclusion of the platform specific *.cmake files.
+ In the future this macro should get expanded to also handle feature specifc
+ files, like the UseJSC.cmake in WebCore we already have.
+
+ * Source/cmake/WebKitMacros.cmake:
+
+2012-02-23 Patrick Gansterer <paroga@webkit.org>
+
+ [CMake] Add FindDirectX
+ https://bugs.webkit.org/show_bug.cgi?id=79344
+
+ Reviewed by Adam Roben.
+
+ * Source/cmake/FindDirectX.cmake: Added.
+
+2012-02-23 Patrick Gansterer <paroga@webkit.org>
+
+ [CMake] Add FindQuickTimeSDK
+ https://bugs.webkit.org/show_bug.cgi?id=79345
+
+ Reviewed by Adam Roben.
+
+ * Source/cmake/FindQuickTimeSDK.cmake: Added.
+
+2012-02-22 Raphael Kubo da Costa <kubo@profusion.mobi>
+
+ [CMake] Remove FindGDK.cmake and FindGDK-PixBuf.cmake
+ https://bugs.webkit.org/show_bug.cgi?id=79292
+
+ Reviewed by Daniel Bates.
+
+ These files were committed when the EFL port's buildsystem code
+ was upstreamed, but are currently not being used anywhere, as the EFL
+ port has not depended on GDK for a long time.
+
+ * Source/cmake/FindGDK-PixBuf.cmake: Removed.
+ * Source/cmake/FindGDK.cmake: Removed.
+
+2012-02-22 Martin Robinson <mrobinson@igalia.com>
+
+ [GTK] Clean build is broken when using make -j
+ https://bugs.webkit.org/show_bug.cgi?id=76388
+
+ * GNUmakefile.am: Add new global source list variables.
+
+2012-02-20 Ryosuke Niwa <rniwa@webkit.org>
+
+ perf-o-matic: Extract logic to generate JSON responses as classes to unit test
+ https://bugs.webkit.org/show_bug.cgi?id=79018
+
+ Rubber-stamped by Adam Barth.
+
+ Extracted DashboardJSONGenerator, ManifestJSONGenerator, and RunsJSONGenerator
+ into json_generators.py from DashboardHandler, ManifestHandler, and RunsHandler
+ and added unit tests for the former three classes.
+
+ Merged the latter three classes into controler.py since they have become too trivial
+ to have their own files.
+
+ * Websites/webkit-perf.appspot.com/controller.py:
+ (ManifestUpdateHandler):
+ (ManifestUpdateHandler.get):
+ (ManifestUpdateHandler.post):
+ (DashboardUpdateHandler):
+ (DashboardUpdateHandler.get):
+ (DashboardUpdateHandler.post):
+ (_get_test_branch_platform_ids):
+ (RunsUpdateHandler):
+ (RunsUpdateHandler.get):
+ (CachedRunsHandler.get):
+ * Websites/webkit-perf.appspot.com/dashboard_handler.py: Removed.
+ * Websites/webkit-perf.appspot.com/json_generators.py: Added.
+ (JSONGeneratorBase):
+ (JSONGeneratorBase.to_json):
+ (DashboardJSONGenerator):
+ (DashboardJSONGenerator.__init__):
+ (DashboardJSONGenerator.value):
+ (ManifestJSONGenerator):
+ (ManifestJSONGenerator.__init__):
+ (ManifestJSONGenerator.value):
+ (RunsJSONGenerator):
+ (RunsJSONGenerator.__init__):
+ (RunsJSONGenerator._generate_runs):
+ (RunsJSONGenerator._entry_from_build_and_result):
+ (RunsJSONGenerator.value):
+ * Websites/webkit-perf.appspot.com/json_generators_unittest.py: Added.
+ (_create_results):
+ (JSONGeneratorBaseTest):
+ (JSONGeneratorBaseTest.test_to_json):
+ (JSONGeneratorBaseTest.test_to_json.AJSONGenerator):
+ (JSONGeneratorBaseTest.test_to_json.AJSONGenerator.value):
+ (DashboardJSONGeneratorTest):
+ (DashboardJSONGeneratorTest.test_value_no_branch):
+ (DashboardJSONGeneratorTest.test_value_no_plaforms):
+ (DashboardJSONGeneratorTest.test_value_single_platform):
+ (DashboardJSONGeneratorTest.test_value_two_platforms):
+ (ManifestJSONGeneratorTest):
+ (ManifestJSONGeneratorTest.test_value_no_branch):
+ (ManifestJSONGeneratorTest.test_value_no_plaforms):
+ (ManifestJSONGeneratorTest._assert_single_test):
+ (ManifestJSONGeneratorTest.test_value_single_platform):
+ (ManifestJSONGeneratorTest.test_value_two_platforms):
+ (ManifestJSONGeneratorTest.test_value_two_tests):
+ (RunsJSONGeneratorTest):
+ (RunsJSONGeneratorTest._create_results):
+ (RunsJSONGeneratorTest.test_generate_runs):
+ (RunsJSONGeneratorTest.test_value_without_results):
+ (RunsJSONGeneratorTest.test_value_with_results):
+ (RunsJSONGeneratorTest._assert_entry):
+ (RunsJSONGeneratorTest.test_run_from_build_and_result):
+ (RunsJSONGeneratorTest.test_run_from_build_and_result.create_build):
+ * Websites/webkit-perf.appspot.com/main.py:
+ * Websites/webkit-perf.appspot.com/manifest_handler.py: Removed.
+ * Websites/webkit-perf.appspot.com/models.py:
+ (Test.update_or_insert.execute):
+ (Test):
+ (TestResult.get_or_insert_from_parsed_json):
+ * Websites/webkit-perf.appspot.com/models_unittest.py:
+ (TestModelTests.test_update_or_insert_to_update):
+ (TestResultTests.test_get_or_insert_stat_value):
+ * Websites/webkit-perf.appspot.com/runs_handler.py: Removed.
+
+2012-02-20 Martin Robinson <mrobinson@igalia.com>
+
+ [GTK] Turn on requestAnimationFrame for release builds
+ https://bugs.webkit.org/show_bug.cgi?id=79038
+
+ Reviewed by Gustavo Noronha Silva.
+
+ * configure.ac: Turn on requestAnimationFrame by default.
+
+2012-02-20 Martin Robinson <mrobinson@igalia.com>
+
+ [GTK] Geolocation support should be on by default
+ https://bugs.webkit.org/show_bug.cgi?id=79037
+
+ Reviewed by Gustavo Noronha Silva.
+
+ * configure.ac: Turn on geolocation support in release builds.
+
+2012-02-20 Kihong Kwon <kihong.kwon@samsung.com>
+
+ Add a new API for the Vibration API(W3C).
+ https://bugs.webkit.org/show_bug.cgi?id=72010
+
+ Reviewed by Hajime Morita.
+
+ Add Implementation for the Vibration API to the WebKit-EFL port.
+ http://dev.w3.org/2009/dap/vibration/
+
+ * Source/cmake/OptionsEfl.cmake: Add ENABLE_VIBRATION feature.
+ * Source/cmakeconfig.h.cmake:
+
+2012-02-19 Ryosuke Niwa <rniwa@webkit.org>
+
+ Move more logic from handler classes to model classes and add unit tests
+ https://bugs.webkit.org/show_bug.cgi?id=78989
+
+ Reviewed by Hajime Morita.
+
+ Extracted various functions from CreateHandler, ReportHanlder, and RunsHanlder to model classes
+ in order to unit-test them, added DataStoreTestsBase to reduce the code duplication in tests,
+ and added a whole bunch of unit tests in models_unittest.py.
+
+ * Websites/webkit-perf.appspot.com/create_handler.py:
+ (CreateHandler._create_branch):
+ (CreateHandler._create_platform):
+ * Websites/webkit-perf.appspot.com/models.py:
+ (_create_if_possible):
+ (_create_if_possible.execute):
+ (Branch):
+ (Branch.create_if_possible):
+ (Platform):
+ (Platform.create_if_possible):
+ (Build):
+ (Build.get_or_insert_from_log):
+ (Test):
+ (Test.update_or_insert):
+ (Test.update_or_insert.execute):
+ (TestResult):
+ (TestResult.get_or_insert_from_parsed_json):
+ (TestResult.get_or_insert_from_parsed_json._float_or_none):
+ (TestResult.generate_runs):
+ * Websites/webkit-perf.appspot.com/models_unittest.py:
+ (DataStoreTestsBase):
+ (DataStoreTestsBase.assertThereIsNoInstanceOf):
+ (DataStoreTestsBase.assertOnlyInstance):
+ (DataStoreTestsBase.assertEqualUnorderedList):
+ (HelperTests):
+ (HelperTests.test_create_in_transaction_with_numeric_id_holder):
+ (HelperTests.test_failing_in_create_in_transaction_with_numeric_id_holder):
+ (HelperTests.test_raising_in_create_in_transaction_with_numeric_id_holder):
+ (HelperTests.test_delete_model_with_numeric_id_holder):
+ (BranchTests):
+ (BranchTests.test_create_if_possible):
+ (PlatformTests):
+ (PlatformTests.test_create_if_possible):
+ (BuilderTests):
+ (_create_some_builder):
+ (BuildTests):
+ (BuildTests.test_get_or_insert_from_log):
+ (TestModelTests):
+ (TestModelTests.test_update_or_insert):
+ (TestModelTests.test_update_or_insert_to_update):
+ (TestResultTests):
+ (TestResultTests._create_build):
+ (TestResultTests.test_get_or_insert_value):
+ (TestResultTests.test_get_or_insert_stat_value):
+ (TestResultTests._create_results):
+ (TestResultTests.test_generate_runs):
+ (ReportLogTests):
+ (ReportLogTests.test_branch):
+ (ReportLogTests.test_platform):
+ (PersistentCacheTests):
+ (PersistentCacheTests.setUp):
+ (PersistentCacheTests.test_set):
+ * Websites/webkit-perf.appspot.com/report_process_handler.py:
+ (ReportProcessHandler.post):
+ * Websites/webkit-perf.appspot.com/runs_handler.py:
+ (RunsHandler.get):
+ (RunsHandler.post):
+
+2012-02-20 Patrick Gansterer <paroga@webkit.org>
+
+ [CMake] Fix PLATFORM() define for Windows.
+
+ Define WTF_PLATFORM_WIN instead of WTF_PLATFORM_WINDOWS.
+
+ * Source/cmake/OptionsWindows.cmake:
+
+2012-02-20 Martin Robinson <mrobinson@igalia.com>
+
+ Fix WebKit2GTK+ for 'make distcheck'.
+
+ Instead of conditionally including WebKit2 GNUmakefiles, always
+ include them and conditionally activate the final targets.
+
+ * GNUmakefile.am:
+
+2012-02-19 Gyuyoung Kim <gyuyoung.kim@samsung.com>
+
+ [CMAKE] Check gstreamer minimum required version.
+ https://bugs.webkit.org/show_bug.cgi?id=79005
+
+ Reviewed by Daniel Bates.
+
+ To enable video, Gstreamer version requires to be above 0.10.30.
+ This patch checks whether Gstreamer version is greater than 0.10.30.
+
+ * Source/cmake/FindGStreamer-App.cmake:
+ * Source/cmake/FindGStreamer-Base.cmake:
+ * Source/cmake/FindGStreamer-Interfaces.cmake:
+ * Source/cmake/FindGStreamer-Pbutils.cmake:
+ * Source/cmake/FindGStreamer-Plugins-Base.cmake:
+ * Source/cmake/FindGStreamer-Video.cmake:
+ * Source/cmake/FindGStreamer.cmake:
+
+2012-02-19 Gustavo Noronha Silva <gns@gnome.org>
+
+ [GTK] Remove unused GSettings stuff
+ https://bugs.webkit.org/show_bug.cgi?id=78995
+
+ Reviewed by Martin Robinson.
+
+ * configure.ac: remove gsettings schema file creation.
+
+2012-02-19 Ryosuke Niwa <rniwa@webkit.org>
+
+ Perf-o-matic should show both WebKit and Chromium revisions
+ https://bugs.webkit.org/show_bug.cgi?id=78955
+
+ Reviewed by Andreas Kling.
+
+ Include Chromium revision numbers in runs responses when available.
+
+ * Websites/webkit-perf.appspot.com/js/config.js:
+ (urlForChangeset):
+ (urlForChangesetList):
+ * Websites/webkit-perf.appspot.com/runs_handler.py:
+ (RunsHandler.post):
+
+2012-02-18 Kevin Ollivier <kevino@theolliviers.com>
+
+ [wx] Exclude a couple unused bindings files from the build
+ as they do not compile currently.
+
+ * wscript:
+
+2012-02-17 Ryosuke Niwa <rniwa@webkit.org>
+
+ perf-o-matic needs model unit tests
+ https://bugs.webkit.org/show_bug.cgi?id=78885
+
+ Reviewed by Adam Barth.
+
+ Added unit tests for models.py.
+
+ Also renamed modelFromNumericId to model_from_numeric_id and moved set_persitent_cache and get_persistent_cache
+ from controller to PersistentCache.set_cache and PersistentCahce.set_cache respectively.
+
+ * Websites/webkit-perf.appspot.com/controller.py:
+ (cache_manifest):
+ (CachedManifestHandler.get):
+ (cache_dashboard):
+ (CachedDashboardHandler.get):
+ (cache_runs):
+ (CachedRunsHandler.get):
+ * Websites/webkit-perf.appspot.com/create_handler.py:
+ (CreateHandler._create_builder):
+ (CreateHandler._create_builder.execute):
+ * Websites/webkit-perf.appspot.com/models.py:
+ (create_in_transaction_with_numeric_id_holder):
+ (model_from_numeric_id):
+ (Builder):
+ (Builder.create):
+ (Builder.update_password):
+ (Builder._hashed_password):
+ (TestResult.key_name):
+ (ReportLog.get_value):
+ (ReportLog._integer_in_payload):
+ (ReportLog):
+ (ReportLog.timestamp):
+ (PersistentCache):
+ (PersistentCache.set_cache):
+ (PersistentCache.set_cache.execute):
+ (PersistentCache.get_cache):
+ * Websites/webkit-perf.appspot.com/models_unittest.py: Added.
+ (HelperTests):
+ (HelperTests.setUp):
+ (HelperTests.tearDown):
+ (HelperTests._assert_there_is_exactly_one_id_holder_and_matches):
+ (HelperTests.test_create_in_transaction_with_numeric_id_holder):
+ (HelperTests.test_create_in_transaction_with_numeric_id_holder.execute):
+ (HelperTests.test_failing_in_create_in_transaction_with_numeric_id_holder):
+ (HelperTests.test_failing_in_create_in_transaction_with_numeric_id_holder.execute):
+ (HelperTests.test_raising_in_create_in_transaction_with_numeric_id_holder):
+ (HelperTests.test_raising_in_create_in_transaction_with_numeric_id_holder.execute):
+ (HelperTests.test_delete_model_with_numeric_id_holder):
+ (HelperTests.test_delete_model_with_numeric_id_holder.execute):
+ (HelperTests.test_model_from_numeric_id):
+ (HelperTests.test_model_from_numeric_id.execute):
+ (BuilderTests):
+ (BuilderTests.setUp):
+ (BuilderTests.tearDown):
+ (BuilderTests.test_create):
+ (BuilderTests.test_update_password):
+ (BuilderTests.test_hashed_password):
+ (BuilderTests.test_authenticate):
+ (ReportLog):
+ (ReportLog.setUp):
+ (ReportLog.tearDown):
+ (ReportLog._create_log_with_payload):
+ (ReportLog.test_parsed_payload):
+ (ReportLog.test_get_value):
+ (ReportLog.test_results):
+ (ReportLog.test_builder):
+ (ReportLog.test_build_number):
+ (ReportLog.test_webkit_revision):
+ (ReportLog.chromium_revision):
+ (PersistentCacheTests):
+ (PersistentCacheTests.setUp):
+ (PersistentCacheTests.tearDown):
+ (PersistentCacheTests._assert_persistent_cache):
+ (PersistentCacheTests.test_set):
+ (PersistentCacheTests.test_get):
+ * Websites/webkit-perf.appspot.com/runs_handler.py:
+ (RunsHandler.post):
+
+2012-02-17 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Unreviewed. Fix GTK+ build after r108003.
+
+ * Source/autotools/symbols.filter: Add missing symbol.
+
+2012-02-16 Simon Hausmann <simon.hausmann@nokia.com>
+
+ [Qt] Move event conversion functions from WebCore to WebKit
+ https://bugs.webkit.org/show_bug.cgi?id=78788
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ * Source/api.pri: Add new files to the build.
+
+2012-02-14 Raphael Kubo da Costa <kubo@profusion.mobi>
+
+ [CMake] Remove unused PkgConfig module import from FindCFLite.cmake.
+ https://bugs.webkit.org/show_bug.cgi?id=78600
+
+ Reviewed by Adam Roben.
+
+ * Source/cmake/FindCFLite.cmake:
+
+2012-02-15 Roland Steiner <rolandsteiner@chromium.org>
+
+ <style scoped>: Allow <style scoped> as a direct child of a ShadowRoot
+ https://bugs.webkit.org/show_bug.cgi?id=77853
+
+ numberOfScopedHTMLStyleChildren got moved from Element into Node.
+
+ Reviewed by Dimitri Glazkov.
+
+ * Source/autotools/symbols.filter:
+
+2012-02-13 Raphael Kubo da Costa <kubo@profusion.mobi>
+
+ [CMake] Merge WebKitEfl.cmake into FindEFL.cmake.
+ https://bugs.webkit.org/show_bug.cgi?id=78566
+
+ Reviewed by Daniel Bates.
+
+ * Source/cmake/FindEFL.cmake: Move the code to find edje_cc here from
+ WebKitEfl.cmake.
+ * Source/cmake/WebKitEfl.cmake: Removed.
+
+2012-02-14 Shinya Kawanaka <shinyak@google.com>
+
+ Use youngestShadowRoot and oldestShadowRoot instead of Element::shadowRoot().
+ https://bugs.webkit.org/show_bug.cgi?id=78455
+
+ Reviewed by Hajime Morita.
+
+ Exports necessary symbols.
+
+ * Source/autotools/symbols.filter:
+
+2012-02-13 Ryosuke Niwa <rniwa@webkit.org>
+
+ Yet another perf-o-matic build fix. It turns out that a task of the same name can't be
+ queued for days after the first task is completed. So don't use it. Updating persistent
+ caches more often than necessary is better than never updating them.
+
+ * Websites/webkit-perf.appspot.com/controller.py:
+ (schedule_manifest_update):
+ (schedule_dashboard_update):
+ (schedule_runs_update):
+
+2012-02-13 ChangSeok Oh <shivamidow@gmail.com>
+
+ [GTK] Revise configuration for MHTML
+ https://bugs.webkit.org/show_bug.cgi?id=78364
+
+ Reviewed by Gustavo Noronha Silva.
+
+ Added some lines to show checking messages, whether mhtml is enabled or not
+ during configuration and the configuration result for mhtml.
+ MHTML is a web page archive format used to combine resources
+ that are typically represented by external links (such as images, Flash animations,
+ Java applets, audio files) together with HTML code into a single file.
+ http://en.wikipedia.org/wiki/MHTML
+
+ * configure.ac:
+
+2012-02-06 Raphael Kubo da Costa <kubo@profusion.mobi>
+
+ [EFL] Drop support for the Curl network backend.
+ https://bugs.webkit.org/show_bug.cgi?id=77874
+
+ Reviewed by Eric Seidel.
+
+ Nobody seems to be maintaining the Curl backend in WebCore, the
+ EFL port developers all seem to be using the Soup backend and the
+ port itself has many features which are only implemented for the
+ latter.
+
+ * Source/cmake/OptionsEfl.cmake: Remove network backend selection
+ checks and unconditionally require Glib and Libsoup, bump the
+ required LibSoup version to the same one the GTK+ port looks for,
+ since we share the same network backend.
+
+2012-02-12 Ryosuke Niwa <rniwa@webkit.org>
+
+ Another perf-o-matic build fix.
+
+ * Websites/webkit-perf.appspot.com/report_process_handler.py:
+ (ReportProcessHandler._create_build_if_possible):
+
+2012-02-12 Ryosuke Niwa <rniwa@webkit.org>
+
+ Perf-o-matic build fix.
+
+ * Websites/webkit-perf.appspot.com/report_handler.py:
+ (ReportHandler.post):
+
+2012-02-10 Ryosuke Niwa <rniwa@webkit.org>
+
+ REGRESSION: Perf-o-matic adds duplicated test results
+ https://bugs.webkit.org/show_bug.cgi?id=78373
+
+ Reviewed by Hajime Morita.
+
+ Add TestResult inside a transaction. We use high replication databsae but this should prevent
+ the duplication in the most of the time.
+
+ Also fixed random bugs in Controller and ReportHandler.
+
+ * Websites/webkit-perf.appspot.com/controller.py:
+ (get_persistent_cache):
+ * Websites/webkit-perf.appspot.com/report_handler.py:
+ (ReportHandler.post):
+ * Websites/webkit-perf.appspot.com/report_process_handler.py:
+ (ReportProcessHandler.post):
+ (ReportProcessHandler._add_test_if_needed):
+ (ReportProcessHandler):
+ (ReportProcessHandler._add_test_result_if_needed):
+ (ReportProcessHandler._add_test_result_if_needed._float_or_none):
+ (ReportProcessHandler._add_test_result_if_needed.execute):
+
+2012-02-12 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Unreviewed. Fix GTK+ build after r107454.
+
+ * configure.ac: Disable Mutation observers build on GTK+ until it
+ can actually build.
+
+2012-02-10 Adam Klein <adamk@chromium.org>
+
+ Enable MUTATION_OBSERVERS by default on all platforms
+ https://bugs.webkit.org/show_bug.cgi?id=78196
+
+ Reviewed by Ojan Vafai.
+
+ * configure.ac:
+
+2012-02-10 Ryosuke Niwa <rniwa@webkit.org>
+
+ Perf-o-matic build fix after r107386.
+
+ * Websites/webkit-perf.appspot.com/app.yaml:
+ * Websites/webkit-perf.appspot.com/controller.py:
+ (schedule_manifest_update):
+ (schedule_dashboard_update):
+ (schedule_runs_update):
+ * Websites/webkit-perf.appspot.com/merge_tests_handler.py:
+ (MergeTestsHandler.get):
+ * Websites/webkit-perf.appspot.com/report_logs_handler.py:
+ (ReportLogsHandler.get):
+ (ReportLogsHandler.post):
+
+2012-02-10 Ryosuke Niwa <rniwa@webkit.org>
+
+ Perf-o-matic should process reports in background
+ https://bugs.webkit.org/show_bug.cgi?id=78309
+
+ Reviewed by Hajime Morita.
+
+ Split the logic to create Build, Test, and TestResult objects from ReportHandler into ReportProcessHandler.
+ ReportHandler now merely creates ReportLog and schedules a task to process it.
+
+ Also added ReportLogHandler to manage stale ReportLogs.
+
+ * Websites/webkit-perf.appspot.com/app.yaml:
+ * Websites/webkit-perf.appspot.com/controller.py:
+ (schedule_manifest_update):
+ (schedule_dashboard_update):
+ (schedule_runs_update):
+ (CachedRunsHandler.get):
+ (schedule_report_process):
+ * Websites/webkit-perf.appspot.com/main.py:
+ * Websites/webkit-perf.appspot.com/merge_tests.html: Renamed from Websites/webkit-perf.appspot.com/merge_tests.yaml.
+ * Websites/webkit-perf.appspot.com/models.py:
+ (ReportLog):
+ (ReportLog._parsed_payload):
+ (ReportLog.get_value):
+ (ReportLog.results):
+ (ReportLog.builder):
+ (ReportLog.branch):
+ (ReportLog.platform):
+ (ReportLog.build_number):
+ (ReportLog.webkit_revision):
+ (ReportLog.chromium_revision):
+ (ReportLog._model_by_key_name_in_payload):
+ (ReportLog._integer_in_payload):
+ (ReportLog.timestamp):
+ * Websites/webkit-perf.appspot.com/report_handler.py:
+ (ReportHandler.post):
+ (ReportHandler._output):
+ (ReportHandler._results_are_valid):
+ (ReportHandler._results_are_valid._is_float_convertible):
+ (ReportHandler):
+ * Websites/webkit-perf.appspot.com/report_logs.html: Added.
+ * Websites/webkit-perf.appspot.com/report_logs_handler.py: Added.
+ (ReportLogsHandler):
+ (ReportLogsHandler.get):
+ (ReportLogsHandler.post):
+ (ReportLogsHandler._error):
+ * Websites/webkit-perf.appspot.com/report_process_handler.py: Copied from Websites/webkit-perf.appspot.com/report_handler.py.
+ (ReportProcessHandler):
+ (ReportProcessHandler.post):
+ (ReportProcessHandler._create_build_if_possible):
+ (ReportProcessHandler._create_build_if_possible.execute):
+ (ReportProcessHandler._add_test_if_needed):
+
+2012-02-09 Ryosuke Niwa <rniwa@webkit.org>
+
+ Perf-o-matic shouldn't rely on memcache to store cached JSON responses
+ https://bugs.webkit.org/show_bug.cgi?id=78306
+
+ Reviewed by Adam Barth.
+
+ Added PersistentCache model that stores the generated JSON responses.
+
+ * Websites/webkit-perf.appspot.com/controller.py:
+ (set_persistent_cache):
+ (set_persistent_cache.execute):
+ (get_persistent_cache):
+ (cache_manifest):
+ (CachedManifestHandler.get):
+ (cache_dashboard):
+ (CachedDashboardHandler.get):
+ (cache_runs):
+ (CachedRunsHandler.get):
+ * Websites/webkit-perf.appspot.com/models.py:
+ (TestResult):
+ (ReportLog):
+ (PersistentCache):
+
+2012-02-09 Ryosuke Niwa <rniwa@webkit.org>
+
+ Perf-o-matic should update memcache in taskqueue
+ https://bugs.webkit.org/show_bug.cgi?id=78209
+
+ Reviewed by Adam Barth.
+
+ Update dashboard, manifest, and runs memcaches in taskqueue.
+ Also centralized the management of caches in controller.py.
+
+ * Websites/webkit-perf.appspot.com/app.yaml:
+ * Websites/webkit-perf.appspot.com/controller.py: Added.
+ (cache_manifest):
+ (schedule_manifest_update):
+ (CachedManifestHandler):
+ (CachedManifestHandler.get):
+ (cache_dashboard):
+ (schedule_dashboard_update):
+ (CachedDashboardHandler):
+ (CachedDashboardHandler.get):
+ (cache_runs):
+ (schedule_runs_update):
+ (CachedRunsHandler):
+ (CachedRunsHandler.get):
+ * Websites/webkit-perf.appspot.com/create_handler.py:
+ (CreateHandler.post):
+ * Websites/webkit-perf.appspot.com/dashboard_handler.py:
+ (DashboardHandler.post):
+ * Websites/webkit-perf.appspot.com/main.py:
+ * Websites/webkit-perf.appspot.com/manifest_handler.py:
+ (ManifestHandler.post):
+ * Websites/webkit-perf.appspot.com/merge_tests_handler.py:
+ (MergeTestsHandler.post):
+ * Websites/webkit-perf.appspot.com/report_handler.py:
+ (ReportHandler.post):
+ * Websites/webkit-perf.appspot.com/runs_handler.py:
+ (RunsHandler.post):
+
+2012-02-09 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ [GTK] Add WebKitWebView::mouse-target-changed signal to WebKit2 GTK+ API
+ https://bugs.webkit.org/show_bug.cgi?id=78097
+
+ Reviewed by Martin Robinson.
+
+ * Source/autotools/symbols.filter: Add freeOwnedGPtr<_GdkEvent>
+ symbol to be able to use GOwnPtr<GdkEvent> in WebKit2 GTK+ unit
+ tests.
+
+2012-02-09 Kent Tamura <tkent@chromium.org>
+
+ Do not localize numbers in scientific notation
+ https://bugs.webkit.org/show_bug.cgi?id=78208
+
+ Reviewed by Hajime Morita.
+
+ * ManualTests/input-number-localization.html: Updated for scientific notation.
+
+2012-02-09 Gyuyoung Kim <gyuyoung.kim@samsung.com>
+
+ [CMAKE] Change lowercase variable with uppercase's.
+ https://bugs.webkit.org/show_bug.cgi?id=78198
+
+ Reviewed by Daniel Bates.
+
+ CMake variable is only written by uppercase.
+
+ * CMakeLists.txt:
+
+2012-02-07 MORITA Hajime <morrita@google.com>
+
+ Replacement text should be available from the marker.
+ https://bugs.webkit.org/show_bug.cgi?id=77934
+
+ Reviewed by Kent Tamura.
+
+ * Source/autotools/symbols.filter: Added an exporting symbol.
+
+2012-02-07 Gyuyoung Kim <gyuyoung.kim@samsung.com>
+
+ [CMAKE] Use *bin* and *lib* directories for executable and libraries.
+ https://bugs.webkit.org/show_bug.cgi?id=77928
+
+ Reviewed by Daniel Bates.
+
+ CMake has used *Programs* directory for executable. In addition, shared libraries are being
+ built in source directory. It is better to set common places in order to maintain executable
+ and libraries. *bin* is for executable and *lib* is for library.
+
+ * CMakeLists.txt: Set library output path.
+ * Source/cmake/WebKitFS.cmake: Remove *Programs* creation.
+
+2012-02-07 Priit Laes <plaes@plaes.org>
+
+ Get rid of Source/autotools/webkit.m4
+ https://bugs.webkit.org/show_bug.cgi?id=77833
+
+ Reviewed by Martin Robinson.
+
+ Move checks from webkit.m4 to configure.ac and modernize macros:
+ . Check for visibility flags after CXX has been defined
+ . Use PKG_PROG_PKG_CONFIG for pkg-config lookup
+ . Drop unused LIBFFTW_REQUIRED_VERSION
+ . Update ICU libs for mingw (bug 77837).
+ . Require Pango 1.21.0 (as per unicode backend)
+ . Bump minimum glib version due to g_thread_init changes
+
+ * Source/autotools/webkit.m4: Removed.
+ * configure.ac:
+
+2012-02-07 Ryosuke Niwa <rniwa@webkit.org>
+
+ Dashboard on perf-o-matic should be sorted
+ https://bugs.webkit.org/show_bug.cgi?id=77924
+
+ Reviewed by Tony Chang.
+
+ Sort tests in the frontend using the fact ES5 keeps the property order in the insertion order.
+
+ * Websites/webkit-perf.appspot.com/js/config.js:
+ (fetchDashboardManifest):
+
+2012-02-07 Frederik Gladhorn <frederik.gladhorn@nokia.com>
+
+ Update .gitignore for Qt Creator/KDevelop.
+ https://bugs.webkit.org/show_bug.cgi?id=77984
+
+ Reviewed by Simon Hausmann.
+
+ * .gitignore: Ignore temp files created by Qt Creator and KDevelop.
+
+2012-02-07 Priit Laes <plaes@plaes.org>
+
+ [GTK] Broken "HTML5 <scoped style>" detection
+ https://bugs.webkit.org/show_bug.cgi?id=77979
+
+ Reviewed by Gustavo Noronha Silva.
+
+ * configure.ac: Fix wrong variable for HTML5 <style scoped> detection
+
+2012-02-06 Shinya Kawanaka <shinyak@google.com>
+
+ Remove Element::ensureShadowRoot export.
+ https://bugs.webkit.org/show_bug.cgi?id=77932
+
+ Reviewed by Hajime Morita.
+
+ * Source/autotools/symbols.filter:
+
+2012-02-06 Martin Robinson <mrobinson@igalia.com> and Nayan Kumar K <nayankk@motorola.com>
+
+ [GTK] Add TextureMapperGL implementation
+ https://bugs.webkit.org/show_bug.cgi?id=75308
+
+ Reviewed by Alejandro G. Castro.
+
+ * GNUmakefile.am: TextureMapperGL implies USE(TEXTURE_MAPPER)
+ * configure.ac: Only allow enabling the GL version of TextureMapper on X11.
+
+2012-02-06 Ryosuke Niwa <rniwa@webkit.org>
+
+ Perf-o-matic should show min/max/stdev on graphs
+ https://bugs.webkit.org/show_bug.cgi?id=77702
+
+ Reviewed by Andreas Kling.
+
+ Include min/max/stdev in test runs when available to be shown on the perf-o-matic.
+
+ Also merge a change to config.js and increment the version number by 1 (unreviewed).
+
+ * Websites/webkit-perf.appspot.com/app.yaml:
+ * Websites/webkit-perf.appspot.com/js/config.js:
+ * Websites/webkit-perf.appspot.com/runs_handler.py:
+ (RunsHandler.get):
+
+2012-02-06 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ [GTK] Update NEWS and configure.ac for 1.7.5 release
+ https://bugs.webkit.org/show_bug.cgi?id=77859
+
+ Reviewed by Philippe Normand.
+
+ * configure.ac: Bumped version number.
+
+2012-02-05 ChangSeok Oh <shivamidow@gmail.com>
+
+ [EFL] Enable WebGL with glx backend
+ https://bugs.webkit.org/show_bug.cgi?id=77308
+
+ Reviewed by Martin Robinson.
+
+ Enabled WebGL feature for EFL port. The way is very similar to the one of GTK port.
+
+ * Source/cmake/OptionsEfl.cmake: Added feature option for WebGL.
+
+2012-02-05 Gyuyoung Kim <gyuyoung.kim@samsung.com>
+
+ [CMAKE] Support javascriptcore test for EFL port.
+ https://bugs.webkit.org/show_bug.cgi?id=77425
+
+ Reviewed by Daniel Bates.
+
+ Efl and WinCE as well as Blackberry port are now using Cmake as its build system
+ and they are share the make file to create jsc excutable. In order to run
+ "run-javascriptcore-tests", EFL port needs to change jsc installation configuration
+ with executable output directory(e.g. Programs). So, this patch change jsc installation
+ configuration only for EFL port.
+
+ * Source/cmake/OptionsEfl.cmake: Change *jsc_efl* name with *jsc*.
+
+2012-02-05 Gyuyoung Kim <gyuyoung.kim@samsung.com>
+
+ [CMAKE] Do not build Tools when building jsc only.
+ https://bugs.webkit.org/show_bug.cgi?id=77826
+
+ Reviewed by Daniel Bates.
+
+ Do not build Tools when jsc is only built. Build breaks occur because
+ Tools is built together when building jsc.
+
+ * CMakeLists.txt: Build Tools directory when ENABLE_TOOLS is on.
+
+2012-02-04 Philip Rogers <pdr@google.com>
+
+ Fix bug in svg-link-hover-use.svg
+ https://bugs.webkit.org/show_bug.cgi?id=77768
+
+ Reviewed by Eric Seidel.
+
+ * ManualTests/svg-link-hover-use.svg:
+
+2012-02-04 Kalev Lember <kalevlember@gmail.com>
+
+ [GTK] Use the wide character version of win32 API by default
+ https://bugs.webkit.org/show_bug.cgi?id=77809
+
+ Reviewed by Martin Robinson.
+
+ Certain win32-specific files (like PluginDatabaseWin.cpp) make the
+ assumption that the wide character version of win32 API is the default.
+ Define _UNICODE and UNICODE to do this, similar to what other win32
+ ports are doing.
+
+ * GNUmakefile.am:
+
+2012-02-03 Kalev Lember <kalevlember@gmail.com>
+
+ [GTK] configure: Print out the -Wno-c++0x-compat test result
+ https://bugs.webkit.org/show_bug.cgi?id=77757
+
+ Reviewed by Martin Robinson.
+
+ The check whether -Wno-c++0x-compat flag is needed didn't print out
+ the test result (and newline), which caused the following test to be
+ displayed on the same line.
+
+ checking if we have to disable C++0x compat warnings for GCC >= 4.6.0... checking pthread.h usability... yes
+
+ * configure.ac:
+
+2012-02-03 Ryosuke Niwa <rniwa@webkit.org>
+
+ perf-o-matic should store chromium svn revision
+ https://bugs.webkit.org/show_bug.cgi?id=77725
+
+ Reviewed by Dirk Pranke.
+
+ Store both WebKit and Chromium revisions when both are reported.
+
+ * Websites/webkit-perf.appspot.com/models.py:
+ (Build):
+ * Websites/webkit-perf.appspot.com/report_handler.py:
+ (ReportHandler.post):
+ (ReportHandler._create_build_if_possible):
+ (ReportHandler._create_build_if_possible.execute):
+ * Websites/webkit-perf.appspot.com/static/manual-submit.html:
+
+2012-02-03 Simon Hausmann <simon.hausmann@nokia.com>
+
+ [Qt] Replace GNU linker script for exports with export macros in WTF/JSC
+ https://bugs.webkit.org/show_bug.cgi?id=77723
+
+ Reviewed by Tor Arne Vestbø.
+
+ * Source/api.pri: Remove use of GNU linker script on Linux.
+ * Source/qtwebkit-export.map: Removed.
+
+2012-02-03 Shinya Kawanaka <shinyak@google.com>
+
+ Stop calling Element::ensureShadowRoot in Internals.
+ https://bugs.webkit.org/show_bug.cgi?id=77612
+
+ Reviewed by Hajime Morita.
+
+ * Source/autotools/symbols.filter:
+
+2012-02-02 Mark Rowe <mrowe@apple.com>
+
+ <http://webkit.org/b/77717> Makefile should provide control over output verbosity
+
+ Allow the filtering of the output of our Makefile to be configured via a user default
+ and overriden via a command-line argument to make.
+
+ The Makefile takes the verbosity from BuildTranscriptVerbosity default in the
+ org.webkit.BuildConfiguration domain. The supported values are "default", "quiet"
+ and "noisy". "default" maintains the existing behavior of only filtering out
+ the setenv lines from Xcode's shell script build phases. "quiet" filters all output
+ through filter-build-webkit. "noisy" provides unfiltered output. The verbosity can
+ be overriden for a single invocation of make by specifying the VERBOSITY variable
+ on the make command line.
+
+ To always get full output:
+ defaults write org.webkit.BuildConfiguration BuildTranscriptVerbosity noisy
+
+ To always get filtered ouptut:
+ defaults write org.webkit.BuildConfiguration BuildTranscriptVerbosity quiet
+
+ To get full output for a single build:
+ make VERBOSITY=noisy
+
+ Reviewed by Dan Bernstein.
+
+ * Makefile.shared:
+
+2012-02-02 Rakesh KN <rakesh.kn@motorola.com>
+
+ hidden attribute on <input type=file /> suppresses the file selection dialog
+ https://bugs.webkit.org/show_bug.cgi?id=58208
+
+ Reviewed by Ryosuke Niwa.
+
+ * ManualTests/input-file-hidden-open-dialog-on-click.html: Added.
+ Adding manual test as the file dialog opens only in User gesture.
+
+2012-02-01 Philippe Normand <pnormand@igalia.com>
+
+ [GStreamer] FFTFrame implementation
+ https://bugs.webkit.org/show_bug.cgi?id=73545
+
+ Reviewed by Chris Rogers.
+
+ * configure.ac: Enable the WebAudio option again and remove
+ libfftw checks.
+
+2012-01-31 Ryosuke Niwa <rniwa@webkit.org>
+
+ webkit-perf.appspot.com should accept test results without medians
+ https://bugs.webkit.org/show_bug.cgi?id=77513
+
+ Reviewed by Hajime Morita.
+
+ Don't store 0s when values are not in JSON.
+
+ * Websites/webkit-perf.appspot.com/report_handler.py:
+ (ReportHandler.post._float_or_none):
+ (ReportHandler.post):
+
+2012-01-31 Kenneth Rohde Christiansen <kenneth@webkit.org>
+
+ Tap highlighting: Support better outlines for multiline inlines
+ https://bugs.webkit.org/show_bug.cgi?id=77428
+
+ Reviewed by Simon Hausmann.
+
+ Update the test to use a transform.
+
+ * ManualTests/qt/tap-highlighting-inlines.html:
+
+2012-01-31 Nayan Kumar K <nayankk@motorola.com>
+
+ [GTK] Remove V8 compilation option.
+ https://bugs.webkit.org/show_bug.cgi?id=77405
+
+ Reviewed by Philippe Normand.
+
+ Revert the changes introduced as part of bug 69469
+ to provide an option to compile V8 as JavaScript engine.
+
+ * GNUmakefile.am: Remove defining USE_JSC macro.
+ * configure.ac: Remove --with-jsengine option.
+
+2012-01-25 Philippe Normand <pnormand@igalia.com>
+
+ [GStreamer] 0.11 build support
+ https://bugs.webkit.org/show_bug.cgi?id=77085
+
+ Reviewed by Martin Robinson.
+
+ * configure.ac: New --with-gstreamer option, defaulting to 0.10.
+
+2012-01-30 Ryosuke Niwa <rniwa@webkit.org>
+
+ Build fix after r106321.
+
+ * Websites/webkit-perf.appspot.com/report_handler.py:
+ * Websites/webkit-perf.appspot.com/manifest_handler.py:
+ (ManifestHandler.get):
+
+2012-01-30 Ryosuke Niwa <rniwa@webkit.org>
+
+ Python code in webkit-perf.appspot.com uses camelCase
+ https://bugs.webkit.org/show_bug.cgi?id=77392
+
+ Reviewed by Adam Barth.
+
+ Use PEP8 style naming conventions instead of camelCase.
+
+ * Websites/webkit-perf.appspot.com/create_handler.py:
+ (CreateHandler.post):
+ (CreateHandler._create_builder):
+ (CreateHandler._create_branch):
+ (CreateHandler._create_platform):
+ * Websites/webkit-perf.appspot.com/dashboard_handler.py:
+ (DashboardHandler.get):
+ * Websites/webkit-perf.appspot.com/manifest_handler.py:
+ (ManifestHandler.get):
+ * Websites/webkit-perf.appspot.com/merge_tests_handler.py:
+ (MergeTestsHandler.post):
+ * Websites/webkit-perf.appspot.com/models.py:
+ (create_in_transaction_with_numeric_id_holder):
+ (delete_model_with_numeric_id_holder):
+ (modelFromNumericId):
+ (Builder.authenticate):
+ (Builder.hashed_password):
+ (Test.cache_key):
+ * Websites/webkit-perf.appspot.com/report_handler.py:
+ (ReportHandler.post):
+ (ReportHandler._model_by_key_name_in_body_or_error):
+ (ReportHandler._integer_in_body):
+ (ReportHandler._timestamp_in_body):
+ (ReportHandler.bypass_authentication):
+ (ReportHandler._results_are_valid):
+ (ReportHandler._results_are_valid._is_float_convertible):
+ (ReportHandler._create_build_if_possible):
+ (ReportHandler._create_build_if_possible.execute):
+ (ReportHandler._add_test_if_needed):
+ (ReportHandler._add_test_if_needed.execute):
+ (ReportHandler):
+ (AdminReportHandler.bypass_authentication):
+ * Websites/webkit-perf.appspot.com/runs_handler.py:
+ (RunsHandler.get):
+
+2012-01-30 Ryosuke Niwa <rniwa@webkit.org>
+
+ Enable memcache on webkit-perf.appspot.com
+ https://bugs.webkit.org/show_bug.cgi?id=77378
+
+ Reviewed by Adam Barth.
+
+ Eanble memcache on dashboard, manifest, and runs handlers. Clear appropriate caches when new runs are reported,
+ or new models are created. We flush all caches when tests are merged since it's hard to figure out dependencies
+ in that case. Luckily, we merge tests only occassionally and manually (or hope so) so this shouldn't be an issue.
+
+ * Websites/webkit-perf.appspot.com/create_handler.py:
+ (CreateHandler.post):
+ * Websites/webkit-perf.appspot.com/dashboard_handler.py:
+ (DashboardHandler.get):
+ * Websites/webkit-perf.appspot.com/manifest_handler.py:
+ (ManifestHandler.get):
+ * Websites/webkit-perf.appspot.com/merge_tests_handler.py:
+ (MergeTestsHandler.post):
+ * Websites/webkit-perf.appspot.com/models.py:
+ (createInTransactionWithNumericIdHolder):
+ (Test):
+ (Test.cacheKey):
+ * Websites/webkit-perf.appspot.com/report_handler.py:
+ (ReportHandler.post):
+ (ReportHandler._addTestIfNeeded):
+ * Websites/webkit-perf.appspot.com/runs_handler.py:
+ (RunsHandler.get):
+
+2012-01-30 Ryosuke Niwa <rniwa@webkit.org>
+
+ webkit-perf.appspot.com should have an ability to merge tests
+ https://bugs.webkit.org/show_bug.cgi?id=77250
+
+ Reviewed by Adam Barth.
+
+ Added admin/merge-tests. This page allows administrators to easily merge test objects.
+
+ Also add the forgotten title.png and rename api/create to admin/create since we don't allow
+ non-admins to create new models anyway.
+
+ * Websites/webkit-perf.appspot.com/app.yaml:
+ * Websites/webkit-perf.appspot.com/css: Added.
+ * Websites/webkit-perf.appspot.com/css/title.png: Added.
+ * Websites/webkit-perf.appspot.com/main.py:
+ * Websites/webkit-perf.appspot.com/merge_tests.yaml: Added.
+ * Websites/webkit-perf.appspot.com/merge_tests_handler.py: Added.
+ (MergeTestHandler):
+ (MergeTestHandler.get):
+ (MergeTestHandler.post):
+ * Websites/webkit-perf.appspot.com/models.py:
+ (deleteModelWithNumericIdHolder):
+ * Websites/webkit-perf.appspot.com/static/create-models.html:
+
+2012-01-30 Kenneth Rohde Christiansen <kenneth@webkit.org>
+
+ Add manual tests for tap highlighting
+
+ Rubberstamped by Simon Hausmann.
+
+ * ManualTests/qt/tap-highlighting-colors.html: Added.
+ * ManualTests/qt/tap-highlighting-images.html: Added.
+ * ManualTests/qt/tap-highlighting-inlines.html: Added.
+
+2012-01-30 Allan Sandfeld Jensen <allan.jensen@nokia.com>
+
+ Manual test of number of resize events emitted during page generation.
+ https://bugs.webkit.org/show_bug.cgi?id=77212
+
+ Is needed to test if too many resize events are send when using fixed
+ layout, and needs to be a manual test because the test framework does
+ not currently support testing fixed layout.
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ * ManualTests/resize-events.html: Added.
+
+2012-01-29 Zoltan Herczeg <zherczeg@webkit.org>
+
+ Custom written CSS lexer
+ https://bugs.webkit.org/show_bug.cgi?id=70107
+
+ Reviewed by Antti Koivisto and Oliver Hunt.
+
+ Remove tokenizer.cpp from intermediate sources.
+
+ * wscript:
+
+2012-01-27 Fady Samuel <fsamuel@chromium.org>
+
+ Rename shouldLayoutFixedElementsRelativeToFrame and make it a setting
+ https://bugs.webkit.org/show_bug.cgi?id=76459
+
+ Reviewed by Darin Fisher.
+
+ * Source/autotools/symbols.filter:
+
+2012-01-26 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ [GTK] Add basic printing support to WebKit2
+ https://bugs.webkit.org/show_bug.cgi?id=76172
+
+ Reviewed by Gustavo Noronha Silva.
+
+ * configure.ac: Check whether GTK+ UNIX printing is available.
+
+2012-01-27 ChangSeok Oh <shivamidow@gmail.com>
+
+ [EFL] SVG_FONT is not disabled when SVG is disabled.
+ https://bugs.webkit.org/show_bug.cgi?id=77174
+
+ Reviewed by Eric Seidel.
+
+ SVG_FONTS should be disabled when SVG is disabled. Or else it causes build-break.
+ Relocated checking ENABLE_GLIB_SUPPORT & ENABLE_VIDEO to avoid duplication.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-01-26 Kevin Ollivier <kevino@theolliviers.com>
+
+ [wx] Unreviewed. Build fix, don't build some sources
+ which appear to no longer be needed.
+
+ * wscript:
+
+2012-01-24 Ryosuke Niwa <rniwa@webkit.org>
+
+ Port Mozilla's Graph Server
+ https://bugs.webkit.org/show_bug.cgi?id=76312
+
+ Reviewed by Adam Barth.
+
+ Add the app engine backend for the Mozilla's graph server used on perf-webkit.appspot.com.
+
+ To deploy webkit-perf.appspot.com, you also need to pull index.html, embed.html, graph.html, jq,
+ js (except config.js), and css (except title.png) from https://github.com/mozilla/graphs.
+
+ * Websites/perf-webkit.appspot.com: Added.
+ * Websites/perf-webkit.appspot.com/app.yaml: Added.
+ * Websites/perf-webkit.appspot.com/create_handler.py: Added.
+ (CreateHandler):
+ (CreateHandler.post):
+ (CreateHandler._createBuilder):
+ (CreateHandler._createBuilder.execute):
+ (CreateHandler._createBranch):
+ (CreateHandler._createBranch.execute):
+ (CreateHandler._createPlatform):
+ (CreateHandler._createPlatform.execute):
+ * Websites/perf-webkit.appspot.com/dashboard_handler.py: Added.
+ (DashboardHandler):
+ (DashboardHandler.get):
+ * Websites/perf-webkit.appspot.com/index.yaml: Added.
+ * Websites/perf-webkit.appspot.com/main.py: Added.
+ (main):
+ * Websites/perf-webkit.appspot.com/manifest_handler.py: Added.
+ (ManifestHandler):
+ (ManifestHandler.get):
+ * Websites/perf-webkit.appspot.com/models.py: Added.
+ (NumericIdHolder):
+ (NumericIdHolder.whose):
+ (createInTransactionWithNumericIdHolder):
+ (modelFromNumericId):
+ (Branch):
+ (Platform):
+ (Builder):
+ (Builder.authenticate):
+ (Builder.hashedPassword):
+ (Build):
+ (Test):
+ (TestResult):
+ (ReportLog):
+ * Websites/perf-webkit.appspot.com/report_handler.py: Added.
+ (ReportHandler):
+ (ReportHandler.post):
+ (ReportHandler._modelByKeyNameInBodyOrError):
+ (ReportHandler._integerInBody):
+ (ReportHandler._timestampInBody):
+ (ReportHandler._output):
+ (ReportHandler._resultsAreValid):
+ (ReportHandler._createBuildIfPossible):
+ (ReportHandler._createBuildIfPossible.execute):
+ (ReportHandler._addTestIfNeeded):
+ (ReportHandler._addTestIfNeeded.execute):
+ * Websites/perf-webkit.appspot.com/runs_handler.py: Added.
+ (RunsHandler):
+ (RunsHandler.get):
+ * Websites/perf-webkit.appspot.com/static: Added.
+ * Websites/perf-webkit.appspot.com/static/create-models.html: Added.
+ * Websites/perf-webkit.appspot.com/static/manual-submit.html: Added.
+
+2012-01-25 Hajime Morita <morrita@google.com>>
+
+ ENABLE_SHADOW_DOM should be available via build-webkit --shadow-dom
+ https://bugs.webkit.org/show_bug.cgi?id=76863
+
+ Reviewed by Dimitri Glazkov.
+
+ Added a feature flag.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/OptionsWinCE.cmake:
+ * configure.ac:
+
+2012-01-25 Kenneth Rohde Christiansen <kenneth@webkit.org>
+
+ [Qt] Implement tap feedback respecting -webkit-tap-highlight-color
+ https://bugs.webkit.org/show_bug.cgi?id=76914
+
+ Reviewed by Simon Hausmann.
+
+ Add a manual test.
+
+ * ManualTests/qt/tap-highlighting.html: Added.
+
+2012-01-25 Roland Steiner <rolandsteiner@chromium.org>
+
+ <style scoped>: Implement registering of <style scoped> with the scoping element
+ https://bugs.webkit.org/show_bug.cgi?id=67790
+
+ windows.internals updates
+
+ Reviewed by Dimitri Glazkov.
+
+ * Source/autotools/symbols.filter:
+
+2012-01-24 Mark Rowe <mrowe@apple.com>
+
+ Death to JavaScriptGlue.
+
+ Rubber-stamped by Geoffrey Garen.
+
+ * Source/JavaScriptGlue: Removed.
+ * Source/Makefile: Stop building JavaScriptGlue.
+
+2012-01-24 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Some qmake build files must include Qt5's "quick" module.
+ https://bugs.webkit.org/show_bug.cgi?id=76671
+
+ Unreviewed build fix.
+
+ * Source/api.pri:
+
+2012-01-21 Priit Laes <plaes@plaes.org>
+
+ [GTK][PATCH] Enable MathML support by default
+ https://bugs.webkit.org/show_bug.cgi?id=76790
+
+ Reviewed by Martin Robinson.
+
+ * configure.ac: Enable MathML by default.
+
+2012-01-20 Marc-Andre Decoste <mad@chromium.org>
+
+ Add proper offset to position right click to simulate a context menu invocation.
+ https://bugs.webkit.org/show_bug.cgi?id=76421
+
+ Reviewed by Ojan Vafai.
+
+ * ManualTests/win/contextmenu-key3.html: Added.
+
+2012-01-20 Kinuko Yasuda <kinuko@chromium.org>
+
+ Unreviewed; Windows buildbot update failure fix.
+
+ * ../ManualTests/data-transfer-items-file-dragout.html: Removed the notion of test:lorem-text.html.
+ * ../ManualTests/resources/test:lorem-text.html: Removed as this doesn't work on Windows.
+
+2012-01-20 Kinuko Yasuda <kinuko@chromium.org>
+
+ Add DataTransferItems support for drag-and-drop'ed files and texts
+ https://bugs.webkit.org/show_bug.cgi?id=76367
+
+ Reviewed by Tony Chang.
+
+ * ManualTests/data-transfer-items-file-dragout.html: Added.
+ * ManualTests/test:lorem-text.html: Added.
+
+2012-01-20 Mario Sanchez Prada <msanchez@igalia.com>
+
+ [GTK] Expose accessibility hierarchy in WebKit2 to ATK/AT-SPI based ATs
+ https://bugs.webkit.org/show_bug.cgi?id=72589
+
+ Reviewed by Martin Robinson.
+
+ New optional dependency for WK2's accessibility unit test: AT-SPI2.
+
+ * configure.ac: Check for AT-SPI2 when building with WK2 support.
+
+2012-01-19 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
+
+ [Qt] Public API watch dog auto test.
+ https://bugs.webkit.org/show_bug.cgi?id=73922
+
+ Reviewed by Simon Hausmann.
+
+ This test aims to prevent unintended/unapproved
+ modifications to the public QML API.
+
+ * Source/tests.pri:
+
+2012-01-19 Gustavo Noronha Silva <gns@gnome.org>
+
+ Rubber-stamped by Martin Robinson.
+
+ * Source/autotools/symbols.filter: try to fix the 32 bits release
+ bot by also adding the symbol it generates
+
+2012-01-19 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Make build-webkit always do safe incremental builds after update-webkit
+
+ When building against Qt5 with GCC we would just run 'make' in the build dir,
+ and rely on the dependency files output by GCC (-MD) to handle dependency
+ tracking, but that fails for special-cases like adding a Q_OBJECT macro
+ to a header.
+
+ To guarantee that an incrmental build will work, we have to run 'make qmake',
+ which we now do on every build-webkit that's followed by a successful run
+ of update-webkit. The reasoning is that update-webkit can result in such
+ potential corner-cases being applied, and since we can't know for sure
+ unless we inspect the diff and account for all the corner cases we assume
+ the worst and always run 'make qmake'.
+
+ After a succesful run of build-webkit we proceed to do just 'make' for any
+ subsequent runs, since we assume that the developer knows what kind of
+ changes he/she is doing, and when a 'make qmake' is needed.
+
+ Reviewed by Simon Hausmann.
+
+ * .gitignore:
+
+2012-01-18 Dirk Pranke <dpranke@chromium.org>
+
+ [chromium] move Tools.gyp, switch build-webkit --chromium to All.gyp
+ https://bugs.webkit.org/show_bug.cgi?id=76505
+
+ Reviewed by Tony Chang.
+
+ Update with newly-generated files.
+
+ * .gitignore:
+
+2012-01-18 Eric Carlson <eric.carlson@apple.com>
+
+ Provide access to user's list of preferred languages
+ https://bugs.webkit.org/show_bug.cgi?id=76138
+
+ Reviewed by Alexey Proskuryakov.
+
+ * Source/autotools/symbols.filter: List the new functions.
+
+2012-01-18 Luciano Wolf <luciano.wolf@openbossa.org>
+
+ [Qt][WK2] Broken build with undefined reference to shm_open and shm_unlink
+ https://bugs.webkit.org/show_bug.cgi?id=76538
+
+ Reviewed by Tor Arne Vestbø.
+
+ The -lrt parameter was coming before -lWebKit2 during linkage.
+
+ Moved rt lib inclusion from Source/api.pri to WebKit2.pri as it should be aware
+ of its own dependencies instead of letting WebKit guess about. Letting
+ it on api.pri can lead to a wrong parameter's order during linker phase.
+ Ubuntu 11.10 was giving errors about SharedMemory (shm_open and
+ shm_unlink undefined symbols).
+
+ * Source/api.pri:
+
+2012-01-18 Balazs Kelemen <kbalazs@webkit.org>
+
+ [Qt] Consolidate layout test crash logging
+ https://bugs.webkit.org/show_bug.cgi?id=75088
+
+ Reviewed by Simon Hausmann.
+
+ Move backtrace generating logic into WTFReportBacktrace
+ and add a way to deinstall signal handlers if we know
+ that we have already printed the backtrace.
+
+ * Source/qtwebkit-export.map:
+
+2012-01-18 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Move OTHER_FILES from WebKit.pro to Tools.pro
+
+ Reviewed by Simon Hausmann.
+
+ * WebKit.pro:
+
+2012-01-18 Shinya Kawanaka <shinyak@google.com>
+
+ Move ShadowContentElement from dom/ to html/ and make ShadowContentElement subclass of HTMLElement.
+ https://bugs.webkit.org/show_bug.cgi?id=76241
+
+ Reviewed by Dimitri Glazkov.
+
+ * Source/autotools/symbols.filter: Exposed necessary symbols.
+
+2012-01-18 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Unreviewed. Fix GTK+ build after r105245.
+
+ * Source/autotools/symbols.filter: Fix symbol name.
+
+2012-01-17 Hajime Morrita <morrita@chromium.org>
+
+ [Internals] Should be able to access corresponding Document object.
+ https://bugs.webkit.org/show_bug.cgi?id=76425
+
+ Added exported symbols.
+
+ Reviewed by Adam Barth.
+
+ * Source/autotools/symbols.filter:
+
+2012-01-17 Stephen Chenney <schenney@chromium.org>
+
+ NULL ptr in WebCore::RenderSVGInlineText::localCaretRect
+ https://bugs.webkit.org/show_bug.cgi?id=75851
+
+ Reviewed by Ryosuke Niwa.
+
+ Added a check for null box in localCaretRect, to match test in other
+ implementations. Adding a manual test because the crash is not
+ reproducible in DRT.
+
+ * ManualTests/svg-modify-deleted-selection.svg: Added.
+
+2012-01-17 Raul Hudea <rhudea@adobe.com>
+
+ Move tests out of WebCore/manual-tests to toplevel ManualTests.
+ It looks like the manual-tests folder wasn't noticed by git (or me :).
+
+ Move some SVG manual tests from deprecated WebCore/manual-tests to toplevel ManualTests
+ https://bugs.webkit.org/show_bug.cgi?id=76437
+
+ Reviewed by Daniel Bates.
+
+ * ManualTests/svg-animation-css-transform.html: Renamed from Source/WebCore/manual-tests/svg-animation-css-transform.html.
+ * ManualTests/svg-css-animate-compound.html: Renamed from Source/WebCore/manual-tests/svg-css-animate-compound.html.
+ * ManualTests/svg-css-transition-compound.html: Renamed from Source/WebCore/manual-tests/svg-css-transition-compound.html.
+
+2012-01-16 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Add more files to project-files for easier navigation in Qt Creator
+
+ Reviewed by Simon Hausmann.
+
+ * WebKit.pro:
+
+2012-01-16 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ [GTK] Update NEWS and configure.ac for 1.7.4 release
+ https://bugs.webkit.org/show_bug.cgi?id=76375
+
+ Reviewed by Philippe Normand.
+
+ * configure.ac: Bumped version number.
+
+2012-01-16 Shinya Kawanaka <shinyak@google.com>
+
+ [crash] Renderer crashes when spell checking a disabled input field.
+ https://bugs.webkit.org/show_bug.cgi?id=75941
+
+ Reviewed by Hajime Morita.
+
+ * ManualTests/editing-disabled-node-replace-crash.html: Added.
+
+2012-01-13 Simon Fraser <simon.fraser@apple.com>
+
+ Unmatched transparency layer begin/end on a filtered element with an opacity ancestor
+ https://bugs.webkit.org/show_bug.cgi?id=76329
+
+ Reviewed by Dan Bernstein.
+
+ Manual test with a filtered element as a descendant of an element with
+ opacity. Doing a Find is necessary to exercise the test.
+
+ * ManualTests/filters/opacity-above-filter.html: Added.
+
+2012-01-13 Eli Fidler <efidler@rim.com>
+
+ GCC compiler version is not detected properly for QNX qcc variant
+ https://bugs.webkit.org/show_bug.cgi?id=76288
+
+ Reviewed by Rob Buis.
+
+ Provide an alternative way of getting the compiler version for GCC variants
+ that don't support -dumpversion (such as qcc).
+
+ * Source/cmake/WebKitHelpers.cmake:
+
+2012-01-13 Gregg Tavares <gman@google.com>
+
+ Add WebGLContextGroup as step toward sharing WebGL resources
+ https://bugs.webkit.org/show_bug.cgi?id=75906
+
+ The WebGL Working Group will soon add the ability to share
+ WebGL resources among WebGL contexts. This is the necessary
+ prep work. NO API changes.
+
+ Added WebGLSharedObject for objects that are shared vs
+ WebGLContextObject for objects that are not.
+
+ Reviewed by Kenneth Russell.
+
+ No new tests. No change in behavior.
+
+ * GNUmakefile.list.am:
+ * WebCore.gypi:
+ * html/canvas/OESVertexArrayObject.cpp:
+ (WebCore::OESVertexArrayObject::createVertexArrayOES):
+ (WebCore::OESVertexArrayObject::deleteVertexArrayOES):
+ (WebCore::OESVertexArrayObject::isVertexArrayOES):
+ (WebCore::OESVertexArrayObject::bindVertexArrayOES):
+ * html/canvas/WebGLBuffer.cpp:
+ (WebCore::WebGLBuffer::WebGLBuffer):
+ (WebCore::WebGLBuffer::~WebGLBuffer):
+ (WebCore::WebGLBuffer::deleteObjectImpl):
+ * html/canvas/WebGLBuffer.h:
+ * html/canvas/WebGLContextGroup.cpp: Added.
+ (WebCore::WebGLContextGroup::create):
+ (WebCore::WebGLContextGroup::WebGLContextGroup):
+ (WebCore::WebGLContextGroup::~WebGLContextGroup):
+ (WebCore::WebGLContextGroup::getAGraphicsContext3D):
+ (WebCore::WebGLContextGroup::addContext):
+ (WebCore::WebGLContextGroup::removeContext):
+ (WebCore::WebGLContextGroup::removeObject):
+ (WebCore::WebGLContextGroup::addObject):
+ (WebCore::WebGLContextGroup::detachAndRemoveAllObjects):
+ (WebCore::WebGLContextGroup::loseContextGroup):
+ * html/canvas/WebGLContextGroup.h: Copied from Source/WebCore/html/canvas/WebGLShader.h.
+ * html/canvas/WebGLContextObject.cpp: Copied from Source/WebCore/html/canvas/WebGLShader.cpp.
+ (WebCore::WebGLContextObject::WebGLContextObject):
+ (WebCore::WebGLContextObject::~WebGLContextObject):
+ (WebCore::WebGLContextObject::detachContext):
+ (WebCore::WebGLContextObject::getAGraphicsContext3D):
+ * html/canvas/WebGLContextObject.h: Copied from Source/WebCore/html/canvas/WebGLShader.h.
+ (WebCore::WebGLContextObject::context):
+ (WebCore::WebGLContextObject::validate):
+ (WebCore::WebGLContextObject::hasGroupOrContext):
+ * html/canvas/WebGLFramebuffer.cpp:
+ (WebCore::WebGLFramebuffer::WebGLFramebuffer):
+ (WebCore::WebGLFramebuffer::~WebGLFramebuffer):
+ (WebCore::WebGLFramebuffer::setAttachmentForBoundFramebuffer):
+ (WebCore::WebGLFramebuffer::getAttachment):
+ (WebCore::WebGLFramebuffer::removeAttachmentFromBoundFramebuffer):
+ (WebCore::WebGLFramebuffer::checkStatus):
+ (WebCore::WebGLFramebuffer::onAccess):
+ (WebCore::WebGLFramebuffer::deleteObjectImpl):
+ (WebCore::WebGLFramebuffer::initializeRenderbuffers):
+ * html/canvas/WebGLFramebuffer.h:
+ * html/canvas/WebGLObject.cpp:
+ (WebCore::WebGLObject::WebGLObject):
+ (WebCore::WebGLObject::~WebGLObject):
+ (WebCore::WebGLObject::deleteObject):
+ (WebCore::WebGLObject::detach):
+ (WebCore::WebGLObject::onDetached):
+ * html/canvas/WebGLObject.h:
+ * html/canvas/WebGLProgram.cpp:
+ (WebCore::WebGLProgram::WebGLProgram):
+ (WebCore::WebGLProgram::~WebGLProgram):
+ (WebCore::WebGLProgram::deleteObjectImpl):
+ (WebCore::WebGLProgram::cacheActiveAttribLocations):
+ * html/canvas/WebGLProgram.h:
+ * html/canvas/WebGLRenderbuffer.cpp:
+ (WebCore::WebGLRenderbuffer::~WebGLRenderbuffer):
+ (WebCore::WebGLRenderbuffer::WebGLRenderbuffer):
+ (WebCore::WebGLRenderbuffer::deleteObjectImpl):
+ * html/canvas/WebGLRenderbuffer.h:
+ * html/canvas/WebGLRenderingContext.cpp:
+ (WebCore::WebGLRenderingContext::WebGLRenderingContext):
+ (WebCore::WebGLRenderingContext::initializeNewContext):
+ (WebCore::WebGLRenderingContext::~WebGLRenderingContext):
+ (WebCore::WebGLRenderingContext::clearIfComposited):
+ (WebCore::WebGLRenderingContext::checkObjectToBeBound):
+ (WebCore::WebGLRenderingContext::clear):
+ (WebCore::WebGLRenderingContext::copyTexImage2D):
+ (WebCore::WebGLRenderingContext::copyTexSubImage2D):
+ (WebCore::WebGLRenderingContext::createBuffer):
+ (WebCore::WebGLRenderingContext::createFramebuffer):
+ (WebCore::WebGLRenderingContext::createTexture):
+ (WebCore::WebGLRenderingContext::createProgram):
+ (WebCore::WebGLRenderingContext::createRenderbuffer):
+ (WebCore::WebGLRenderingContext::createShader):
+ (WebCore::WebGLRenderingContext::deleteObject):
+ (WebCore::WebGLRenderingContext::deleteRenderbuffer):
+ (WebCore::WebGLRenderingContext::deleteTexture):
+ (WebCore::WebGLRenderingContext::detachShader):
+ (WebCore::WebGLRenderingContext::validateElementArraySize):
+ (WebCore::WebGLRenderingContext::validateIndexArrayConservative):
+ (WebCore::WebGLRenderingContext::validateIndexArrayPrecise):
+ (WebCore::WebGLRenderingContext::validateWebGLObject):
+ (WebCore::WebGLRenderingContext::drawArrays):
+ (WebCore::WebGLRenderingContext::drawElements):
+ (WebCore::WebGLRenderingContext::framebufferRenderbuffer):
+ (WebCore::WebGLRenderingContext::framebufferTexture2D):
+ (WebCore::WebGLRenderingContext::getFramebufferAttachmentParameter):
+ (WebCore::WebGLRenderingContext::linkProgram):
+ (WebCore::WebGLRenderingContext::readPixels):
+ (WebCore::WebGLRenderingContext::useProgram):
+ (WebCore::WebGLRenderingContext::removeSharedObject):
+ (WebCore::WebGLRenderingContext::addSharedObject):
+ (WebCore::WebGLRenderingContext::removeContextObject):
+ (WebCore::WebGLRenderingContext::addContextObject):
+ (WebCore::WebGLRenderingContext::detachAndRemoveAllObjects):
+ (WebCore::WebGLRenderingContext::initVertexAttrib0):
+ (WebCore::WebGLRenderingContext::loseContext):
+ (WebCore::WebGLRenderingContext::loseContextImpl):
+ * html/canvas/WebGLRenderingContext.h:
+ (WebCore::WebGLRenderingContext::contextGroup):
+ * html/canvas/WebGLShader.cpp:
+ (WebCore::WebGLShader::WebGLShader):
+ (WebCore::WebGLShader::~WebGLShader):
+ (WebCore::WebGLShader::deleteObjectImpl):
+ * html/canvas/WebGLShader.h:
+ * html/canvas/WebGLSharedObject.cpp: Copied from Source/WebCore/html/canvas/WebGLRenderbuffer.cpp.
+ (WebCore::WebGLSharedObject::WebGLSharedObject):
+ (WebCore::WebGLSharedObject::~WebGLSharedObject):
+ (WebCore::WebGLSharedObject::detachContextGroup):
+ (WebCore::WebGLSharedObject::getAGraphicsContext3D):
+ * html/canvas/WebGLSharedObject.h: Copied from Source/WebCore/html/canvas/WebGLShader.h.
+ (WebCore::WebGLSharedObject::contextGroup):
+ (WebCore::WebGLSharedObject::isBuffer):
+ (WebCore::WebGLSharedObject::isFramebuffer):
+ (WebCore::WebGLSharedObject::isProgram):
+ (WebCore::WebGLSharedObject::isRenderbuffer):
+ (WebCore::WebGLSharedObject::isShader):
+ (WebCore::WebGLSharedObject::isTexture):
+ (WebCore::WebGLSharedObject::validate):
+ (WebCore::WebGLSharedObject::hasGroupOrContext):
+ * html/canvas/WebGLTexture.cpp:
+ (WebCore::WebGLTexture::WebGLTexture):
+ (WebCore::WebGLTexture::~WebGLTexture):
+ (WebCore::WebGLTexture::deleteObjectImpl):
+ * html/canvas/WebGLTexture.h:
+ * html/canvas/WebGLVertexArrayObjectOES.cpp:
+ (WebCore::WebGLVertexArrayObjectOES::WebGLVertexArrayObjectOES):
+ (WebCore::WebGLVertexArrayObjectOES::~WebGLVertexArrayObjectOES):
+ (WebCore::WebGLVertexArrayObjectOES::deleteObjectImpl):
+ * html/canvas/WebGLVertexArrayObjectOES.h:
+
+2012-01-12 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r104805.
+ http://trac.webkit.org/changeset/104805
+ https://bugs.webkit.org/show_bug.cgi?id=76180
+
+ Breaks apple win compilation. (Requested by vsevik on
+ #webkit).
+
+ * Source/autotools/symbols.filter:
+
+2012-01-12 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Make the new WTF module build on Qt
+ https://bugs.webkit.org/show_bug.cgi?id=76163
+
+ Reviewed by Tor Arne Vestbø.
+
+ * WebKit.pro: Build the new WTF instead of the old one.
+
+2012-01-12 Shinya Kawanaka <shinyak@google.com>
+
+ ShadowContentElement should be able to use query.
+ https://bugs.webkit.org/show_bug.cgi?id=75302
+
+ Reviewed by Hajime Morita.
+
+ * Source/autotools/symbols.filter: Exposed necessary symbols.
+
+2012-01-11 Ulan Degenbaev <ulan@chromium.org>
+
+ [v8] Int16Array.set(array, offset) fails on first execution
+ https://bugs.webkit.org/show_bug.cgi?id=76040
+
+ Reviewed by Kenneth Russell.
+
+ * LayoutTests/fast/canvas/webgl/array-set-with-offset-expected.txt: Added.
+ * LayoutTests/fast/canvas/webgl/array-set-with-offset.html: Added.
+ * Source/WebCore/bindings/v8/custom/V8ArrayBufferViewCustom.cpp:
+ * Source/WebCore/bindings/v8/custom/V8ArrayBufferViewCustom.h:
+
+2012-01-11 Eli Fidler <efidler@rim.com>
+
+ Fix OpenGL dependency in CMake build system
+ https://bugs.webkit.org/show_bug.cgi?id=73559
+
+ Reviewed by Daniel Bates.
+
+ Apparently the EFL port uses desktop OpenGL to implement WebGL, but
+ other ports such as BlackBerry use other libraries like OpenGL ES 2.0 or
+ ANGLE.
+
+ * Source/cmake/OptionsCommon.cmake:
+ * Source/cmake/OptionsEfl.cmake:
+
+2012-01-09 Martin Robinson <mrobinson@igalia.com>
+
+ [GTK] [AC] Simplify accelerated compositing build options
+ https://bugs.webkit.org/show_bug.cgi?id=75518
+
+ Reviewed by Gustavo Noronha Silva.
+
+ * configure.ac: Remove the --enable-3d-rendering option. It's enabled by
+ default now when accelerated compositing is enabled.
+ * GNUmakefile.am: Automatically enable 3D rendering when accelerated compositing
+ is turned on.
+
+2012-01-04 Jon Lee <jonlee@apple.com>
+
+ Clicking on the cancel button on readonly and disabled search fields darkens as if the search field was editable
+ https://bugs.webkit.org/show_bug.cgi?id=69886
+ <rdar://problem/10070187>
+
+ Reviewed by Adele Peterson.
+
+ * ManualTests/search-cancel-button.html: Added.
+
+2012-01-06 Simon Hausmann <simon.hausmann@nokia.com>
+
+ [Qt] Fix compilation of app code against QtWebKit master header file
+
+ Unreviewed trivial build fix.
+
+ * Source/sync.profile: Exclude util.h and testwindow.h from the master header
+ file, because it cannot be used outside of the WebKit source tree.
+
+2012-01-06 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Move listing of include paths and libs to pri files in sources
+
+ Includepaths are sometimes modified by non-Qt contributors so keeping
+ them in files inside Sources makes it more likely that they are updated
+ along with project files for the other ports.
+
+ Using pri files instead of prf files for this also has the benefit that
+ the include() from the main target file can be parsed and followed by
+ Qt Creator -- something that does not work with load().
+
+ Dependency from a target to a library through the WEBKIT variable are
+ handled through forwarding-files in Tools/qmake/mkspecs/modules, which
+ set the source root of the module and include the right pri file.
+
+ Ideally we'd use the variant of include() that takes an optional
+ namespace to read the variables into, or the fromfile() function,
+ but both of these add an overhead of about 40% on the total qmake
+ runtime, due to making a deep copy of all the variables in the
+ project or re-reading all the prf files from scratch.
+
+ Reviewed by Simon Hausmann.
+ Reviewed by Ossy.
+
+ * WebKit.pro:
+
+2012-01-06 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Add a few more files ot OTHER_FILES
+
+ Rubber-stamped by Simon Hausmann.
+
+ * WebKit.pro:
+
+2012-01-05 Ulan Degenbaev <ulan@chromium.org>
+
+ [v8] Null pointer exception if a typed array constructor set to a primitive value.
+ https://bugs.webkit.org/show_bug.cgi?id=75532
+
+ Make sure that V8ArrayBufferViewCustomScript.js does not throw exception.
+
+ Reviewed by Kenneth Russell.
+
+ * LayoutTests/fast/canvas/webgl/array-buffer-view-crash-when-reassigned-expected.txt: Added.
+ * LayoutTests/fast/canvas/webgl/array-buffer-view-crash-when-reassigned.html: Added.
+ * Source/WebCore/bindings/v8/custom/V8ArrayBufferViewCustom.cpp:
+ * Source/WebCore/bindings/v8/custom/V8ArrayBufferViewCustomScript.js:
+
+2012-01-05 Zeno Albisser <zeno@webkit.org>
+
+ [Qt][WK2] Implement custom URL schemes defined in QML.
+ https://bugs.webkit.org/show_bug.cgi?id=74931
+
+ Add new classes to the export map.
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ * Source/qtwebkit-export.map:
+
+2012-01-05 Fady Samuel <fsamuel@chromium.org>
+
+ Move scalePageBy from eventSender to window.internals
+ https://bugs.webkit.org/show_bug.cgi?id=64512
+
+ Reviewed by Simon Fraser.
+
+ * Source/autotools/symbols.filter:
+
+2012-01-04 James Robinson <jamesr@chromium.org>
+
+ [chromium] Move WebMimeRegistry and dependencies to Source/Platform
+ https://bugs.webkit.org/show_bug.cgi?id=74583
+
+ Reviewed by Darin Fisher.
+
+ Update .gitignore for Source/Platform/Platform.gyp/ generated project files.
+
+ * .gitignore:
+
+2012-01-04 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Introduce new qmake variable 'WEBKIT' for signaling dependencies
+
+ The custom qmake variable 'WEBKIT' is used for signaling that a
+ target depends in some way on other subproject of the WebKit
+ project. For now this is limited to the set of intermediate
+ libraries: wtf, javascriptcore, webcore, and webkit2.
+
+ This replaces the previous convension of using load(foo) for
+ just include paths, and CONFIG += foo to also link against foo.
+
+ Adding a dependency results in additional include paths being
+ available, and potentially linking to the library. This is
+ decided by the build system based on conditions such as what
+ kind of target is being built and the general build config.
+
+ An advantage to his approach is that it simplifies the individual
+ foo.prf files, for example by allowing us to use INCLUDEPATH +=
+ and LIBS += as normal instead of prepending.
+
+ Reviewed by Simon Hausmann.
+
+ * Source/api.pri:
+
+2012-01-04 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Move use of $$qtLibraryTarget() to a single place
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ * Source/api.pri:
+
+2012-01-04 Mary Wu <mary.wu@torchmobile.com.cn>
+
+ Enable DOWNLOAD_ATTRIBUTE in BlackBerry porting
+ https://bugs.webkit.org/show_bug.cgi?id=75238
+
+ Reviewed by Antonio Gomes.
+
+ * Source/cmakeconfig.h.cmake: Modified to add a new cmakedefine ENABLE_DOWNLOAD_ATTRIBUTE.
+
+2012-01-03 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Clean up detection of fontconfig
+
+ We decide in features.prf whether or not fontconfig is available, and
+ set the HAVE_FONTCONFIG define accordingly. All leaf project files
+ should use this define to decide whether or not to link against
+ fontconfig, not do their own detection.
+
+ We don't need to add link_pkgconfig to CONFIG in each project file,
+ as we selectivly enable that configuration in defaults_post when
+ needed.
+
+ Reviewed by Ossy.
+
+ * Source/api.pri:
+
+2012-01-02 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ [GTK] Add a way to change web view settings in MiniBrowser
+ https://bugs.webkit.org/show_bug.cgi?id=71568
+
+ Reviewed by Philippe Normand.
+
+ * GNUmakefile.am: Initialize minibrowser_built_sources.
+
+2011-12-28 ChangSeok Oh <shivamidow@gmail.com>
+
+ [GTK] Fix compilation issue when selecting opengl for Accelerated compositing
+ https://bugs.webkit.org/show_bug.cgi?id=75309
+
+ Reviewed by Martin Robinson.
+
+ Replace WTF_USE_TEXTURE_MAPPER_OPENGL to WTF_USE_TEXTURE_MAPPER_GL
+
+ * GNUmakefile.am:
+
+2011-12-28 Dan Bernstein <mitz@apple.com>
+
+ Entering "make" in Source builds only JavaScriptGlue and ANGLE
+ https://bugs.webkit.org/show_bug.cgi?id=75318
+
+ Reviewed by Anders Carlsson.
+
+ * Makefile: Changed to make Source and Tools.
+ * Source/Makefile: Changed to make all projects in Source.
+
+2011-12-27 Kentaro Hara <haraken@chromium.org>
+
+ WIP: Enable the [Supplemental] IDL on Gtk
+ https://bugs.webkit.org/show_bug.cgi?id=74972
+
+ Reviewed by Adam Barth.
+
+ This patch adds dom_binding_idls, which is used in Source/WebCore/GNUmakefile.list.am.
+
+ * GNUmakefile.am:
+
+2011-12-22 Leo Yang <leo.yang@torchmobile.com.cn>
+
+ [BlackBerry] Enable blob for the BlackBerry porting
+ https://bugs.webkit.org/show_bug.cgi?id=75074
+
+ Reviewed by George Staikos.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+
+2011-12-22 Ryuan Choi <ryuan.choi@samsung.com>
+
+ [EFL][WK2] Add an option to build WebKit2.
+ https://bugs.webkit.org/show_bug.cgi?id=61999
+
+ Reviewed by Eric Seidel.
+
+ * Source/cmake/OptionsEfl.cmake: Set WebKit2_LIBRARY_NAME.
+
+2011-12-22 Daniel Jalkut <jalkut@red-sweater.com>
+
+ ManualTests HTML template should be simplified
+ https://bugs.webkit.org/show_bug.cgi?id=75025
+
+ Reviewed by Ryosuke Niwa.
+
+ * ManualTests/template.html:
+
+2011-12-22 Daniel Jalkut <jalkut@red-sweater.com>
+
+ WebKit editing throws exception when monochrome color dragged onto text
+ https://bugs.webkit.org/show_bug.cgi?id=74775
+
+ Reviewed by Ryosuke Niwa.
+
+ * ManualTests/drag-color-to-contenteditable.html: Added.
+
+2011-12-21 Daniel Bates <dbates@webkit.org>
+
+ Add CMake option to only build JavaScriptCore
+ https://bugs.webkit.org/show_bug.cgi?id=74979
+
+ Reviewed by Rob Buis.
+
+ Towards adding CMake support to script Tools/Scripts/build-jsc, add a CMake
+ option to only build JavaScriptCore.
+
+ * CMakeLists.txt: Defined ENABLE_WEBCORE to build WebCore. If the option
+ ONLY_BUILD_JAVASCRIPTCORE is specified then don't build WebCore, WebKit, or WebKit2.
+ * Source/CMakeLists.txt:
+ * Source/cmake/WebKitFS.cmake:
+
+2011-12-20 Ilya Tikhonovsky <loislo@chromium.org>
+
+ emacs: unreviewed. add settings for editing js files.
+
+ * .dir-locals.el:
+
+2011-12-20 Rafael Brandao <rafael.lobo@openbossa.org>
+
+ [Qt][WK2] Implement favicon support
+ https://bugs.webkit.org/show_bug.cgi?id=71082
+
+ Reviewed by Simon Hausmann.
+
+ * Source/qtwebkit-export.map: Added new classes.
+
+2011-12-18 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Rename EditCommandQt to UndoStepQt
+ https://bugs.webkit.org/show_bug.cgi?id=74754
+
+ Reviewed by Ryosuke Niwa.
+
+ * Source/api.pri:
+
+2011-12-16 Mark Hahnenberg <mhahnenberg@apple.com>
+
+ De-virtualize destructors
+ https://bugs.webkit.org/show_bug.cgi?id=74331
+
+ Reviewed by Geoffrey Garen.
+
+ * Source/autotools/symbols.filter: Removed symbol no longer present.
+
+2011-12-16 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ [GTK] Update NEWS and configure.ac for 1.7.3 release
+ https://bugs.webkit.org/show_bug.cgi?id=74699
+
+ Reviewed by Philippe Normand.
+
+ * configure.ac: Bumped version number.
+
+2011-12-15 Raphael Kubo da Costa <kubo@profusion.mobi>
+
+ [CMake] Remove ENABLE_DATAGRID from the buildsystem.
+ https://bugs.webkit.org/show_bug.cgi?id=74640
+
+ Reviewed by Antonio Gomes.
+
+ r84991 removed Datagrid from the tree, but the options in CMake were
+ kept.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/OptionsWinCE.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2011-12-15 Ulan Degenbaev <ulan@chromium.org>
+
+ Web Inspector: [Chromium] Call LowMemoryNotification instead of IdleNotification
+ https://bugs.webkit.org/show_bug.cgi?id=71821
+
+ Reviewed by Yury Semikhatsky.
+
+ * Source/WebCore/bindings/v8/ScriptProfiler.cpp:
+
+2011-12-15 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Don't add WebCoreSupport and WebKit APIs to include WebCore's include path
+
+ Reviewed Simon Hausmann.
+
+ * Source/api.pri:
+
+2011-12-15 Michael Brüning <michael.bruning@nokia.com>
+
+ [QT][WK2]Add (experimental) viewport info view to Minibrowser/qt.
+ https://bugs.webkit.org/show_bug.cgi?id=72893
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ This patch extends QQuickWebViewExperimental by a property named
+ viewportInfo, which contains the viewport scalability and
+ layout and contents size information. This property is exposed to
+ QML through the experimental extension for QQuickWebView.
+
+ * Source/qtwebkit-export.map:
+
+2011-12-14 Ryosuke Niwa <rniwa@webkit.org>
+
+ Add a manual test for caret blinking during forward deletion
+ https://bugs.webkit.org/show_bug.cgi?id=74494
+
+ Reviewed by Dan Bernstein.
+
+ Add a test to forward delete 200 characters. Caret should not blink during the deletion.
+ This is a follow up for r102413.
+
+ * ManualTests/caret-blink-during-forward-delete.html: Added.
+
+2011-12-14 Csaba Osztrogonác <ossy@webkit.org>
+
+ [Qt] Rollout r102769, because it broke Qt-4.8 builds.
+
+ * Source/api.pri:
+
+2011-12-14 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Don't add WebCoreSupport and WebKit APIs to include WebCore's include path
+
+ Followup to r102679
+
+ https://bugs.webkit.org/show_bug.cgi?id=74413
+
+ Reviewed by Simon Hausmann.
+
+ * Source/api.pri:
+
+2011-12-14 Alexander Færøy <alexander.faeroy@nokia.com>
+
+ [Qt] Fix compilation of QtWebKit with --orientation-events without ENABLE_DEVICE_ORIENTATION
+ https://bugs.webkit.org/show_bug.cgi?id=74492
+
+ Reviewed by Simon Hausmann.
+
+ * Source/api.pri:
+
+2011-12-14 Viatcheslav Ostapenko <ostapenko.viatcheslav@nokia.com>
+
+ [Qt] [WK2] Linking fails if GStreamer not installed after r102493
+ https://bugs.webkit.org/show_bug.cgi?id=74412
+
+ Reviewed by Simon Hausmann.
+
+ Add -lrt to fix WK2 linking when gstreamer is not used.
+
+ * Source/api.pri:
+
+2011-12-14 Alexander Færøy <alexander.faeroy@nokia.com>
+
+ [Qt] DeviceOrientationClientMockQt should be removed in favor of DeviceOrientationClientMock
+ https://bugs.webkit.org/show_bug.cgi?id=74417
+
+ Reviewed by Simon Hausmann.
+
+ Based on original patch by Kenneth Christiansen.
+
+ * Source/api.pri:
+
+2011-12-14 Jacky Jiang <zhajiang@rim.com>
+
+ [BlackBerry] Switch to libjpeg for decoding
+ https://bugs.webkit.org/show_bug.cgi?id=74475
+
+ Reviewed by Daniel Bates.
+
+ Find libjpeg instead of libimg.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+
+2011-12-13 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Get rid of layering violations in includes
+
+ WebKit/qt/API and WebKit/qt/WebCoreSupport should not be included
+ in the webcore.prf, but rather in each target that specificly needs
+ headers in these location. We used to include them directly in webcore
+ since we had layering violations between WebCore and WebKit, but now
+ that they are gone there's no reason to do that.
+
+ Reviewed by Simon Hausmann.
+
+ * Source/api.pri:
+
+2011-12-12 Andy Wingo <wingo@igalia.com>
+
+ Simplify autotools configure.ac
+ https://bugs.webkit.org/show_bug.cgi?id=74312
+
+ Reviewed by Martin Robinson.
+
+ * configure.ac: Don't AC_DEFINE so many things. Many of the
+ defines were stale (ENABLE_YARR, ENABLE_JIT_OPTIMIZE_CALL, etc),
+ and with Platform.h we don't need to make an explicit decision
+ here. If the user does pass --enable-jit or --disable-jit, effect
+ that choice via setting JSC_CPPFLAGS.
+
+2011-12-12 Alexis Menard <alexis.menard@openbossa.org>
+
+ [Qt][WK2] History is not accessible in QML.
+ https://bugs.webkit.org/show_bug.cgi?id=73016
+
+ Reviewed by Simon Hausmann.
+
+ Add the new QWebNavigationHistory in the map file.
+
+ * Source/qtwebkit-export.map:
+
+2011-12-09 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
+
+ [Qt] request parameter of QQuickWebView::navigationRequested is not a registered type
+ https://bugs.webkit.org/show_bug.cgi?id=73826
+
+ Reviewed by Tor Arne Vestbø.
+
+ * Source/qtwebkit-export.map: Adding QWebNavigationRequest
+
+2011-12-09 Joone Hur <joone.hur@collabora.co.uk>
+
+ [GTK] Initial implementation of Accelerated Compositing using Clutter
+ https://bugs.webkit.org/show_bug.cgi?id=73319
+
+ Reviewed by Gustavo Noronha Silva.
+
+ * GNUmakefile.am: Export new compilation macros.
+ * configure.ac: Add clutter backend for Accelerated Compositing.
+
+2011-12-08 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r102323.
+ http://trac.webkit.org/changeset/102323
+ https://bugs.webkit.org/show_bug.cgi?id=74069
+
+ Caused Chromium and GTK build failure (Requested by bashi on
+ #webkit).
+
+ * Source/autotools/symbols.filter:
+
+2011-12-08 Fady Samuel <fsamuel@chromium.org>
+
+ Move scalePageBy from eventSender to window.internals
+ https://bugs.webkit.org/show_bug.cgi?id=64512
+
+ Reviewed by Simon Fraser.
+
+ * Source/autotools/symbols.filter:
+
+2011-12-06 Dirk Pranke <dpranke@chromium.org>
+
+ Add Tools/Tool.xcodeproj,
+ Source/WebKit/chromium/WebKitUnitTests.xcodeproj,
+ Source/WebKit/chromium/All.xcodeproj to .gitignore
+
+ https://bugs.webkit.org/show_bug.cgi?id=73823
+
+ Reviewed by Tony Chang.
+
+ * .gitignore:
+
+2011-12-06 Simon Hausmann <simon.hausmann@nokia.com>
+
+ [Qt] build-jsc script doesn't work
+ https://bugs.webkit.org/show_bug.cgi?id=73910
+
+ Reviewed by Tor Arne Vestbø.
+
+ * WebKit.pro: Move WTF SUBDIR stuff out of here and
+ straight into JavaScriptCore/JavaScriptCore.pro.
+ Unconditionally "recurse" into JavaScriptCore now,
+ as we'll do the v8 scoping there to only build WTF.
+
+2011-12-05 Alexander Færøy <alexander.faeroy@nokia.com>
+
+ [Qt] Add Source/qtwebkitversion.h to .gitignore
+ https://bugs.webkit.org/show_bug.cgi?id=73823
+
+ Reviewed by Tor Arne Vestbø.
+
+ * .gitignore:
+
+2011-12-03 Dan Winship <danw@gnome.org>
+
+ [GTK] Update required libsoup version
+ https://bugs.webkit.org/show_bug.cgi?id=71611
+
+ Reviewed by Martin Robinson.
+
+ * configure.ac: require libsoup 2.37.2.1 for SoupRequestHTTP API
+ changes
+
+2011-12-02 Fady Samuel <fsamuel@chromium.org>
+
+ When page scaling is in use position:fixed has incorrect results
+ https://bugs.webkit.org/show_bug.cgi?id=68617
+
+ Reviewed by Simon Fraser.
+
+ * Source/autotools/symbols.filter:
+
+2011-12-02 Martin Robinson <mrobinson@igalia.com>
+
+ Try to fix the GTK+ debug bot. As discussed with other GTK+
+ hackers recently. It makes sense to just remove G_DISABLE_DEPRECATIONS
+ now in WebKit. The flag itself is now deprecated in GLib in favor of
+ the gcc attribute.
+
+ * GNUmakefile.am: Remove G_DISABLE_DEPRECATED.
+
+2011-12-02 Kevin Ollivier <kevino@theolliviers.com>
+
+ [wx] Unreviewed build fixes for Windows build.
+
+ * wscript:
+
+2011-12-02 Alejandro G. Castro <alex@igalia.com>
+
+ [GTK] Fix TextureMapperCairo compilation
+ https://bugs.webkit.org/show_bug.cgi?id=73655
+
+ Reviewed by Martin Robinson.
+
+ * GNUmakefile.am: The variables need the USE part in the name.
+ * configure.ac: We can not define the variable twice.
+
+2011-12-02 Raphael Kubo da Costa <kubo@profusion.mobi>
+
+ Unreviewed, revert r101347.
+ https://bugs.webkit.org/show_bug.cgi?id=73580
+
+ It breaks the linking of Tools/ targets due to missing functions.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2011-12-02 Alejandro G. Castro <alex@igalia.com>
+
+ [GTK] Improve C++0x compat warnings check
+ https://bugs.webkit.org/show_bug.cgi?id=73642
+
+ Reviewed by Martin Robinson.
+
+ * configure.ac:
+
+2011-12-01 Nayan Kumar K <nayankk@motorola.com>
+
+ [GTK] Add compilation options to enable/disable Accelerated Compositing and to choose texture mapper implementation.
+ https://bugs.webkit.org/show_bug.cgi?id=73458
+
+ Reviewed by Martin Robinson.
+
+ * GNUmakefile.am: Export new compilation macros.
+ * configure.ac: Provide option to choose accelerated compositing and texture mapper variations.
+
+2011-12-01 Patrick Gansterer <paroga@webkit.org>
+
+ [CMake] Make the feature defines for DOM names explicit
+ https://bugs.webkit.org/show_bug.cgi?id=72812
+
+ Reviewed by Daniel Bates.
+
+ Preprocessor defines used in WebCore/dom/make_names.pl are set via WEBKIT_FEATURE
+ for every port in the correspondig platform file. Pass an explicit list of defines
+ to the CMake macro, so we need to maintain the list only once.
+
+ * Source/cmake/OptionsBlackBerry.cmake:
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/OptionsWinCE.cmake:
+ * Source/cmake/WebKitFeatures.cmake:
+
+2011-11-30 Alejandro G. Castro <alex@igalia.com>
+
+ [GTK] Add accelerated compositing compilation option
+ https://bugs.webkit.org/show_bug.cgi?id=73298
+
+ Compile whatever we have inside the USE(ACCELERATED_COMPOSITING)
+ define. Add the build compilation option
+ --with-accelerated-compositing and use it in the makefile.
+
+ Reviewed by Martin Robinson.
+
+ * GNUmakefile.am:
+ * configure.ac:
+
+2011-11-30 Mary Wu <mary.wu@torchmobile.com.cn>
+
+ remove buildinformation from BlackBerry porting build system
+ https://bugs.webkit.org/show_bug.cgi?id=73276
+
+ Reviewed by Daniel Bates.
+
+ * Source/cmake/OptionsBlackBerry.cmake: remove script file generate-buildinfo
+
+2011-11-30 Andrew Wason <rectalogic@rectalogic.com>
+
+ Replace Qt QThread threading back-end with pthread/Win32 threading back-ends
+ https://bugs.webkit.org/show_bug.cgi?id=72155
+
+ Reviewed by Simon Hausmann.
+
+ Add additional WebCoreSupport files for Qt.
+
+ * Source/api.pri:
+
+2011-11-30 Adenilson Cavalcanti <adenilson.silva@openbossa.org>
+
+ [Qt][WK2] Implement permission API for Qt port
+ https://bugs.webkit.org/show_bug.cgi?id=59200
+
+ Permission API hookup for Geolocation, it allows to receive in WebView
+ a signal when a permission request is done (e.g. to grant permission
+ for accessing geolocation information) and set it accordingly.
+
+ Reviewed by Simon Hausmann.
+
+ * Source/qtwebkit-export.map:
+
+2011-11-29 Kevin Ollivier <kevino@theolliviers.com>
+
+ [wx] Unreviewed build fix for Leopard compilation.
+
+ * wscript:
+
+2011-11-29 Philippe Normand <pnormand@igalia.com>
+
+ [GTK] hide WebAudio build option until support for FFTW is removed
+ https://bugs.webkit.org/show_bug.cgi?id=73295
+
+ Reviewed by Martin Robinson.
+
+ * configure.ac: Disable WebAudio until the FFTW dependency is removed.
+
+2011-11-29 Hyowon Kim <hw1008.kim@samsung.com>
+
+ [Texmap][EFL] Accelerated compositing support using TextureMapper on EFL port
+ https://bugs.webkit.org/show_bug.cgi?id=73111
+
+ Add feature define for TextureMapper and OpenGL package.
+
+ Reviewed by Noam Rosenthal.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2011-11-29 Roland Steiner <rolandsteiner@chromium.org>
+
+ <style scoped>: add ENABLE(STYLE_SCOPED) flag to WebKit
+ https://bugs.webkit.org/show_bug.cgi?id=72848
+
+ Add flag and description.
+
+ Reviewed by Dimitri Glazkov.
+
+ * configure.ac:
+
+2011-11-28 Simon Hausmann <simon.hausmann@nokia.com>
+
+ [Qt] Build system fixes against V8.
+
+ Reviewed by Tor Arne Vestbø.
+
+ * Source/api.pri: Get rid of old v8 cruft.
+ * WebKit.pro: Don't build JavaScriptCore when configured with v8.
+
+2011-11-28 Simon Hausmann <simon.hausmann@nokia.com>
+
+ [Qt] WTF should be built as separate static library
+ https://bugs.webkit.org/show_bug.cgi?id=73201
+
+ Reviewed by Tor Arne Vestbø.
+
+ * Source/api.pri: Require wtf.
+ * WebKit.pro: Build WTF.
+
+2011-11-17 Martin Robinson <mrobinson@igalia.com>
+
+ [GTK] Integrate build-gtkdoc into build-webkit and make
+ https://bugs.webkit.org/show_bug.cgi?id=72626
+
+ Reviewed by Philippe Normand.
+
+ * GNUmakefile.am: Remove references to old gtkdoc files. Update
+ the dist-hook to include copying documentation into the distribution.
+ This also means that the build will fail if documentation hasn't been
+ generated before 'make dist.'
+ * configure.ac: Ditto.
+
+2011-11-23 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Re-generate QtWebKit API forwarding headers when API changes
+
+ The forwarding headers are generated by syncqt, and syncqt is run by qmake,
+ so we need sync.profile to live in the same directory as the project file
+ that will be touched when adding/removing API (api.pri in our case).
+
+ Since the WebKit2 APIs live in a separate static library, we have to
+ add the project file for WebKit2 as a dependency of the api.pri file
+ as well, so that any changes to the WebKit2 API will still trigger a
+ run of qmake (and then syncqt).
+
+ Lastly, we use the new QMAKE_SYNCQT_OUTDIR variable in Qt 5 to ensure
+ that the forwarding headers are still generated in the root build dir,
+ not in the Source dir along with the internal forwarding headers.
+
+ Reviewed by Andreas Kling.
+
+ * Source/QtWebKit.pro:
+ * Source/api.pri:
+ * Source/sync.profile: Renamed from sync.profile.
+
+2011-11-23 Halton Huo <halton.huo@intel.com>
+
+ [EFL] Add zlib depend when freetype is used.
+ https://bugs.webkit.org/show_bug.cgi?id=66365
+
+ Unreviewed build fix.
+
+ When freetype is enabled, uncompress() function is used by
+ WOFFFileFormat.cpp. Since zlib is not required by freetype, we need to
+ add libz as dependency for fix linking issue.
+
+ * Source/cmake/OptionsEfl.cmake: search for ZLIB
+
+2011-10-08 Martin Robinson <mrobinson@igalia.com>
+
+ [GTK] Enable WebGL by default
+ https://bugs.webkit.org/show_bug.cgi?id=69706
+
+ Reviewed by Xan Lopez.
+
+ * configure.ac: Enable WebGL by default if the build target is X11.
+
+2011-11-23 Raphael Kubo da Costa <kubo@profusion.mobi>
+
+ [CMake] Move the top-level logic to the top-level directory.
+ https://bugs.webkit.org/show_bug.cgi?id=72685
+
+ Reviewed by Brent Fulgham.
+
+ Move most of the top-level code in Source/CMakeLists.txt to
+ CMakeLists.txt. This allows us to replace some INCLUDE() hacks with
+ proper ADD_SUBDIRECTORY() calls, and actually moves non-Source related
+ to a non-Source directory.
+
+ * CMakeLists.txt: Copied from Source/CMakeLists.txt.
+
+2011-11-22 Adam Klein <adamk@chromium.org>
+
+ Add new WebKit/chromium/dbus directory to .gitignore.
+
+ * .gitignore:
+
+2011-11-22 Adam Klein <adamk@chromium.org>
+
+ Ignore more gyp-generated build files in WTF.gyp.
+
+ * .gitignore:
+
+2011-11-22 Andy Wingo <wingo@igalia.com>
+
+ Fix .dir-locals.el to only apply to specific modes
+ https://bugs.webkit.org/show_bug.cgi?id=72963
+
+ Reviewed by Xan Lopez.
+
+ * .dir-locals.el: Remove `nil' block, as it was causing
+ makefile-mode not to insert tabs.
+
+2011-11-21 Adam Klein <adamk@chromium.org>
+
+ Add GYP-generated WTF.xcodeproj to .gitignore after r100851.
+
+ * .gitignore:
+
+2011-11-21 Viatcheslav Ostapenko <ostapenko.viatcheslav@nokia.com>
+
+ [Qt] [WK2] WebKitTestRunner doesn't build in debug
+ https://bugs.webkit.org/show_bug.cgi?id=72827
+
+ Reviewed by Andreas Kling.
+
+ Add exports to fix WebKitTestRunner debug build.
+
+ * Source/qtwebkit-export.map:
+
+2011-11-21 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
+
+ [Qt] Add WebView.view attached property support for dialogs in QML
+ https://bugs.webkit.org/show_bug.cgi?id=72825
+
+ Reviewed by Simon Hausmann.
+
+ Export QQuickWebViewAttached.
+
+ * Source/qtwebkit-export.map:
+
+2011-11-21 Noel Gordon <noel.gordon@gmail.com>
+
+ Update .gitignore for latest WebKitLibraries
+ https://bugs.webkit.org/show_bug.cgi?id=72851
+
+ Reviewed by Andreas Kling.
+
+ * .gitignore: updates to silence 'git status' about WebKitLibraries files.
+
+2011-11-21 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ [GTK] Update NEWS and configure.ac for 1.7.2 release
+ https://bugs.webkit.org/show_bug.cgi?id=72868
+
+ Reviewed by Xan Lopez.
+
+ * configure.ac: Bumped version number.
+
+2011-11-19 Kevin Ollivier <kevino@theolliviers.com>
+
+ [wx] Build fix after GeneratedImage refactoring.
+
+ * wscript:
+
+2011-11-19 Alexis Menard <alexis.menard@openbossa.org>
+
+ [Qt] Add the map file symbols export as a dependency of the final qmake target.
+ https://bugs.webkit.org/show_bug.cgi?id=72740
+
+ Reviewed by Simon Hausmann.
+
+ Add the symbols file part of the target dependencies.
+
+ * Source/api.pri:
+
+2011-11-18 Daniel Bates <dbates@rim.com>
+
+ Add CMake build infrastructure for the BlackBerry port
+ https://bugs.webkit.org/show_bug.cgi?id=72768
+
+ Reviewed by Adam Barth and Antonio Gomes.
+
+ * Source/CMakeLists.txt: Add the BlackBerry port and support for building on QNX.
+ * Source/cmake/OptionsBlackBerry.cmake: Added.
+ * Source/cmake/OptionsCommon.cmake: Add QNX QCC-variant of CODE_GENERATOR_PREPROCESSOR.
+ We may be able to fold this into the non-MSVC CODE_GENERATOR_PREPROCESSOR.
+
+2011-11-18 Adam Barth <abarth@webkit.org>
+
+ Prepare to move manual-tests out of WebCore
+ https://bugs.webkit.org/show_bug.cgi?id=72782
+
+ Reviewed by Eric Seidel.
+
+ Update these files to refer to the new location of ManualTests.
+
+ * .gitattributes:
+ * Source/cmake/WebKitPackaging.cmake:
+
+2011-11-18 Patrick Gansterer <paroga@webkit.org>
+
+ [CMake] Add possibility to overwrite WEBKIT_PORT_DIR in platform specific files
+ https://bugs.webkit.org/show_bug.cgi?id=72710
+
+ Reviewed by Brent Fulgham.
+
+ * Source/CMakeLists.txt:
+
+2011-11-18 Simon Hausmann <simon.hausmann@nokia.com>
+
+ [Qt] Unreviewed build fix: Export QQuickWebPage/Preferences private API
+ needed for the qml plugin.
+
+ * Source/qtwebkit-export.map:
+
+2011-11-18 Simon Hausmann <simon.hausmann@nokia.com>
+
+ [Qt] Unreviewed build fix: Export QQuickWebViewExperimental private API
+ that was added since I made the export patch.
+
+ * Source/qtwebkit-export.map:
+
+2011-11-18 Simon Hausmann <simon.hausmann@nokia.com>
+
+ [Qt] WTR and InjectedBundle should not link statically against JSC/WTF
+ https://bugs.webkit.org/show_bug.cgi?id=72697
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ * Source/api.pri: On Linux, use a GNU LD version script to manage the
+ symbol exports, which includes the public WK1/WK2 API as well as a bunch
+ of private WTF symbols needed for WTR and the Injected Bundle.
+ * Source/qtwebkit-export.map: Added.
+
+2011-11-17 Raphael Kubo da Costa <kubo@profusion.mobi>
+
+ [EFL] Clean up the use of DATA_DIR in the buildsystem
+ https://bugs.webkit.org/show_bug.cgi?id=72681
+
+ Reviewed by Daniel Bates.
+
+ * Source/cmake/OptionsEfl.cmake: Rename DATA_DIR to DATA_INSTALL_DIR
+ and add it to the cache; add a variable with the path of the generated
+ theme and remove the -DDATA_DIR definition, it was moved to
+ PlatformEFL.cmake in WebCore.
+
+2011-11-17 Patrick Gansterer <paroga@webkit.org>
+
+ [CMake] Add ENABLE_CLIENT_BASED_GEOLOCATION to cmakeconfig.h
+ https://bugs.webkit.org/show_bug.cgi?id=72643
+
+ Reviewed by Brent Fulgham.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/OptionsWinCE.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2011-11-17 Kelly Norton <knorton@google.com>
+
+ Several void functions in FrameView and RenderObject actually return values.
+ https://bugs.webkit.org/show_bug.cgi?id=72640
+
+ Reviewed by Adam Barth.
+
+ * ../../Source/WebCore/page/FrameView.cpp:
+ * ../../Source/WebCore/rendering/RenderObject.cpp:
+
+2011-11-17 Patrick Gansterer <paroga@webkit.org>
+
+ [CMake] Make CODE_GENERATOR_PREPROCESSOR more useable
+ https://bugs.webkit.org/show_bug.cgi?id=72516
+
+ Reviewed by Brent Fulgham.
+
+ On windows some code generators fail, if the path to the preprocessor contains spaces.
+ Use only the executable name to avoid this issue for now.
+
+ * Source/cmake/OptionsCommon.cmake:
+
+2011-11-17 Jochen Eisinger <jochen@chromium.org>
+
+ [chromium] add gyp-mac-tool to .gitignore
+ https://bugs.webkit.org/show_bug.cgi?id=72603
+
+ Reviewed by Tony Gentilcore.
+
+ This file is generated by the make-based build of the chromium/mac port
+
+ * .: Modified property svn:ignore.
+ * .gitignore:
+
+2011-11-17 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Move WebKit2 C++ APIs to private API and build QML extension plugin on top of that
+
+ A new extension object has been added to QQuickWebView (the same approach should be used
+ for other API classes that need experimental APIs). The QML extension mechanism is then
+ built on top of the experimental object.
+
+ https://bugs.webkit.org/show_bug.cgi?id=72522
+
+ Reviewed by Simon Hausmann.
+
+ * Source/QtWebKit.pro:
+ * Source/api.pri:
+
+2011-11-11 Adrienne Walker <enne@google.com>
+
+ [chromium] Expose mock scrollbars to window.internals
+ https://bugs.webkit.org/show_bug.cgi?id=72195
+
+ Reviewed by James Robinson.
+
+ * Source/autotools/symbols.filter:
+
+2011-11-15 Simon Hausmann <simon.hausmann@nokia.com>
+
+ [Qt] Centralize hide_symbols and ensure all libs are built with symbol visibility & bsymbolic_functions
+
+ Reviewed by Tor Arne Vestbø.
+
+ * Source/api.pri: Eliminate duplicated symbol stuff that lives now in default_post.prf.
+
+2011-11-16 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ Fix path to module file in root project file
+
+ Reviewed by Simon Hausmann.
+
+ * WebKit.pro:
+
+2011-11-16 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Unreviewed, rolling out r100266.
+ http://trac.webkit.org/changeset/100266
+
+ Broke WTR.
+
+ * Source/api.pri:
+
+2011-11-15 Simon Hausmann <simon.hausmann@nokia.com>
+
+ [Qt] Centralize hide_symbols and ensure all libs are built with symbol visibility & bsymbolic_functions
+
+ Reviewed by Tor Arne Vestbø.
+
+ * Source/api.pri: Eliminate duplicated symbol stuff that lives now in default_post.prf.
+
+2011-11-14 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Move the QtWebKit module file to match the layout of Qt's mkspecs
+
+ Reviewed by Simon Hausmann.
+
+ * Source/api.pri:
+
+2011-11-12 Patrick Gansterer <paroga@webkit.org>
+
+ [CMake] Use MAIN_DEPENDENCY in GENERATE_* macros
+ https://bugs.webkit.org/show_bug.cgi?id=71365
+
+ Reviewed by Daniel Bates.
+
+ Use the MAIN_DEPENDENCY instead of DEPENDS in the custom build commands.
+ This adds better IDE support for such targets.
+
+ * Source/cmake/WebKitMacros.cmake:
+
+2011-11-11 Shinya Kawanaka <shinyak@google.com>
+
+ Implement legacy text check emulation in unified text check interface.
+ https://bugs.webkit.org/show_bug.cgi?id=70299
+
+ Reviewed by Hajime Morita.
+
+ * Source/autotools/symbols.filter:
+
+2011-11-11 Alexis Menard <alexis.menard@openbossa.org>
+
+ [Qt] Build fix of the private QML module with --no-webkit2.
+ https://bugs.webkit.org/show_bug.cgi?id=67707
+
+ Reviewed by Tor Arne Vestbø.
+
+ * Source/QtWebKit.pro:
+
+2011-11-11 Alexis Menard <alexis.menard@openbossa.org>
+
+ [Qt] Add a way to have experimental features in WebKit2
+ https://bugs.webkit.org/show_bug.cgi?id=67707
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Add the new private QML module in the build.
+
+ * Source/QtWebKit.pro:
+
+2011-11-10 Balazs Kelemen <kbalazs@webkit.org>
+
+ [Qt] X11 plugins need to be reworked for Qt5
+ https://bugs.webkit.org/show_bug.cgi?id=70023
+
+ Reviewed by Simon Hausmann.
+
+ Rework our basic plugin support in a way that does
+ not need a bridge between Qt and X. The solution is
+ based on getting the content drawed by the plugin
+ from the server as an image and creating a QImage
+ from it.
+
+ * Source/api.pri: Link to xlib if necessary.
+
+2011-11-10 Simon Hausmann <simon.hausmann@nokia.com>
+
+ [Qt] Clean up build system
+
+ Reviewed by Tor Arne Vestbø.
+
+ * Source/api.pri: Eliminate use of WebKit2.pri.
+
+2011-11-10 Alexis Menard <alexis.menard@openbossa.org>
+
+ [Qt] Merge QTouchWebView and QDesktopWebView into one class
+ https://bugs.webkit.org/show_bug.cgi?id=71355
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Remove old tests and merge them into the new QQuickWebView directory.
+
+ * Source/tests.pri:
+
+2011-11-10 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Change semantics of the haveQt() function to match API promises
+
+ Having Qt 5 does not imply that we have Qt 4, from an API point of
+ view, as a major version can in theory break BC/SC. Our minimum
+ version of Qt 4 will always be the latest released version of Qt 4,
+ so the only place we should use haveQt(4, x) is when checking for
+ the minimum requirements.
+
+ Reviewed by Simon Hausmann.
+
+ * Source/QtWebKit.pro:
+
+2011-11-10 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Make sure headers.pri has the right relative paths for install
+
+ The install rules are generated from api.pri which lives in Source,
+ which means the paths in headers.pri, which is the basis for the
+ install rules, needs to be relative to Source as well.
+
+ We were also installing the headers from the forwarding headers
+ directory, which was wrong, as those headers contained relative paths.
+
+ We now install the actual headers, by using headers.pri as a basis.
+
+ https://bugs.webkit.org/show_bug.cgi?id=71697
+
+ Reviewed by Simon Hausmann.
+
+ * Source/QtWebKit.pro:
+ * Source/api.pri:
+ * sync.profile:
+
+2011-11-09 Shinya Kawanaka <shinyak@google.com>
+
+ Internals.markerRangeForNode should be able to take markers by specifying a marker type.
+ https://bugs.webkit.org/show_bug.cgi?id=71792
+
+ Reviewed by Hajime Morita.
+
+ * Source/autotools/symbols.filter: Exposed necessary symbols.
+
+2011-11-09 Kevin Ollivier <kevino@theolliviers.com>
+
+ [wx] Unreviewed build fix. Update project files.
+
+ * wscript:
+
+2011-11-09 Philippe Normand <pnormand@igalia.com>
+
+ [GTK][DRT] window internals object is not reset after each test
+ https://bugs.webkit.org/show_bug.cgi?id=71890
+
+ Reviewed by Martin Robinson.
+
+ * Source/autotools/symbols.filter: Revert un-needed symbol.
+
+2011-11-09 Philippe Normand <pnormand@igalia.com>
+
+ Unreviewed, attempt to fix GTK 32-bits Release build after r99691.
+
+ * Source/autotools/symbols.filter: Add the missing symbol for resetInternalsObject.
+
+2011-11-09 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Only copy framework headers once when debug_and_release is enabled
+
+ Otherwise we might end up in a race condition where we try to symlink
+ the headers directory in the makefile for debug and release at the same
+ time.
+
+ Reviewed by Simon Hausmann.
+
+ * Source/api.pri:
+
+2011-11-08 Martin Robinson <mrobinson@igalia.com>
+
+ Take another stab at fixing the GTK+ build.
+
+ * Source/autotools/symbols.filter: The symbols.filter file was missing a semicolon.
+
+2011-11-08 Daniel Bates <dbates@webkit.org>
+
+ Attempt to fix the GTK build after <http://trac.webkit.org/changeset/99613>
+ (https://bugs.webkit.org/show_bug.cgi?id=71840)
+
+ * Source/autotools/symbols.filter: Add symbol _ZN7WebCore4Page13setPaginationERKNS0_10PaginationE.
+
+2011-11-08 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Use qmake's builtin rules for copying framework headers on Mac OS
+
+ Now that we generate the forwarding headers eiher as part of QtWebKit.pro
+ (for Qt 4.8), or as part of the root project file (for Qt 5), we can assume
+ that the files are there and use $$files() to list the files to be copied.
+
+ Reviewed by Csaba Osztrogonác.
+
+ * Source/api.pri:
+
+2011-11-08 Yuqiang Xian <yuqiang.xian@intel.com>
+
+ Enable DFG JIT by default on X86 Linux and Mac platforms
+ https://bugs.webkit.org/show_bug.cgi?id=71686
+
+ Reviewed by Filip Pizlo.
+
+ Remove the DFG cmake option for Efl port as we'll determine whether to
+ switch on DFG or not based on build target platforms.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2011-11-08 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Ensure forwarding headers are generated before generating install rules
+
+ The install rule for headers depends on qmake being able to walk the list of
+ headers in the $build_root/include/QtWebKit directory, but this directory is
+ empty until we've generated the forwarding headers. So we need to make sure
+ the forwarding headers are generated _before_ we run qmake on the api project
+ file. This applies to Qt 4.8 only, as Qt 5 will run synqt as part of the
+ root project file (due to the sync.profile file).
+
+ https://bugs.webkit.org/show_bug.cgi?id=71697
+
+ Reviewed by Simon Hausmann.
+
+ * Source/QtWebKit.pro:
+ * Source/api.pri:
+
+2011-11-07 ChangSeok Oh <shivamidow@gmail.com>
+
+ [EFL] Support requestAnimationFrame API
+ https://bugs.webkit.org/show_bug.cgi?id=67112
+
+ Reviewed by Andreas Kling.
+
+ Add build-option for requestAnimationFrame feature.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2011-11-07 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Ensure we always export symbols for the QtWebKit API when building WebKit
+
+ Reviewed-by Simon Hausmann.
+
+ * Source/api.pri:
+
+2011-11-04 Philippe Normand <pnormand@igalia.com>
+
+ [GTK] Disable VIDEO_TRACK for now
+ https://bugs.webkit.org/show_bug.cgi?id=71547
+
+ Reviewed by Gustavo Noronha Silva.
+
+ * configure.ac: VIDEO_TRACK is still a moving target, it's best to
+ disable it for now.
+
+2011-11-04 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Don't build all of webkit when running build-jsc
+
+ In case the whole webkit project was built, but we then subsequently
+ want to build only JSC, we need to run make in the proper subdirectory.
+
+ This also means the incremental target needs to be added to all
+ makefiles.
+
+ Reviewed by Simon Hausmann.
+
+ * WebKit.pro:
+
+2011-11-04 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Refactor and clean up the qmake build system
+
+ The qmake build system has accumulated a bit of cruft and redundancy
+ over time. There's also a fairly tight coupling between how to build
+ the various targets, and _what_ to build, making it harder to add new
+ rules or sources. This patch aims to elevate these issues somewhat.
+
+ This is a short-list of the changes:
+
+ * The rules for how to build targets are now mostly contained as
+ prf-files in Tools/qmake/mkspecs/features. Using mkspecs also
+ allows us to do pre- and post-processing of each project file,
+ which helps to clean up the actual project files.
+
+ * Derived sources are no longer generated as a separate make-step
+ but is part of each target's project file as a subdir. Makefile
+ rules are used to ensure that we run make on the derived sources
+ before running qmake on the actual target makefile. This makes
+ it easier to keep a proper dependency between derived sources
+ and the target.
+
+ * We use GNU make and the compiler to generate dependencies on
+ UNIX-based systems running Qt 5. This allows us to lessen the
+ need to run qmake, which should reduce compile time.
+
+ * WebKit2 is now build by default if building with Qt 5. It can
+ be disabled by passing --no-webkit2 to build-webkit.
+
+ The result of these changes are hopefully a cleaner and easier
+ build system to modify, and faster build times due to no longer
+ running qmake on every single build. It's also a first step
+ towards possibly generating the list of sources using another
+ build system.
+
+ https://bugs.webkit.org/show_bug.cgi?id=71222
+
+ Reviewed by Simon Hausmann.
+
+ * Source/DerivedSources.pro: Removed.
+ * Source/QtWebKit.pro: Added.
+ * Source/WebKit.pri: Removed.
+ * Source/WebKit.pro: Removed.
+ * Source/api.pri: Added.
+ * Source/tests.pri: Added.
+ * WebKit.pro: Added.
+ * sync.profile: Renamed from Source/sync.profile.
+
+2011-11-03 Simon Hausmann <simon.hausmann@nokia.com>
+
+ [Qt] Remove Maemo specific code paths
+ https://bugs.webkit.org/show_bug.cgi?id=71476
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ * Source/WebKit.pri:
+
+2011-11-03 Dongwoo Im <dw.im@samsung.com>
+
+ [EFL] Enable the Page Visibility API.
+ https://bugs.webkit.org/show_bug.cgi?id=69127
+
+ Reviewed by Adam Barth.
+
+ Build system changes to support ENABLE(PAGE_VISIBILITY_API) on EFL port.
+
+ * Source/cmake/OptionsEfl.cmake: Add enabled ENABLE_PAGE_VISIBILITY_API definition.
+ * Source/cmakeconfig.h.cmake: ditto.
+
+2011-10-28 Adam Barth <abarth@webkit.org>
+
+ Rename ExceptionCodeDescription.in to DOMExceptions.in
+ https://bugs.webkit.org/show_bug.cgi?id=71157
+
+ Reviewed by Eric Seidel.
+
+ * Source/cmake/WebKitMacros.cmake:
+
+2011-10-28 Adam Barth <abarth@webkit.org>
+
+ ExceptionCode.cpp shouldn't need to know about every feature that throws exceptions
+ https://bugs.webkit.org/show_bug.cgi?id=70890
+
+ Reviewed by Eric Seidel.
+
+ Add a code generation step.
+
+ * Source/cmake/WebKitMacros.cmake:
+
+2011-10-27 Priit Laes <plaes@plaes.org>
+
+ [GTK] Create .xz tarballs during distcheck
+ https://bugs.webkit.org/show_bug.cgi?id=71001
+
+ Reviewed by Martin Robinson.
+
+ * configure.ac: Switched tarballs to use .xz compression.
+
+2011-10-27 Daniel Bates <dbates@rim.com>
+
+ CMake: Add support to optionally install the built JavaScript shell
+ https://bugs.webkit.org/show_bug.cgi?id=71062
+
+ Reviewed by Antonio Gomes.
+
+ Adds a CMake option, called SHOULD_INSTALL_JS_SHELL, that when
+ defined will generate an installation rule to install the built
+ JavaScript shell into /bin (with respect to the prefix path).
+
+ By default, we don't define this option and hence don't generate
+ an installation rule for the JavaScript shell.
+
+ * Source/CMakeLists.txt:
+
+2011-10-27 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r98556.
+ http://trac.webkit.org/changeset/98556
+ https://bugs.webkit.org/show_bug.cgi?id=71031
+
+ The test added by the patch doesn't pass on Snow Leopard
+ (Requested by rniwa on #webkit).
+
+ * Source/autotools/symbols.filter:
+
+2011-10-27 Shinya Kawanaka <shinyak@google.com>
+
+ Implement legacy text check emulation in unified text check interface.
+ https://bugs.webkit.org/show_bug.cgi?id=70299
+
+ Reviewed by Hajime Morita.
+
+ * Source/autotools/symbols.filter:
+
+2011-10-27 Philippe Normand <pnormand@igalia.com> and Zan Dobersek <zandobersek@gmail.com>
+
+ [GStreamer] WebAudio AudioFileReader implementation
+ https://bugs.webkit.org/show_bug.cgi?id=69834
+
+ Reviewed by Martin Robinson.
+
+ * configure.ac: Check for libfftw and gstreamer-audio if WebAudio
+ build is enabled.
+
+2011-10-26 Alejandro G. Castro <alex@igalia.com>
+
+ [GTK] Update NEWS and configure.ac for 1.7.1 release
+ https://bugs.webkit.org/show_bug.cgi?id=70932
+
+ Reviewed by Martin Robinson.
+
+ * configure.ac: Bumped version number.
+
+2011-10-26 Alejandro G. Castro <alex@igalia.com>
+
+ [GTK] [WK2] Add WebKit2 distcheck support
+ https://bugs.webkit.org/show_bug.cgi?id=70933
+
+ Reviewed by Martin Robinson.
+
+ * GNUmakefile.am: Added WebKit2 compilation to the distcheck.
+ * configure.ac: Removed WebKit2 doc generation for the moment.
+
+2011-10-21 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Remove QtScript source code from WebKit.
+ https://bugs.webkit.org/show_bug.cgi?id=64088
+
+ Reviewed by Tor Arne Vestbø.
+
+ Removed dead code that isn't developed anymore.
+
+ * Source/WebKit.pro:
+
+2011-10-19 Gustavo Noronha Silva <gns@gnome.org>
+
+ [GTK] Streamline wk1 documentation build
+ https://bugs.webkit.org/show_bug.cgi?id=70447
+
+ Reviewed by Martin Robinson.
+
+ * GNUmakefile.am: include the documentation's GNUmakefile.am;
+ * autogen.sh: we no longer call gtkdocize, since we now ship
+ a modified gtk-doc.make;
+ * configure.ac: no longer generate a separate GNUmakefile for
+ the documentation build.
+
+2011-10-18 Adam Barth <abarth@webkit.org>
+
+ Always enable ENABLE(XPATH)
+ https://bugs.webkit.org/show_bug.cgi?id=70217
+
+ Reviewed by Eric Seidel.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/OptionsWinCE.cmake:
+ * Source/cmakeconfig.h.cmake:
+ * configure.ac:
+
+2011-10-18 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Merge QML plugin for WebKit2 with the original WebKit1 plugin
+
+ We don't need a sepearate plugin, as we no longer expose the WK2
+ APIs under QtWebKit.experimental, but now use QtWebKit. The version
+ was also changed to 3.0 instead of 5.0, as the original plugin was
+ versioned 1.0, and bumping to 3.0 fits the scheme used by QtWebKit releases.
+
+ Reviewed by Andreas Kling.
+
+ * Source/WebKit.pro:
+
+2011-10-18 Zan Dobersek <zandobersek@gmail.com>
+
+ [Gtk] Support for client-based geolocation
+ https://bugs.webkit.org/show_bug.cgi?id=64970
+
+ Reviewed by Martin Robinson.
+
+ Remove flag for enabling client-based geolocation since
+ it is used by default on Gtk port and hence not configurable.
+
+ * configure.ac:
+
+2011-10-17 Leandro Pereira <leandro@profusion.mobi>
+
+ Unreviewed; actually enable/disable microdata support in CMake.
+
+ Follow-up to r97471, which did not plug the option to enable/disable
+ microdata into the buildsystem.
+
+ * Source/cmake/OptionsEfl.cmake: Add ENABLE_MICRODATA feature, turned off by default.
+ * Source/cmake/OptionsWinCE.cmake: Ditto.
+ * Source/cmakeconfig.h.cmake: Add ENABLE_MICRODATA #cmakedefine.
+
+2011-10-17 Ryosuke Niwa <rniwa@webkit.org>
+
+ GTK build fix patch by Gustavo Noronha Silva.
+
+ * Source/autotools/symbols.filter:
+
+2011-10-17 Vamshikrishna Yellenki <vamshi@motorola.com>
+
+ [webkit]Debug Build Bot failure
+ https://bugs.webkit.org/show_bug.cgi?id=70222
+
+ Reviewed by Xan Lopez.
+
+ * Source/autotools/symbols.filter: Corrected the filter name for getLocationAndLengthFronRange
+
+2011-10-16 Adam Barth <abarth@webkit.org>
+
+ Always enable ENABLE(DOM_STORAGE)
+ https://bugs.webkit.org/show_bug.cgi?id=70189
+
+ Reviewed by Eric Seidel.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/OptionsWinCE.cmake:
+ * Source/cmakeconfig.h.cmake:
+ * configure.ac:
+
+2011-10-15 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ [Qt] [Symbian] Remove support for the Symbian platform for the QtWebKit port
+ https://bugs.webkit.org/show_bug.cgi?id=69920
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ * Source/WebKit.pri:
+ * Source/WebKit.pro:
+
+2011-10-14 Mark Hahnenberg <mhahnenberg@apple.com>
+
+ Rename virtual put to putVirtual
+ https://bugs.webkit.org/show_bug.cgi?id=69851
+
+ Reviewed by Darin Adler.
+
+ Renamed virtual versions of put to putVirtual in prepration for
+ adding the static put to the MethodTable in ClassInfo since the
+ compiler gets mad if the virtual and static versions have the same
+ name.
+
+ * Source/autotools/symbols.filter:
+
+2011-10-14 Mark Hahnenberg <mhahnenberg@apple.com>
+
+ Rename virtual put to putVirtual
+ https://bugs.webkit.org/show_bug.cgi?id=69851
+
+ Reviewed by Darin Adler.
+
+ Renamed virtual versions of put to putVirtual in prepration for
+ adding the static put to the MethodTable in ClassInfo since the
+ compiler gets mad if the virtual and static versions have the same
+ name.
+
+ * Source/autotools/symbols.filter:
+
+2011-10-13 Arko Saha <arko@motorola.com>
+
+ Microdata: Basic implementation of document.getItems() method.
+ https://bugs.webkit.org/show_bug.cgi?id=68610
+
+ Reviewed by Ryosuke Niwa.
+
+ Added ENABLE(MICRODATA) feature flag.
+
+ * configure.ac:
+
+2011-10-14 Raphael Kubo da Costa <kubo@profusion.mobi>
+
+ [EFL] Add DumpRenderTreeSupportEfl
+ https://bugs.webkit.org/show_bug.cgi?id=68458
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ * Source/cmake/eflsymbols.filter: Export DumpRenderTreeSupportEfl
+ symbols so that DumpRenderTree can link to them.
+
+2011-10-12 Adam Barth <abarth@webkit.org>
+
+ Remove ENABLE(XHTMLMP) and associated code
+ https://bugs.webkit.org/show_bug.cgi?id=69729
+
+ Reviewed by David Levin.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/OptionsWinCE.cmake:
+ * Source/cmakeconfig.h.cmake:
+ * configure.ac:
+
+2011-10-12 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Fix build with GLib 2.31
+ https://bugs.webkit.org/show_bug.cgi?id=69840
+
+ Reviewed by Martin Robinson.
+
+ * configure.ac: add check for pthread rwlock support.
+
+2011-10-10 Martin Robinson <mrobinson@igalia.com>
+
+ [GTK] [WebKit2] Make adding another unit test easier
+ https://bugs.webkit.org/show_bug.cgi?id=69409
+
+ Reviewed by Gustavo Noronha Silva.
+
+ * GNUmakefile.am: Include the new testing makefile.
+
+2011-10-11 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Remove all references to QTDIR_build and standalone_package
+
+ Qt is now modularized, which means we no longer import WebKit into
+ the Qt source tree. Instead we use git submodules, and building
+ QtWebKit as "part of Qt" is really building QtWebKit as from trunk.
+
+ To decrease the number of buildsystem configurations we also remove
+ the standalone_package code-path used when we were providing tarballs
+ with the derived sources pre-generated.
+
+ Reviewed by Simon Hausmann.
+
+ * Source/WebKit.pri:
+ * Source/WebKit.pro:
+
+2011-10-06 Fady Samuel <fsamuel@chromium.org>
+
+ Code clean-up: Make RenderObject::absoluteBoundingBoxRect and associated methods const and make its parameter useTransforms no longer default to false
+ https://bugs.webkit.org/show_bug.cgi?id=69009
+
+ Reviewed by Simon Fraser.
+
+ * Source/autotools/symbols.filter:
+
+2011-10-06 Simon Hausmann <simon.hausmann@nokia.com>
+
+ [Qt][Wk2] Fix build with Qt 5 when QtScript is built as standalone module
+ https://bugs.webkit.org/show_bug.cgi?id=69520
+
+ Reviewed by Csaba Osztrogonác.
+
+ * Source/WebKit.pri: Introduce convenience qt5 scope.
+ * Source/WebKit.pro: Replace QT_MAJOR_VERSION stuff with qt5 scope.
+
+2011-10-06 Nayan Kumar K <nayankk@motorola.com>
+
+ Provide configure option to switch between JSC and V8.
+ https://bugs.webkit.org/show_bug.cgi?id=69469
+
+ Reviewed by Philippe Normand.
+
+ This is first of the patches to support building of V8 with
+ WebKit GTK. With this patch, new command line switch named
+ '--with-jsengine' is introduced, using which we can choose to
+ build either jsc or v8.
+
+ * GNUmakefile.am:
+ * configure.ac:
+
+2011-10-04 Scott Graham <scottmg@chromium.org>
+
+ Add GAMEPAD feature flag
+ https://bugs.webkit.org/show_bug.cgi?id=66859
+
+ Reviewed by Darin Fisher.
+
+ * configure.ac:
+
+2011-10-04 Varun Jain <varunjain@chromium.org>
+
+ Fix position check for double tap gesture detection. A double tap
+ should not be detected if the two taps are far from each other.
+ https://bugs.webkit.org/show_bug.cgi?id=69270
+
+ Reviewed by Darin Fisher.
+
+ Test: Source/WebKit/chromium/tests/InnerGestureRecognizerTest.cpp
+
+ * platform/chromium/GestureRecognizerChromium.cpp:
+ (WebCore::GestureRecognizerChromium::isSecondClickInsideManhattanSquare):
+ (WebCore::GestureRecognizerChromium::updateValues):
+ (WebCore::GestureRecognizerChromium::click):
+ * platform/chromium/GestureRecognizerChromium.h:
+
+2011-10-04 Nayan Kumar K <nayankk@motorola.com>
+
+ [WebKit2][gtk] Generate gtk-doc for WebKit2-GTK.
+ https://bugs.webkit.org/show_bug.cgi?id=69325
+
+ Reviewed by Gustavo Noronha Silva.
+
+ Documentation generation for WebKit2-GTK+ APIs
+ using gtk-doc.
+
+ * configure.ac:
+
+2011-10-04 Vsevolod Vlasov <vsevik@chromium.org>
+
+ Web Inspector: Remove http/tests/inspector/network/disabled-cache-crash.html.
+ https://bugs.webkit.org/show_bug.cgi?id=69332
+
+ Reviewed by Pavel Feldman.
+
+ * Source/autotools/symbols.filter:
+
+2011-09-23 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Fix build against Qt5 after refactor of widgets out of QtGUi
+
+ QWidget and friends now live in the QtWidgets library. We update
+ includes in implementation files and private headers to us the
+ non-module-prefixed path, and leave the lookup for the include
+ path. For public headers we have to ifdef the includes as the
+ user might now have the modules we need in his QT config.
+
+ Finally, QSGCanvas is no longer a QWidget but a QWindow, so we
+ have to update our code and use windowHandle() for setting the
+ parent relationships.
+
+ https://bugs.webkit.org/show_bug.cgi?id=68687
+
+ Reviewed by Andreas Kling.
+
+ * Source/WebKit.pro:
+
+2011-09-29 Sergio Villar Senin <svillar@igalia.com>
+
+ [GTK] Bump version to 1.7.0
+ https://bugs.webkit.org/show_bug.cgi?id=69082
+
+ Reviewed by Martin Robinson.
+
+ Apart from bumping the library version to 1.7.0 this patch also
+ sets the libtool version to the same one we have for the stable
+ branch.
+
+ * configure.ac:
+
+2011-09-28 Martin Robinson <mrobinson@igalia.com>
+
+ Fix the WebKit2 WebGL build.
+
+ * configure.ac: Add -ldl to the OPENGL_LIBS.
+
+2011-09-28 Ryuan Choi <ryuan.choi@samsung.com>
+
+ [EFL] Bump minimum requirement for eina.
+ https://bugs.webkit.org/show_bug.cgi?id=68994
+
+ Reviewed by Ryosuke Niwa.
+
+ * Source/cmake/FindEFL.cmake:
+
+2011-09-27 Gyuyoung Kim <gyuyoung.kim@samsung.com>
+
+ Unreviewed. Fix a build error in WebKit EFL.
+
+ When web socket is disabled, there is a build break in WebKit EFL port.
+ Currently, web socket is enabled by default in build-webkit script.
+ Thus, the web socket is also enabled in EFL script of cmake build system for now.
+ Because, WebKit EFL developers can't work on latest WebKit trunk.
+
+ However, IMO, we should fix build errors when web socket is disabled.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2011-09-27 Ulan Degenbaev <ulan@chromium.org>
+
+ [v8] Code calling the typed array optimization script is fragile, depends on typed array hierarchy.
+
+ Install the flag, which indicates whether or not the optimization
+ script was executed, on the global object.
+
+ https://bugs.webkit.org/show_bug.cgi?id=68890
+
+ Reviewed by Kenneth Russell.
+
+ * Source/WebCore/bindings/v8/custom/V8ArrayBufferViewCustom.cpp:
+
+2011-09-27 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r96108, r96111, r96113, and r96116.
+ http://trac.webkit.org/changeset/96108
+ http://trac.webkit.org/changeset/96111
+ http://trac.webkit.org/changeset/96113
+ http://trac.webkit.org/changeset/96116
+ https://bugs.webkit.org/show_bug.cgi?id=68913
+
+ Wait for working Qt5 (Requested by ossy on #webkit).
+
+ * Source/WebKit.pro:
+
+2011-09-23 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ [Qt] Fix build against Qt5 after refactor of widgets out of QtGUi
+
+ QWidget and friends now live in the QtWidgets library. We update
+ includes in implementation files and private headers to us the
+ non-module-prefixed path, and leave the lookup for the include
+ path. For public headers we have to ifdef the includes as the
+ user might now have the modules we need in his QT config.
+
+ Finally, QSGCanvas is no longer a QWidget but a QWindow, so we
+ have to update our code and use windowHandle() for setting the
+ parent relationships.
+
+ https://bugs.webkit.org/show_bug.cgi?id=68687
+
+ Reviewed by Andreas Kling.
+
+ * Source/WebKit.pro:
+
+2011-09-27 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ [GTK] Reorganize header files
+ https://bugs.webkit.org/show_bug.cgi?id=65616
+
+ Reviewed by Martin Robinson.
+
+ * GNUmakefile.am: Initialize $libwebkitgtkincludedir to
+ $(prefix)/include/webkitgtk-<api-version>
+
+2011-09-26 Raphael Kubo da Costa <kubo@profusion.mobi>
+
+ [CMake] Remove FindFreetype.cmake
+ https://bugs.webkit.org/show_bug.cgi?id=68778
+
+ Reviewed by Adam Barth.
+
+ CMake has provided its own FindFreetype.cmake forever, so there is no
+ need to have another implementation in WebKit.
+
+ * Source/cmake/FindCairo.cmake: Use FREETYPE_{LIBRARIES,INCLUDE_DIRS}
+ instead of Freetype_{LIBRARIES,INCLUDE_DIRS}.
+ * Source/cmake/FindFreetype.cmake: Removed.
+ * Source/cmake/FindPango.cmake: Use FREETYPE_{LIBRARIES,INCLUDE_DIRS}
+ instead of Freetype_{LIBRARIES,INCLUDE_DIRS}.
+ * Source/cmake/OptionsEfl.cmake: Remove minimum required version
+ check, it has never been checked and Freetype 2.1.10 from 2005 is
+ already > 9.0.
+
+2011-09-26 Alejandro G. Castro <alex@igalia.com>
+
+ [GTK] pot file is not properly remove during distcheck
+ https://bugs.webkit.org/show_bug.cgi?id=68797
+
+ Defined DOMAIN variable before DISTCLEANFILES because we are using
+ it there to identify the .pot file.
+
+ Reviewed by Martin Robinson.
+
+ * GNUmakefile.am:
+
+2011-09-26 Raphael Kubo da Costa <kubo@profusion.mobi>
+
+ [CMake] Detect the operating system in a more generic way.
+ https://bugs.webkit.org/show_bug.cgi?id=67482
+
+ Reviewed by Adam Barth.
+
+ So far the buildsystem only considered Windows, Linux and Mac OS X as
+ valid operating systems, but any Unix (or at least the BSDs) should also
+ work fine.
+
+ By using the OS values CMake itself defines we can check for Unix
+ systems in a more generic fashion.
+
+ * Source/CMakeLists.txt:
+
+2011-09-26 Jay Soffian <jaysoffian@gmail.com>
+
+ chrome.dll!WebCore::ApplyStyleCommand::applyBlockStyle ReadAV@NULL (64db547804532a84be2e53721e499e9e)
+ https://bugs.webkit.org/show_bug.cgi?id=51639
+
+ Reviewed by Ryosuke Niwa.
+
+ Add missing window.layoutTestController.dumpAsText so that test output matches expectation.
+
+ * LayoutTests/editing/style/justify-without-enclosing-block.xhtml:
+
+2011-09-25 Adam Barth <abarth@webkit.org>
+
+ Finish removing PLATFORM(BREWMP) by removing associated code
+ https://bugs.webkit.org/show_bug.cgi?id=68779
+
+ Reviewed by Sam Weinig.
+
+ * Source/cmake/WebKitPackaging.cmake:
+ * wscript:
+
+2011-09-25 Adam Barth <abarth@webkit.org>
+
+ Remove PLATFORM(HAIKU) and associated code
+ https://bugs.webkit.org/show_bug.cgi?id=68774
+
+ Reviewed by Sam Weinig.
+
+ * Source/cmake/WebKitPackaging.cmake:
+ * wscript:
+
+2011-09-25 Raphael Kubo da Costa <kubo@profusion.mobi>
+
+ [CMake] Remove FindLibXlst.cmake
+ https://bugs.webkit.org/show_bug.cgi?id=68770
+
+ Reviewed by Adam Barth.
+
+ This file should have never been committed -- the library it looks for
+ is called libxslt, not libxlst, so it has never really been used. When
+ the buildsystem looked for libxslt, it used CMake's own LibXslt.cmake
+ instead.
+
+ * Source/cmake/FindLibXlst.cmake: Removed.
+
+2011-09-24 Adam Barth <abarth@webkit.org>
+
+ Always enable ENABLE(OFFLINE_WEB_APPLICATIONS)
+ https://bugs.webkit.org/show_bug.cgi?id=68767
+
+ Reviewed by Eric Seidel.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/OptionsWinCE.cmake:
+ * Source/cmakeconfig.h.cmake:
+ * configure.ac:
+
+2011-09-24 Adam Barth <abarth@webkit.org>
+
+ Remove ENABLE(WCSS) and associated code
+ https://bugs.webkit.org/show_bug.cgi?id=68759
+
+ Reviewed by Darin Adler.
+
+ * configure.ac:
+
+2011-09-23 Yuqiang Xian <yuqiang.xian@intel.com>
+
+ Add JSVALUE32_64 support to DFG JIT
+ https://bugs.webkit.org/show_bug.cgi?id=67460
+
+ Reviewed by Gavin Barraclough.
+
+ Add cmake options to enable DFG JIT compilation for EFL port
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2011-09-23 Raphael Kubo da Costa <kubo@profusion.mobi>
+
+ [CMake] Detect amd64 as a valid 64-bit architecture.
+ https://bugs.webkit.org/show_bug.cgi?id=67481
+
+ Reviewed by Oliver Hunt.
+
+ Some operating systems (generally the BSDs) use amd64 instead of x86_64
+ to report they're running on 64 bits, so consider it a valid value.
+
+ * Source/CMakeLists.txt:
+
+2011-09-23 Adam Klein <adamk@chromium.org>
+
+ Add ENABLE_MUTATION_OBSERVERS feature flag
+ https://bugs.webkit.org/show_bug.cgi?id=68732
+
+ Reviewed by Ojan Vafai.
+
+ This flag will guard an implementation of the "Mutation Observers" proposed in
+ http://lists.w3.org/Archives/Public/public-webapps/2011JulSep/1622.html
+
+ * configure.ac:
+
+2011-09-23 Varun Jain <varunjain@google.com>
+
+ Refactor WebViewImpl::scrollFocusedNodeIntoRect to a better place and add tests
+ https://bugs.webkit.org/show_bug.cgi?id=68198
+
+ Reviewed by Dimitri Glazkov.
+
+ * Source/autotools/symbols.filter:
+
+2011-09-23 Mark Hahnenberg <mhahnenberg@apple.com>
+
+ Add static version of JSCell::visitChildren
+ https://bugs.webkit.org/show_bug.cgi?id=68404
+
+ Reviewed by Darin Adler.
+
+ In this patch we just extract the bodies of the virtual visitChildren methods
+ throughout the JSCell inheritance hierarchy out into static methods, which are
+ now called from the virtual methods. This is an intermediate step in trying to
+ move the virtual-ness of visitChildren into our own custom vtable stored in
+ ClassInfo. We need to convert the methods to static methods in order to be
+ able to more easily store and refer to them in our custom vtable since normal
+ member methods store some implicit information in their types, making it
+ impossible to store them generically in ClassInfo.
+
+ * Source/autotools/symbols.filter:
+
+2011-09-21 Julien Chaffraix <jchaffraix@webkit.org>
+
+ Crash in RenderBox::paintMaskImages when GraphicsContext's painting is disabled
+ https://bugs.webkit.org/show_bug.cgi?id=68133
+
+ Reviewed by Darin Adler.
+
+ * Source/autotools/symbols.filter: Added the mangled symbols needed for window.internals
+
+2011-09-21 Joshua Bell <jsbell@chromium.org>
+
+ IndexedDB: compare strings without decoding
+ https://bugs.webkit.org/show_bug.cgi?id=68554
+
+ Reviewed by Tony Chang.
+
+ Resolves a FIXME in IndexedDB that was also identified as a hotspot
+ during profiling. Yields a small performance improvement.
+
+ * Source/WebCore/storage/IDBLevelDBCoding.cpp:
+ * Source/WebCore/storage/IDBLevelDBCoding.h:
+ * Source/WebKit/chromium/tests/IDBLevelDBCodingTest.cpp:
+
+011-09-21 Leandro Pereira <leandro@profusion.mobi>
+
+ Unreviewed. Remove unused ENABLE_AS_IMAGE flag after r95234 from
+ Options{Efl,WinCE}.cmake.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/OptionsWinCE.cmake:
+
+2011-09-20 ChangSeok Oh <shivamidow@gmail.com>
+
+ [GTK] requestAnimationFrame support for gtk port
+ https://bugs.webkit.org/show_bug.cgi?id=66280
+
+ Reviewed by Martin Robinson.
+
+ * configure.ac: Add an option to enable requestAnimationFrame for gtk port.
+
+2011-09-20 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ [GTK] Update NEWS and configure.ac for 1.5.90 release
+
+ Reviewed by Martin Robinson.
+
+ * configure.ac:
+
+2011-09-19 Adam Barth <abarth@webkit.org>
+
+ Always enable ENABLE(EVENTSOURCE)
+ https://bugs.webkit.org/show_bug.cgi?id=68414
+
+ Reviewed by Eric Seidel.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/OptionsWinCE.cmake:
+ * Source/cmakeconfig.h.cmake:
+ * configure.ac:
+
+2011-09-17 Ryuan Choi <ryuan.choi@samsung.com>
+
+ [EFL] Bump minimum requirement for cairo to 1.10.
+ https://bugs.webkit.org/show_bug.cgi?id=68226
+
+ Reviewed by Adam Barth.
+
+ * Source/cmake/FindCairo.cmake: Check required version.
+ * Source/cmake/OptionsEfl.cmake:
+
+2011-09-16 Ulan Degenbaev <ulan@chromium.org>
+
+ [V8] REGRESSION(94783): calling the binding script during V8 context creation slows down page loads
+ https://bugs.webkit.org/show_bug.cgi?id=68237
+
+ Reviewed by Kenneth Russell.
+
+ Call the binding script lazily on the first run of the set() method of
+ a typed array.
+
+ * ../../Source/WebCore/WebCore.gypi:
+ * ../../Source/WebCore/bindings/v8/V8BindingScripts.cpp: Removed.
+ * ../../Source/WebCore/bindings/v8/V8BindingScripts.h: Removed.
+ * ../../Source/WebCore/bindings/v8/V8DOMWindowShell.cpp:
+ * ../../Source/WebCore/bindings/v8/WorkerContextExecutionProxy.cpp:
+ * ../../Source/WebCore/bindings/v8/custom/V8ArrayBufferViewCustom.cpp:
+ * ../../Source/WebCore/bindings/v8/custom/V8ArrayBufferViewCustom.h:
+ * ../../Source/WebCore/bindings/v8/custom/V8ArrayBufferViewCustomScript.js:
+
+2011-09-16 Martin Robinson <mrobinson@igalia.com>
+
+ [GTK] Disable WebKit2 by default in configure.ac, but enable it with build-webkit
+ https://bugs.webkit.org/show_bug.cgi?id=68178
+
+ Reviewed by Xan Lopez.
+
+ * configure.ac: Do not build WebKit2 by default. Re-add pkgconfig support
+ for WebKit2.
+
+2011-09-15 Adam Barth <abarth@webkit.org>
+
+ Rename ENABLE(DATABASE) to ENABLE(SQL_DATABASE)
+ https://bugs.webkit.org/show_bug.cgi?id=68205
+
+ Reviewed by Eric Seidel.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/OptionsWinCE.cmake:
+ * Source/cmakeconfig.h.cmake:
+ * configure.ac:
+
+2011-09-15 Varun Jain <varunjain@google.com>
+
+ Add method to scroll current node to specific position in Chromium WebKit API
+ https://bugs.webkit.org/show_bug.cgi?id=68192
+
+ Reviewed by Dimitri Glazkov.
+
+ * Source/WebKit/chromium/public/WebView.h:
+ * Source/WebKit/chromium/src/WebViewImpl.cpp:
+ * Source/WebKit/chromium/src/WebViewImpl.h:
+
+2011-09-15 Eric Seidel <eric@webkit.org>
+
+ Remove ENABLE(SVG_AS_IMAGE) since all major ports have it on by default
+ https://bugs.webkit.org/show_bug.cgi?id=68182
+
+ Reviewed by Adam Barth.
+
+ * configure.ac:
+
+2011-09-15 Eric Seidel <eric@webkit.org>
+
+ Remove ENABLE_SVG_ANIMATION as all major ports have it on by default
+ https://bugs.webkit.org/show_bug.cgi?id=68022
+
+ Reviewed by Ryosuke Niwa.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/OptionsWinCE.cmake:
+ * Source/cmakeconfig.h.cmake:
+ * configure.ac:
+
+2011-09-15 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r95163.
+ http://trac.webkit.org/changeset/95163
+ https://bugs.webkit.org/show_bug.cgi?id=68180
+
+ [Qt] The QT_GCC_X variables were removed in Qt5 by accident.
+ (Requested by darktears on #webkit).
+
+ * Source/WebKit.pri:
+
+2011-09-14 Alexis Menard <alexis.menard@openbossa.org>
+
+ [Qt] Replace QT_GCC_X as they don't exist in Qt5 anymore.
+ https://bugs.webkit.org/show_bug.cgi?id=68114
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Replace QT_GCC_X variables, they have been removed in Qt5. It was
+ actually wrong to use them because they tell about which GCC version
+ Qt has been compiled, not the current version of GCC use to build webkit.
+ I use gcc -dumpversion to get it.
+
+ * Source/WebKit.pri:
+
+2011-09-14 Ulan Degenbaev <ulan@chromium.org>
+
+ [v8] Improve performance of typed array copy constructor taking Array
+ https://bugs.webkit.org/show_bug.cgi?id=68015
+
+ Reviewed by Kenneth Russell.
+
+ Invoke the 'set' method of the constructed array instead of
+ copying the elements of the source array one by one.
+
+ Copy constructor tests already exist.
+
+ * ../../Source/WebCore/WebCore.gypi:
+ * ../../Source/WebCore/bindings/v8/custom/V8ArrayBufferViewCustom.cpp: Added.
+ * ../../Source/WebCore/bindings/v8/custom/V8ArrayBufferViewCustom.h:
+
+2011-09-14 Csaba Osztrogonác <ossy@webkit.org>
+
+ [GTK] Unreviewed buildfix after r95107.
+
+ * configure.ac:
+
+2011-09-13 Eric Seidel <eric@webkit.org>
+
+ Remove ENABLE_SVG_USE as <use> is required by HTML5
+ https://bugs.webkit.org/show_bug.cgi?id=68019
+
+ Reviewed by Ryosuke Niwa.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/OptionsWinCE.cmake:
+ * Source/cmakeconfig.h.cmake:
+ * configure.ac:
+
+2011-09-13 Eric Seidel <eric@webkit.org>
+
+ Remove ENABLE_SVG_FOREIGN_OBJECT as it is a required part of HTML5
+ https://bugs.webkit.org/show_bug.cgi?id=68018
+
+ Reviewed by Ryosuke Niwa.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/OptionsWinCE.cmake:
+ * Source/cmakeconfig.h.cmake:
+ * configure.ac:
+
+2011-09-09 Rafael Antognolli <antognolli@profusion.mobi>
+
+ Add replacement functions for gdk ones.
+ https://bugs.webkit.org/show_bug.cgi?id=66323
+
+ Reviewed by Martin Robinson.
+
+ * Source/cmake/FindPango.cmake:
+
+2011-09-09 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ [Qt] Remove common.pri
+ https://bugs.webkit.org/show_bug.cgi?id=67814
+
+ Reviewed by Andreas Kling.
+
+ * Source/WebKit.pri: Move rules from common.pri to WebKit.pri.
+ * Source/common.pri: Removed.
+
+2011-09-08 Mark Pilgrim <pilgrim@chromium.org>
+
+ Test how HTMLAnchorElement.getParameter reacts to too few arguments
+ https://bugs.webkit.org/show_bug.cgi?id=66522
+
+ Reviewed by Adam Barth.
+
+ * LayoutTests/fast/dom/HTMLAnchorElement/get-parameter-expected.txt: Added.
+ * LayoutTests/fast/dom/HTMLAnchorElement/get-parameter.html: Added.
+
+2011-09-08 Varun Jain <varunjain@google.com>
+
+ Implement double tap detection in GestureRecognizerChromium
+ https://bugs.webkit.org/show_bug.cgi?id=67709
+
+ Reviewed by Dimitri Glazkov.
+
+ * Source/WebCore/page/EventHandler.cpp:
+ * Source/WebCore/platform/PlatformGestureEvent.h:
+
+2011-09-08 Ulan Degenbaev <ulan@chromium.org>
+
+ [v8] Improve performance of typed array set() taking Array
+ https://bugs.webkit.org/show_bug.cgi?id=63644
+
+ Reviewed by Kenneth Russell.
+
+ Overwrite the native 'set' method of the type arrays with JS
+ implementation after initialization of the global context.
+
+ Add tests for invalid and boundary offsets. No performance tests.
+
+ * LayoutTests/fast/canvas/webgl/array-unit-tests-expected.txt:
+ * LayoutTests/fast/canvas/webgl/array-unit-tests.html:
+ * Source/WebCore/WebCore.gyp/WebCore.gyp:
+ * Source/WebCore/WebCore.gypi:
+ * Source/WebCore/bindings/v8/V8BindingScripts.cpp: Added.
+ * Source/WebCore/bindings/v8/V8BindingScripts.h: Added.
+ * Source/WebCore/bindings/v8/V8DOMWindowShell.cpp:
+ * Source/WebCore/bindings/v8/WorkerContextExecutionProxy.cpp:
+ * Source/WebCore/bindings/v8/custom/V8ArrayBufferViewCustomScript.js: Added.
+
+2011-09-08 Varun Jain <varunjain@google.com>
+
+ Split Tap gesture detection into TapDown and Tap.
+ We need this distinction to highlight links when they are first touched. The link is
+ followed only if the tap is completed, otherwise, if a scroll is detected, the highlight
+ goes away.
+ https://bugs.webkit.org/show_bug.cgi?id=67645
+
+ Reviewed by Dimitri Glazkov.
+
+ * Source/WebCore/page/EventHandler.cpp:
+ * Source/WebCore/platform/PlatformGestureEvent.h:
+
+2011-09-07 Alexei Svitkine <asvitkine@chromium.org>
+
+ Add test infrastructure to test rubber-banding overhang drawing along with layout tests for existing Chromium Mac overhang drawing in the non-gpu path.
+ https://bugs.webkit.org/show_bug.cgi?id=67511
+
+ Reviewed by Dimitri Glazkov.
+
+ * Source/autotools/symbols.filter:
+
+2011-09-06 Ryosuke Niwa <rniwa@webkit.org>
+
+ REGRESSION(r94274): FormManagerTest.PreviewForm and FillFormNonEmptyField fail on chromium
+ https://bugs.webkit.org/show_bug.cgi?id=67453
+
+ Reviewed by Kent Tamura.
+
+ Add symbols for internals.
+
+ * Source/autotools/symbols.filter:
+
+2011-09-04 Robin Dunn <robin@alldunn.com>
+
+ [wx] Enable wxWebKit to run using the wxGC Cairo backend on platforms other than GTK.
+ https://bugs.webkit.org/show_bug.cgi?id=67577
+
+ Reviewed by Kevin Ollivier.
+
+ * wscript:
+
+2011-08-30 Aaron Colwell <acolwell@chromium.org>
+
+ Add MediaSource API to HTMLMediaElement
+ https://bugs.webkit.org/show_bug.cgi?id=64731
+
+ Reviewed by Eric Carlson.
+
+ * configure.ac:
+
+2011-08-30 Ryosuke Niwa <rniwa@webkit.org>
+
+ Cleanup after r94050 and r94054.
+
+ * Source/autotools/symbols.filter:
+
+2011-08-30 Philippe Normand <pnormand@igalia.com>
+
+ Unreviewed, another attempt to fix GTK build after r94038.
+
+ * Source/autotools/symbols.filter:
+
+2011-08-29 Ryosuke Niwa <rniwa@webkit.org>
+
+ Build fix attempt after r94038.
+
+ * Source/autotools/symbols.filter:
+
+2011-08-26 Varun Jain <varunjain@google.com>
+
+ WebViewImpl::selectionRange should return range in the right order.
+ https://bugs.webkit.org/show_bug.cgi?id=66973
+
+ Reviewed by Darin Fisher.
+
+ * Source/WebKit/chromium/public/WebWidget.h:
+ * Source/WebKit/chromium/src/WebViewImpl.cpp:
+
+2011-08-25 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Switch to GTK+ 3.x by default
+ https://bugs.webkit.org/show_bug.cgi?id=63047
+
+ * configure.ac: Modify the default value of the --with-gtk option to be 3.0.
+
+2011-08-24 Philippe Normand <pnormand@igalia.com>
+
+ [GTK] bump GStreamer requirement to 0.10.30
+ https://bugs.webkit.org/show_bug.cgi?id=66860
+
+ Reviewed by Martin Robinson.
+
+ * configure.ac:
+
+2011-08-23 Steve Block <steveblock@google.com>
+
+ Remove all mention of removed Android files from build scripts
+ https://bugs.webkit.org/show_bug.cgi?id=66755
+
+ Reviewed by Tony Gentilcore.
+
+ * Source/cmake/WebKitPackaging.cmake:
+
+2011-08-19 MORITA Hajime <morrita@google.com>
+
+ Spell-checking doesn't recognize word boundaries on contests inserted by execCommand('insertHTML')
+ https://bugs.webkit.org/show_bug.cgi?id=65902
+
+ Reviewed by Ryosuke Niwa.
+
+ Add export for window.internals object.
+
+ * Source/autotools/symbols.filter:
+
+2011-08-16 Andras Becsi <abecsi@webkit.org>
+
+ Reviewed by Csaba Osztrogonác.
+
+ Need AtomicStrings for the various font family names
+ https://bugs.webkit.org/show_bug.cgi?id=28024
+
+ * Source/cmake/WebKitMacros.cmake: Add new macro.
+
+2011-08-11 Xan Lopez <xlopez@igalia.com>
+
+ [GTK] Update NEWS and configure.ac for 1.5.2 release
+
+ Reviewed by Gustavo Noronha.
+
+ * configure.ac: update for release.
+
+2011-08-10 Varun Jain <varunjain@google.com>
+
+ WebViewImpl::selectionRange should return false if there is no selection
+ https://bugs.webkit.org/show_bug.cgi?id=66012
+
+ Reviewed by Darin Fisher.
+
+ * Source/WebKit/chromium/src/WebViewImpl.cpp:
+
+2011-08-10 Kevin Ollivier <kevino@theolliviers.com>
+
+ [wx] Unreviewed build fix. Do not build LocaleToScriptMappingICU.cpp for now
+ as ICU on Leopard is too old to build this.
+
+ * wscript:
+
+2011-08-08 Adrienne Walker <enne@google.com>
+
+ Add testing for --force-compositing-mode to windows.internal
+ https://bugs.webkit.org/show_bug.cgi?id=65777
+
+ Reviewed by Adam Barth.
+
+ Add exports for Document::settings().
+
+ * Source/autotools/symbols.filter:
+
+2011-08-09 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r92683.
+ http://trac.webkit.org/changeset/92683
+ https://bugs.webkit.org/show_bug.cgi?id=65921
+
+ "Breaks Qt --minimal build. Revert pending update of the Qt
+ minimal configuration" (Requested by simathur on #webkit).
+
+ * Source/WebKit.pri:
+
+2011-08-09 Siddharth Mathur <siddharth.mathur@nokia.com>
+
+ [Qt] Simplify code by removing QT_NO_DESKTOPSERVICES and QT_NO_NETWORKDISKCACHE
+ https://bugs.webkit.org/show_bug.cgi?id=65880
+
+ Reviewed by Andreas Kling.
+
+ QDesktopServices and QNetworkDiskCache have been around for a while now. Kill flags which
+ check for their feature flags. Assume that any reasonable Qt build provides them.
+
+ * Source/WebKit.pri:
+
+2011-08-06 Aron Rosenberg <arosenberg@logitech.com>
+
+ Reviewed by Benjamin Poulain.
+
+ [Qt] Fix build with Intel compiler on Windows
+ https://bugs.webkit.org/show_bug.cgi?id=65088
+
+ Disable Intel Compiler warning 873 - function "" has no corresponding operator
+ delete (to be called if an exception is thrown during initialization of an
+ allocated object).
+
+ * Source/WebKit.pri:
+
+2011-08-03 Kevin Ollivier <kevino@theolliviers.com>
+
+ [wx] Unreviewed build fix after gesture recognizer changes.
+
+ * wscript:
+
+2011-08-02 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
+
+ [Qt] [WK2] Expose web view classes to QML
+ https://bugs.webkit.org/show_bug.cgi?id=65339
+
+ Reviewed by Benjamin Poulain.
+
+ * Source/WebKit.pro: Include QML plugin subdir in the build system for WK2.
+
+2011-08-03 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ [GTK] Install web and plugin processes in libexecdir instead of bindir
+ https://bugs.webkit.org/show_bug.cgi?id=65600
+
+ Reviewed by Martin Robinson.
+
+ * GNUmakefile.am: Initialize libexec_PROGRAMS, only used by
+ WebKit2 in this moment.
+
+2011-08-03 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ [GTK] Reorganize pkg-config files
+ https://bugs.webkit.org/show_bug.cgi?id=65548
+
+ Reviewed by Martin Robinson.
+
+ * GNUmakefile.am: Initialize pkgconfigdir and pkgconfig_DATA which
+ are common to all libraries.
+ * configure.ac: Update pkg-config files.
+
+2011-08-02 Varun Jain <varunjain@google.com>
+
+ Missing null check in WebViewImpl::selectionRange
+ https://bugs.webkit.org/show_bug.cgi?id=65561
+
+ Reviewed by Darin Fisher.
+
+ * Source/WebKit/chromium/src/WebViewImpl.cpp:
+
+2011-08-01 Scott Graham <scottmg@chromium.org>
+
+ REGRESSION (r39725?): Resources removed from document can not be freed until the document is deleted
+ https://bugs.webkit.org/show_bug.cgi?id=61006
+
+ Reviewed by Antti Koivisto.
+
+ Update exports for test harness.
+
+ * Source/autotools/symbols.filter:
+
+2011-08-01 Hayato Ito <hayato@chromium.org>
+
+ Add support for getting an element in shadow root by its id into a window.internals object.
+ https://bugs.webkit.org/show_bug.cgi?id=64587
+
+ Reviewed by Hajime Morita.
+
+ * Source/autotools/symbols.filter:
+
+2011-08-01 Neil Roberts <neil@linux.intel.com>
+
+ build: Fix finding the headers for GStreamer
+
+ The cmake files to find the various GStreamer packages were all
+ checking for the header gst/gst.h. However if gst-plugins-base is
+ installed into a separate prefix from gstreamer then all of these
+ tests would only pick up the gstreamer include path so the build
+ would fail. This patch changes it to try and find a file
+ appropriate to each package.
+
+ https://bugs.webkit.org/show_bug.cgi?id=64933
+
+ Reviewed by Martin Robinson.
+
+ * Source/cmake/FindGStreamer-App.cmake:
+ * Source/cmake/FindGStreamer-Base.cmake:
+ * Source/cmake/FindGStreamer-Interfaces.cmake:
+ * Source/cmake/FindGStreamer-Pbutils.cmake:
+ * Source/cmake/FindGStreamer-Plugins-Base.cmake:
+ * Source/cmake/FindGStreamer-Video.cmake:
+
+2011-07-31 Daniel Bates <dbates@webkit.org>
+
+ Add missing semicolons to build fix attempt in <http://trac.webkit.org/changeset/92080>.
+
+ * Source/autotools/symbols.filter:
+
+2011-07-31 Daniel Bates <dbates@webkit.org>
+
+ Some more fixes to the GTK build after r92059 (https://bugs.webkit.org/show_bug.cgi?id=65419).
+
+ * Source/autotools/symbols.filter: Export symbols needed by Internals.
+
+2011-07-27 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
+
+ [Qt] Fix build in Qt 5 of QDeclarativeWebView
+ https://bugs.webkit.org/show_bug.cgi?id=65258
+
+ Reviewed by Andreas Kling.
+
+ In Qt 5, the QGraphicsView-based classes for QtQuick are in the
+ qtquick1 module, including QDeclarativeItem and QDeclarativeView.
+
+ * Source/WebKit.pro:
+
+2011-07-26 Andras Becsi <abecsi@webkit.org>
+
+ [Qt] [WK2] Disable the build with Qt versions older than 5.0
+ https://bugs.webkit.org/show_bug.cgi?id=65189
+
+ Reviewed by Csaba Osztrogonác.
+
+ * Source/WebKit.pro: Abort if not using Qt5.
+
+2011-07-20 Pierre Rossi <pierre.rossi@gmail.com>
+
+ [Qt] Qt5 Build Fix: Disable the legacy mac assert macros.
+
+ This is done in order to prevent collision with the recently
+ introduced function QSslCertificate::verify() in Qt5.
+
+ https://bugs.webkit.org/show_bug.cgi?id=64855
+
+ Reviewed by Simon Hausmann.
+
+ * Source/WebKit.pri:
+
+2011-07-19 Robert Sesek <rsesek@chromium.org>
+
+ [Chromium] Need to remove app/ from DEPS
+ https://bugs.webkit.org/show_bug.cgi?id=64750
+
+ Reviewed by Tony Chang.
+
+ Remove Source/WebKit/chromium/app/ from .gitignore.
+
+ * .gitignore:
+
+2011-07-18 MORITA Hajime <morrita@google.com>
+
+ [ShadowContentElement] forwarded node should be able to access its hosting content element.
+ https://bugs.webkit.org/show_bug.cgi?id=64251
+
+ Reviewed by Dimitri Glazkov.
+
+ Added GTK symbols for new window.internals methods.
+
+ * Source/autotools/symbols.filter:
+
+2011-07-15 Martin Robinson <mrobinson@igalia.com>
+
+ Build fixes for WebKit2. Ensure that all generated sources are
+ on nodist primaries, that they are on forward declared variables
+ so that BUILT_SOURCES is calculated properly and that zlib is
+ included during linking (for WOFF support).
+
+ * GNUmakefile.am:
+ * Source/autotools/webkit.m4: Include test for zlib.
+
+2011-07-15 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ [GTK] Build plugin process by default when building WebKit2
+ https://bugs.webkit.org/show_bug.cgi?id=64592
+
+ Reviewed by Philippe Normand.
+
+ * configure.ac:
+
+2011-07-14 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Implement Plugin Process
+ https://bugs.webkit.org/show_bug.cgi?id=60546
+
+ * configure.ac: Always check for gtk2 when building the plugin
+ process.
+
+2011-07-14 MORITA Hajime <morrita@google.com>
+
+ Unreviewed, rolling out r90976, r90981, and r90985.
+ http://trac.webkit.org/changeset/90976
+ http://trac.webkit.org/changeset/90981
+ http://trac.webkit.org/changeset/90985
+ https://bugs.webkit.org/show_bug.cgi?id=64251
+
+ build break
+
+ * Source/autotools/symbols.filter:
+
+2011-07-14 MORITA Hajime <morrita@google.com>
+
+ Unreviewed attempt to build fix.
+
+ * Source/autotools/symbols.filter:
+
+2011-07-13 MORITA Hajime <morrita@google.com>
+
+ [ShadowContentElement] forwarded node should be able to access its hosting content element.
+ https://bugs.webkit.org/show_bug.cgi?id=64251
+
+ Reviewed by Dimitri Glazkov.
+
+ Added GTK symbols for new window.internals methods.
+
+ * Source/autotools/symbols.filter:
+
+2011-07-06 Gyuyoung Kim <gyuyoung.kim@samsung.com>
+
+ [EFL] Add Fullscreen API feature
+ https://bugs.webkit.org/show_bug.cgi?id=63975
+
+ This is just to add disabled ENABLE_FULLSCREEN_API to OptionEFl.cmake.
+ ENABLE_FULLSCREEN_API will be enabled after finishing missing implementations.
+
+ Reviewed by Adam Barth.
+
+ * Source/cmake/OptionsEfl.cmake: Add disabled ENABLE_FULLSCREEN_API feature.
+ * Source/cmakeconfig.h.cmake: ditto.
+
+2011-07-05 Vsevolod Vlasov <vsevik@chromium.org>
+
+ Web Inspector: Show content for plugin requests in network panel.
+ https://bugs.webkit.org/show_bug.cgi?id=30080
+
+ Added GTK symbols for new window.internals methods.
+
+ Reviewed by Pavel Feldman.
+
+ * Source/autotools/symbols.filter:
+
+2011-07-04 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r90373.
+ http://trac.webkit.org/changeset/90373
+ https://bugs.webkit.org/show_bug.cgi?id=63917
+
+ Breaks Qt Linux Release minimal (Requested by vsevik on
+ #webkit).
+
+ * Source/autotools/symbols.filter:
+
+2011-07-04 Vsevolod Vlasov <vsevik@chromium.org>
+
+ Web Inspector: Show content for plugin requests in network panel.
+ https://bugs.webkit.org/show_bug.cgi?id=30080
+
+ Reviewed by Pavel Feldman.
+
+ * Source/autotools/symbols.filter:
+
+2011-07-01 Tony Chang <tony@chromium.org>
+
+ Add chromium sql directory to git ignore.
+
+ * .gitignore:
+
+2011-07-01 Patrick Gansterer <paroga@webkit.org>
+
+ Reviewed by Daniel Bates.
+
+ [CMake] Add cpu detection for MIPS
+ https://bugs.webkit.org/show_bug.cgi?id=63693
+
+ * Source/CMakeLists.txt:
+
+2011-07-01 Joone Hur <joone.hur@collabora.co.uk>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Add DeviceOrientation feature
+ https://bugs.webkit.org/show_bug.cgi?id=63720
+
+ Add configure option to enable/disable DeviceOrientation feature.
+
+ * configure.ac:
+
+2011-06-28 Joone Hur <joone.hur@collabora.co.uk>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Rename 3D transforms to 3D rendering
+ https://bugs.webkit.org/show_bug.cgi?id=63508
+
+ WebKitGtk+ provides the 3D transforms feature, but it was
+ renamed to 3D Rendering. This features supports CSS 3D trasnforms.
+
+ * configure.ac: Rename ENABLE_3D_TRANSFORMS to ENABLE_3D_RENDERING.
+
+2011-06-27 Alexis Menard <alexis.menard@openbossa.org>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt] Remove Phonon MediaPlayer from the tree.
+ https://bugs.webkit.org/show_bug.cgi?id=63448
+
+ Remvove from the build.
+
+ * Source/WebKit.pri:
+
+2011-06-24 Dominic Cooney <dominicc@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ Convert shadow DOM-related tests to use window.internals
+ https://bugs.webkit.org/show_bug.cgi?id=61671
+
+ * Source/autotools/symbols.filter: Export symbols for GTK.
+
+2011-06-24 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Add more debug options to compilation
+ https://bugs.webkit.org/show_bug.cgi?id=63318
+
+ Add --enable-debug-symbols to enable/disable compilation with
+ debug symbols and --enable-debug-features to enable/disable debug
+ features. Both options are unconditionally enabled for debug
+ builds.
+
+ * configure.ac:
+
+2011-06-23 Oliver Hunt <oliver@apple.com>
+
+ Qt build-fix: remove warning that no other platform appears to use.
+ Someone can add it back if they really feel it's needed.
+
+ * Source/WebKit.pri:
+
+2011-06-22 Ryuan Choi <ryuan.choi@samsung.com>
+
+ Reviewed by Antonio Gomes.
+
+ [EFL] Add an option to enable Device Orientation Event.
+ https://bugs.webkit.org/show_bug.cgi?id=63120
+
+ ADD ENABLE_DEVICE_ORIENTATION.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2011-06-22 Nate Chapin <japhet@chromium.org>
+
+ Reviewed by Adam Barth.
+
+ Add symbols required for window.internals.
+ https://bugs.webkit.org/show_bug.cgi?id=62066
+
+ * Source/autotools/symbols.filter:
+
+2011-06-22 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Adam Roben.
+
+ [GTK] Implement pixel dump support for WebKitTestRunner
+ https://bugs.webkit.org/show_bug.cgi?id=58242
+
+ * GNUmakefile.am: Reference the new ImageDiff GNUmakefile.
+
+2011-06-21 MORITA Hajime <morrita@google.com>
+
+ Unreviewed, rolling out r89401 and r89403.
+ http://trac.webkit.org/changeset/89401
+ http://trac.webkit.org/changeset/89403
+ https://bugs.webkit.org/show_bug.cgi?id=62970
+
+ Breaks mac build and mistakenly enables the spellcheck API
+
+ * configure.ac:
+
+2011-06-20 MORITA Hajime <morrita@google.com>
+
+ Reviewed by Kent Tamura.
+
+ Spellcheck API should be build-able.
+ https://bugs.webkit.org/show_bug.cgi?id=62970
+
+ * configure.ac:
+
+2011-06-20 MORITA Hajime <morrita@google.com>
+
+ Unreviewed GTK build fix.
+ This change corrected syntax error on symbols.filter.
+
+ * Source/autotools/symbols.filter:
+
+2011-06-19 MORITA Hajime <morrita@google.com>
+
+ Unreviewed GTK build fix.
+
+ * Source/autotools/symbols.filter:
+
+2011-06-19 MORITA Hajime <morrita@google.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ The internals object should have createShadowContentElement()
+ https://bugs.webkit.org/show_bug.cgi?id=62432
+
+ * Source/autotools/symbols.filter: Added some more symbols necessary for
+ window.internals to function to the global symbol list.
+
+
+2011-06-19 Adam Bergkvist <adam.bergkvist@ericsson.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Enable Media Stream feature and make it default on
+ https://bugs.webkit.org/show_bug.cgi?id=60394
+
+ * configure.ac:
+
+2011-06-17 Joone Hur <joone.hur@collabora.co.uk>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Replace GdkRectangle by cairo_rectangle_int_t
+ https://bugs.webkit.org/show_bug.cgi?id=60687
+
+ Replace GdkRectangle by cairo_rectangle_int_t.
+
+ * configure.ac: Check whether Cairo version is higher than 1.10.
+
+2011-06-16 Gyuyoung Kim <gyuyoung.kim@samsung.com>
+
+ Reviewed by Eric Seidel.
+
+ [CMAKE] Enable METER_TAG of HTML5
+ https://bugs.webkit.org/show_bug.cgi?id=62697
+
+ Support for meter tag of html5 in CMake build system. However, this feature is
+ only enabled on EFL port now.
+
+ * Source/cmake/OptionsEfl.cmake: Add ENABLE_METER_TAG.
+ * Source/cmakeconfig.h.cmake:ditto.
+
+2011-06-16 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Remove support for GTK+2 in WebKit2
+ https://bugs.webkit.org/show_bug.cgi?id=62794
+
+ * configure.ac: Make WebKit2 require GTK+ 3.x.
+
+2011-06-15 Ryuan Choi <ryuan.choi@samsung.com>
+
+ Rubber stamped by Eric Seidel.
+
+ [CMAKE][WK2] Add an option to build webkit2.
+ https://bugs.webkit.org/show_bug.cgi?id=62260
+
+ Add ENABLE_WEBKIT2 to build WebKit2 using CMake and ENABLE_WEBKIT to disable
+ WebKit.
+
+ * Source/CMakeLists.txt:
+ * Source/cmake/WebKitFS.cmake:
+
+2011-06-14 Ryuan Choi <ryuan.choi@samsung.com>
+
+ Reviewed by Eric Seidel.
+
+ [CMAKE] Add ENABLE_TOUCH_ICON_LOADING feature.
+ https://bugs.webkit.org/show_bug.cgi?id=62604
+
+ Add feature to enable or disable ENABLE_TOUCH_ICON which supports
+ apple-touch-icon and apple-touch-icon-precomposed in link tag.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2011-06-13 Joone Hur <joone.hur@collabora.co.uk>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Add configure option to enable/disable register protocol handler
+ https://bugs.webkit.org/show_bug.cgi?id=62534
+
+ This patch just adds configure option to enable/disable register protocol handler.
+ So, it needs more code to use register protocol handler.
+
+ * configure.ac: Add configure option to enable/disable register protocol handler.
+
+2011-06-13 Joone Hur <joone.hur@collabora.co.uk>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Need to report whether touch icon loading is enabled
+ https://bugs.webkit.org/show_bug.cgi?id=62532
+
+ It needs to report whether touch icon loading is enabled.
+
+ * configure.ac: Updated option parsing code for loading touch icons.
+
+2011-06-13 Lucas De Marchi <lucas.demarchi@profusion.mobi>
+
+ Reviewed by Eric Seidel.
+
+ [CMAKE] Conditionally generate DerivedSources
+ https://bugs.webkit.org/show_bug.cgi?id=62277
+
+ Speedup build by not generating DerivedSources of features that are
+ disabled. This was already been done for some features like ENABLE_SVG
+ and now it's extended the following features: ENABLE_DATABASE,
+ ENABLE_INDEXED_DATABASE, ENABLE_DOM_STORAGE, ENABLE_XPATH,
+ ENABLE_OFFLINE_WEB_APPLICATIONS, ENABLE_WEB_SOCKETS,
+ ENABLE_DATA_TRANSFER_ITEMS.
+
+ * Source/cmakeconfig.h.cmake: add definition for INDEXED_DATABASE
+
+2011-06-10 Lucas De Marchi <lucas.demarchi@profusion.mobi>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [CMAKE] Add generic support for building with WebGL
+ https://bugs.webkit.org/show_bug.cgi?id=62376
+
+ Add files that need to be compiled in every port for supporting WebGL.
+ Each port still needs to add its specific files to
+ CMakeLists${PORT}.txt. Therefore we do not enable WebGL in any port
+ yet.
+
+ * Source/CMakeLists.txt: Add files needed to support WebGL.
+ * Source/cmake/OptionsCommon.cmake: Find required OpenGL package.
+ * Source/cmakeconfig.h.cmake: define ENABLE_WEBGL this feature is
+ enabled.
+
+2011-06-09 Lucas De Marchi <lucas.demarchi@profusion.mobi>
+
+ Reviewed by Antonio Gomes.
+
+ [CMAKE] Never let USER_AGENT defined to nothing
+ https://bugs.webkit.org/show_bug.cgi?id=62410
+
+ This patch is similar to r88342, but sets WEBKIT_USER_AGENT_*
+ definitions only if that port defined it. A port might prefer to set it
+ in other place, e.g. a header that is part of the public API (like GTK
+ does).
+
+ By using #cmakedefine instead of #define, if that variable is not set
+ in CMake it will expand to:
+
+ /* #define WEBKIT_USER_AGENT_MAJOR_VERSION */
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2011-06-08 Gyuyoung Kim <gyuyoung.kim@samsung.com>
+
+ Reviewed by Antonio Gomes.
+
+ [EFL] Enable PROGRESS_TAG feature
+ https://bugs.webkit.org/show_bug.cgi?id=62212
+
+ * Source/cmake/OptionsEfl.cmake: Turn on PROGRESS_TAG by default.
+
+2011-06-08 Lucas De Marchi <lucas.demarchi@profusion.mobi>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [CMAKE] Never let a WTF_FEATURE defined to nothing
+ https://bugs.webkit.org/show_bug.cgi?id=60820
+
+ If a port doesn't want to give the user some configure options,
+ nevertheless it would have to define this feature as OFF. Otherwise
+ there's a build error because the generated cmakeconfig.h is not
+ parsed correctly by ENABLE macro, which expects each feature to be
+ either undefined or defined to TRUE/FALSE.
+
+ * Source/cmake/WebKitFeatures.cmake: Use a variable with the same name
+ of the feature, which allows CONFIGURE_FILE() to replace it in the new
+ cmakeconfig.h.cmake.
+ * Source/cmakeconfig.h.cmake: use #cmakedefine01 instead of #define
+ with another variable. This way the feature will always be 0 or 1 and
+ it will never be left undefined.
+
+2011-06-07 Lucas De Marchi <lucas.demarchi@profusion.mobi>
+
+ Reviewed by Antonio Gomes.
+
+ [EFL] Remove Ecore_X bits from PlatformScreenEfl
+ https://bugs.webkit.org/show_bug.cgi?id=61649
+
+ Remove the need for Ecore_X and some X calls by always using
+ new functions available in EFL to get the screen size.
+
+ * Source/cmake/FindEFL.cmake: Bump ecore and ecore-evas versions.
+
+2011-06-07 Andreas Kling <andreas.kling@nokia.com>
+
+ Reviewed by Laszlo Gombos.
+
+ [Qt] Fix Symbian build with RVCT 2.x
+ https://bugs.webkit.org/show_bug.cgi?id=62205
+
+ RVCT 2.x doesn't support (or need) the --signed_bitfields command-line
+ option, so restrict it to version 4.x of the compiler.
+
+ * Source/WebKit.pri:
+
+2011-06-06 Martin Robinson <mrobinson@igalia.com>
+
+ Fix the GTK+ build by ensuring that the autogenerated sources
+ necessary for libWebCoreInternals are recorded in a predeclared
+ variable before assigning to BUILT_SOURCES.
+
+ * GNUmakefile.am: Assign libWebCoreInternals built sources to
+ libwebcoreinternals_built_sources before adding to the source list
+ and to BUILT_SOURCES.
+
+2011-06-06 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Unreviewed. Fix the GTK+ build.
+
+ * GNUmakefile.am: Add javascriptcore_cflags variable.
+
+2011-06-04 Kevin Ollivier <kevino@theolliviers.com>
+
+ [wx] Unreviewed build fix. Restore the PPC build and allow users to specify architectures
+ to build on Mac.
+
+ * wscript:
+
+2011-06-04 Adam Barth <abarth@webkit.org>
+
+ Configure new commit-queue instance. (Please ignore.)
+
+2011-06-03 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Dimitri Glazkov.
+
+ Teach Gtk build about window.internals
+ https://bugs.webkit.org/show_bug.cgi?id=61071
+
+ * Source/autotools/symbols.filter: Added some symbols necessary for
+ window.internals to function to the global symbol list.
+
+2011-06-03 Alexis Menard <alexis.menard@openbossa.org>
+
+ Reviewed by Benjamin Poulain.
+
+ [Qt] Build fix of QtWebKit 2.2 when inside Qt tree with GCC 4.6.
+ https://bugs.webkit.org/show_bug.cgi?id=61957
+
+ When building inside the Qt source tree, qmake always append the mkspecs
+ defines after ours. We have to workaround and make sure that we append
+ our flags after the qmake variable used inside Qt. This workaround was provided
+ by our qmake folks. We need to append in both case because qmake behave differently
+ when called with -spec or via SUBDIR+=.
+
+ * Source/WebKit.pri:
+
+2011-06-02 Alexis Menard <alexis.menard@openbossa.org>
+
+ Reviewed by Andreas Kling.
+
+ [Qt] Build fix of QtWebKit 2.2 when inside Qt tree with GCC 4.6.
+ https://bugs.webkit.org/show_bug.cgi?id=61957
+
+ When building inside the Qt source tree, qmake always append the mkspecs
+ defines after ours. We have to workaround and make sure that we append
+ our flags after the qmake variable used inside Qt. This workaround was provided
+ by our qmake folks.
+
+ * Source/WebKit.pri:
+
+2011-03-30 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Adam Roben.
+
+ [GTK] [WebKit2] Implement a basic WebKitTestRunner
+ https://bugs.webkit.org/show_bug.cgi?id=57068
+
+ * GNUmakefile.am: Added reference to WebKitTestRunner GNUmakefile.
+
+2011-05-31 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ Bump version to 1.5.1.
+
+ * configure.ac:
+
+2011-05-25 Gregg Tavares <gman@chromium.org>
+
+ Reviewed by Kenneth Russell.
+
+ Add 'noExtensions' option to Web/GraphicsContext3D attributes.
+ https://bugs.webkit.org/show_bug.cgi?id=61460
+
+ * Source/WebCore/html/canvas/WebGLRenderingContext.cpp:
+ * Source/WebCore/platform/graphics/GraphicsContext3D.h:
+ * Source/WebKit/chromium/public/WebGraphicsContext3D.h:
+ * Source/WebKit/chromium/src/GraphicsContext3DChromium.cpp:
+
+2011-05-24 Keishi Hattori <keishi@webkit.org>
+
+ Reviewed by Kent Tamura.
+
+ Disable textfield implementation of <input type=color>. Add INPUT_COLOR feature flag. Add input color sanitizer.
+ https://bugs.webkit.org/show_bug.cgi?id=61273
+
+ * configure.ac: Added INPUT_COLOR feature flag.
+
+2011-05-24 Jay Civelli <jcivelli@chromium.org>
+
+ Reviewed by Adam Barth.
+
+ Adding MHTML reading support.
+ https://bugs.webkit.org/show_bug.cgi?id=7168
+
+ * configure.ac:
+
+2011-05-23 Ryuan Choi <ryuan.choi@samsung.com>
+
+ Rubber stamped by Eric Seidel.
+
+ [CMAKE] Refactoring wtf related code.
+ https://bugs.webkit.org/show_bug.cgi?id=60146
+
+ Move WTF_INCLUDE_DIRECTORIES to Source/JavaScriptCore/wtf/CMakeLists.txt.
+
+ * Source/cmake/OptionsCommon.cmake:
+ * Source/cmake/OptionsEfl.cmake:
+
+2011-05-18 Gyuyoung Kim <gyuyoung.kim@samsung.com>
+
+ Unreviewed. Fix build break.
+
+ * Source/cmake/WebKitMacros.cmake: Add -i option in order to include Lookup.h
+
+2011-05-16 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Enable building GTK port with ENABLE_PLUGIN_PROCESS=1
+ https://bugs.webkit.org/show_bug.cgi?id=58223
+
+ * configure.ac: Add configure option to enable/disable plugin
+ process.
+
+2011-05-12 Gregg Tavares <gman@chromium.org>
+
+ Reviewed by Kenneth Russell.
+
+ Add option to select GraphicsContext3D implementation.
+ https://bugs.webkit.org/show_bug.cgi?id=60297
+
+ * Source/WebKit/chromium/DEPS:
+ * Tools/DumpRenderTree/chromium/DumpRenderTree.cpp:
+
+2011-05-12 Lucas De Marchi <lucas.demarchi@profusion.mobi>
+
+ Reviewed by Antonio Gomes.
+
+ [CMAKE] Add option to unconditionally enable/disable a feature
+ https://bugs.webkit.org/show_bug.cgi?id=60643
+
+ Create an argument to be used in WEBKIT_FEATURE macro, allowing a port
+ to enable a feature without showing to user that it can be disabled.
+ This is useful if a port needs an option to be always ON/OFF and
+ changing it will break the build.
+
+ This way it's possible to add mandatory features to each port without
+ touching the cmakeconfig.cmake file.
+
+ * Source/cmake/WebKitFeatures.cmake:
+
+2011-05-11 Dmitry Lomov <dslomov@google.com>
+
+ Reviewed by David Levin.
+
+ https://bugs.webkit.org/show_bug.cgi?id=59561
+ Switch TestWebKitAPI to GTest
+
+ Fixes Makefiles and WinCairo build as well
+
+ * Source/ThirdParty/gtest/README.WebKit:
+ * Source/ThirdParty/gtest/msvc/gtest-md.vcproj:
+ * Source/ThirdParty/gtest/xcode/Config/General.xcconfig:
+ * Source/ThirdParty/gtest/xcode/Makefile: Added.
+
+2011-05-09 Dmitry Lomov <dslomov@google.com>
+
+ Reviewed by Sam Weinig.
+
+ Switch TestWebKitAPI to GTest
+ https://bugs.webkit.org/show_bug.cgi?id=59561
+
+ * Source/ThirdParty/gtest/README.WebKit:
+ * Source/ThirdParty/gtest/msvc/gtest-md.vcproj:
+
+2011-05-09 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Fix logic in GCC version detection, it was reversed.
+
+ * configure.ac:
+
+2011-05-09 Alexis Menard <alexis.menard@openbossa.org>
+
+ Reviewed by Andreas Kling.
+
+ [Qt] Fix the build on Embedded Linux.
+ https://bugs.webkit.org/show_bug.cgi?id=60347
+
+ qpa is the name for lighthouse but the old name for Qt for Embedded Linux should
+ still be used in order to build properly.
+
+ * Source/WebKit.pri:
+
+2011-05-05 Kevin Ollivier <kevino@theolliviers.com>
+
+ [wx] Unreviewed build fix. Add LocalizedDateNone.cpp to the build.
+
+ * wscript:
+
+2011-05-05 Prasanth Ullattil <prasanth.ullattil@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ Install correct header files for webkit.
+
+ Since WebKit is no longer inside Qt, we can remove the detection for
+ that.
+
+ [Qt] Install targets are not working correctly for modularized Qt and QtWebkit
+ https://bugs.webkit.org/show_bug.cgi?id=57621
+
+ * Source/sync.profile:
+
+2011-05-05 Adam Barth <abarth@webkit.org>
+
+ Remove a couple stray mentions of WML that I missed before.
+
+ * configure.ac:
+
+2011-05-05 Alexis Menard <alexis.menard@openbossa.org>
+
+ Reviewed by Benjamin Poulain.
+
+ [Qt] Make QtWebKit build when using gcc 4.6.0
+ https://bugs.webkit.org/show_bug.cgi?id=60265
+
+ If QtWebKit is compiled with gcc 4.6.0 and the build is not done
+ with c++0x support we need to deactivate warnings about compatibility.
+ Some WebKit types have names which conflicts with upcoming c++0x
+ types. If QtWebKit is built with c++0x support, WebKit has code to
+ fallback to the standard type rather than the WebKit implementation.
+ For example nullptr will be the one of the std if build options turns on
+ c++0x support.
+
+ * Source/WebKit.pri:
+
+2011-05-04 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Fix warnings in webkit.m4 with autoconf 2.68
+ https://bugs.webkit.org/show_bug.cgi?id=60189
+
+ Use AC_LANG_SOURCE when passing source code to AC_COMPILE_IFELSE
+ to remove warnings.
+
+ * Source/autotools/webkit.m4: ditto.
+
+2011-05-04 Martin Robinson <mrobinson@igalia.com>
+
+ Fix the WebKitGTK+ build.
+
+ * configure.ac: Added option parsing code for loading touch icons.
+
+2011-05-03 Lucas De Marchi <lucas.demarchi@profusion.mobi>
+
+ Reviewed by Xan Lopez.
+
+ [CMAKE] Remove C++0x compat mode warnings for GCC >= 4.6.0
+ https://bugs.webkit.org/show_bug.cgi?id=60041
+
+ Hardcode -Wno-c++0x-compat for the default compiler (if version >=
+ 4.6.0) until our codebase is ready. This is the same as done for
+ autotools.
+
+ * Source/cmake/WebKitHelpers.cmake: ditto.
+
+2011-05-03 Lucas De Marchi <lucas.demarchi@profusion.mobi>
+
+ Unreviewed, rolling out r85624.
+ http://trac.webkit.org/changeset/85624
+
+ The same command is used also for make_names.pl, which breaks
+ the build.
+
+ * Source/cmake/OptionsCommon.cmake: ditto.
+
+2011-05-03 Leandro Pereira <leandro@profusion.mobi>
+
+ [EFL] Unreviewed build fix for NETWORK_BACKEND=curl.
+
+ Force linking with zlib so that uncompress() exists.
+
+ * Source/cmake/OptionsEfl.cmake: Find zlib.
+
+2011-05-03 Lucas De Marchi <lucas.demarchi@profusion.mobi>
+
+ [CMAKE] Unreviewed build fix for gcc >= 4.6
+
+ Same fix as done in r84123. CMake explicitly pass the arguments to
+ make_names.pl, so let's make them the same.
+
+ * Source/cmake/OptionsCommon.cmake: ditto.
+
+2011-05-02 Adam Klein <adamk@chromium.org>
+
+ Reviewed by Tony Chang.
+
+ Roll chromium DEPS to r83722, add new crypto directory to DEPS
+ https://bugs.webkit.org/show_bug.cgi?id=59992
+
+ * .gitignore:
+ Ignore new chromium/crypto directory.
+
+2011-05-03 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Reviewed by Eric Seidel.
+
+ [GTK] Build webkit1 even when webkit2 is enabled
+ https://bugs.webkit.org/show_bug.cgi?id=59695
+
+ * GNUmakefile.am:
+ * configure.ac:
+
+2011-05-01 ojab <ojab@ojab.ru>
+
+ Reviewed by Eric Seidel.
+
+ --disable-video-track if --disable-video
+ https://bugs.webkit.org/show_bug.cgi?id=59605
+
+ * configure.ac:
+
+2011-04-29 Dean Jackson <dino@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ Add ENABLE macro for WebKitAnimation
+ https://bugs.webkit.org/show_bug.cgi?id=59729
+
+ Add new feature to toggle WebKit Animation API.
+
+ * configure.ac:
+
+2011-04-29 Kevin Ollivier <kevino@theolliviers.com>
+
+ [wx] Unreviewed build fix. Fix library copying logic for wxMSW 2.9.x.
+
+ * wscript:
+
+2011-04-28 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Remove WML
+ https://bugs.webkit.org/show_bug.cgi?id=59678
+
+ Remove WML configuration option from the CMake build system.
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/OptionsWinCE.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2011-04-28 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [Gtk] Split JSC and WebCore builds
+ https://bugs.webkit.org/show_bug.cgi?id=19428
+
+ Add a pkg-config file for JavaScriptCoreGTK+.
+
+ * configure.ac: generate the final pkg-config file from our .in
+ file.
+
+2011-04-28 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [Gtk] Split JSC and WebCore builds
+ https://bugs.webkit.org/show_bug.cgi?id=19428
+
+ Build JavaScriptCore as a libtool shared library instead of a
+ private convenience library.
+
+ * GNUmakefile.am: remove convenience library definition for jsc.
+
+2011-04-28 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Remove C++0x compat mode warnings for GCC >= 4.6.0
+ https://bugs.webkit.org/show_bug.cgi?id=59718
+
+ Hardcode -Wno-c++0x-compat for the default compiler (if version >=
+ 4.6.0) until our codebase is ready.
+
+ * configure.ac: do that.
+
+2011-04-27 Yi Shen <yi.4.shen@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt] Upstream Symbian platform plugin
+ https://bugs.webkit.org/show_bug.cgi?id=58435
+
+ Upstream Symbian platform plugin.
+
+ * Source/WebKit.pro: Add platformplugin path to the SUBDIRS.
+
+2011-04-27 Steve Block <steveblock@google.com>
+
+ Reviewed by David Levin.
+
+ Remove Android build system
+ https://bugs.webkit.org/show_bug.cgi?id=48111
+
+ This is to avoid the maintenance burden until the Android port is
+ fully upstreamed.
+
+ * Source/Android.mk: Removed.
+
+2011-04-26 Kevin Ollivier <kevino@theolliviers.com>
+
+ Rubberstamped by Eric Seidel.
+
+ Enable waf to be used to build other ports
+ https://bugs.webkit.org/show_bug.cgi?id=58213
+
+ * wscript:
+
+2011-04-22 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r84627.
+ http://trac.webkit.org/changeset/84627
+ https://bugs.webkit.org/show_bug.cgi?id=59271
+
+ It broke Symbian build (Requested by Ossy on #webkit).
+
+ * Source/WebKit.pro:
+
+2011-04-22 Yi Shen <yi.4.shen@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt] Upstream Symbian platform plugin
+ https://bugs.webkit.org/show_bug.cgi?id=58435
+
+ Upstream Symbian platform plugin.
+
+ * Source/WebKit.pro: Add platformplugin path to the SUBDIRS.
+
+2011-04-21 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Adam Roben.
+
+ Add a feature define to allow <details> and <summary> to be disabled
+ https://bugs.webkit.org/show_bug.cgi?id=59118
+ <rdar://problem/9257045>
+
+ * configure.ac:
+
+2011-04-18 Evan Martin <evan@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ [chromium] expose title direction to webkit client
+ https://bugs.webkit.org/show_bug.cgi?id=58823
+
+ * Tools/DumpRenderTree/chromium/LayoutTestController.cpp:
+ * Tools/DumpRenderTree/chromium/LayoutTestController.h:
+ Adapt to new API. Expose title direction to JS so it can be tested.
+
+ * Tools/DumpRenderTree/chromium/WebViewHost.cpp:
+ * Tools/DumpRenderTree/chromium/WebViewHost.h:
+ Provide new API.
+
+2011-04-18 Hans Wennborg <hans@chromium.org>
+
+ Reviewed by Steve Block.
+
+ LevelDB backend for IndexedDB
+ https://bugs.webkit.org/show_bug.cgi?id=57372
+
+ Add LevelDB wrappers to Android.mk.
+
+ * Source/Android.mk:
+
+2011-04-18 Patrick Gansterer <paroga@webkit.org>
+
+ Reviewed by Pavel Feldman.
+
+ REGRESSION (r81479): generate-inspector-idl fails on native win32
+ https://bugs.webkit.org/show_bug.cgi?id=58315
+
+ Disable git autocrlf for Inspector.json.
+
+ * .gitattributes:
+
+2011-04-16 Patrick Gansterer <paroga@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Rename PLATFORM(CAIRO) to USE(CAIRO)
+ https://bugs.webkit.org/show_bug.cgi?id=55192
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2011-04-15 Shishir Agrawal <shishir@chromium.org>
+
+ Reviewed by James Robinson.
+
+ Add a flag to guard Page Visibility API changes.
+ https://bugs.webkit.org/show_bug.cgi?id=58464
+
+ Initial draft at:
+ http://lists.w3.org/Archives/Public/public-webapps/2011JanMar/0175.html
+
+ * configure.ac:
+
+2011-04-15 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ * configure.ac: bump to 1.5.0, 1.4.0 will be released from a
+ branch and was already cut off.
+
+2011-04-15 Anna Cavender <annacc@chromium.org>
+
+ Reviewed by Eric Carlson.
+
+ Renaming TRACK feature define to VIDEO_TRACK
+ https://bugs.webkit.org/show_bug.cgi?id=53556
+
+ * configure.ac:
+
+2011-04-13 Dmitry Lomov <dslomov@google.com>
+
+ Reviewed by David Levin.
+
+ Add GTest unit-testing framework to WebKit
+ https://bugs.webkit.org/show_bug.cgi?id=58507
+
+ * Source/ThirdParty/gtest/CHANGES: Added.
+ * Source/ThirdParty/gtest/CMakeLists.txt: Added.
+ * Source/ThirdParty/gtest/CONTRIBUTORS: Added.
+ * Source/ThirdParty/gtest/COPYING: Added.
+ * Source/ThirdParty/gtest/Makefile.am: Added.
+ * Source/ThirdParty/gtest/README: Added.
+ * Source/ThirdParty/gtest/README.WebKit: Added.
+ * Source/ThirdParty/gtest/codegear/gtest.cbproj: Added.
+ * Source/ThirdParty/gtest/codegear/gtest.groupproj: Added.
+ * Source/ThirdParty/gtest/codegear/gtest_all.cc: Added.
+ * Source/ThirdParty/gtest/codegear/gtest_link.cc: Added.
+ * Source/ThirdParty/gtest/codegear/gtest_main.cbproj: Added.
+ * Source/ThirdParty/gtest/codegear/gtest_unittest.cbproj: Added.
+ * Source/ThirdParty/gtest/configure.ac: Added.
+ * Source/ThirdParty/gtest/include/gtest/gtest-death-test.h: Added.
+ * Source/ThirdParty/gtest/include/gtest/gtest-message.h: Added.
+ * Source/ThirdParty/gtest/include/gtest/gtest-param-test.h: Added.
+ * Source/ThirdParty/gtest/include/gtest/gtest-param-test.h.pump: Added.
+ * Source/ThirdParty/gtest/include/gtest/gtest-spi.h: Added.
+ * Source/ThirdParty/gtest/include/gtest/gtest-test-part.h: Added.
+ * Source/ThirdParty/gtest/include/gtest/gtest-typed-test.h: Added.
+ * Source/ThirdParty/gtest/include/gtest/gtest.h: Added.
+ * Source/ThirdParty/gtest/include/gtest/gtest_pred_impl.h: Added.
+ * Source/ThirdParty/gtest/include/gtest/gtest_prod.h: Added.
+ * Source/ThirdParty/gtest/include/gtest/internal/gtest-death-test-internal.h: Added.
+ * Source/ThirdParty/gtest/include/gtest/internal/gtest-filepath.h: Added.
+ * Source/ThirdParty/gtest/include/gtest/internal/gtest-internal.h: Added.
+ * Source/ThirdParty/gtest/include/gtest/internal/gtest-linked_ptr.h: Added.
+ * Source/ThirdParty/gtest/include/gtest/internal/gtest-param-util-generated.h: Added.
+ * Source/ThirdParty/gtest/include/gtest/internal/gtest-param-util-generated.h.pump: Added.
+ * Source/ThirdParty/gtest/include/gtest/internal/gtest-param-util.h: Added.
+ * Source/ThirdParty/gtest/include/gtest/internal/gtest-port.h: Added.
+ * Source/ThirdParty/gtest/include/gtest/internal/gtest-string.h: Added.
+ * Source/ThirdParty/gtest/include/gtest/internal/gtest-tuple.h: Added.
+ * Source/ThirdParty/gtest/include/gtest/internal/gtest-tuple.h.pump: Added.
+ * Source/ThirdParty/gtest/include/gtest/internal/gtest-type-util.h: Added.
+ * Source/ThirdParty/gtest/include/gtest/internal/gtest-type-util.h.pump: Added.
+ * Source/ThirdParty/gtest/m4/acx_pthread.m4: Added.
+ * Source/ThirdParty/gtest/m4/gtest.m4: Added.
+ * Source/ThirdParty/gtest/make/Makefile: Added.
+ * Source/ThirdParty/gtest/msvc/gtest-md.sln: Added.
+ * Source/ThirdParty/gtest/msvc/gtest-md.vcproj: Added.
+ * Source/ThirdParty/gtest/msvc/gtest.sln: Added.
+ * Source/ThirdParty/gtest/msvc/gtest.vcproj: Added.
+ * Source/ThirdParty/gtest/msvc/gtest_main-md.vcproj: Added.
+ * Source/ThirdParty/gtest/msvc/gtest_main.vcproj: Added.
+ * Source/ThirdParty/gtest/msvc/gtest_prod_test-md.vcproj: Added.
+ * Source/ThirdParty/gtest/msvc/gtest_prod_test.vcproj: Added.
+ * Source/ThirdParty/gtest/msvc/gtest_unittest-md.vcproj: Added.
+ * Source/ThirdParty/gtest/msvc/gtest_unittest.vcproj: Added.
+ * Source/ThirdParty/gtest/run_tests.py: Added.
+ * Source/ThirdParty/gtest/samples/prime_tables.h: Added.
+ * Source/ThirdParty/gtest/samples/sample1.cc: Added.
+ * Source/ThirdParty/gtest/samples/sample1.h: Added.
+ * Source/ThirdParty/gtest/samples/sample10_unittest.cc: Added.
+ * Source/ThirdParty/gtest/samples/sample1_unittest.cc: Added.
+ * Source/ThirdParty/gtest/samples/sample2.cc: Added.
+ * Source/ThirdParty/gtest/samples/sample2.h: Added.
+ * Source/ThirdParty/gtest/samples/sample2_unittest.cc: Added.
+ * Source/ThirdParty/gtest/samples/sample3-inl.h: Added.
+ * Source/ThirdParty/gtest/samples/sample3_unittest.cc: Added.
+ * Source/ThirdParty/gtest/samples/sample4.cc: Added.
+ * Source/ThirdParty/gtest/samples/sample4.h: Added.
+ * Source/ThirdParty/gtest/samples/sample4_unittest.cc: Added.
+ * Source/ThirdParty/gtest/samples/sample5_unittest.cc: Added.
+ * Source/ThirdParty/gtest/samples/sample6_unittest.cc: Added.
+ * Source/ThirdParty/gtest/samples/sample7_unittest.cc: Added.
+ * Source/ThirdParty/gtest/samples/sample8_unittest.cc: Added.
+ * Source/ThirdParty/gtest/samples/sample9_unittest.cc: Added.
+ * Source/ThirdParty/gtest/scripts/fuse_gtest_files.py: Added.
+ * Source/ThirdParty/gtest/scripts/gen_gtest_pred_impl.py: Added.
+ * Source/ThirdParty/gtest/scripts/gtest-config.in: Added.
+ * Source/ThirdParty/gtest/scripts/pump.py: Added.
+ * Source/ThirdParty/gtest/scripts/test/Makefile: Added.
+ * Source/ThirdParty/gtest/scripts/upload.py: Added.
+ * Source/ThirdParty/gtest/scripts/upload_gtest.py: Added.
+ * Source/ThirdParty/gtest/src/gtest-all.cc: Added.
+ * Source/ThirdParty/gtest/src/gtest-death-test.cc: Added.
+ * Source/ThirdParty/gtest/src/gtest-filepath.cc: Added.
+ * Source/ThirdParty/gtest/src/gtest-internal-inl.h: Added.
+ * Source/ThirdParty/gtest/src/gtest-port.cc: Added.
+ * Source/ThirdParty/gtest/src/gtest-test-part.cc: Added.
+ * Source/ThirdParty/gtest/src/gtest-typed-test.cc: Added.
+ * Source/ThirdParty/gtest/src/gtest.cc: Added.
+ * Source/ThirdParty/gtest/src/gtest_main.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest-death-test_test.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest-filepath_test.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest-linked_ptr_test.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest-listener_test.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest-message_test.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest-options_test.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest-param-test2_test.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest-param-test_test.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest-param-test_test.h: Added.
+ * Source/ThirdParty/gtest/test/gtest-port_test.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest-test-part_test.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest-tuple_test.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest-typed-test2_test.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest-typed-test_test.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest-typed-test_test.h: Added.
+ * Source/ThirdParty/gtest/test/gtest-unittest-api_test.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest_all_test.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest_break_on_failure_unittest.py: Added.
+ * Source/ThirdParty/gtest/test/gtest_break_on_failure_unittest_.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest_color_test.py: Added.
+ * Source/ThirdParty/gtest/test/gtest_color_test_.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest_env_var_test.py: Added.
+ * Source/ThirdParty/gtest/test/gtest_env_var_test_.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest_environment_test.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest_filter_unittest.py: Added.
+ * Source/ThirdParty/gtest/test/gtest_filter_unittest_.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest_help_test.py: Added.
+ * Source/ThirdParty/gtest/test/gtest_help_test_.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest_list_tests_unittest.py: Added.
+ * Source/ThirdParty/gtest/test/gtest_list_tests_unittest_.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest_main_unittest.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest_nc.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest_nc_test.py: Added.
+ * Source/ThirdParty/gtest/test/gtest_no_test_unittest.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest_output_test.py: Added.
+ * Source/ThirdParty/gtest/test/gtest_output_test_.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest_output_test_golden_lin.txt: Added.
+ * Source/ThirdParty/gtest/test/gtest_output_test_golden_win.txt: Added.
+ * Source/ThirdParty/gtest/test/gtest_pred_impl_unittest.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest_prod_test.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest_repeat_test.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest_shuffle_test.py: Added.
+ * Source/ThirdParty/gtest/test/gtest_shuffle_test_.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest_sole_header_test.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest_stress_test.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest_test_utils.py: Added.
+ * Source/ThirdParty/gtest/test/gtest_throw_on_failure_ex_test.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest_throw_on_failure_test.py: Added.
+ * Source/ThirdParty/gtest/test/gtest_throw_on_failure_test_.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest_uninitialized_test.py: Added.
+ * Source/ThirdParty/gtest/test/gtest_uninitialized_test_.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest_unittest.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest_xml_outfile1_test_.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest_xml_outfile2_test_.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest_xml_outfiles_test.py: Added.
+ * Source/ThirdParty/gtest/test/gtest_xml_output_unittest.py: Added.
+ * Source/ThirdParty/gtest/test/gtest_xml_output_unittest_.cc: Added.
+ * Source/ThirdParty/gtest/test/gtest_xml_test_utils.py: Added.
+ * Source/ThirdParty/gtest/test/production.cc: Added.
+ * Source/ThirdParty/gtest/test/production.h: Added.
+ * Source/ThirdParty/gtest/test/run_tests_util.py: Added.
+ * Source/ThirdParty/gtest/test/run_tests_util_test.py: Added.
+ * Source/ThirdParty/gtest/xcode/Config/DebugProject.xcconfig: Added.
+ * Source/ThirdParty/gtest/xcode/Config/FrameworkTarget.xcconfig: Added.
+ * Source/ThirdParty/gtest/xcode/Config/General.xcconfig: Added.
+ * Source/ThirdParty/gtest/xcode/Config/ReleaseProject.xcconfig: Added.
+ * Source/ThirdParty/gtest/xcode/Config/StaticLibraryTarget.xcconfig: Added.
+ * Source/ThirdParty/gtest/xcode/Config/TestTarget.xcconfig: Added.
+ * Source/ThirdParty/gtest/xcode/Resources/Info.plist: Added.
+ * Source/ThirdParty/gtest/xcode/Samples/FrameworkSample/Info.plist: Added.
+ * Source/ThirdParty/gtest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj: Added.
+ * Source/ThirdParty/gtest/xcode/Samples/FrameworkSample/runtests.sh: Added.
+ * Source/ThirdParty/gtest/xcode/Samples/FrameworkSample/widget.cc: Added.
+ * Source/ThirdParty/gtest/xcode/Samples/FrameworkSample/widget.h: Added.
+ * Source/ThirdParty/gtest/xcode/Samples/FrameworkSample/widget_test.cc: Added.
+ * Source/ThirdParty/gtest/xcode/Scripts/runtests.sh: Added.
+ * Source/ThirdParty/gtest/xcode/Scripts/versiongenerate.py: Added.
+ * Source/ThirdParty/gtest/xcode/gtest.xcodeproj/project.pbxproj: Added.
+
+2011-04-13 Ryuan Choi <ryuan.choi@samsung.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [CMAKE] Separate DerivedSources.
+ https://bugs.webkit.org/show_bug.cgi?id=58427
+
+ Seperate DerivedSources/ to DerivedSources/WebCore and
+ DerivedSources/JavaScriptCore.
+
+ * Source/CMakeLists.txt:
+ * Source/cmake/OptionsCommon.cmake:
+ * Source/cmake/WebKitFS.cmake:
+ * Source/cmake/WebKitHelpers.cmake:
+ * Source/cmake/WebKitMacros.cmake:
+
+2011-04-13 Tony Chang <tony@chromium.org>
+
+ Ignore files generated from glu.gyp.
+
+ * .gitignore:
+
+2011-03-28 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Kenneth Russell.
+
+ Move libtess from WebCore/thirdparty to ThirdParty
+ https://bugs.webkit.org/show_bug.cgi?id=57288
+
+ We're putting third party code in Source/ThirdParty these days.
+
+ * Source/ThirdParty/glu: Copied from Source/WebCore/thirdparty/glu.
+ * Source/ThirdParty/glu/glu.gyp: Added.
+
+2011-04-12 Thouraya ANDOLSI <thouraya.andolsi@st.com>
+
+ Reviewed by Eric Seidel.
+
+ [QT] Enable JIT build for SH4 platforms.
+ https://bugs.webkit.org/show_bug.cgi?id=58317
+ add disable_uitools for SH4 platforms.
+
+ * Source/WebKit.pri:
+
+2011-04-11 Anna Cavender <annacc@chromium.org>
+
+ Reviewed by Eric Carlson.
+
+ Setup ENABLE(TRACK) feature define
+ https://bugs.webkit.org/show_bug.cgi?id=53556
+
+ * configure.ac:
+
+2011-04-11 Varun Jain <varunjain@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ Resolving FIXME to make new WebWidget method pure virtual since all downstream classes have implemented the method.
+ https://bugs.webkit.org/show_bug.cgi?id=58245
+
+ * Source/WebKit/chromium/public/WebWidget.h:
+
+2011-04-11 Thouraya ANDOLSI <thouraya.andolsi@st.com>
+
+ Reviewed by Oliver Hunt.
+
+ SH4 JIT SUPPORT.
+ https://bugs.webkit.org/show_bug.cgi?id=44329
+
+ Enable JIT support for SH4 platforms.
+
+ * configure.ac:
+
+2011-04-11 Andreas Kling <andreas.kling@nokia.com>
+
+ Unreviewed Qt build fix, QT_CONFIG doesn't have uitools on bots.
+
+ * Source/WebKit.pri:
+
+2011-04-09 Keith Kyzivat <keith.kyzivat@nokia.com>
+
+ Reviewed by Laszlo Gombos.
+
+ [Qt] Don't link against fontconfig or X11 if embedded
+ https://bugs.webkit.org/show_bug.cgi?id=58104
+
+ * Source/WebKit.pri: Add qpa=>embedded as it should be across all builds.
+
+2011-04-08 Alpha Lam <hclam@chromium.org>
+
+ Unreviewed, rolling out r83335.
+ http://trac.webkit.org/changeset/83335
+ https://bugs.webkit.org/show_bug.cgi?id=53556
+
+ GTK and QT bots are broken.
+
+ * configure.ac:
+
+2011-04-08 Kristian Amlie <kristian.amlie@nokia.com>
+
+ Reviewed by Andreas Kling.
+
+ [Qt] Remove modular references after support for the flag was removed.
+ https://bugs.webkit.org/show_bug.cgi?id=57018
+
+ Removed modular references after support for the flag was removed.
+
+ Support was removed because the Qt Modularization project decided we
+ don't need it. It's better to base decisions on the available
+ information, as demonstrated in the patch by checking
+ QT.phonon.includes.
+
+ * Source/WebKit.pri:
+
+2011-04-07 Anna Cavender <annacc@chromium.org>
+
+ Reviewed by Eric Carlson.
+
+ Setup ENABLE(TRACK) feature define
+ https://bugs.webkit.org/show_bug.cgi?id=53556
+
+ * configure.ac:
+
+2011-04-08 Varun Jain <varunjain@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ Need to extend WebKit chromium API to access text selection
+ https://bugs.webkit.org/show_bug.cgi?id=57888
+
+ * Source/WebKit/chromium/public/WebFrame.h:
+ * Source/WebKit/chromium/public/WebWidget.h:
+ * Source/WebKit/chromium/src/WebFrameImpl.cpp:
+ * Source/WebKit/chromium/src/WebFrameImpl.h:
+ * Source/WebKit/chromium/src/WebPopupMenuImpl.h:
+ * Source/WebKit/chromium/src/WebViewImpl.cpp:
+ * Source/WebKit/chromium/src/WebViewImpl.h:
+ * Source/WebKit/chromium/tests/PopupMenuTest.cpp:
+
+2011-04-08 Jon Lee <jonlee@apple.com>
+
+ Reviewed by David Levin.
+
+ adding *.vcproj.*.user to .gitignore for Visual Studio development
+ https://bugs.webkit.org/show_bug.cgi?id=58097
+
+ * .gitignore:
+
+2011-04-07 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Add stub support for generating Gtk build system from gyp
+ https://bugs.webkit.org/show_bug.cgi?id=58086
+
+ This adds support for a new --port argument and plumbs through
+ the necessary paths to allow generating for a port other than Mac.
+
+ * Source/gyp/configure:
+
+2011-04-07 Andrew Scherkus <scherkus@chromium.org>
+
+ Revert ENABLE_TRACK patch due to compile failures.
+
+ * configure.ac:
+
+2011-04-06 Dai Mikurube <dmikurube@chromium.org>
+
+ Reviewed by David Levin.
+
+ Add QUOTA build flag for unified quota API
+ https://bugs.webkit.org/show_bug.cgi?id=57918
+
+ * configure.ac: Added QUOTA build flag
+
+2011-04-04 Martin Robinson <mrobinson@igalia.com>
+
+ Build fix for GTK+ after r82876.
+
+ * Source/autotools/symbols.filter: Update the symbol filter to include new symbols
+ from WTF that DRT uses.
+
+2011-04-04 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [GTK] WebGL support
+ https://bugs.webkit.org/show_bug.cgi?id=31517
+
+ * configure.ac: Update configure.ac to ensure that GL/GLX headers exist.
+
+2011-04-04 Jon Lee <jonlee@apple.com>
+
+ Reviewed by Eric Seidel.
+
+ add some directories to .gitignore (and svn:ignore) when opening projects in xcode4
+ https://bugs.webkit.org/show_bug.cgi?id=57646
+
+ * .gitignore: added xcode 4 related project and workspace directories that are not needed for checkin
+
+2011-03-31 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Link explicitly with XRender on Linux/Unix
+ https://bugs.webkit.org/show_bug.cgi?id=57558
+
+ Some linkers, like GNU Gold, require explicit linkage of all the
+ libraries used instead of relying on our dependencies to bring
+ them in. In this case, the build fails because we use XRender in
+ the plugin code but don't link directly to it.
+
+ * configure.ac: check for XRender on UNIX.
+
+2011-03-31 Vamshikrishna.Yellenki <vamshi@motorola.com> and Alejandro G. Castro <alex@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ Implement MiniBrowser for Gtk port.
+ https://bugs.webkit.org/show_bug.cgi?id=48512
+
+ Initial implementation of the Gtk MiniBrowser.
+
+ * GNUmakefile.am:
+
+2011-03-30 Csaba Osztrogonác <ossy@webkit.org>
+
+ [Qt] Typo fix, remove an accidentally added line.
+
+ * Source/WebKit.pri:
+
+2011-03-30 Csaba Osztrogonác <ossy@webkit.org>
+
+ [Qt] Rollout r82240 and r82232, because they broke 2 plugin tests.
+
+ * Source/WebKit.pri:
+
+2011-03-29 Csaba Osztrogonác <ossy@webkit.org>
+
+ Rubber-stamped by Andreas Kling.
+
+ [Qt] Remove modular references after support for the flag was removed.
+ https://bugs.webkit.org/show_bug.cgi?id=57018
+
+ Symbian buildfix after r82232.
+
+ * Source/WebKit.pri: Readd uitools option.
+
+2011-03-29 Kristian Amlie <kristian.amlie@nokia.com>
+
+ Reviewed by Andreas Kling.
+
+ Removed modular references after support for the flag was removed.
+
+ Support was removed because the Qt Modularization project decided we
+ don't need it. It's better to base decisions on the available
+ information, as demonstrated in the patch by checking
+ QT.phonon.includes.
+
+ In addition, remove the reference to uitools. It has been moved to
+ QtKernel now, and therefore is always available.
+
+ [Qt] Remove modular references after support for the flag was removed.
+ https://bugs.webkit.org/show_bug.cgi?id=57018
+
+ * Source/WebKit.pri:
+
+2011-03-28 Benjamin Poulain <benjamin.poulain@nokia.com>
+
+ Reviewed by Andreas Kling.
+
+ [Qt] QtWebKit will not compile with QT_ASCII_CAST_WARNINGS enabled
+ https://bugs.webkit.org/show_bug.cgi?id=57087
+
+ Enable QT_ASCII_CAST_WARNINGS by default in webkit.pri to catch the errors early on.
+
+ * Source/WebKit.pri:
+
+2011-03-26 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ We shouldn't bother running GYP if the generated files are newer than the GYP files
+ https://bugs.webkit.org/show_bug.cgi?id=57146
+
+ In the common case, this check will avoid any overhead from processing
+ the GYP files. Another approach to doing this is to add the feature to
+ GYP directly, but GYP's approach to this problem is to compute the
+ output in its entirety and compare it byte-for-byte against the output
+ file. In the future, it might make sense to add this approach as an
+ alternative approach for GYP itself.
+
+ I also removed JavaScriptGlue from the script because we're not really
+ going to change JavaScriptGlue over to GYP. We were using
+ JavaScriptGlue as a learning experience.
+
+ * Source/gyp/configure:
+
+2011-03-25 Kevin Ollivier <kevino@theolliviers.com>
+
+ [wx] Build fix, don't use the new FPD implementation yet, until we can merge ours with it.
+
+ * wscript:
+
+2011-03-23 George Guo <George.Guo@nokia.com>
+
+ Reviewed by Darin Adler.
+
+ Webkit warning: converting to 'unsigned int' from 'double'
+ https://bugs.webkit.org/show_bug.cgi?id=56865
+
+ With -Werr enabled, this cause the build failure on RedHat Linux.
+ Add a cast helped.
+
+ * Source/JavaScriptCore/runtime/TimeoutChecker.cpp:
+ (JSC::getCPUTime):
+
+2011-03-23 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ GYP build should default to Production configuration
+ https://bugs.webkit.org/show_bug.cgi?id=56899
+
+ * Source/gyp/common.gypi:
+
+2011-03-22 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ gyp/configure shouldn't require GYP to be in your path
+ https://bugs.webkit.org/show_bug.cgi?id=56873
+
+ Now that GYP is on Source/ThirdParty/gyp, we can just use that copy
+ instead of requiring GYP to be in the user's path.
+
+ * Source/gyp/configure:
+
+2011-03-22 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Add GYP to Source/ThirdParty
+ https://bugs.webkit.org/show_bug.cgi?id=56870
+
+ We probably don't need all the test files, but it seems cleaner to just
+ check in the whole GYP tree. GYP is BSD licensed, so it is compatible
+ with the WebKit license.
+
+ * Source/ThirdParty/gyp: Added.
+
+2011-03-21 Alejandro G. Castro <alex@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] 1.3.13 release bump
+ https://bugs.webkit.org/show_bug.cgi?id=56795
+
+ Version bump for 1.3.13 and updated NEWS file with release notes.
+
+ * configure.ac:
+
+2011-03-21 Ryuan Choi <ryuan.choi@samsung.com>
+
+ Reviewed by Antonio Gomes.
+
+ [CMAKE] Add exception handling when PORT was missing.
+ https://bugs.webkit.org/show_bug.cgi?id=56728
+
+ * Source/CMakeLists.txt:
+
+2011-03-10 Viatcheslav Ostapenko <ostapenko.viatcheslav@nokia.com>
+
+ Reviewed by Laszlo Gombos.
+
+ [Qt] Text layout is broken on Symbian
+ https://bugs.webkit.org/show_bug.cgi?id=56046
+
+ Change integers included into bitfields to be signed by default on RVCT
+ compiler as a lot of other compilers do (gcc, msvc, winsc).
+ There are a lot of places in webkit where integers included in bitfield
+ are assumed to be signed.
+
+ * Source/WebKit.pri:
+
+2011-03-10 Alejandro G. Castro <alex@igalia.com>
+
+ Unreviewed, fixed Efl compilation after r80744.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2011-03-10 Martin Robinson <mrobinson@igalia.com>
+
+ Fixed the help message for WebGL support on GTK+ to reflect the fact that
+ it's turned off by default and is experimental.
+
+ * configure.ac: Fix WebGL help message.
+
+2011-03-04 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Reviewed by Adam Barth.
+
+ Add skeletal WebCore.gyp
+ https://bugs.webkit.org/show_bug.cgi?id=55802
+
+ * Source/gyp/configure: Added WebCore.
+
+2011-03-04 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ Add a basic configure script for the GYP build
+ https://bugs.webkit.org/show_bug.cgi?id=55791
+
+ This script just calls GYP on the various gyp projects. As we add more
+ build systems, this script should be able to select which of them you'd
+ like to generate the project for.
+
+ * Source/gyp/configure: Added.
+
+2011-03-04 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ Use target_defaults to reduce boilerplate in GYP build system
+ https://bugs.webkit.org/show_bug.cgi?id=55790
+
+ This file contains GYP declarations that are shared by all the modules.
+ Currently, we use this to set up the configurations, albeit primitively.
+
+ * Source/gyp/common.gypi: Added.
+
+2011-03-03 Kevin Ollivier <kevino@theolliviers.com>
+
+ [wx] Build fix. Ensure the ICU include dir comes before JavaScriptCore/wtf on Win
+ to make sure the proper unicode/utf8.h header is included.
+
+ * wscript:
+
+2011-03-02 Kevin Ollivier <kevino@theolliviers.com>
+
+ [wx] Build fix, don't use LocalizedNumberICU.cpp yet, headers that it needs are not
+ included in the ICU headers used by WebKit.
+
+ * wscript:
+
+2011-03-02 Daniel Cheng <dcheng@chromium.org>
+
+ Reviewed by David Levin.
+
+ Add feature define for data transfer items
+ https://bugs.webkit.org/show_bug.cgi?id=55510
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/OptionsWinCE.cmake:
+ * Source/cmakeconfig.h.cmake:
+ * configure.ac:
+
+>>>>>>> .r80188
+2011-03-02 Andras Becsi <abecsi@webkit.org>
+
+ Reviewed by Laszlo Gombos.
+
+ [Qt][WK2] generate-forwarding-headers.pl should generate paths with framework names
+ https://bugs.webkit.org/show_bug.cgi?id=55478
+
+ On case insensitive systems the generated forwarding headers cause build problems.
+
+ * Source/WebKit.pri: Adjust INCLUDEPATH for the project.
+
+2011-03-01 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r80079.
+ http://trac.webkit.org/changeset/80079
+ https://bugs.webkit.org/show_bug.cgi?id=55547
+
+ "Broke the Win debug build?" (Requested by dcheng on #webkit).
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/OptionsWinCE.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2011-03-01 Daniel Cheng <dcheng@chromium.org>
+
+ Reviewed by David Levin.
+
+ Add feature define for data transfer items
+ https://bugs.webkit.org/show_bug.cgi?id=55510
+
+ * Source/cmake/OptionsEfl.cmake:
+ * Source/cmake/OptionsWinCE.cmake:
+ * Source/cmakeconfig.h.cmake:
+
+2011-03-01 Andras Becsi <abecsi@webkit.org>
+
+ Reviewed by Csaba Osztrogonác.
+
+ [Qt] Clean up the project files and move common options to WebKit.pri.
+
+ Mac related changes suggested by Prasanth Ullattil <prasanth.ullattil@nokia.com>
+
+ * Source/WebKit.pri: Common options should be here.
+ Also move Mac options to this file to fix the Mac build.
+
+2011-03-01 Andras Becsi <abecsi@webkit.org>
+
+ Unreviewed build fix.
+
+ [Qt] Fix minimal build.
+
+ * Source/WebKit.pri: Move the XP_UNIX define back to WebCore.pri.
+
+2011-02-28 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ Teach JavaScriptGlue gyp build about DEPTH
+ https://bugs.webkit.org/show_bug.cgi?id=55421
+
+ Moves the previously JavaScriptGlue-specific GYP helper shell scripts
+ to the gyp directory in Source, where they can be shared by multiple
+ frameworks.
+
+ * Source/gyp: Added.
+ * Source/gyp/remove-headers-if-needed.sh: Copied from Source/JavaScriptGlue/gyp/remove-headers-if-needed.sh.
+ * Source/gyp/run-if-exists.sh: Copied from Source/JavaScriptGlue/gyp/run-if-exists.sh.
+ * Source/gyp/update-info-plist.sh: Copied from Source/JavaScriptGlue/gyp/update-info-plist.sh.
+
+2011-02-28 Benjamin Poulain <benjamin.poulain@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt][WK2] Add a way to test the WebKit 2 APIs
+ https://bugs.webkit.org/show_bug.cgi?id=55408
+
+ Add the build file for test to the build system.
+
+ * Source/WebKit.pri: Add the include path for WebKit 2 APIs.
+ * Source/WebKit.pro: Add the dependency to build the new test project.
+
+2011-02-28 Balazs Kelemen <kbalazs@webkit.org>
+
+ Reviewed by Anders Carlsson.
+
+ [Qt][WK2] Plugin initialization
+ https://bugs.webkit.org/show_bug.cgi?id=48127
+
+ * Source/WebKit.pri: Lift the definition of the XP_UNIX macro
+ from WebCore.pri to WebKit.pri to apply it to WebKit2 as well.
+
+2011-02-28 Kristian Amlie <kristian.amlie@nokia.com>
+
+ Reviewed by Andreas Kling.
+
+ Added full webkit module profile and a syncqt profile.
+
+ This is for modularized Qt.
+
+ [Qt] WebKit patches required to work with a modularized version of Qt
+ https://bugs.webkit.org/show_bug.cgi?id=53916
+
+ * Source/sync.profile: Added.
+
+2011-02-26 Dihan Wickremasuriya <dihan.wickremasuriya@nokia.com>
+
+ Reviewed by Laszlo Gombos.
+
+ [Qt] [Symbian] Disable dependency to a specific version of a Qt package for
+ non-production builds.
+ https://bugs.webkit.org/show_bug.cgi?id=55313
+
+ * Source/WebKit.pri:
+
+2011-02-24 Alejandro G. Castro <alex@igalia.com>
+
+ Rubber-stamped by Martin Robinson.
+
+ Fixed compilation after r79537, added a bug to solve webkit2
+ translations:
+ https://bugs.webkit.org/show_bug.cgi?id=55153
+
+ * GNUmakefile.am:
+
+2011-02-24 Christian Dywan <christian@lanedo.com>
+
+ Rubber-stamped by Eric Seidel.
+
+ [GTK] webkitgtk 1.3.7 build without translations
+ https://bugs.webkit.org/show_bug.cgi?id=50612
+
+ * GNUmakefile.am: Require stamp-po target for all-local so
+ that po files are built before they install.
+
+2011-02-22 Philippe Normand <pnormand@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] 1.3.12 release preparation
+ https://bugs.webkit.org/show_bug.cgi?id=54967
+
+ Version bump for 1.3.12 and updated NEWS file with release notes.
+ Also bumped libsoup requirement to 2.33.6 as agreed with Sergio
+ and Martin.
+
+ * Source/WebKit/gtk/NEWS:
+ * configure.ac:
+
+2011-02-22 Andras Becsi <abecsi@webkit.org>
+
+ Reviewed by Laszlo Gombos.
+
+ [Qt] Redesign the build system
+ https://bugs.webkit.org/show_bug.cgi?id=51339
+
+ Part 2.
+
+ Build WebCore as a static library, compile the WebKit API and WebKit2 API
+ in a final step and link to WebKit2, WebCore and JSC libraries to fix
+ linking issues resulting from stripped away symbols.
+
+ * Source/WebKit.pri: Add common include paths
+ * Source/WebKit.pro: Add new project file to SUBDIRS
+
+2011-02-20 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Bump GTK+3 dependency to 3.0
+ https://bugs.webkit.org/show_bug.cgi?id=54394
+
+ * configure.ac:
+
+2011-02-19 Ryuan Choi <ryuan.choi@samsung.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Remove mandatory Enchant dependency
+ https://bugs.webkit.org/show_bug.cgi?id=51587
+
+ Add enable-spellcheck option which decides whether to use enchant.
+ If disabled, WebKitGTK+ will not use enchant library.
+
+ * configure.ac:
+
+2011-02-18 Zan Dobersek <zandobersek@gmail.com>
+
+ Reviewed by Martin Robinson.
+
+ [Gtk] Re-enable meter tag support
+ https://bugs.webkit.org/show_bug.cgi?id=54762
+
+ Enable meter tag support in the configure.ac. This feature was
+ previously enabled by default in the makefile, but should be
+ enabled here after changes in r78981.
+
+ * configure.ac:
+
+2011-02-18 Kristian Amlie <kristian.amlie@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Avoided UiTools dependency if the module is not present.
+
+ [Qt] WebKit patches required to work with a modularized version of Qt
+ https://bugs.webkit.org/show_bug.cgi?id=53916
+
+ * Source/WebKit.pri:
+
+2011-02-18 Ryuan Choi <ryuan.choi@samsung.com>
+
+ Reviewed by Kent Tamura.
+
+ [EFL] Remove GDK dependency.
+ https://bugs.webkit.org/show_bug.cgi?id=53978
+
+ Remove checking GDK library.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2011-02-18 Philippe Normand <pnormand@igalia.com>
+
+ Unreviewed, build fix after r78981
+
+ * configure.ac: datagrid is datagrid, it is not database. Also
+ meter is not progress. Fixed copy/paste mistakes.
+
+2011-02-18 Philippe Normand <pnormand@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] minimal build unrecognized options
+ https://bugs.webkit.org/show_bug.cgi?id=50890
+
+ * configure.ac: added new configure options to enable/disable the
+ meter element, progress element, datagrid and client-based
+ geolocation support.
+
+2011-02-17 Kevin Ollivier <kevino@theolliviers.com>
+
+ [wx] Build fix after introduction of JavaScriptCore/collector.
+
+ * wscript:
+
+2011-02-17 Kristian Amlie <kristian.amlie@nokia.com>
+
+ Reviewed by Laszlo Gombos.
+
+ Updated include paths for phonon.
+
+ [Qt] WebKit patches required to work with a modularized version of Qt
+ https://bugs.webkit.org/show_bug.cgi?id=53916
+
+ * Source/WebKit.pri:
+
+2011-02-13 Hayato Ito <hayato@chromium.org>
+
+ Reviewed by Kent Tamura.
+
+ Update .gitignore to ignore files which Ninja build system generates.
+
+ https://bugs.webkit.org/show_bug.cgi?id=54378
+
+ * .gitignore:
+
+2011-02-10 Peter Varga <pvarga@webkit.org>
+
+ Reviewed by Csaba Osztrogonác.
+
+ Remove PCRE source from trunk
+ https://bugs.webkit.org/show_bug.cgi?id=54188
+
+ * Source/cmake/WebKitFS.cmake:
+
+2011-02-09 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Steve Block.
+
+ Move Android.mk into Source
+ https://bugs.webkit.org/show_bug.cgi?id=53751
+
+ A somewhat blind attempt to move Android.mk into the Source directory.
+ I'm sure I've goofed this up in some way. The Android folks have
+ kindly volunteered to fix this up once they merge past this revision.
+
+ * Android.mk: Removed.
+ * Source/Android.mk: Copied from Android.mk.
+
+2011-02-08 Alejandro G. Castro <alex@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ WebKit2 GTK Fails to Build #include nested too deeply
+ https://bugs.webkit.org/show_bug.cgi?id=52219
+
+ Removed the __STDC_FORMAT_MACROS definition, it is already defined
+ in the file where PRIxx64 is used before the inclusion so we are
+ safe.
+
+ * configure.ac:
+
+2011-02-08 Kristian Amlie <kristian.amlie@nokia.com>
+
+ Reviewed by Eric Seidel.
+
+ Added include paths for QtScript.
+
+ WebKit patches required to work with a modularized version of Qt
+ https://bugs.webkit.org/show_bug.cgi?id=53916
+
+ * Source/WebKit.pri:
+
+2011-02-03 Martin Robinson <mrobinson@igalia.com>
+
+ Fix GTK+ WebGL build after r76600.
+
+ * configure.ac: Make sure to respect configure.ac conventions
+ consistently when it comes to capitalization. Remove an old
+ reference to enable_3d_canvas.
+
+2011-02-02 Alejandro G. Castro <alex@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ Bump the WebKitGTK+ versions in preparation for development release.
+
+ * configure.ac: Bump the library, libtool and user agent version.
+
+2011-02-02 Steve Lacey <sjl@chromium.org>
+
+ Reviewed by Eric Carlson.
+
+ Implement basic media statistics on media elements.
+ https://bugs.webkit.org/show_bug.cgi?id=53322
+
+ * configure.ac:
+
+2011-02-02 Kevin Ollivier <kevino@theolliviers.com>
+
+ [wx] Build fixes for wxWebKit.
+
+ * wscript:
+
+2010-01-28 Commit Queue <commit-queue@webkit.org>
+
+ Unreviewed. Test commit for commit-queue@webkit.org.
+
+2010-01-28 Commit Queue <commit-queue@webkit.org>
+
+ Unreviewed. Test commit for commit-queue@webkit.org.
+
+2010-01-28 Commit Queue <commit-queue@webkit.org>
+
+ Unreviewed. Test commit for commit-queue@webkit.org.
+
+2011-01-31 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] REGRESSION: http/tests/media/video-{cookie,referer}.html failing
+ https://bugs.webkit.org/show_bug.cgi?id=53379
+
+ Remove left over mentions of HAVE_SOUP_2_29_90, and apply the
+ dependency on newer soup to efl as well.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2011-01-29 Daniel Bates <dbates@rim.com>
+
+ Reviewed by Maciej Stachowiak.
+
+ Remove reference to ${CMAKE_SOURCE_DIR}/Source in CMake files
+ https://bugs.webkit.org/show_bug.cgi?id=53382
+
+ Our file system hierarchy ensures that CMAKE_SOURCE_DIR is defined to be /Source.
+ So, ${CMAKE_SOURCE_DIR}/Source evaluates to the non-existent directory /Source/Source.
+ Therefore, we should remove such references.
+
+ * Source/cmake/OptionsCommon.cmake:
+
+2011-01-29 Daniel Bates <dbates@rim.com>
+
+ Reviewed by Eric Seidel.
+
+ Move wince/mt19937ar.c to ThirdParty and make it a policy choice
+ https://bugs.webkit.org/show_bug.cgi?id=53253
+
+ Move implementation of Mersenne Twister pseudorandom number generator to
+ ThirdParty since it is a third party library.
+
+ * Source/ThirdParty/mt19937ar.c: Copied from Source/JavaScriptCore/wtf/wince/mt19937ar.c.
+
+2011-01-29 Dan Winship <danw@gnome.org>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Require the latest glib and libsoup, and remove conditional
+ support for older versions
+ https://bugs.webkit.org/show_bug.cgi?id=50675
+
+ * autotools/webkit.m4: use AM_PATH_GLIB_2_0 rather than doing
+ basically the same work by hand
+ * configure.ac:
+
+2011-01-28 Martin Robinson <mrobinson@igalia.com>
+
+ [GTK] Build failure with --enable-indexed-database
+ https://bugs.webkit.org/show_bug.cgi?id=50954
+
+ Build fix for IndexedDB support.
+
+ * configure.ac: Change the autogen.sh option --enable-indexeddb to
+ --enable-indexed-database to match the build-webkit option.
+
+2010-01-28 Commit Queue <commit-queue@webkit.org>
+
+ Unreviewed. Test commit for commit-queue@webkit.org.
+
+2010-01-28 Commit Queue <commit-queue@webkit.org>
+
+ Unreviewed. Test commit for commit-queue@webkit.org.
+
+2011-01-26 Yael Aharon <yael.aharon@nokia.com>
+
+ Reviewed by Laszlo Gombos.
+
+ [Qt][Symbian] Fix --minimal build
+ https://bugs.webkit.org/show_bug.cgi?id=52839
+
+ Move definition of USE_SYSTEM_MALLOC out of pri file.
+ Put it in platform.h instead.
+
+ * Source/WebKit.pri:
+
+2011-01-26 Csaba Osztrogonác <ossy@webkit.org>
+
+ Reviewed by Andreas Kling.
+
+ [Qt] Fix qt_minimal build
+ https://bugs.webkit.org/show_bug.cgi?id=53172
+
+ * Source/WebKit.pri:
+
+2011-01-25 Patrick Gansterer <paroga@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Move main CMakeLists.txt into Source directory
+ https://bugs.webkit.org/show_bug.cgi?id=52888
+
+ * CMakeLists.txt: Removed.
+ * Source/CMakeLists.txt: Copied from CMakeLists.txt.
+ * Source/cmakeconfig.h.cmake: Copied from cmakeconfig.h.cmake.
+ * cmakeconfig.h.cmake: Removed.
+
+2011-01-24 Chris Marrin <cmarrin@apple.com>
+
+ Reviewed by Eric Seidel.
+
+ Change ENABLE_3D_CANVAS to ENABLE_WEBGL
+ https://bugs.webkit.org/show_bug.cgi?id=53041
+
+ * configure.ac:
+
+2011-01-24 Peter Gal <galpeter@inf.u-szeged.hu>
+
+ Rubber-stamped by Csaba Osztrogonác.
+
+ * runtime: Removed. It was accidentally created by r76457.
+
+2011-01-24 Andras Becsi <abecsi@webkit.org>
+
+ Reviewed by Csaba Osztrogonác.
+
+ [Qt] Move project files into Source
+ https://bugs.webkit.org/show_bug.cgi?id=52891
+
+ * Source/DerivedSources.pro: Copied from DerivedSources.pro.
+ * Source/WebKit.pri: Renamed from WebKit.pri.
+ * Source/WebKit.pro: Added.
+ * Source/common.pri: Renamed from common.pri.
+ * WebKit.pro: Removed.
+
+2011-01-20 Siddharth Mathur <siddharth.mathur@nokia.com>
+
+ Reviewed by Laszlo Gombos.
+
+ [Qt][Symbian] Smaller debug symbol size when using RVCT 4.x
+ https://bugs.webkit.org/show_bug.cgi?id=52835
+
+ * WebKit.pri: Use --remove_unneeded_entities for RVCT 4.x compilers
+
+2011-01-20 Alejandro G. Castro <alex@igalia.com>
+
+ Reviewed by Andreas Kling.
+
+ [GTK] Fix typo in the webkit2 section of the configure.ac file
+ https://bugs.webkit.org/show_bug.cgi?id=52801
+
+ Fixed typo in the GTK WebKit2 compilation.
+
+ * configure.ac:
+
+2011-01-19 Kimmo Kinnunen <kimmo.t.kinnunen@nokia.com>
+
+ Reviewed by Andreas Kling.
+
+ Enable usage of Google ld if it exist but is not on by default.
+
+ [Qt] Enable the google ld if it exist but is not on by default
+ https://bugs.webkit.org/show_bug.cgi?id=52625
+
+ * common.pri: flip the test.
+
+2011-01-18 Mihai Parparita <mihaip@chromium.org>
+
+ Unreviewed. Update .gitignore to reflect that WebKit is now in Source.
+
+ * .gitignore:
+
+2011-01-18 Krithigassree Sambamurthy <krithigassree.sambamurthy@nokia.com>
+
+ Reviewed by Simon Fraser.
+
+ Support background-clip: content-box
+ https://bugs.webkit.org/show_bug.cgi?id=48771
+
+ Addded content-box as a valid background-clip value.
+
+ * WebCore/css/CSSParser.cpp:
+ (WebCore::parseBackgroundClip):
+
+2011-01-18 Hayato Ito <hayato@chromium.org>
+
+ Reviewed by Kent Tamura.
+
+ Update .gitignore file to reflect a recent WebKit directory movement.
+
+ https://bugs.webkit.org/show_bug.cgi?id=52618
+
+ * .gitignore:
+
+2011-01-16 Adam Barth <abarth@webkit.org>
+
+ Rubber-stamped by Eric Seidel.
+
+ Move WebKit into Source
+ https://bugs.webkit.org/show_bug.cgi?id=52530
+
+ * Android.mk:
+ * CMakeLists.txt:
+ * DerivedSources.pro:
+ * GNUmakefile.am:
+ * Makefile:
+ * WebKit.pri:
+ * WebKit.pro:
+ * configure.ac:
+ * wscript:
+
+2011-01-15 Adam Barth <abarth@webkit.org>
+
+ Rubber-stamped by Eric Seidel.
+
+ Move WebKit2 into Source
+ https://bugs.webkit.org/show_bug.cgi?id=52438
+
+ Update reference to WebKit2.
+
+ * DerivedSources.pro:
+ * GNUmakefile.am:
+ * Makefile:
+ * Source/cmake/WebKitPackaging.cmake:
+ * WebKit.pro:
+ * configure.ac:
+
+2011-01-14 Ahmad Sharif <asharif.tools@gmail.com>
+
+ Reviewed by Darin Fisher.
+
+ When inlining is performed, the progress variable is
+ declared as uninitialized.
+ https://bugs.webkit.org/show_bug.cgi?id=51084
+
+ * WebCore: Copied from WebCore.
+ * WebCore/page/animation/KeyframeAnimation.cpp:
+ (WebCore::KeyframeAnimation::animate):
+ (WebCore::KeyframeAnimation::getAnimatedStyle):
+
+2011-01-11 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by Csaba Osztrogonác.
+
+ [Qt] Add QT_NO_CONCURRENT to the qt_minimal configuration
+ https://bugs.webkit.org/show_bug.cgi?id=52223
+
+ Add QT_NO_CONCURRENT to the qt_minimal configuration to make sure
+ that QtWebKit builds with QT_NO_CONCURRENT defined.
+
+ * WebKit.pri:
+
+2011-01-11 Mihai Parparita <mihaip@chromium.org>
+
+ Unreviewed. Update .gitignore with new Chromium dependency.
+
+ ui/ was added with http://crrev.com/70743, we picked that up with a
+ Chromium roll in r75311.
+
+ Also alphabetizes the dependency list.
+
+ * .gitignore:
+
+2011-01-10 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by Csaba Osztrogonác.
+
+ [Qt] Baseline qt_minimal configuration
+ https://bugs.webkit.org/show_bug.cgi?id=51313
+
+ * WebKit.pri: List the supported QT_NO_FEATURE flags
+ under qt_minimal configuration.
+
+2011-01-10 Gyuyoung Kim <gyuyoung.kim@samsung.com>
+
+ Reviewed by Eric Seidel.
+
+ [EFL] Enable JIT for WebKit EFL
+ https://bugs.webkit.org/show_bug.cgi?id=52140
+
+ Enable JIT option for WebKit EFL. Enabled JIT's JS performance is
+ 3 ~ 6 times faster than before.
+
+ * Source/cmake/OptionsEfl.cmake:
+
+2011-01-10 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Bump the WebKitGTK+ versions in preparation for development release.
+
+ * configure.ac: Bump the library, libtool and user agent version.
+
+2011-01-10 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Create intermediate libWebCore library
+ https://bugs.webkit.org/show_bug.cgi?id=52116
+
+ * GNUmakefile.am: add XP_UNIX to the global CPP flags, since it's
+ used by both libWebCore and libwebkitgtk now.
+
+2011-01-08 Patrick Gansterer <paroga@webkit.org>
+
+ Unreviewed wx build fix for r75313.
+
+ * wscript: Added missing brace.
+
+2011-01-07 Adam Barth <abarth@webkit.org>
+
+ Rubber-stamped by Eric Seidel.
+
+ Move WebCore to Source
+ https://bugs.webkit.org/show_bug.cgi?id=52050
+
+ Update build files and metadata to point to WebCore's new location.
+
+ * .gitattributes:
+ * .gitignore:
+ * Android.mk:
+ * CMakeLists.txt:
+ * DerivedSources.pro:
+ * GNUmakefile.am:
+ * Makefile:
+ * Source/autotools/webkit.m4:
+ * Source/cmake/OptionsEfl.cmake:
+ * WebKit.pri:
+ * WebKit.pro:
+ * configure.ac:
+ * wscript:
+
+2011-01-06 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Eric Seidel.
+
+ [GTK] Initial build support for WebGL
+ https://bugs.webkit.org/show_bug.cgi?id=51716
+
+ * configure.ac: Add a configure option for WebGL.
+
+2011-01-06 Michael Saboff <msaboff@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ Enhancement: Add Regexp Debug Compare between JIT and Interpreter
+ https://bugs.webkit.org/show_bug.cgi?id=51834
+
+ * JavaScriptCore: Copied from JavaScriptCore.
+
+2011-01-06 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Enable blob support by default
+ https://bugs.webkit.org/show_bug.cgi?id=51994
+
+ * configure.ac: Enable Blob support by default.
+
+2011-01-05 Patrick Gansterer <paroga@webkit.org>
+
+ Reviewed by Andreas Kling.
+
+ [CMake] Fix the usage of SOURCE_GROUP
+ https://bugs.webkit.org/show_bug.cgi?id=51739
+
+ * Source/cmake/WebKitMacros.cmake:
+
+2011-01-05 Patrick Gansterer <paroga@webkit.org>
+
+ Reviewed by Andreas Kling.
+
+ [WINCE] Remove CMake warning
+ https://bugs.webkit.org/show_bug.cgi?id=51921
+
+ * Source/cmake/WebKitHelpers.cmake:
+
+2011-01-04 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by David Levin.
+
+ .gitignore should be updated to reflect Sources rename to Source
+ https://bugs.webkit.org/show_bug.cgi?id=51893
+
+ * .gitignore: Change all paths that reference the "Sources" directory to say "Source".
+
+2011-01-04 Dihan Wickremasuriya <dihan.wickremasuriya@nokia.com>
+
+ Reviewed by Laszlo Gombos.
+
+ [Qt] [Symbian] Build system cleanup
+
+ After r74811 special handling for the Symbian build is no longer needed.
+ This patch reverts r58756.
+
+ * WebKit.pri:
+
+2011-01-03 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ * autogen.sh: also pass $ACLOCAL_FLAGS for tools that set that env
+ variable (like jhbuild).
+
+2011-01-03 Patrick Gansterer <paroga@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ [WINCE] Provide third party directory via environment variable
+ https://bugs.webkit.org/show_bug.cgi?id=51643
+
+ * Source/cmake/OptionsWinCE.cmake:
+
+2011-01-03 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ Use autoreconf instead of calling manually all the usual commands.
+
+ * autogen.sh: call autoreconf instead of
+ aclocal/autoheader/autoconf/automake/libtoolize.
+
+2011-01-03 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Disable superfluous GNU make built-in implicit rules
+ https://bugs.webkit.org/show_bug.cgi?id=51826
+
+ GNU make ships some superflous built-in rules that we never use
+ and that end up adding up to a very significant portion of our
+ total Makefile processing time. Disable them completely by
+ defining the rule without any recipe, as suggested by the GNU make
+ manual (10.5.6, Cancelling Implicit Rules).
+
+ In my system the null-build goes from:
+
+ make 43.51s user 12.77s system 99% cpu 56.628 total
+
+ to:
+
+ make 31.45s user 11.59s system 99% cpu 43.227 total
+
+ * GNUmakefile.am: disable implicit built-in rules.
+
+2011-01-03 Mihai Parparita <mihaip@chromium.org>
+
+ Unreviewed. Update .gitignore with new JavaScriptCore location.
+
+ * .gitignore:
+
+2011-01-02 Patrick Gansterer <paroga@webkit.org>
+
+ [CMake] Unreviewed build fix.
+
+ * CMakeLists.txt:
+ * Source/cmake/OptionsCommon.cmake:
+
+2011-01-01 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Move JavaScriptCore to Source
+ https://bugs.webkit.org/show_bug.cgi?id=51604
+
+ Update references to JavaScriptCore to point to the new location.
+
+ * Android.mk:
+ * CMakeLists.txt:
+ * DerivedSources.pro:
+ * GNUmakefile.am:
+ * Makefile:
+ * WebKit.pri:
+ * WebKit.pro:
+ * wscript:
+
+2011-01-01 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Move Sources to Source
+ https://bugs.webkit.org/show_bug.cgi?id=51794
+
+ Update build files to point to the new location.
+
+ * CMakeLists.txt:
+ * GNUmakefile.am:
+ * Makefile:
+ * autogen.sh:
+ * configure.ac:
+
+2010-12-31 Adam Barth <abarth@webkit.org>
+
+ Rubber-stamped by Eric Seidel.
+
+ Move HTML and XML parser benchmarks into PerformanceTests/Parser
+ https://bugs.webkit.org/show_bug.cgi?id=51772
+
+ Actually move the directory.
+
+ * PerformanceTests/Parser: Copied from WebCore/benchmarks/parser.
+
+2010-12-31 Adam Barth <abarth@webkit.org>
+
+ Rubber-stamped by Eric Seidel.
+
+ Move PageLoadTests to PerformanceTests/PageLoad
+ https://bugs.webkit.org/show_bug.cgi?id=51771
+
+ Actually move the directory.
+
+ * PageLoadTests: Removed.
+ * PageLoadTests/svg: Removed.
+ * PageLoadTests/svg/LICENSES: Removed.
+ * PageLoadTests/svg/files: Removed.
+ * PageLoadTests/svg/files/33041-Samurai.svg: Removed.
+ * PageLoadTests/svg/files/42450-under the see.svg: Removed.
+ * PageLoadTests/svg/files/42470-flower_from_my_garden_v2.svg: Removed.
+ * PageLoadTests/svg/files/44057-drops on a blade.svg: Removed.
+ * PageLoadTests/svg/files/Harvey_Rayner.svg: Removed.
+ * PageLoadTests/svg/files/az-lizard_benji_park_01.svg: Removed.
+ * PageLoadTests/svg/files/bamboo_01.svg: Removed.
+ * PageLoadTests/svg/files/cacuts_01.svg: Removed.
+ * PageLoadTests/svg/files/cowboy.svg: Removed.
+ * PageLoadTests/svg/files/crawfish2_ganson.svg: Removed.
+ * PageLoadTests/svg/files/deb9frac1.svg: Removed.
+ * PageLoadTests/svg/files/food_leif_lodahl_01.svg: Removed.
+ * PageLoadTests/svg/files/france.svg: Removed.
+ * PageLoadTests/svg/files/francobollo_gnome_ezechi_02.svg: Removed.
+ * PageLoadTests/svg/files/gearflowers.svg: Removed.
+ * PageLoadTests/svg/files/hereGear4.svg: Removed.
+ * PageLoadTests/svg/files/mtsthelens.svg: Removed.
+ * PageLoadTests/svg/files/mtsthelens0.jpg: Removed.
+ * PageLoadTests/svg/files/world-iso.svg: Removed.
+ * PageLoadTests/svg/files/worldcup.svg: Removed.
+ * PageLoadTests/svg/svg.pltsuite: Removed.
+ * PerformanceTests/PageLoad: Copied from PageLoadTests.
+ * Sources/cmake/WebKitPackaging.cmake:
+
+2010-12-31 Adam Barth <abarth@webkit.org>
+
+ Rubber-stamped by Eric Seidel.
+
+ Move SunSpider into PerformanceTests
+ https://bugs.webkit.org/show_bug.cgi?id=51769
+
+ Actually move the directory.
+
+ * PerformanceTests: Added.
+ * PerformanceTests/SunSpider: Copied from SunSpider.
+ * Sources/cmake/WebKitPackaging.cmake:
+ * SunSpider: Removed.
+ * SunSpider/SunSpider.make: Removed.
+ * SunSpider/TODO: Removed.
+ * SunSpider/UNCOVERED: Removed.
+ * SunSpider/hosted: Removed.
+ * SunSpider/hosted/json2.js: Removed.
+ * SunSpider/hosted/sunspider.css: Removed.
+ * SunSpider/hosted/sunspider.html: Removed.
+ * SunSpider/hosted/versions.html: Removed.
+ * SunSpider/make-hosted: Removed.
+ * SunSpider/resources: Removed.
+ * SunSpider/resources/TEMPLATE.html: Removed.
+ * SunSpider/resources/driver-TEMPLATE.html: Removed.
+ * SunSpider/resources/results-TEMPLATE.html: Removed.
+ * SunSpider/resources/sunspider-analyze-results.js: Removed.
+ * SunSpider/resources/sunspider-compare-results.js: Removed.
+ * SunSpider/resources/sunspider-standalone-compare.js: Removed.
+ * SunSpider/resources/sunspider-standalone-driver.js: Removed.
+ * SunSpider/sunspider: Removed.
+ * SunSpider/sunspider-compare-results: Removed.
+ * SunSpider/tests: Removed.
+ * SunSpider/tests/parse-only: Removed.
+ * SunSpider/tests/parse-only/LIST: Removed.
+ * SunSpider/tests/parse-only/concat-jquery-mootools-prototype.js: Removed.
+ * SunSpider/tests/parse-only/jquery-1.3.2.js: Removed.
+ * SunSpider/tests/parse-only/mootools-1.2.2-core-nc.js: Removed.
+ * SunSpider/tests/parse-only/prototype-1.6.0.3.js: Removed.
+ * SunSpider/tests/sunspider-0.9: Removed.
+ * SunSpider/tests/sunspider-0.9.1: Removed.
+ * SunSpider/tests/sunspider-0.9.1/3d-cube.js: Removed.
+ * SunSpider/tests/sunspider-0.9.1/3d-morph.js: Removed.
+ * SunSpider/tests/sunspider-0.9.1/3d-raytrace.js: Removed.
+ * SunSpider/tests/sunspider-0.9.1/LIST: Removed.
+ * SunSpider/tests/sunspider-0.9.1/access-binary-trees.js: Removed.
+ * SunSpider/tests/sunspider-0.9.1/access-fannkuch.js: Removed.
+ * SunSpider/tests/sunspider-0.9.1/access-nbody.js: Removed.
+ * SunSpider/tests/sunspider-0.9.1/access-nsieve.js: Removed.
+ * SunSpider/tests/sunspider-0.9.1/bitops-3bit-bits-in-byte.js: Removed.
+ * SunSpider/tests/sunspider-0.9.1/bitops-bits-in-byte.js: Removed.
+ * SunSpider/tests/sunspider-0.9.1/bitops-bitwise-and.js: Removed.
+ * SunSpider/tests/sunspider-0.9.1/bitops-nsieve-bits.js: Removed.
+ * SunSpider/tests/sunspider-0.9.1/controlflow-recursive.js: Removed.
+ * SunSpider/tests/sunspider-0.9.1/crypto-aes.js: Removed.
+ * SunSpider/tests/sunspider-0.9.1/crypto-md5.js: Removed.
+ * SunSpider/tests/sunspider-0.9.1/crypto-sha1.js: Removed.
+ * SunSpider/tests/sunspider-0.9.1/date-format-tofte.js: Removed.
+ * SunSpider/tests/sunspider-0.9.1/date-format-xparb.js: Removed.
+ * SunSpider/tests/sunspider-0.9.1/math-cordic.js: Removed.
+ * SunSpider/tests/sunspider-0.9.1/math-partial-sums.js: Removed.
+ * SunSpider/tests/sunspider-0.9.1/math-spectral-norm.js: Removed.
+ * SunSpider/tests/sunspider-0.9.1/regexp-dna.js: Removed.
+ * SunSpider/tests/sunspider-0.9.1/string-base64.js: Removed.
+ * SunSpider/tests/sunspider-0.9.1/string-fasta.js: Removed.
+ * SunSpider/tests/sunspider-0.9.1/string-tagcloud.js: Removed.
+ * SunSpider/tests/sunspider-0.9.1/string-unpack-code.js: Removed.
+ * SunSpider/tests/sunspider-0.9.1/string-validate-input.js: Removed.
+ * SunSpider/tests/sunspider-0.9/3d-cube.js: Removed.
+ * SunSpider/tests/sunspider-0.9/3d-morph.js: Removed.
+ * SunSpider/tests/sunspider-0.9/3d-raytrace.js: Removed.
+ * SunSpider/tests/sunspider-0.9/LIST: Removed.
+ * SunSpider/tests/sunspider-0.9/access-binary-trees.js: Removed.
+ * SunSpider/tests/sunspider-0.9/access-fannkuch.js: Removed.
+ * SunSpider/tests/sunspider-0.9/access-nbody.js: Removed.
+ * SunSpider/tests/sunspider-0.9/access-nsieve.js: Removed.
+ * SunSpider/tests/sunspider-0.9/bitops-3bit-bits-in-byte.js: Removed.
+ * SunSpider/tests/sunspider-0.9/bitops-bits-in-byte.js: Removed.
+ * SunSpider/tests/sunspider-0.9/bitops-bitwise-and.js: Removed.
+ * SunSpider/tests/sunspider-0.9/bitops-nsieve-bits.js: Removed.
+ * SunSpider/tests/sunspider-0.9/controlflow-recursive.js: Removed.
+ * SunSpider/tests/sunspider-0.9/crypto-aes.js: Removed.
+ * SunSpider/tests/sunspider-0.9/crypto-md5.js: Removed.
+ * SunSpider/tests/sunspider-0.9/crypto-sha1.js: Removed.
+ * SunSpider/tests/sunspider-0.9/date-format-tofte.js: Removed.
+ * SunSpider/tests/sunspider-0.9/date-format-xparb.js: Removed.
+ * SunSpider/tests/sunspider-0.9/math-cordic.js: Removed.
+ * SunSpider/tests/sunspider-0.9/math-partial-sums.js: Removed.
+ * SunSpider/tests/sunspider-0.9/math-spectral-norm.js: Removed.
+ * SunSpider/tests/sunspider-0.9/regexp-dna.js: Removed.
+ * SunSpider/tests/sunspider-0.9/string-base64.js: Removed.
+ * SunSpider/tests/sunspider-0.9/string-fasta.js: Removed.
+ * SunSpider/tests/sunspider-0.9/string-tagcloud.js: Removed.
+ * SunSpider/tests/sunspider-0.9/string-unpack-code.js: Removed.
+ * SunSpider/tests/sunspider-0.9/string-validate-input.js: Removed.
+ * SunSpider/tests/ubench: Removed.
+ * SunSpider/tests/ubench/LIST: Removed.
+ * SunSpider/tests/ubench/function-closure.js: Removed.
+ * SunSpider/tests/ubench/function-correct-args.js: Removed.
+ * SunSpider/tests/ubench/function-empty.js: Removed.
+ * SunSpider/tests/ubench/function-excess-args.js: Removed.
+ * SunSpider/tests/ubench/function-missing-args.js: Removed.
+ * SunSpider/tests/ubench/function-sum.js: Removed.
+ * SunSpider/tests/ubench/loop-empty-resolve.js: Removed.
+ * SunSpider/tests/ubench/loop-empty.js: Removed.
+ * SunSpider/tests/ubench/loop-sum.js: Removed.
+ * SunSpider/tests/v8-v4: Removed.
+ * SunSpider/tests/v8-v4/LIST: Removed.
+ * SunSpider/tests/v8-v4/v8-crypto.js: Removed.
+ * SunSpider/tests/v8-v4/v8-deltablue.js: Removed.
+ * SunSpider/tests/v8-v4/v8-earley-boyer.js: Removed.
+ * SunSpider/tests/v8-v4/v8-raytrace.js: Removed.
+ * SunSpider/tests/v8-v4/v8-regexp.js: Removed.
+ * SunSpider/tests/v8-v4/v8-richards.js: Removed.
+ * SunSpider/tests/v8-v4/v8-splay.js: Removed.
+ * SunSpider/tests/v8-v5: Removed.
+ * SunSpider/tests/v8-v5/LIST: Removed.
+ * SunSpider/tests/v8-v5/v8-crypto.js: Removed.
+ * SunSpider/tests/v8-v5/v8-deltablue.js: Removed.
+ * SunSpider/tests/v8-v5/v8-earley-boyer.js: Removed.
+ * SunSpider/tests/v8-v5/v8-raytrace.js: Removed.
+ * SunSpider/tests/v8-v5/v8-regexp.js: Removed.
+ * SunSpider/tests/v8-v5/v8-richards.js: Removed.
+ * SunSpider/tests/v8-v5/v8-splay.js: Removed.
+ * SunSpider/tests/v8-v6: Removed.
+ * SunSpider/tests/v8-v6/LIST: Removed.
+ * SunSpider/tests/v8-v6/v8-crypto.js: Removed.
+ * SunSpider/tests/v8-v6/v8-deltablue.js: Removed.
+ * SunSpider/tests/v8-v6/v8-earley-boyer.js: Removed.
+ * SunSpider/tests/v8-v6/v8-raytrace.js: Removed.
+ * SunSpider/tests/v8-v6/v8-regexp.js: Removed.
+ * SunSpider/tests/v8-v6/v8-richards.js: Removed.
+ * SunSpider/tests/v8-v6/v8-splay.js: Removed.
+ * SunSpider/xcopy.excludes: Removed.
+
+2010-12-30 Konstantin Tokarev <annulen@yandex.ru>
+
+ Reviewed by David Kilzer.
+
+ [Qt] Don't build wtf/TCSystemAlloc.cpp if --system-malloc option is
+ used
+ https://bugs.webkit.org/show_bug.cgi?id=51672
+
+ * WebKit.pri: Replaced USE_SYSTEM_MALLOC with USE_SYSTEM_MALLOC=1
+
+2010-12-29 Philippe Normand <pnormand@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] minimal build fails at link time due to missing sqlite3 symbols
+ https://bugs.webkit.org/show_bug.cgi?id=51327
+
+ * configure.ac: Error out if SQLite3 wasn't found while at least
+ one of the features depending on it has been enabled.
+
+2010-12-29 Patrick Gansterer <paroga@webkit.org>
+
+ Unreviewed. Use gcc as default preprocessor.
+
+ * Sources/cmake/OptionsCommon.cmake:
+
+2010-12-27 Ryuan Choi <ryuan.choi@samsung.com>
+
+ Reviewed by David Levin.
+
+ [EFL] Change path of eflsymbols.filter
+ https://bugs.webkit.org/show_bug.cgi?id=51659
+
+ * Sources/cmake/OptionsEfl.cmake:
+
+2010-12-26 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Siedel.
+
+ Move autotools into Sources
+ https://bugs.webkit.org/show_bug.cgi?id=51630
+
+ * .gitignore:
+ * GNUmakefile.am:
+ * Sources/autotools: Copied from autotools.
+ * autogen.sh:
+ * autotools: Removed.
+ * autotools/acinclude.m4: Removed.
+ * autotools/dolt.m4: Removed.
+ * autotools/gsettings.m4: Removed.
+ * autotools/symbols.filter: Removed.
+ * autotools/webkit.m4: Removed.
+ * configure.ac:
+
+2010-12-26 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Move cmake into Sources
+ https://bugs.webkit.org/show_bug.cgi?id=51631
+
+ * CMakeLists.txt:
+ * Sources/cmake: Copied from cmake.
+ * cmake: Removed.
+ * cmake/FindCFLite.cmake: Removed.
+ * cmake/FindCairo.cmake: Removed.
+ * cmake/FindEFL.cmake: Removed.
+ * cmake/FindFontconfig.cmake: Removed.
+ * cmake/FindFreetype.cmake: Removed.
+ * cmake/FindGDK-PixBuf.cmake: Removed.
+ * cmake/FindGDK.cmake: Removed.
+ * cmake/FindGIO.cmake: Removed.
+ * cmake/FindGStreamer-App.cmake: Removed.
+ * cmake/FindGStreamer-Base.cmake: Removed.
+ * cmake/FindGStreamer-Interfaces.cmake: Removed.
+ * cmake/FindGStreamer-Pbutils.cmake: Removed.
+ * cmake/FindGStreamer-Plugins-Base.cmake: Removed.
+ * cmake/FindGStreamer-Video.cmake: Removed.
+ * cmake/FindGStreamer.cmake: Removed.
+ * cmake/FindGlib.cmake: Removed.
+ * cmake/FindGperf.cmake: Removed.
+ * cmake/FindGthread.cmake: Removed.
+ * cmake/FindICU.cmake: Removed.
+ * cmake/FindLibSoup2.cmake: Removed.
+ * cmake/FindLibXlst.cmake: Removed.
+ * cmake/FindPango.cmake: Removed.
+ * cmake/FindSqlite.cmake: Removed.
+ * cmake/LibFindMacros.cmake: Removed.
+ * cmake/OptionsCommon.cmake: Removed.
+ * cmake/OptionsEfl.cmake: Removed.
+ * cmake/OptionsWinCE.cmake: Removed.
+ * cmake/OptionsWindows.cmake: Removed.
+ * cmake/WebKitEfl.cmake: Removed.
+ * cmake/WebKitFS.cmake: Removed.
+ * cmake/WebKitFeatures.cmake: Removed.
+ * cmake/WebKitHelpers.cmake: Removed.
+ * cmake/WebKitMacros.cmake: Removed.
+ * cmake/WebKitPackaging.cmake: Removed.
+ * cmake/eflsymbols.filter: Removed.
+
+2010-12-26 Adam Barth <abarth@webkit.org>
+
+ Fix some references to the old location of the WebKit website in git
+ metadata files.
+
+ * .gitattributes:
+
+2010-12-25 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Move ANGLE to Sources/ThirdParty
+ https://bugs.webkit.org/show_bug.cgi?id=51605
+
+ Actually move ANGLE and update the Makefile.
+
+ * ANGLE: Removed.
+ * ANGLE/ANGLE.xcodeproj: Removed.
+ * ANGLE/ANGLE.xcodeproj/project.pbxproj: Removed.
+ * ANGLE/Configurations: Removed.
+ * ANGLE/Configurations/ANGLE.xcconfig: Removed.
+ * ANGLE/Configurations/Base.xcconfig: Removed.
+ * ANGLE/Configurations/DebugRelease.xcconfig: Removed.
+ * ANGLE/Makefile: Removed.
+ * ANGLE/include: Removed.
+ * ANGLE/include/EGL: Removed.
+ * ANGLE/include/EGL/egl.h: Removed.
+ * ANGLE/include/EGL/eglext.h: Removed.
+ * ANGLE/include/EGL/eglplatform.h: Removed.
+ * ANGLE/include/GLES2: Removed.
+ * ANGLE/include/GLES2/gl2.h: Removed.
+ * ANGLE/include/GLES2/gl2ext.h: Removed.
+ * ANGLE/include/GLES2/gl2platform.h: Removed.
+ * ANGLE/include/GLSLANG: Removed.
+ * ANGLE/include/GLSLANG/ShaderLang.h: Removed.
+ * ANGLE/include/KHR: Removed.
+ * ANGLE/include/KHR/khrplatform.h: Removed.
+ * ANGLE/src: Removed.
+ * ANGLE/src/build_angle.xcodeproj: Removed.
+ * ANGLE/src/build_angle.xcodeproj/project.pbxproj: Removed.
+ * ANGLE/src/common: Removed.
+ * ANGLE/src/common/angleutils.h: Removed.
+ * ANGLE/src/common/debug.cpp: Removed.
+ * ANGLE/src/common/debug.h: Removed.
+ * ANGLE/src/compiler: Removed.
+ * ANGLE/src/compiler/BaseTypes.h: Removed.
+ * ANGLE/src/compiler/CodeGenGLSL.cpp: Removed.
+ * ANGLE/src/compiler/CodeGenHLSL.cpp: Removed.
+ * ANGLE/src/compiler/Common.h: Removed.
+ * ANGLE/src/compiler/ConstantUnion.h: Removed.
+ * ANGLE/src/compiler/InfoSink.cpp: Removed.
+ * ANGLE/src/compiler/InfoSink.h: Removed.
+ * ANGLE/src/compiler/Initialize.cpp: Removed.
+ * ANGLE/src/compiler/Initialize.h: Removed.
+ * ANGLE/src/compiler/InitializeDll.cpp: Removed.
+ * ANGLE/src/compiler/InitializeDll.h: Removed.
+ * ANGLE/src/compiler/InitializeGlobals.h: Removed.
+ * ANGLE/src/compiler/InitializeParseContext.h: Removed.
+ * ANGLE/src/compiler/IntermTraverse.cpp: Removed.
+ * ANGLE/src/compiler/Intermediate.cpp: Removed.
+ * ANGLE/src/compiler/MMap.h: Removed.
+ * ANGLE/src/compiler/OutputGLSL.cpp: Removed.
+ * ANGLE/src/compiler/OutputGLSL.h: Removed.
+ * ANGLE/src/compiler/OutputHLSL.cpp: Removed.
+ * ANGLE/src/compiler/OutputHLSL.h: Removed.
+ * ANGLE/src/compiler/ParseHelper.cpp: Removed.
+ * ANGLE/src/compiler/ParseHelper.h: Removed.
+ * ANGLE/src/compiler/PoolAlloc.cpp: Removed.
+ * ANGLE/src/compiler/PoolAlloc.h: Removed.
+ * ANGLE/src/compiler/QualifierAlive.cpp: Removed.
+ * ANGLE/src/compiler/QualifierAlive.h: Removed.
+ * ANGLE/src/compiler/RemoveTree.cpp: Removed.
+ * ANGLE/src/compiler/RemoveTree.h: Removed.
+ * ANGLE/src/compiler/ShHandle.h: Removed.
+ * ANGLE/src/compiler/ShaderLang.cpp: Removed.
+ * ANGLE/src/compiler/SymbolTable.cpp: Removed.
+ * ANGLE/src/compiler/SymbolTable.h: Removed.
+ * ANGLE/src/compiler/TranslatorGLSL.cpp: Removed.
+ * ANGLE/src/compiler/TranslatorGLSL.h: Removed.
+ * ANGLE/src/compiler/TranslatorHLSL.cpp: Removed.
+ * ANGLE/src/compiler/TranslatorHLSL.h: Removed.
+ * ANGLE/src/compiler/Types.h: Removed.
+ * ANGLE/src/compiler/UnfoldSelect.cpp: Removed.
+ * ANGLE/src/compiler/UnfoldSelect.h: Removed.
+ * ANGLE/src/compiler/debug.cpp: Removed.
+ * ANGLE/src/compiler/debug.h: Removed.
+ * ANGLE/src/compiler/glslang.l: Removed.
+ * ANGLE/src/compiler/glslang.y: Removed.
+ * ANGLE/src/compiler/intermOut.cpp: Removed.
+ * ANGLE/src/compiler/intermediate.h: Removed.
+ * ANGLE/src/compiler/localintermediate.h: Removed.
+ * ANGLE/src/compiler/osinclude.h: Removed.
+ * ANGLE/src/compiler/ossource_posix.cpp: Removed.
+ * ANGLE/src/compiler/ossource_win.cpp: Removed.
+ * ANGLE/src/compiler/parseConst.cpp: Removed.
+ * ANGLE/src/compiler/preprocessor: Removed.
+ * ANGLE/src/compiler/preprocessor/atom.c: Removed.
+ * ANGLE/src/compiler/preprocessor/atom.h: Removed.
+ * ANGLE/src/compiler/preprocessor/compile.h: Removed.
+ * ANGLE/src/compiler/preprocessor/cpp.c: Removed.
+ * ANGLE/src/compiler/preprocessor/cpp.h: Removed.
+ * ANGLE/src/compiler/preprocessor/cppstruct.c: Removed.
+ * ANGLE/src/compiler/preprocessor/memory.c: Removed.
+ * ANGLE/src/compiler/preprocessor/memory.h: Removed.
+ * ANGLE/src/compiler/preprocessor/parser.h: Removed.
+ * ANGLE/src/compiler/preprocessor/preprocess.h: Removed.
+ * ANGLE/src/compiler/preprocessor/scanner.c: Removed.
+ * ANGLE/src/compiler/preprocessor/scanner.h: Removed.
+ * ANGLE/src/compiler/preprocessor/slglobals.h: Removed.
+ * ANGLE/src/compiler/preprocessor/symbols.c: Removed.
+ * ANGLE/src/compiler/preprocessor/symbols.h: Removed.
+ * ANGLE/src/compiler/preprocessor/tokens.c: Removed.
+ * ANGLE/src/compiler/preprocessor/tokens.h: Removed.
+ * ANGLE/src/compiler/tools: Removed.
+ * ANGLE/src/compiler/unistd.h: Removed.
+ * ANGLE/src/libEGL: Removed.
+ * ANGLE/src/libEGL/Config.cpp: Removed.
+ * ANGLE/src/libEGL/Config.h: Removed.
+ * ANGLE/src/libEGL/Display.cpp: Removed.
+ * ANGLE/src/libEGL/Display.h: Removed.
+ * ANGLE/src/libEGL/Surface.cpp: Removed.
+ * ANGLE/src/libEGL/Surface.h: Removed.
+ * ANGLE/src/libEGL/libEGL.cpp: Removed.
+ * ANGLE/src/libEGL/libEGL.def: Removed.
+ * ANGLE/src/libEGL/libEGL.vcproj: Removed.
+ * ANGLE/src/libEGL/main.cpp: Removed.
+ * ANGLE/src/libEGL/main.h: Removed.
+ * ANGLE/src/libGLESv2: Removed.
+ * ANGLE/src/libGLESv2/Blit.cpp: Removed.
+ * ANGLE/src/libGLESv2/Blit.h: Removed.
+ * ANGLE/src/libGLESv2/Buffer.cpp: Removed.
+ * ANGLE/src/libGLESv2/Buffer.h: Removed.
+ * ANGLE/src/libGLESv2/Context.cpp: Removed.
+ * ANGLE/src/libGLESv2/Context.h: Removed.
+ * ANGLE/src/libGLESv2/Framebuffer.cpp: Removed.
+ * ANGLE/src/libGLESv2/Framebuffer.h: Removed.
+ * ANGLE/src/libGLESv2/Program.cpp: Removed.
+ * ANGLE/src/libGLESv2/Program.h: Removed.
+ * ANGLE/src/libGLESv2/RefCountObject.cpp: Removed.
+ * ANGLE/src/libGLESv2/RefCountObject.h: Removed.
+ * ANGLE/src/libGLESv2/Renderbuffer.cpp: Removed.
+ * ANGLE/src/libGLESv2/Renderbuffer.h: Removed.
+ * ANGLE/src/libGLESv2/ResourceManager.cpp: Removed.
+ * ANGLE/src/libGLESv2/ResourceManager.h: Removed.
+ * ANGLE/src/libGLESv2/Shader.cpp: Removed.
+ * ANGLE/src/libGLESv2/Shader.h: Removed.
+ * ANGLE/src/libGLESv2/Texture.cpp: Removed.
+ * ANGLE/src/libGLESv2/Texture.h: Removed.
+ * ANGLE/src/libGLESv2/geometry: Removed.
+ * ANGLE/src/libGLESv2/geometry/IndexDataManager.cpp: Removed.
+ * ANGLE/src/libGLESv2/geometry/IndexDataManager.h: Removed.
+ * ANGLE/src/libGLESv2/geometry/VertexDataManager.cpp: Removed.
+ * ANGLE/src/libGLESv2/geometry/VertexDataManager.h: Removed.
+ * ANGLE/src/libGLESv2/geometry/backend.cpp: Removed.
+ * ANGLE/src/libGLESv2/geometry/backend.h: Removed.
+ * ANGLE/src/libGLESv2/geometry/dx9.cpp: Removed.
+ * ANGLE/src/libGLESv2/geometry/dx9.h: Removed.
+ * ANGLE/src/libGLESv2/geometry/vertexconversion.h: Removed.
+ * ANGLE/src/libGLESv2/libGLESv2.cpp: Removed.
+ * ANGLE/src/libGLESv2/libGLESv2.def: Removed.
+ * ANGLE/src/libGLESv2/libGLESv2.vcproj: Removed.
+ * ANGLE/src/libGLESv2/main.cpp: Removed.
+ * ANGLE/src/libGLESv2/main.h: Removed.
+ * ANGLE/src/libGLESv2/mathutil.h: Removed.
+ * ANGLE/src/libGLESv2/utilities.cpp: Removed.
+ * ANGLE/src/libGLESv2/utilities.h: Removed.
+ * Makefile:
+ * Sources/ThirdParty: Added.
+ * Sources/ThirdParty/ANGLE: Copied from ANGLE.
+
+2010-12-26 Patrick Gansterer <paroga@webkit.org>
+
+ Unreviewed WinCE buildfix after r74626.
+
+ * cmake/OptionsWinCE.cmake:
+
+2010-12-24 Darin Adler <darin@apple.com>
+
+ Updated makefiles used by Apple engineers to fix build with the
+ new JavaScriptGlue location.
+
+ * Makefile: Told this to build JavaScriptGlue. Some day we might
+ want it to descend into Sources instead and use the Makefile there,
+ but there are problems with sequencing the project builds, so that
+ can wait.
+ * Sources/Makefile.shared: Added.
+
+2010-12-24 Ryuan Choi <ryuan.choi@samsung.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [EFL] Add option to enable Touch Events.
+ https://bugs.webkit.org/show_bug.cgi?id=49125
+
+ Add ENABLE_TOUCH_EVENTS option.
+
+ * cmake/OptionsEfl.cmake:
+ * cmakeconfig.h.cmake:
+
+2010-12-23 Adam Barth <abarth@webkit.org>
+
+ Rubber-stamped by Eric Seidel.
+
+ Move JavaScriptGlue into Sources
+ https://bugs.webkit.org/show_bug.cgi?id=51583
+
+ Actually perform the move.
+
+ * JavaScriptGlue: Removed.
+ * JavaScriptGlue/Configurations: Removed.
+ * JavaScriptGlue/Configurations/Base.xcconfig: Removed.
+ * JavaScriptGlue/Configurations/DebugRelease.xcconfig: Removed.
+ * JavaScriptGlue/Configurations/JavaScriptGlue.xcconfig: Removed.
+ * JavaScriptGlue/Configurations/Version.xcconfig: Removed.
+ * JavaScriptGlue/English.lproj: Removed.
+ * JavaScriptGlue/English.lproj/InfoPlist.strings: Removed.
+ * JavaScriptGlue/ForwardingHeaders: Removed.
+ * JavaScriptGlue/ForwardingHeaders/masm: Removed.
+ * JavaScriptGlue/ForwardingHeaders/masm/X86Assembler.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/profiler: Removed.
+ * JavaScriptGlue/ForwardingHeaders/profiler/Profiler.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/runtime: Removed.
+ * JavaScriptGlue/ForwardingHeaders/runtime/CallFrame.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/ASCIICType.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/AlwaysInline.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/Assertions.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/Atomics.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/Bitmap.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/BumpPointerAllocator.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/CrossThreadRefCounted.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/CurrentTime.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/DateInstanceCache.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/DateMath.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/FastAllocBase.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/FastMalloc.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/FixedArray.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/Forward.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/HashCountedSet.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/HashFunctions.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/HashMap.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/HashSet.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/HashTraits.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/ListHashSet.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/ListRefPtr.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/Locker.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/MainThread.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/MathExtras.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/Noncopyable.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/NotFound.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/OSAllocator.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/OwnArrayPtr.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/OwnArrayPtrCommon.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/OwnFastMallocPtr.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/OwnPtr.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/OwnPtrCommon.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/PageAllocation.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/PageAllocationAligned.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/PageBlock.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/PageReservation.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/PassOwnArrayPtr.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/PassOwnPtr.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/PassRefPtr.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/Platform.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/PossiblyNull.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/PtrAndFlags.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/RandomNumber.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/RefCounted.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/RefPtr.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/StackBounds.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/StdLibExtras.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/StringHasher.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/ThreadSafeShared.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/ThreadSpecific.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/Threading.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/ThreadingPrimitives.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/UnusedParam.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/VMTags.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/ValueCheck.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/Vector.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/VectorTraits.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/WTFThreadData.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/text: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/text/CString.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/text/StringHash.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/text/StringImpl.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/text/StringImplBase.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/text/TextPosition.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/text/WTFString.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/unicode: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/unicode/Unicode.h: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/unicode/icu: Removed.
+ * JavaScriptGlue/ForwardingHeaders/wtf/unicode/icu/UnicodeIcu.h: Removed.
+ * JavaScriptGlue/Info.plist: Removed.
+ * JavaScriptGlue/JSBase.cpp: Removed.
+ * JavaScriptGlue/JSBase.h: Removed.
+ * JavaScriptGlue/JSObject.cpp: Removed.
+ * JavaScriptGlue/JSObject.h: Removed.
+ * JavaScriptGlue/JSRun.cpp: Removed.
+ * JavaScriptGlue/JSRun.h: Removed.
+ * JavaScriptGlue/JSUtils.cpp: Removed.
+ * JavaScriptGlue/JSUtils.h: Removed.
+ * JavaScriptGlue/JSValueWrapper.cpp: Removed.
+ * JavaScriptGlue/JSValueWrapper.h: Removed.
+ * JavaScriptGlue/JavaScriptGlue.cpp: Removed.
+ * JavaScriptGlue/JavaScriptGlue.exp: Removed.
+ * JavaScriptGlue/JavaScriptGlue.h: Removed.
+ * JavaScriptGlue/JavaScriptGlue.xcodeproj: Removed.
+ * JavaScriptGlue/JavaScriptGlue.xcodeproj/project.pbxproj: Removed.
+ * JavaScriptGlue/LICENSE: Removed.
+ * JavaScriptGlue/Makefile: Removed.
+ * JavaScriptGlue/UserObjectImp.cpp: Removed.
+ * JavaScriptGlue/UserObjectImp.h: Removed.
+ * JavaScriptGlue/config.h: Removed.
+ * JavaScriptGlue/icu: Removed.
+ * JavaScriptGlue/icu/LICENSE: Removed.
+ * JavaScriptGlue/icu/README: Removed.
+ * JavaScriptGlue/icu/unicode: Removed.
+ * JavaScriptGlue/icu/unicode/platform.h: Removed.
+ * JavaScriptGlue/icu/unicode/putil.h: Removed.
+ * JavaScriptGlue/icu/unicode/uchar.h: Removed.
+ * JavaScriptGlue/icu/unicode/ucnv.h: Removed.
+ * JavaScriptGlue/icu/unicode/ucnv_err.h: Removed.
+ * JavaScriptGlue/icu/unicode/uconfig.h: Removed.
+ * JavaScriptGlue/icu/unicode/uenum.h: Removed.
+ * JavaScriptGlue/icu/unicode/uiter.h: Removed.
+ * JavaScriptGlue/icu/unicode/umachine.h: Removed.
+ * JavaScriptGlue/icu/unicode/urename.h: Removed.
+ * JavaScriptGlue/icu/unicode/ustring.h: Removed.
+ * JavaScriptGlue/icu/unicode/utf.h: Removed.
+ * JavaScriptGlue/icu/unicode/utf16.h: Removed.
+ * JavaScriptGlue/icu/unicode/utf8.h: Removed.
+ * JavaScriptGlue/icu/unicode/utf_old.h: Removed.
+ * JavaScriptGlue/icu/unicode/utypes.h: Removed.
+ * JavaScriptGlue/icu/unicode/uversion.h: Removed.
+ * JavaScriptGlue/testjsglue.cpp: Removed.
+ * Makefile:
+ * Sources: Added.
+ * Sources/JavaScriptGlue: Copied from JavaScriptGlue.
+ * Sources/Makefile: Added.
+
+2010-12-23 Lucas De Marchi <lucas.demarchi@profusion.mobi>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [EFL] Fix ContextMenu removal
+ https://bugs.webkit.org/show_bug.cgi?id=51530
+
+ Fix ContextMenu removal
+
+ In r74207 the support for ContextMenu was removed from EFL while the
+ code is being ported to the new CROSS_PLATFORM_MENUS due to build
+ breakage. However there were some missing removals in the shutdown
+ logic that introduced a bug, leading to a segmentation fault when
+ ContexController was destroyed.
+
+ The best way to effectively disable the ContextMenu is to conditionally
+ compile the meaningful stuff by surrounding with "#if
+ ENABLE(CONTEXT_MENUS)" and then disabling it in CMake.
+
+ * cmake/OptionsEfl.cmake: Disable ContextMenu and don't pretend we
+ implement CROSS_PLATFORM_MENUS yet.
+
+2010-12-22 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ * configure.ac: bump version to 1.3.9.
+
+2010-12-22 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] Compilation fixes with GTK+ 2.91.7
+ https://bugs.webkit.org/show_bug.cgi?id=51487
+
+ * configure.ac: depend on GTK+ 2.91.7 when using GTK+ 3.x.
+
+2010-12-22 Gyuyoung Kim <gyuyoung.kim@samsung.com>
+
+ Reviewed by Antonio Gomes.
+
+ [EFL] Sets default user agent
+ https://bugs.webkit.org/show_bug.cgi?id=47903
+
+ Add macros for WebKit EFL and User Agent.
+
+ * cmake/OptionsEfl.cmake:
+ * cmakeconfig.h.cmake:
+
+2010-12-20 Adam Barth <abarth@webkit.org>
+
+ Move web sites to Websites directory
+ https://bugs.webkit.org/show_bug.cgi?id=51323
+
+ This patch was never officially reviewed (because it was too large to
+ upload to bugs.webkit.org), but it was discussed on webkit-dev and Mark
+ Rowe gave me the green light.
+
+ * BugsSite: Removed.
+ * BugsSite/.cvsignore: Removed.
+ * BugsSite/.htaccess: Removed.
+ * BugsSite/Bugzilla: Removed.
+ * BugsSite/Bugzilla.pm: Removed.
+ * BugsSite/Bugzilla/.cvsignore: Removed.
+ * BugsSite/Bugzilla/.htaccess: Removed.
+ * BugsSite/Bugzilla/Attachment: Removed.
+ * BugsSite/Bugzilla/Attachment.pm: Removed.
+ * BugsSite/Bugzilla/Attachment/PatchReader.pm: Removed.
+ * BugsSite/Bugzilla/Auth: Removed.
+ * BugsSite/Bugzilla/Auth.pm: Removed.
+ * BugsSite/Bugzilla/Auth/Login: Removed.
+ * BugsSite/Bugzilla/Auth/Login.pm: Removed.
+ * BugsSite/Bugzilla/Auth/Login/CGI.pm: Removed.
+ * BugsSite/Bugzilla/Auth/Login/Cookie.pm: Removed.
+ * BugsSite/Bugzilla/Auth/Login/Env.pm: Removed.
+ * BugsSite/Bugzilla/Auth/Login/Stack.pm: Removed.
+ * BugsSite/Bugzilla/Auth/Login/WWW: Removed.
+ * BugsSite/Bugzilla/Auth/Login/WWW/CGI: Removed.
+ * BugsSite/Bugzilla/Auth/Persist: Removed.
+ * BugsSite/Bugzilla/Auth/Persist/Cookie.pm: Removed.
+ * BugsSite/Bugzilla/Auth/Verify: Removed.
+ * BugsSite/Bugzilla/Auth/Verify.pm: Removed.
+ * BugsSite/Bugzilla/Auth/Verify/DB.pm: Removed.
+ * BugsSite/Bugzilla/Auth/Verify/LDAP.pm: Removed.
+ * BugsSite/Bugzilla/Auth/Verify/RADIUS.pm: Removed.
+ * BugsSite/Bugzilla/Auth/Verify/Stack.pm: Removed.
+ * BugsSite/Bugzilla/Bug.pm: Removed.
+ * BugsSite/Bugzilla/BugMail.pm: Removed.
+ * BugsSite/Bugzilla/CGI.pm: Removed.
+ * BugsSite/Bugzilla/Chart.pm: Removed.
+ * BugsSite/Bugzilla/Classification.pm: Removed.
+ * BugsSite/Bugzilla/Component.pm: Removed.
+ * BugsSite/Bugzilla/Config: Removed.
+ * BugsSite/Bugzilla/Config.pm: Removed.
+ * BugsSite/Bugzilla/Config/Admin.pm: Removed.
+ * BugsSite/Bugzilla/Config/Attachment.pm: Removed.
+ * BugsSite/Bugzilla/Config/Auth.pm: Removed.
+ * BugsSite/Bugzilla/Config/BugChange.pm: Removed.
+ * BugsSite/Bugzilla/Config/BugFields.pm: Removed.
+ * BugsSite/Bugzilla/Config/BugMove.pm: Removed.
+ * BugsSite/Bugzilla/Config/Common.pm: Removed.
+ * BugsSite/Bugzilla/Config/Core.pm: Removed.
+ * BugsSite/Bugzilla/Config/DependencyGraph.pm: Removed.
+ * BugsSite/Bugzilla/Config/GroupSecurity.pm: Removed.
+ * BugsSite/Bugzilla/Config/LDAP.pm: Removed.
+ * BugsSite/Bugzilla/Config/MTA.pm: Removed.
+ * BugsSite/Bugzilla/Config/PatchViewer.pm: Removed.
+ * BugsSite/Bugzilla/Config/Query.pm: Removed.
+ * BugsSite/Bugzilla/Config/RADIUS.pm: Removed.
+ * BugsSite/Bugzilla/Config/ShadowDB.pm: Removed.
+ * BugsSite/Bugzilla/Config/UserMatch.pm: Removed.
+ * BugsSite/Bugzilla/Constants.pm: Removed.
+ * BugsSite/Bugzilla/DB: Removed.
+ * BugsSite/Bugzilla/DB.pm: Removed.
+ * BugsSite/Bugzilla/DB/Mysql.pm: Removed.
+ * BugsSite/Bugzilla/DB/Oracle.pm: Removed.
+ * BugsSite/Bugzilla/DB/Pg.pm: Removed.
+ * BugsSite/Bugzilla/DB/Schema: Removed.
+ * BugsSite/Bugzilla/DB/Schema.pm: Removed.
+ * BugsSite/Bugzilla/DB/Schema/Mysql.pm: Removed.
+ * BugsSite/Bugzilla/DB/Schema/Oracle.pm: Removed.
+ * BugsSite/Bugzilla/DB/Schema/Pg.pm: Removed.
+ * BugsSite/Bugzilla/Error.pm: Removed.
+ * BugsSite/Bugzilla/Field.pm: Removed.
+ * BugsSite/Bugzilla/Flag.pm: Removed.
+ * BugsSite/Bugzilla/FlagType.pm: Removed.
+ * BugsSite/Bugzilla/Group.pm: Removed.
+ * BugsSite/Bugzilla/Hook.pm: Removed.
+ * BugsSite/Bugzilla/Install: Removed.
+ * BugsSite/Bugzilla/Install.pm: Removed.
+ * BugsSite/Bugzilla/Install/CPAN.pm: Removed.
+ * BugsSite/Bugzilla/Install/DB.pm: Removed.
+ * BugsSite/Bugzilla/Install/Filesystem.pm: Removed.
+ * BugsSite/Bugzilla/Install/Localconfig.pm: Removed.
+ * BugsSite/Bugzilla/Install/Requirements.pm: Removed.
+ * BugsSite/Bugzilla/Install/Util.pm: Removed.
+ * BugsSite/Bugzilla/Keyword.pm: Removed.
+ * BugsSite/Bugzilla/Mailer.pm: Removed.
+ * BugsSite/Bugzilla/Milestone.pm: Removed.
+ * BugsSite/Bugzilla/Object.pm: Removed.
+ * BugsSite/Bugzilla/Product.pm: Removed.
+ * BugsSite/Bugzilla/Search: Removed.
+ * BugsSite/Bugzilla/Search.pm: Removed.
+ * BugsSite/Bugzilla/Search/Quicksearch.pm: Removed.
+ * BugsSite/Bugzilla/Search/Saved.pm: Removed.
+ * BugsSite/Bugzilla/Series.pm: Removed.
+ * BugsSite/Bugzilla/Status.pm: Removed.
+ * BugsSite/Bugzilla/Template: Removed.
+ * BugsSite/Bugzilla/Template.pm: Removed.
+ * BugsSite/Bugzilla/Template/Parser.pm: Removed.
+ * BugsSite/Bugzilla/Template/Plugin: Removed.
+ * BugsSite/Bugzilla/Template/Plugin/Bugzilla.pm: Removed.
+ * BugsSite/Bugzilla/Template/Plugin/Hook.pm: Removed.
+ * BugsSite/Bugzilla/Template/Plugin/User.pm: Removed.
+ * BugsSite/Bugzilla/Token.pm: Removed.
+ * BugsSite/Bugzilla/Update.pm: Removed.
+ * BugsSite/Bugzilla/User: Removed.
+ * BugsSite/Bugzilla/User.pm: Removed.
+ * BugsSite/Bugzilla/User/Setting: Removed.
+ * BugsSite/Bugzilla/User/Setting.pm: Removed.
+ * BugsSite/Bugzilla/User/Setting/Lang.pm: Removed.
+ * BugsSite/Bugzilla/User/Setting/Skin.pm: Removed.
+ * BugsSite/Bugzilla/Util.pm: Removed.
+ * BugsSite/Bugzilla/Version.pm: Removed.
+ * BugsSite/Bugzilla/WebService: Removed.
+ * BugsSite/Bugzilla/WebService.pm: Removed.
+ * BugsSite/Bugzilla/WebService/Bug.pm: Removed.
+ * BugsSite/Bugzilla/WebService/Bugzilla.pm: Removed.
+ * BugsSite/Bugzilla/WebService/Constants.pm: Removed.
+ * BugsSite/Bugzilla/WebService/Product.pm: Removed.
+ * BugsSite/Bugzilla/WebService/User.pm: Removed.
+ * BugsSite/PrettyPatch: Removed.
+ * BugsSite/PrettyPatch/PrettyPatch.rb: Removed.
+ * BugsSite/PrettyPatch/diff.rb: Removed.
+ * BugsSite/PrettyPatch/prettify.rb: Removed.
+ * BugsSite/QUICKSTART: Removed.
+ * BugsSite/README: Removed.
+ * BugsSite/UPGRADING: Removed.
+ * BugsSite/UPGRADING-pre-2.8: Removed.
+ * BugsSite/admin.cgi: Removed.
+ * BugsSite/attachment.cgi: Removed.
+ * BugsSite/buglist.cgi: Removed.
+ * BugsSite/bugzilla.dtd: Removed.
+ * BugsSite/chart.cgi: Removed.
+ * BugsSite/checksetup.pl: Removed.
+ * BugsSite/code-review.js: Removed.
+ * BugsSite/colchange.cgi: Removed.
+ * BugsSite/collectstats.pl: Removed.
+ * BugsSite/committers-autocomplete.js: Removed.
+ * BugsSite/config.cgi: Removed.
+ * BugsSite/contrib: Removed.
+ * BugsSite/contrib/README: Removed.
+ * BugsSite/contrib/bugzilla-submit: Removed.
+ * BugsSite/contrib/bugzilla-submit/README: Removed.
+ * BugsSite/contrib/bugzilla-submit/bugdata.txt: Removed.
+ * BugsSite/contrib/bugzilla-submit/bugzilla-submit: Removed.
+ * BugsSite/contrib/bugzilla-submit/bugzilla-submit.xml: Removed.
+ * BugsSite/contrib/bugzilla_ldapsync.rb: Removed.
+ * BugsSite/contrib/bz_webservice_demo.pl: Removed.
+ * BugsSite/contrib/bzdbcopy.pl: Removed.
+ * BugsSite/contrib/cmdline: Removed.
+ * BugsSite/contrib/cmdline/bugcount: Removed.
+ * BugsSite/contrib/cmdline/bugids: Removed.
+ * BugsSite/contrib/cmdline/buglist: Removed.
+ * BugsSite/contrib/cmdline/bugs: Removed.
+ * BugsSite/contrib/cmdline/bugslink: Removed.
+ * BugsSite/contrib/cmdline/makequery: Removed.
+ * BugsSite/contrib/cmdline/query.conf: Removed.
+ * BugsSite/contrib/cvs-update.pl: Removed.
+ * BugsSite/contrib/gnats2bz.pl: Removed.
+ * BugsSite/contrib/gnatsparse: Removed.
+ * BugsSite/contrib/gnatsparse/README: Removed.
+ * BugsSite/contrib/gnatsparse/gnatsparse.py: Removed.
+ * BugsSite/contrib/gnatsparse/magic.py: Removed.
+ * BugsSite/contrib/gnatsparse/specialuu.py: Removed.
+ * BugsSite/contrib/jb2bz.py: Removed.
+ * BugsSite/contrib/merge-users.pl: Removed.
+ * BugsSite/contrib/mysqld-watcher.pl: Removed.
+ * BugsSite/contrib/recode-overrides.txt: Removed.
+ * BugsSite/contrib/recode.pl: Removed.
+ * BugsSite/contrib/sendbugmail.pl: Removed.
+ * BugsSite/contrib/sendunsentbugmail.pl: Removed.
+ * BugsSite/contrib/syncLDAP.pl: Removed.
+ * BugsSite/contrib/yp_nomail.sh: Removed.
+ * BugsSite/createaccount.cgi: Removed.
+ * BugsSite/data: Removed.
+ * BugsSite/data/.htaccess: Removed.
+ * BugsSite/data/attachments: Removed.
+ * BugsSite/data/attachments/.htaccess: Removed.
+ * BugsSite/data/duplicates: Removed.
+ * BugsSite/data/mail: Removed.
+ * BugsSite/data/mimedump-tmp: Removed.
+ * BugsSite/data/mining: Removed.
+ * BugsSite/data/params: Removed.
+ * BugsSite/data/template: Removed.
+ * BugsSite/data/webdot: Removed.
+ * BugsSite/data/webdot/.htaccess: Removed.
+ * BugsSite/describecomponents.cgi: Removed.
+ * BugsSite/describekeywords.cgi: Removed.
+ * BugsSite/docs: Removed.
+ * BugsSite/docs/en: Removed.
+ * BugsSite/docs/en/.cvsignore: Removed.
+ * BugsSite/docs/en/README.docs: Removed.
+ * BugsSite/docs/en/images: Removed.
+ * BugsSite/docs/en/images/bzLifecycle.png: Removed.
+ * BugsSite/docs/en/images/bzLifecycle.xml: Removed.
+ * BugsSite/docs/en/images/callouts: Removed.
+ * BugsSite/docs/en/images/callouts/1.gif: Removed.
+ * BugsSite/docs/en/images/callouts/2.gif: Removed.
+ * BugsSite/docs/en/images/callouts/3.gif: Removed.
+ * BugsSite/docs/en/images/caution.gif: Removed.
+ * BugsSite/docs/en/images/note.gif: Removed.
+ * BugsSite/docs/en/images/tip.gif: Removed.
+ * BugsSite/docs/en/images/warning.gif: Removed.
+ * BugsSite/docs/en/rel_notes.txt: Removed.
+ * BugsSite/docs/en/xml: Removed.
+ * BugsSite/docs/en/xml/.cvsignore: Removed.
+ * BugsSite/docs/en/xml/Bugzilla-Guide.xml: Removed.
+ * BugsSite/docs/en/xml/about.xml: Removed.
+ * BugsSite/docs/en/xml/administration.xml: Removed.
+ * BugsSite/docs/en/xml/conventions.xml: Removed.
+ * BugsSite/docs/en/xml/customization.xml: Removed.
+ * BugsSite/docs/en/xml/gfdl.xml: Removed.
+ * BugsSite/docs/en/xml/glossary.xml: Removed.
+ * BugsSite/docs/en/xml/index.xml: Removed.
+ * BugsSite/docs/en/xml/installation.xml: Removed.
+ * BugsSite/docs/en/xml/integration.xml: Removed.
+ * BugsSite/docs/en/xml/introduction.xml: Removed.
+ * BugsSite/docs/en/xml/modules.xml: Removed.
+ * BugsSite/docs/en/xml/patches.xml: Removed.
+ * BugsSite/docs/en/xml/requiredsoftware.xml: Removed.
+ * BugsSite/docs/en/xml/security.xml: Removed.
+ * BugsSite/docs/en/xml/troubleshooting.xml: Removed.
+ * BugsSite/docs/en/xml/using.xml: Removed.
+ * BugsSite/docs/html: Removed.
+ * BugsSite/docs/html/api: Removed.
+ * BugsSite/docs/images: Removed.
+ * BugsSite/docs/images/callouts: Removed.
+ * BugsSite/docs/lib: Removed.
+ * BugsSite/docs/lib/Pod: Removed.
+ * BugsSite/docs/lib/Pod/Simple: Removed.
+ * BugsSite/docs/lib/Pod/Simple/HTML: Removed.
+ * BugsSite/docs/lib/Pod/Simple/HTML/Bugzilla.pm: Removed.
+ * BugsSite/docs/lib/Pod/Simple/HTMLBatch: Removed.
+ * BugsSite/docs/lib/Pod/Simple/HTMLBatch/Bugzilla.pm: Removed.
+ * BugsSite/docs/makedocs.pl: Removed.
+ * BugsSite/docs/pdf: Removed.
+ * BugsSite/docs/style.css: Removed.
+ * BugsSite/docs/txt: Removed.
+ * BugsSite/docs/xml: Removed.
+ * BugsSite/duplicates.cgi: Removed.
+ * BugsSite/editclassifications.cgi: Removed.
+ * BugsSite/editcomponents.cgi: Removed.
+ * BugsSite/editfields.cgi: Removed.
+ * BugsSite/editflagtypes.cgi: Removed.
+ * BugsSite/editgroups.cgi: Removed.
+ * BugsSite/editkeywords.cgi: Removed.
+ * BugsSite/editmilestones.cgi: Removed.
+ * BugsSite/editparams.cgi: Removed.
+ * BugsSite/editproducts.cgi: Removed.
+ * BugsSite/editsettings.cgi: Removed.
+ * BugsSite/editusers.cgi: Removed.
+ * BugsSite/editvalues.cgi: Removed.
+ * BugsSite/editversions.cgi: Removed.
+ * BugsSite/editwhines.cgi: Removed.
+ * BugsSite/editworkflow.cgi: Removed.
+ * BugsSite/email_in.pl: Removed.
+ * BugsSite/enter_bug.cgi: Removed.
+ * BugsSite/extensions: Removed.
+ * BugsSite/extensions/example: Removed.
+ * BugsSite/extensions/example/code: Removed.
+ * BugsSite/extensions/example/code/bug-end_of_update.pl: Removed.
+ * BugsSite/extensions/example/code/buglist-columns.pl: Removed.
+ * BugsSite/extensions/example/code/colchange-columns.pl: Removed.
+ * BugsSite/extensions/example/code/config.pl: Removed.
+ * BugsSite/extensions/example/code/flag-end_of_update.pl: Removed.
+ * BugsSite/extensions/example/code/install-before_final_checks.pl: Removed.
+ * BugsSite/extensions/example/code/product-confirm_delete.pl: Removed.
+ * BugsSite/extensions/example/code/webservice-error_codes.pl: Removed.
+ * BugsSite/extensions/example/code/webservice.pl: Removed.
+ * BugsSite/extensions/example/disabled: Removed.
+ * BugsSite/extensions/example/info.pl: Removed.
+ * BugsSite/extensions/example/lib: Removed.
+ * BugsSite/extensions/example/lib/ConfigExample.pm: Removed.
+ * BugsSite/extensions/example/lib/WSExample.pm: Removed.
+ * BugsSite/extensions/example/template: Removed.
+ * BugsSite/extensions/example/template/en: Removed.
+ * BugsSite/extensions/example/template/en/default: Removed.
+ * BugsSite/extensions/example/template/en/default/admin: Removed.
+ * BugsSite/extensions/example/template/en/default/admin/params: Removed.
+ * BugsSite/extensions/example/template/en/default/admin/params/example.html.tmpl: Removed.
+ * BugsSite/extensions/example/template/en/global: Removed.
+ * BugsSite/extensions/example/template/en/global/user-error-errors.html.tmpl: Removed.
+ * BugsSite/graphs: Removed.
+ * BugsSite/images: Removed.
+ * BugsSite/images/favicon.ico: Removed.
+ * BugsSite/images/padlock.png: Removed.
+ * BugsSite/importxml.pl: Removed.
+ * BugsSite/index.cgi: Removed.
+ * BugsSite/install-module.pl: Removed.
+ * BugsSite/js: Removed.
+ * BugsSite/js/TUI.js: Removed.
+ * BugsSite/js/attachment.js: Removed.
+ * BugsSite/js/expanding-tree.js: Removed.
+ * BugsSite/js/field.js: Removed.
+ * BugsSite/js/help.js: Removed.
+ * BugsSite/js/params.js: Removed.
+ * BugsSite/js/productform.js: Removed.
+ * BugsSite/js/util.js: Removed.
+ * BugsSite/js/yui: Removed.
+ * BugsSite/js/yui/calendar.js: Removed.
+ * BugsSite/js/yui/yahoo-dom-event.js: Removed.
+ * BugsSite/lib: Removed.
+ * BugsSite/lib/.htaccess: Removed.
+ * BugsSite/lib/README: Removed.
+ * BugsSite/long_list.cgi: Removed.
+ * BugsSite/mod_perl.pl: Removed.
+ * BugsSite/page.cgi: Removed.
+ * BugsSite/post_bug.cgi: Removed.
+ * BugsSite/process_bug.cgi: Removed.
+ * BugsSite/query.cgi: Removed.
+ * BugsSite/quips.cgi: Removed.
+ * BugsSite/relogin.cgi: Removed.
+ * BugsSite/report.cgi: Removed.
+ * BugsSite/reports.cgi: Removed.
+ * BugsSite/request.cgi: Removed.
+ * BugsSite/robots.txt: Removed.
+ * BugsSite/runtests.pl: Removed.
+ * BugsSite/sanitycheck.cgi: Removed.
+ * BugsSite/sanitycheck.pl: Removed.
+ * BugsSite/search_plugin.cgi: Removed.
+ * BugsSite/show_activity.cgi: Removed.
+ * BugsSite/show_bug.cgi: Removed.
+ * BugsSite/showattachment.cgi: Removed.
+ * BugsSite/showdependencygraph.cgi: Removed.
+ * BugsSite/showdependencytree.cgi: Removed.
+ * BugsSite/sidebar.cgi: Removed.
+ * BugsSite/skins: Removed.
+ * BugsSite/skins/.cvsignore: Removed.
+ * BugsSite/skins/contrib: Removed.
+ * BugsSite/skins/contrib/Dusk: Removed.
+ * BugsSite/skins/contrib/Dusk/.cvsignore: Removed.
+ * BugsSite/skins/contrib/Dusk/IE-fixes.css: Removed.
+ * BugsSite/skins/contrib/Dusk/admin.css: Removed.
+ * BugsSite/skins/contrib/Dusk/buglist.css: Removed.
+ * BugsSite/skins/contrib/Dusk/create_attachment.css: Removed.
+ * BugsSite/skins/contrib/Dusk/dependency-tree.css: Removed.
+ * BugsSite/skins/contrib/Dusk/duplicates.css: Removed.
+ * BugsSite/skins/contrib/Dusk/editusers.css: Removed.
+ * BugsSite/skins/contrib/Dusk/global.css: Removed.
+ * BugsSite/skins/contrib/Dusk/help.css: Removed.
+ * BugsSite/skins/contrib/Dusk/index.css: Removed.
+ * BugsSite/skins/contrib/Dusk/panel.css: Removed.
+ * BugsSite/skins/contrib/Dusk/params.css: Removed.
+ * BugsSite/skins/contrib/Dusk/release-notes.css: Removed.
+ * BugsSite/skins/contrib/Dusk/show_bug.css: Removed.
+ * BugsSite/skins/contrib/Dusk/show_multiple.css: Removed.
+ * BugsSite/skins/contrib/Dusk/summarize-time.css: Removed.
+ * BugsSite/skins/contrib/Dusk/voting.css: Removed.
+ * BugsSite/skins/contrib/Dusk/yui: Removed.
+ * BugsSite/skins/contrib/Dusk/yui/calendar.css: Removed.
+ * BugsSite/skins/custom: Removed.
+ * BugsSite/skins/custom/IE-fixes.css: Removed.
+ * BugsSite/skins/custom/admin.css: Removed.
+ * BugsSite/skins/custom/buglist.css: Removed.
+ * BugsSite/skins/custom/create_attachment.css: Removed.
+ * BugsSite/skins/custom/dependency-tree.css: Removed.
+ * BugsSite/skins/custom/duplicates.css: Removed.
+ * BugsSite/skins/custom/editusers.css: Removed.
+ * BugsSite/skins/custom/global.css: Removed.
+ * BugsSite/skins/custom/help.css: Removed.
+ * BugsSite/skins/custom/index.css: Removed.
+ * BugsSite/skins/custom/opendarwin.gif: Removed.
+ * BugsSite/skins/custom/panel.css: Removed.
+ * BugsSite/skins/custom/params.css: Removed.
+ * BugsSite/skins/custom/release-notes.css: Removed.
+ * BugsSite/skins/custom/show_bug.css: Removed.
+ * BugsSite/skins/custom/show_multiple.css: Removed.
+ * BugsSite/skins/custom/summarize-time.css: Removed.
+ * BugsSite/skins/custom/voting.css: Removed.
+ * BugsSite/skins/custom/yui: Removed.
+ * BugsSite/skins/custom/yui/calendar.css: Removed.
+ * BugsSite/skins/standard: Removed.
+ * BugsSite/skins/standard/IE-fixes.css: Removed.
+ * BugsSite/skins/standard/admin.css: Removed.
+ * BugsSite/skins/standard/buglist.css: Removed.
+ * BugsSite/skins/standard/create_attachment.css: Removed.
+ * BugsSite/skins/standard/dependency-tree: Removed.
+ * BugsSite/skins/standard/dependency-tree.css: Removed.
+ * BugsSite/skins/standard/dependency-tree/bug-item.png: Removed.
+ * BugsSite/skins/standard/dependency-tree/tree-closed.png: Removed.
+ * BugsSite/skins/standard/dependency-tree/tree-open.png: Removed.
+ * BugsSite/skins/standard/dependency-tree/tree.png: Removed.
+ * BugsSite/skins/standard/duplicates.css: Removed.
+ * BugsSite/skins/standard/editusers.css: Removed.
+ * BugsSite/skins/standard/global: Removed.
+ * BugsSite/skins/standard/global.css: Removed.
+ * BugsSite/skins/standard/global/body-back.gif: Removed.
+ * BugsSite/skins/standard/global/calendar.png: Removed.
+ * BugsSite/skins/standard/global/header.png: Removed.
+ * BugsSite/skins/standard/help.css: Removed.
+ * BugsSite/skins/standard/index: Removed.
+ * BugsSite/skins/standard/index.css: Removed.
+ * BugsSite/skins/standard/index/front.png: Removed.
+ * BugsSite/skins/standard/panel.css: Removed.
+ * BugsSite/skins/standard/params.css: Removed.
+ * BugsSite/skins/standard/release-notes.css: Removed.
+ * BugsSite/skins/standard/show_bug.css: Removed.
+ * BugsSite/skins/standard/show_multiple.css: Removed.
+ * BugsSite/skins/standard/summarize-time.css: Removed.
+ * BugsSite/skins/standard/voting.css: Removed.
+ * BugsSite/skins/standard/yui: Removed.
+ * BugsSite/skins/standard/yui/calendar.css: Removed.
+ * BugsSite/skins/standard/yui/sprite.png: Removed.
+ * BugsSite/summarize_time.cgi: Removed.
+ * BugsSite/t: Removed.
+ * BugsSite/t/001compile.t: Removed.
+ * BugsSite/t/002goodperl.t: Removed.
+ * BugsSite/t/003safesys.t: Removed.
+ * BugsSite/t/004template.t: Removed.
+ * BugsSite/t/005no_tabs.t: Removed.
+ * BugsSite/t/006spellcheck.t: Removed.
+ * BugsSite/t/007util.t: Removed.
+ * BugsSite/t/008filter.t: Removed.
+ * BugsSite/t/009bugwords.t: Removed.
+ * BugsSite/t/010dependencies.t: Removed.
+ * BugsSite/t/011pod.t: Removed.
+ * BugsSite/t/012throwables.t: Removed.
+ * BugsSite/t/Support: Removed.
+ * BugsSite/t/Support/Files.pm: Removed.
+ * BugsSite/t/Support/Systemexec.pm: Removed.
+ * BugsSite/t/Support/Templates.pm: Removed.
+ * BugsSite/template: Removed.
+ * BugsSite/template/.cvsignore: Removed.
+ * BugsSite/template/.htaccess: Removed.
+ * BugsSite/template/en: Removed.
+ * BugsSite/template/en/.cvsignore: Removed.
+ * BugsSite/template/en/custom: Removed.
+ * BugsSite/template/en/custom/account: Removed.
+ * BugsSite/template/en/custom/account/auth: Removed.
+ * BugsSite/template/en/custom/account/email: Removed.
+ * BugsSite/template/en/custom/account/password: Removed.
+ * BugsSite/template/en/custom/account/prefs: Removed.
+ * BugsSite/template/en/custom/admin: Removed.
+ * BugsSite/template/en/custom/admin/classifications: Removed.
+ * BugsSite/template/en/custom/admin/components: Removed.
+ * BugsSite/template/en/custom/admin/fieldvalues: Removed.
+ * BugsSite/template/en/custom/admin/flag-type: Removed.
+ * BugsSite/template/en/custom/admin/groups: Removed.
+ * BugsSite/template/en/custom/admin/keywords: Removed.
+ * BugsSite/template/en/custom/admin/milestones: Removed.
+ * BugsSite/template/en/custom/admin/products: Removed.
+ * BugsSite/template/en/custom/admin/products/groupcontrol: Removed.
+ * BugsSite/template/en/custom/admin/settings: Removed.
+ * BugsSite/template/en/custom/admin/users: Removed.
+ * BugsSite/template/en/custom/admin/versions: Removed.
+ * BugsSite/template/en/custom/attachment: Removed.
+ * BugsSite/template/en/custom/attachment/content-types.html.tmpl: Removed.
+ * BugsSite/template/en/custom/attachment/create.html.tmpl: Removed.
+ * BugsSite/template/en/custom/attachment/created.html.tmpl: Removed.
+ * BugsSite/template/en/custom/attachment/edit.html.tmpl: Removed.
+ * BugsSite/template/en/custom/attachment/list.html.tmpl: Removed.
+ * BugsSite/template/en/custom/attachment/review.html.tmpl: Removed.
+ * BugsSite/template/en/custom/attachment/reviewform.html.tmpl: Removed.
+ * BugsSite/template/en/custom/attachment/rietveldreview.html.tmpl: Removed.
+ * BugsSite/template/en/custom/bug: Removed.
+ * BugsSite/template/en/custom/bug/activity: Removed.
+ * BugsSite/template/en/custom/bug/create: Removed.
+ * BugsSite/template/en/custom/bug/edit.html.tmpl: Removed.
+ * BugsSite/template/en/custom/bug/navigate.html.tmpl: Removed.
+ * BugsSite/template/en/custom/bug/process: Removed.
+ * BugsSite/template/en/custom/bug/votes: Removed.
+ * BugsSite/template/en/custom/flag: Removed.
+ * BugsSite/template/en/custom/flag/list.html.tmpl: Removed.
+ * BugsSite/template/en/custom/global: Removed.
+ * BugsSite/template/en/custom/global/choose-product.html.tmpl: Removed.
+ * BugsSite/template/en/custom/global/header.html.tmpl: Removed.
+ * BugsSite/template/en/custom/list: Removed.
+ * BugsSite/template/en/custom/list/list.html.tmpl: Removed.
+ * BugsSite/template/en/custom/pages: Removed.
+ * BugsSite/template/en/custom/reports: Removed.
+ * BugsSite/template/en/custom/request: Removed.
+ * BugsSite/template/en/custom/request/email.txt.tmpl: Removed.
+ * BugsSite/template/en/custom/request/queue.html.tmpl: Removed.
+ * BugsSite/template/en/custom/search: Removed.
+ * BugsSite/template/en/custom/whine: Removed.
+ * BugsSite/template/en/default: Removed.
+ * BugsSite/template/en/default/account: Removed.
+ * BugsSite/template/en/default/account/auth: Removed.
+ * BugsSite/template/en/default/account/auth/login-small.html.tmpl: Removed.
+ * BugsSite/template/en/default/account/auth/login.html.tmpl: Removed.
+ * BugsSite/template/en/default/account/cancel-token.txt.tmpl: Removed.
+ * BugsSite/template/en/default/account/create.html.tmpl: Removed.
+ * BugsSite/template/en/default/account/created.html.tmpl: Removed.
+ * BugsSite/template/en/default/account/email: Removed.
+ * BugsSite/template/en/default/account/email/change-new.txt.tmpl: Removed.
+ * BugsSite/template/en/default/account/email/change-old.txt.tmpl: Removed.
+ * BugsSite/template/en/default/account/email/confirm-new.html.tmpl: Removed.
+ * BugsSite/template/en/default/account/email/confirm.html.tmpl: Removed.
+ * BugsSite/template/en/default/account/email/request-new.txt.tmpl: Removed.
+ * BugsSite/template/en/default/account/password: Removed.
+ * BugsSite/template/en/default/account/password/forgotten-password.txt.tmpl: Removed.
+ * BugsSite/template/en/default/account/password/set-forgotten-password.html.tmpl: Removed.
+ * BugsSite/template/en/default/account/prefs: Removed.
+ * BugsSite/template/en/default/account/prefs/account.html.tmpl: Removed.
+ * BugsSite/template/en/default/account/prefs/email.html.tmpl: Removed.
+ * BugsSite/template/en/default/account/prefs/permissions.html.tmpl: Removed.
+ * BugsSite/template/en/default/account/prefs/prefs.html.tmpl: Removed.
+ * BugsSite/template/en/default/account/prefs/saved-searches.html.tmpl: Removed.
+ * BugsSite/template/en/default/account/prefs/settings.html.tmpl: Removed.
+ * BugsSite/template/en/default/account/profile-activity.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin: Removed.
+ * BugsSite/template/en/default/admin/admin.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/classifications: Removed.
+ * BugsSite/template/en/default/admin/classifications/add.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/classifications/del.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/classifications/edit.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/classifications/reclassify.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/classifications/select.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/components: Removed.
+ * BugsSite/template/en/default/admin/components/confirm-delete.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/components/create.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/components/edit.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/components/footer.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/components/list.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/components/select-product.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/confirm-action.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/custom_fields: Removed.
+ * BugsSite/template/en/default/admin/custom_fields/confirm-delete.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/custom_fields/create.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/custom_fields/edit.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/custom_fields/list.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/fieldvalues: Removed.
+ * BugsSite/template/en/default/admin/fieldvalues/confirm-delete.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/fieldvalues/create.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/fieldvalues/edit.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/fieldvalues/footer.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/fieldvalues/list.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/fieldvalues/select-field.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/flag-type: Removed.
+ * BugsSite/template/en/default/admin/flag-type/confirm-delete.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/flag-type/edit.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/flag-type/list.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/groups: Removed.
+ * BugsSite/template/en/default/admin/groups/confirm-remove.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/groups/create.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/groups/delete.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/groups/edit.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/groups/list.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/keywords: Removed.
+ * BugsSite/template/en/default/admin/keywords/confirm-delete.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/keywords/create.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/keywords/edit.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/keywords/list.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/milestones: Removed.
+ * BugsSite/template/en/default/admin/milestones/confirm-delete.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/milestones/create.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/milestones/edit.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/milestones/footer.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/milestones/list.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/milestones/select-product.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/params: Removed.
+ * BugsSite/template/en/default/admin/params/admin.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/params/attachment.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/params/auth.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/params/bugchange.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/params/bugfields.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/params/bugmove.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/params/common.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/params/core.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/params/dependencygraph.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/params/editparams.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/params/groupsecurity.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/params/index.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/params/ldap.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/params/mta.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/params/patchviewer.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/params/query.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/params/radius.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/params/shadowdb.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/params/usermatch.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/products: Removed.
+ * BugsSite/template/en/default/admin/products/confirm-delete.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/products/create.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/products/edit-common.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/products/edit.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/products/footer.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/products/groupcontrol: Removed.
+ * BugsSite/template/en/default/admin/products/groupcontrol/confirm-edit.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/products/groupcontrol/edit.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/products/groupcontrol/updated.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/products/list-classifications.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/products/list.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/products/updated.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/sanitycheck: Removed.
+ * BugsSite/template/en/default/admin/sanitycheck/list.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/sanitycheck/messages.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/settings: Removed.
+ * BugsSite/template/en/default/admin/settings/edit.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/sudo.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/table.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/users: Removed.
+ * BugsSite/template/en/default/admin/users/confirm-delete.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/users/create.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/users/edit.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/users/list.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/users/listselectvars.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/users/responsibilities.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/users/search.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/users/userdata.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/versions: Removed.
+ * BugsSite/template/en/default/admin/versions/confirm-delete.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/versions/create.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/versions/edit.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/versions/footer.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/versions/list.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/versions/select-product.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/workflow: Removed.
+ * BugsSite/template/en/default/admin/workflow/comment.html.tmpl: Removed.
+ * BugsSite/template/en/default/admin/workflow/edit.html.tmpl: Removed.
+ * BugsSite/template/en/default/attachment: Removed.
+ * BugsSite/template/en/default/attachment/cancel-create-dupe.html.tmpl: Removed.
+ * BugsSite/template/en/default/attachment/choose.html.tmpl: Removed.
+ * BugsSite/template/en/default/attachment/confirm-delete.html.tmpl: Removed.
+ * BugsSite/template/en/default/attachment/content-types.html.tmpl: Removed.
+ * BugsSite/template/en/default/attachment/create.html.tmpl: Removed.
+ * BugsSite/template/en/default/attachment/created.html.tmpl: Removed.
+ * BugsSite/template/en/default/attachment/createformcontents.html.tmpl: Removed.
+ * BugsSite/template/en/default/attachment/delete_reason.txt.tmpl: Removed.
+ * BugsSite/template/en/default/attachment/diff-file.html.tmpl: Removed.
+ * BugsSite/template/en/default/attachment/diff-footer.html.tmpl: Removed.
+ * BugsSite/template/en/default/attachment/diff-header.html.tmpl: Removed.
+ * BugsSite/template/en/default/attachment/edit.html.tmpl: Removed.
+ * BugsSite/template/en/default/attachment/list.html.tmpl: Removed.
+ * BugsSite/template/en/default/attachment/midair.html.tmpl: Removed.
+ * BugsSite/template/en/default/attachment/show-multiple.html.tmpl: Removed.
+ * BugsSite/template/en/default/attachment/updated.html.tmpl: Removed.
+ * BugsSite/template/en/default/bug: Removed.
+ * BugsSite/template/en/default/bug/activity: Removed.
+ * BugsSite/template/en/default/bug/activity/show.html.tmpl: Removed.
+ * BugsSite/template/en/default/bug/activity/table.html.tmpl: Removed.
+ * BugsSite/template/en/default/bug/choose.html.tmpl: Removed.
+ * BugsSite/template/en/default/bug/comments.html.tmpl: Removed.
+ * BugsSite/template/en/default/bug/create: Removed.
+ * BugsSite/template/en/default/bug/create/comment-guided.txt.tmpl: Removed.
+ * BugsSite/template/en/default/bug/create/comment.txt.tmpl: Removed.
+ * BugsSite/template/en/default/bug/create/confirm-create-dupe.html.tmpl: Removed.
+ * BugsSite/template/en/default/bug/create/create-guided.html.tmpl: Removed.
+ * BugsSite/template/en/default/bug/create/create.html.tmpl: Removed.
+ * BugsSite/template/en/default/bug/create/created.html.tmpl: Removed.
+ * BugsSite/template/en/default/bug/create/make-template.html.tmpl: Removed.
+ * BugsSite/template/en/default/bug/create/user-message.html.tmpl: Removed.
+ * BugsSite/template/en/default/bug/dependency-graph.html.tmpl: Removed.
+ * BugsSite/template/en/default/bug/dependency-tree.html.tmpl: Removed.
+ * BugsSite/template/en/default/bug/edit.html.tmpl: Removed.
+ * BugsSite/template/en/default/bug/field.html.tmpl: Removed.
+ * BugsSite/template/en/default/bug/knob.html.tmpl: Removed.
+ * BugsSite/template/en/default/bug/navigate.html.tmpl: Removed.
+ * BugsSite/template/en/default/bug/process: Removed.
+ * BugsSite/template/en/default/bug/process/bugmail.html.tmpl: Removed.
+ * BugsSite/template/en/default/bug/process/confirm-duplicate.html.tmpl: Removed.
+ * BugsSite/template/en/default/bug/process/header.html.tmpl: Removed.
+ * BugsSite/template/en/default/bug/process/midair.html.tmpl: Removed.
+ * BugsSite/template/en/default/bug/process/results.html.tmpl: Removed.
+ * BugsSite/template/en/default/bug/process/verify-new-product.html.tmpl: Removed.
+ * BugsSite/template/en/default/bug/show-multiple.html.tmpl: Removed.
+ * BugsSite/template/en/default/bug/show.html.tmpl: Removed.
+ * BugsSite/template/en/default/bug/show.xml.tmpl: Removed.
+ * BugsSite/template/en/default/bug/summarize-time.html.tmpl: Removed.
+ * BugsSite/template/en/default/bug/time.html.tmpl: Removed.
+ * BugsSite/template/en/default/bug/votes: Removed.
+ * BugsSite/template/en/default/bug/votes/delete-all.html.tmpl: Removed.
+ * BugsSite/template/en/default/bug/votes/list-for-bug.html.tmpl: Removed.
+ * BugsSite/template/en/default/bug/votes/list-for-user.html.tmpl: Removed.
+ * BugsSite/template/en/default/config.js.tmpl: Removed.
+ * BugsSite/template/en/default/config.rdf.tmpl: Removed.
+ * BugsSite/template/en/default/email: Removed.
+ * BugsSite/template/en/default/email/newchangedmail.txt.tmpl: Removed.
+ * BugsSite/template/en/default/email/sanitycheck.txt.tmpl: Removed.
+ * BugsSite/template/en/default/email/sudo.txt.tmpl: Removed.
+ * BugsSite/template/en/default/email/votes-removed.txt.tmpl: Removed.
+ * BugsSite/template/en/default/email/whine.txt.tmpl: Removed.
+ * BugsSite/template/en/default/filterexceptions.pl: Removed.
+ * BugsSite/template/en/default/flag: Removed.
+ * BugsSite/template/en/default/flag/list.html.tmpl: Removed.
+ * BugsSite/template/en/default/global: Removed.
+ * BugsSite/template/en/default/global/banner.html.tmpl: Removed.
+ * BugsSite/template/en/default/global/choose-classification.html.tmpl: Removed.
+ * BugsSite/template/en/default/global/choose-product.html.tmpl: Removed.
+ * BugsSite/template/en/default/global/code-error.html.tmpl: Removed.
+ * BugsSite/template/en/default/global/common-links.html.tmpl: Removed.
+ * BugsSite/template/en/default/global/confirm-action.html.tmpl: Removed.
+ * BugsSite/template/en/default/global/confirm-user-match.html.tmpl: Removed.
+ * BugsSite/template/en/default/global/docslinks.html.tmpl: Removed.
+ * BugsSite/template/en/default/global/field-descs.none.tmpl: Removed.
+ * BugsSite/template/en/default/global/footer.html.tmpl: Removed.
+ * BugsSite/template/en/default/global/header.html.tmpl: Removed.
+ * BugsSite/template/en/default/global/help.html.tmpl: Removed.
+ * BugsSite/template/en/default/global/hidden-fields.html.tmpl: Removed.
+ * BugsSite/template/en/default/global/initialize.none.tmpl: Removed.
+ * BugsSite/template/en/default/global/js-products.html.tmpl: Removed.
+ * BugsSite/template/en/default/global/message.html.tmpl: Removed.
+ * BugsSite/template/en/default/global/message.txt.tmpl: Removed.
+ * BugsSite/template/en/default/global/messages.html.tmpl: Removed.
+ * BugsSite/template/en/default/global/per-bug-queries.html.tmpl: Removed.
+ * BugsSite/template/en/default/global/select-menu.html.tmpl: Removed.
+ * BugsSite/template/en/default/global/setting-descs.none.tmpl: Removed.
+ * BugsSite/template/en/default/global/site-navigation.html.tmpl: Removed.
+ * BugsSite/template/en/default/global/tabs.html.tmpl: Removed.
+ * BugsSite/template/en/default/global/textarea.html.tmpl: Removed.
+ * BugsSite/template/en/default/global/useful-links.html.tmpl: Removed.
+ * BugsSite/template/en/default/global/user-error.html.tmpl: Removed.
+ * BugsSite/template/en/default/global/userselect.html.tmpl: Removed.
+ * BugsSite/template/en/default/global/variables.none.tmpl: Removed.
+ * BugsSite/template/en/default/index.html.tmpl: Removed.
+ * BugsSite/template/en/default/list: Removed.
+ * BugsSite/template/en/default/list/change-columns.html.tmpl: Removed.
+ * BugsSite/template/en/default/list/edit-multiple.html.tmpl: Removed.
+ * BugsSite/template/en/default/list/list-simple.html.tmpl: Removed.
+ * BugsSite/template/en/default/list/list.atom.tmpl: Removed.
+ * BugsSite/template/en/default/list/list.csv.tmpl: Removed.
+ * BugsSite/template/en/default/list/list.html.tmpl: Removed.
+ * BugsSite/template/en/default/list/list.ics.tmpl: Removed.
+ * BugsSite/template/en/default/list/list.js.tmpl: Removed.
+ * BugsSite/template/en/default/list/list.rdf.tmpl: Removed.
+ * BugsSite/template/en/default/list/quips.html.tmpl: Removed.
+ * BugsSite/template/en/default/list/server-push.html.tmpl: Removed.
+ * BugsSite/template/en/default/list/table.html.tmpl: Removed.
+ * BugsSite/template/en/default/pages: Removed.
+ * BugsSite/template/en/default/pages/bug-writing.html.tmpl: Removed.
+ * BugsSite/template/en/default/pages/fields.html.tmpl: Removed.
+ * BugsSite/template/en/default/pages/linked.html.tmpl: Removed.
+ * BugsSite/template/en/default/pages/linkify.html.tmpl: Removed.
+ * BugsSite/template/en/default/pages/quicksearch.html.tmpl: Removed.
+ * BugsSite/template/en/default/pages/quicksearchhack.html.tmpl: Removed.
+ * BugsSite/template/en/default/pages/release-notes.html.tmpl: Removed.
+ * BugsSite/template/en/default/pages/sudo.html.tmpl: Removed.
+ * BugsSite/template/en/default/pages/voting.html.tmpl: Removed.
+ * BugsSite/template/en/default/reports: Removed.
+ * BugsSite/template/en/default/reports/chart.csv.tmpl: Removed.
+ * BugsSite/template/en/default/reports/chart.html.tmpl: Removed.
+ * BugsSite/template/en/default/reports/chart.png.tmpl: Removed.
+ * BugsSite/template/en/default/reports/components.html.tmpl: Removed.
+ * BugsSite/template/en/default/reports/create-chart.html.tmpl: Removed.
+ * BugsSite/template/en/default/reports/duplicates-simple.html.tmpl: Removed.
+ * BugsSite/template/en/default/reports/duplicates-table.html.tmpl: Removed.
+ * BugsSite/template/en/default/reports/duplicates.html.tmpl: Removed.
+ * BugsSite/template/en/default/reports/edit-series.html.tmpl: Removed.
+ * BugsSite/template/en/default/reports/keywords.html.tmpl: Removed.
+ * BugsSite/template/en/default/reports/menu.html.tmpl: Removed.
+ * BugsSite/template/en/default/reports/old-charts.html.tmpl: Removed.
+ * BugsSite/template/en/default/reports/report-bar.png.tmpl: Removed.
+ * BugsSite/template/en/default/reports/report-line.png.tmpl: Removed.
+ * BugsSite/template/en/default/reports/report-pie.png.tmpl: Removed.
+ * BugsSite/template/en/default/reports/report-simple.html.tmpl: Removed.
+ * BugsSite/template/en/default/reports/report-table.csv.tmpl: Removed.
+ * BugsSite/template/en/default/reports/report-table.html.tmpl: Removed.
+ * BugsSite/template/en/default/reports/report.csv.tmpl: Removed.
+ * BugsSite/template/en/default/reports/report.html.tmpl: Removed.
+ * BugsSite/template/en/default/reports/series-common.html.tmpl: Removed.
+ * BugsSite/template/en/default/reports/series.html.tmpl: Removed.
+ * BugsSite/template/en/default/request: Removed.
+ * BugsSite/template/en/default/request/email.txt.tmpl: Removed.
+ * BugsSite/template/en/default/request/queue.html.tmpl: Removed.
+ * BugsSite/template/en/default/search: Removed.
+ * BugsSite/template/en/default/search/boolean-charts.html.tmpl: Removed.
+ * BugsSite/template/en/default/search/form.html.tmpl: Removed.
+ * BugsSite/template/en/default/search/knob.html.tmpl: Removed.
+ * BugsSite/template/en/default/search/search-advanced.html.tmpl: Removed.
+ * BugsSite/template/en/default/search/search-create-series.html.tmpl: Removed.
+ * BugsSite/template/en/default/search/search-help.html.tmpl: Removed.
+ * BugsSite/template/en/default/search/search-plugin.xml.tmpl: Removed.
+ * BugsSite/template/en/default/search/search-report-graph.html.tmpl: Removed.
+ * BugsSite/template/en/default/search/search-report-select.html.tmpl: Removed.
+ * BugsSite/template/en/default/search/search-report-table.html.tmpl: Removed.
+ * BugsSite/template/en/default/search/search-specific.html.tmpl: Removed.
+ * BugsSite/template/en/default/search/tabs.html.tmpl: Removed.
+ * BugsSite/template/en/default/setup: Removed.
+ * BugsSite/template/en/default/setup/strings.txt.pl: Removed.
+ * BugsSite/template/en/default/sidebar.xul.tmpl: Removed.
+ * BugsSite/template/en/default/welcome-admin.html.tmpl: Removed.
+ * BugsSite/template/en/default/whine: Removed.
+ * BugsSite/template/en/default/whine/mail.html.tmpl: Removed.
+ * BugsSite/template/en/default/whine/mail.txt.tmpl: Removed.
+ * BugsSite/template/en/default/whine/multipart-mime.txt.tmpl: Removed.
+ * BugsSite/template/en/default/whine/schedule.html.tmpl: Removed.
+ * BugsSite/template/en/extension: Removed.
+ * BugsSite/template/en/extension/filterexceptions.pl: Removed.
+ * BugsSite/testagent.cgi: Removed.
+ * BugsSite/testserver.pl: Removed.
+ * BugsSite/token.cgi: Removed.
+ * BugsSite/userprefs.cgi: Removed.
+ * BugsSite/votes.cgi: Removed.
+ * BugsSite/whine.pl: Removed.
+ * BugsSite/whineatnews.pl: Removed.
+ * BugsSite/xml.cgi: Removed.
+ * BugsSite/xmlrpc.cgi: Removed.
+ * PlanetWebKit: Removed.
+ * PlanetWebKit/README: Removed.
+ * PlanetWebKit/config.ini: Removed.
+ * PlanetWebKit/planet: Removed.
+ * PlanetWebKit/planet/AUTHORS: Removed.
+ * PlanetWebKit/planet/INSTALL: Removed.
+ * PlanetWebKit/planet/LICENCE: Removed.
+ * PlanetWebKit/planet/NEWS: Removed.
+ * PlanetWebKit/planet/PKG-INFO: Removed.
+ * PlanetWebKit/planet/README: Removed.
+ * PlanetWebKit/planet/THANKS: Removed.
+ * PlanetWebKit/planet/TODO: Removed.
+ * PlanetWebKit/planet/examples: Removed.
+ * PlanetWebKit/planet/examples/atom.xml.tmpl: Removed.
+ * PlanetWebKit/planet/examples/basic: Removed.
+ * PlanetWebKit/planet/examples/basic/config.ini: Removed.
+ * PlanetWebKit/planet/examples/basic/index.html.tmpl: Removed.
+ * PlanetWebKit/planet/examples/fancy: Removed.
+ * PlanetWebKit/planet/examples/fancy/config.ini: Removed.
+ * PlanetWebKit/planet/examples/fancy/index.html.tmpl: Removed.
+ * PlanetWebKit/planet/examples/foafroll.xml.tmpl: Removed.
+ * PlanetWebKit/planet/examples/opml.xml.tmpl: Removed.
+ * PlanetWebKit/planet/examples/output: Removed.
+ * PlanetWebKit/planet/examples/output/images: Removed.
+ * PlanetWebKit/planet/examples/output/images/edd.png: Removed.
+ * PlanetWebKit/planet/examples/output/images/evolution.png: Removed.
+ * PlanetWebKit/planet/examples/output/images/feed-icon-10x10.png: Removed.
+ * PlanetWebKit/planet/examples/output/images/jdub.png: Removed.
+ * PlanetWebKit/planet/examples/output/images/keybuk.png: Removed.
+ * PlanetWebKit/planet/examples/output/images/logo.png: Removed.
+ * PlanetWebKit/planet/examples/output/images/opml.png: Removed.
+ * PlanetWebKit/planet/examples/output/images/planet.png: Removed.
+ * PlanetWebKit/planet/examples/output/images/thom.png: Removed.
+ * PlanetWebKit/planet/examples/output/planet.css: Removed.
+ * PlanetWebKit/planet/examples/rss10.xml.tmpl: Removed.
+ * PlanetWebKit/planet/examples/rss20.xml.tmpl: Removed.
+ * PlanetWebKit/planet/planet: Removed.
+ * PlanetWebKit/planet/planet-cache.py: Removed.
+ * PlanetWebKit/planet/planet.py: Removed.
+ * PlanetWebKit/planet/planet/__init__.py: Removed.
+ * PlanetWebKit/planet/planet/atomstyler.py: Removed.
+ * PlanetWebKit/planet/planet/cache.py: Removed.
+ * PlanetWebKit/planet/planet/compat_logging: Removed.
+ * PlanetWebKit/planet/planet/compat_logging/__init__.py: Removed.
+ * PlanetWebKit/planet/planet/compat_logging/config.py: Removed.
+ * PlanetWebKit/planet/planet/compat_logging/handlers.py: Removed.
+ * PlanetWebKit/planet/planet/feedparser.py: Removed.
+ * PlanetWebKit/planet/planet/htmltmpl.py: Removed.
+ * PlanetWebKit/planet/planet/sanitize.py: Removed.
+ * PlanetWebKit/planet/planet/tests: Removed.
+ * PlanetWebKit/planet/planet/tests/__init__.py: Removed.
+ * PlanetWebKit/planet/planet/tests/data: Removed.
+ * PlanetWebKit/planet/planet/tests/data/simple.tmpl: Removed.
+ * PlanetWebKit/planet/planet/tests/data/simple2.tmpl: Removed.
+ * PlanetWebKit/planet/planet/tests/test_channel.py: Removed.
+ * PlanetWebKit/planet/planet/tests/test_main.py: Removed.
+ * PlanetWebKit/planet/planet/tests/test_sanitize.py: Removed.
+ * PlanetWebKit/planet/planet/tests/test_sub.py: Removed.
+ * PlanetWebKit/planet/planet/timeoutsocket.py: Removed.
+ * PlanetWebKit/planet/runtests.py: Removed.
+ * PlanetWebKit/planet/setup.py: Removed.
+ * PlanetWebKit/templates: Removed.
+ * PlanetWebKit/templates/atom.xml.tmpl: Removed.
+ * PlanetWebKit/templates/foafroll.xml.tmpl: Removed.
+ * PlanetWebKit/templates/index.html.tmpl: Removed.
+ * PlanetWebKit/templates/opml.xml.tmpl: Removed.
+ * PlanetWebKit/templates/rss10.xml.tmpl: Removed.
+ * PlanetWebKit/templates/rss20.xml.tmpl: Removed.
+ * PlanetWebKit/update.pl: Removed.
+ * PlanetWebKit/wwwroot: Removed.
+ * PlanetWebKit/wwwroot/ie.css: Removed.
+ * PlanetWebKit/wwwroot/images: Removed.
+ * PlanetWebKit/wwwroot/images/feed-icon-10x10.png: Removed.
+ * PlanetWebKit/wwwroot/images/ie-nav-blue.png: Removed.
+ * PlanetWebKit/wwwroot/images/planet-webkit.png: Removed.
+ * PlanetWebKit/wwwroot/images/planet.png: Removed.
+ * PlanetWebKit/wwwroot/planet.css: Removed.
+ * PlanetWebKit/wwwroot/planetwebkit.css: Removed.
+ * Sites: Added.
+ * Sites/bugs.webkit.org: Copied from BugsSite.
+ * Sites/planet.webkit.org: Copied from PlanetWebKit.
+ * Sites/webkit.org: Copied from WebKitSite.
+ * WebKitSite: Removed.
+ * WebKitSite/.htaccess: Removed.
+ * WebKitSite/asking_questions.html: Removed.
+ * WebKitSite/blog: Removed.
+ * WebKitSite/blog-files: Removed.
+ * WebKitSite/blog-files/3d-transforms: Removed.
+ * WebKitSite/blog-files/3d-transforms/image-flip.html: Removed.
+ * WebKitSite/blog-files/3d-transforms/mighty-cubes.png: Removed.
+ * WebKitSite/blog-files/3d-transforms/morphing-cubes.html: Removed.
+ * WebKitSite/blog-files/3d-transforms/perspective-by-example.html: Removed.
+ * WebKitSite/blog-files/3d-transforms/poster-circle.html: Removed.
+ * WebKitSite/blog-files/3d-transforms/poster-circle.png: Removed.
+ * WebKitSite/blog-files/3d-transforms/transform-style.html: Removed.
+ * WebKitSite/blog-files/InspectElementMenu.png: Removed.
+ * WebKitSite/blog-files/InspectorCSSEditing.png: Removed.
+ * WebKitSite/blog-files/InspectorDatabaseBrowser.png: Removed.
+ * WebKitSite/blog-files/InspectorFonts.png: Removed.
+ * WebKitSite/blog-files/acid3-100.png: Removed.
+ * WebKitSite/blog-files/acid3-full-rendering-pass.png: Removed.
+ * WebKitSite/blog-files/acid3-rendering-reference.png: Removed.
+ * WebKitSite/blog-files/acid3-screenshot.png: Removed.
+ * WebKitSite/blog-files/acid3-timing-screenshot.png: Removed.
+ * WebKitSite/blog-files/acid3-timing.png: Removed.
+ * WebKitSite/blog-files/animation-demo.svg: Removed.
+ * WebKitSite/blog-files/bounce.html: Removed.
+ * WebKitSite/blog-files/bounce.png: Removed.
+ * WebKitSite/blog-files/circle.svg: Removed.
+ * WebKitSite/blog-files/cubes-7.svg: Removed.
+ * WebKitSite/blog-files/gebcnspeedtest.html: Removed.
+ * WebKitSite/blog-files/gebcnwebkitonly.png: Removed.
+ * WebKitSite/blog-files/inspector: Removed.
+ * WebKitSite/blog-files/inspector-closure-scope.png: Removed.
+ * WebKitSite/blog-files/inspector-console-autocomplete.png: Removed.
+ * WebKitSite/blog-files/inspector-databases-panel-query-view.png: Removed.
+ * WebKitSite/blog-files/inspector-databases-panel.png: Removed.
+ * WebKitSite/blog-files/inspector-disabling-properties.png: Removed.
+ * WebKitSite/blog-files/inspector-elements-panel.png: Removed.
+ * WebKitSite/blog-files/inspector-event-scope.png: Removed.
+ * WebKitSite/blog-files/inspector-numeric-style-stepping.gif: Removed.
+ * WebKitSite/blog-files/inspector-profiles-panel.png: Removed.
+ * WebKitSite/blog-files/inspector-resources-panel.png: Removed.
+ * WebKitSite/blog-files/inspector-scripts-panel.png: Removed.
+ * WebKitSite/blog-files/inspector-searching-elements.png: Removed.
+ * WebKitSite/blog-files/inspector-searching-profiles.png: Removed.
+ * WebKitSite/blog-files/inspector-status-bar-with-errors.png: Removed.
+ * WebKitSite/blog-files/inspector-toolbar.png: Removed.
+ * WebKitSite/blog-files/inspector-with-scope.png: Removed.
+ * WebKitSite/blog-files/inspector/audits_launcher.png: Removed.
+ * WebKitSite/blog-files/inspector/audits_panel.png: Removed.
+ * WebKitSite/blog-files/inspector/breakpoints.png: Removed.
+ * WebKitSite/blog-files/inspector/colors.png: Removed.
+ * WebKitSite/blog-files/inspector/console_panel.png: Removed.
+ * WebKitSite/blog-files/inspector/context_menu.png: Removed.
+ * WebKitSite/blog-files/inspector/cookies.png: Removed.
+ * WebKitSite/blog-files/inspector/css_highlighted_line.png: Removed.
+ * WebKitSite/blog-files/inspector/css_line_number_snippet.png: Removed.
+ * WebKitSite/blog-files/inspector/css_line_numbers.png: Removed.
+ * WebKitSite/blog-files/inspector/css_selectors.png: Removed.
+ * WebKitSite/blog-files/inspector/css_syntax_highlight.png: Removed.
+ * WebKitSite/blog-files/inspector/deactivate_breakpoints.png: Removed.
+ * WebKitSite/blog-files/inspector/dom_storage.png: Removed.
+ * WebKitSite/blog-files/inspector/edit_attributes.png: Removed.
+ * WebKitSite/blog-files/inspector/enable.png: Removed.
+ * WebKitSite/blog-files/inspector/evaluate_on_hover.png: Removed.
+ * WebKitSite/blog-files/inspector/evaluate_on_hover_2.png: Removed.
+ * WebKitSite/blog-files/inspector/event_listeners.png: Removed.
+ * WebKitSite/blog-files/inspector/form_data.png: Removed.
+ * WebKitSite/blog-files/inspector/inherited_styles.png: Removed.
+ * WebKitSite/blog-files/inspector/inline_highlight.png: Removed.
+ * WebKitSite/blog-files/inspector/inorder.png: Removed.
+ * WebKitSite/blog-files/inspector/inspect_inspector.png: Removed.
+ * WebKitSite/blog-files/inspector/inspect_inspector_small.png: Removed.
+ * WebKitSite/blog-files/inspector/large_dom.png: Removed.
+ * WebKitSite/blog-files/inspector/large_resources.png: Removed.
+ * WebKitSite/blog-files/inspector/load_lines.png: Removed.
+ * WebKitSite/blog-files/inspector/nodelist.png: Removed.
+ * WebKitSite/blog-files/inspector/pseudo_elements.png: Removed.
+ * WebKitSite/blog-files/inspector/redirect_headers.png: Removed.
+ * WebKitSite/blog-files/inspector/redirect_headers_full.png: Removed.
+ * WebKitSite/blog-files/inspector/redirects.png: Removed.
+ * WebKitSite/blog-files/inspector/redirects_full.png: Removed.
+ * WebKitSite/blog-files/inspector/scope_bar.png: Removed.
+ * WebKitSite/blog-files/inspector/timeline_overview.png: Removed.
+ * WebKitSite/blog-files/inspector/timeline_panel.png: Removed.
+ * WebKitSite/blog-files/inspector/timeline_record_details.png: Removed.
+ * WebKitSite/blog-files/inspector/watched_expression.png: Removed.
+ * WebKitSite/blog-files/kate-circle.png: Removed.
+ * WebKitSite/blog-files/kate-gradient-rounded.png: Removed.
+ * WebKitSite/blog-files/kate-gradient.png: Removed.
+ * WebKitSite/blog-files/kate-reflected.png: Removed.
+ * WebKitSite/blog-files/kate-vignette-mask.png: Removed.
+ * WebKitSite/blog-files/kate.png: Removed.
+ * WebKitSite/blog-files/leaves: Removed.
+ * WebKitSite/blog-files/leaves-screenshot-small.jpg: Removed.
+ * WebKitSite/blog-files/leaves-screenshot.jpg: Removed.
+ * WebKitSite/blog-files/leaves/images: Removed.
+ * WebKitSite/blog-files/leaves/images/apple-touch-icon.png: Removed.
+ * WebKitSite/blog-files/leaves/images/backgroundLeaves.jpg: Removed.
+ * WebKitSite/blog-files/leaves/images/realLeaf1.png: Removed.
+ * WebKitSite/blog-files/leaves/images/realLeaf2.png: Removed.
+ * WebKitSite/blog-files/leaves/images/realLeaf3.png: Removed.
+ * WebKitSite/blog-files/leaves/images/realLeaf4.png: Removed.
+ * WebKitSite/blog-files/leaves/images/textBackground.png: Removed.
+ * WebKitSite/blog-files/leaves/index.html: Removed.
+ * WebKitSite/blog-files/leaves/leaves.css: Removed.
+ * WebKitSite/blog-files/leaves/leaves.js: Removed.
+ * WebKitSite/blog-files/load-unload-example.html: Removed.
+ * WebKitSite/blog-files/loader-diagram.svg: Removed.
+ * WebKitSite/blog-files/maskspeedracer.png: Removed.
+ * WebKitSite/blog-files/number-morph.svg: Removed.
+ * WebKitSite/blog-files/pageshow-pagehide-example.html: Removed.
+ * WebKitSite/blog-files/prototype-for-gebcn-test.js: Removed.
+ * WebKitSite/blog-files/pulse.html: Removed.
+ * WebKitSite/blog-files/pulse.png: Removed.
+ * WebKitSite/blog-files/riemann-screenshot.png: Removed.
+ * WebKitSite/blog-files/scrollbarpicture.png: Removed.
+ * WebKitSite/blog-files/sfx-perf.png: Removed.
+ * WebKitSite/blog-files/squirrelfish-link-animated.svg: Removed.
+ * WebKitSite/blog-files/squirrelfish-webkit-graph.png: Removed.
+ * WebKitSite/blog-files/squirrelfish.png: Removed.
+ * WebKitSite/blog-files/timeline-blocking-script.png: Removed.
+ * WebKitSite/blog-files/timeline-defer-script.png: Removed.
+ * WebKitSite/blog-files/touch-poster.png: Removed.
+ * WebKitSite/blog-files/vignette-mask.png: Removed.
+ * WebKitSite/blog-files/webgl: Removed.
+ * WebKitSite/blog-files/webgl/Earth.html: Removed.
+ * WebKitSite/blog-files/webgl/ManyPlanetsDeep.html: Removed.
+ * WebKitSite/blog-files/webgl/SpinningBox.html: Removed.
+ * WebKitSite/blog-files/webgl/SpiritBox.html: Removed.
+ * WebKitSite/blog-files/webgl/TeapotPerPixel.html: Removed.
+ * WebKitSite/blog-files/webgl/TeapotPerVertex.html: Removed.
+ * WebKitSite/blog-files/webgl/WebGL+CSS.html: Removed.
+ * WebKitSite/blog-files/webgl/resources: Removed.
+ * WebKitSite/blog-files/webgl/resources/BambooBridge.jpg: Removed.
+ * WebKitSite/blog-files/webgl/resources/EarthThumb.jpg: Removed.
+ * WebKitSite/blog-files/webgl/resources/J3DI.js: Removed.
+ * WebKitSite/blog-files/webgl/resources/J3DIMath.js: Removed.
+ * WebKitSite/blog-files/webgl/resources/ManyPlanetsDeepThumb.jpg: Removed.
+ * WebKitSite/blog-files/webgl/resources/SpinningBoxThumb.jpg: Removed.
+ * WebKitSite/blog-files/webgl/resources/SpiritBox.jpg: Removed.
+ * WebKitSite/blog-files/webgl/resources/TeapotPerPixelThumb.jpg: Removed.
+ * WebKitSite/blog-files/webgl/resources/TeapotPerVertexThumb.jpg: Removed.
+ * WebKitSite/blog-files/webgl/resources/WebGL+CSSThumb.jpg: Removed.
+ * WebKitSite/blog-files/webgl/resources/blogpost.css: Removed.
+ * WebKitSite/blog-files/webgl/resources/earthmap1k.jpg: Removed.
+ * WebKitSite/blog-files/webgl/resources/mars500x250.png: Removed.
+ * WebKitSite/blog-files/webgl/resources/spirit.jpg: Removed.
+ * WebKitSite/blog-files/webgl/resources/teapot.obj: Removed.
+ * WebKitSite/blog-files/wsj-nopreload.png: Removed.
+ * WebKitSite/blog-files/wsj-preload.png: Removed.
+ * WebKitSite/blog-files/wsj-vs.png: Removed.
+ * WebKitSite/blog/.htaccess: Removed.
+ * WebKitSite/blog/index.php: Removed.
+ * WebKitSite/blog/license.txt: Removed.
+ * WebKitSite/blog/wp-admin: Removed.
+ * WebKitSite/blog/wp-admin/admin-ajax.php: Removed.
+ * WebKitSite/blog/wp-admin/admin-footer.php: Removed.
+ * WebKitSite/blog/wp-admin/admin-functions.php: Removed.
+ * WebKitSite/blog/wp-admin/admin-header.php: Removed.
+ * WebKitSite/blog/wp-admin/admin-post.php: Removed.
+ * WebKitSite/blog/wp-admin/admin.php: Removed.
+ * WebKitSite/blog/wp-admin/async-upload.php: Removed.
+ * WebKitSite/blog/wp-admin/categories.php: Removed.
+ * WebKitSite/blog/wp-admin/comment.php: Removed.
+ * WebKitSite/blog/wp-admin/css: Removed.
+ * WebKitSite/blog/wp-admin/css/colors-classic-rtl.css: Removed.
+ * WebKitSite/blog/wp-admin/css/colors-classic.css: Removed.
+ * WebKitSite/blog/wp-admin/css/colors-fresh-rtl.css: Removed.
+ * WebKitSite/blog/wp-admin/css/colors-fresh.css: Removed.
+ * WebKitSite/blog/wp-admin/css/dashboard-rtl.css: Removed.
+ * WebKitSite/blog/wp-admin/css/dashboard.css: Removed.
+ * WebKitSite/blog/wp-admin/css/farbtastic-rtl.css: Removed.
+ * WebKitSite/blog/wp-admin/css/farbtastic.css: Removed.
+ * WebKitSite/blog/wp-admin/css/global-rtl.css: Removed.
+ * WebKitSite/blog/wp-admin/css/global.css: Removed.
+ * WebKitSite/blog/wp-admin/css/ie-rtl.css: Removed.
+ * WebKitSite/blog/wp-admin/css/ie.css: Removed.
+ * WebKitSite/blog/wp-admin/css/install-rtl.css: Removed.
+ * WebKitSite/blog/wp-admin/css/install.css: Removed.
+ * WebKitSite/blog/wp-admin/css/login-rtl.css: Removed.
+ * WebKitSite/blog/wp-admin/css/login.css: Removed.
+ * WebKitSite/blog/wp-admin/css/media-rtl.css: Removed.
+ * WebKitSite/blog/wp-admin/css/media.css: Removed.
+ * WebKitSite/blog/wp-admin/css/plugin-install-rtl.css: Removed.
+ * WebKitSite/blog/wp-admin/css/plugin-install.css: Removed.
+ * WebKitSite/blog/wp-admin/css/press-this-rtl.css: Removed.
+ * WebKitSite/blog/wp-admin/css/press-this.css: Removed.
+ * WebKitSite/blog/wp-admin/css/theme-editor-rtl.css: Removed.
+ * WebKitSite/blog/wp-admin/css/theme-editor.css: Removed.
+ * WebKitSite/blog/wp-admin/css/theme-install.css: Removed.
+ * WebKitSite/blog/wp-admin/css/widgets-rtl.css: Removed.
+ * WebKitSite/blog/wp-admin/css/widgets.css: Removed.
+ * WebKitSite/blog/wp-admin/custom-header.php: Removed.
+ * WebKitSite/blog/wp-admin/edit-attachment-rows.php: Removed.
+ * WebKitSite/blog/wp-admin/edit-category-form.php: Removed.
+ * WebKitSite/blog/wp-admin/edit-comments.php: Removed.
+ * WebKitSite/blog/wp-admin/edit-form-advanced.php: Removed.
+ * WebKitSite/blog/wp-admin/edit-form-comment.php: Removed.
+ * WebKitSite/blog/wp-admin/edit-link-categories.php: Removed.
+ * WebKitSite/blog/wp-admin/edit-link-category-form.php: Removed.
+ * WebKitSite/blog/wp-admin/edit-link-form.php: Removed.
+ * WebKitSite/blog/wp-admin/edit-page-form.php: Removed.
+ * WebKitSite/blog/wp-admin/edit-pages.php: Removed.
+ * WebKitSite/blog/wp-admin/edit-post-rows.php: Removed.
+ * WebKitSite/blog/wp-admin/edit-tag-form.php: Removed.
+ * WebKitSite/blog/wp-admin/edit-tags.php: Removed.
+ * WebKitSite/blog/wp-admin/edit.php: Removed.
+ * WebKitSite/blog/wp-admin/export.php: Removed.
+ * WebKitSite/blog/wp-admin/gears-manifest.php: Removed.
+ * WebKitSite/blog/wp-admin/images: Removed.
+ * WebKitSite/blog/wp-admin/images/align-center.png: Removed.
+ * WebKitSite/blog/wp-admin/images/align-left.png: Removed.
+ * WebKitSite/blog/wp-admin/images/align-none.png: Removed.
+ * WebKitSite/blog/wp-admin/images/align-right.png: Removed.
+ * WebKitSite/blog/wp-admin/images/archive-link.png: Removed.
+ * WebKitSite/blog/wp-admin/images/blue-grad.png: Removed.
+ * WebKitSite/blog/wp-admin/images/browse-happy.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/bubble_bg-rtl.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/bubble_bg.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/button-grad-active-vs.png: Removed.
+ * WebKitSite/blog/wp-admin/images/button-grad-active.png: Removed.
+ * WebKitSite/blog/wp-admin/images/button-grad-vs.png: Removed.
+ * WebKitSite/blog/wp-admin/images/button-grad.png: Removed.
+ * WebKitSite/blog/wp-admin/images/comment-grey-bubble.png: Removed.
+ * WebKitSite/blog/wp-admin/images/date-button.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/ed-bg-vs.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/ed-bg.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/fade-butt.png: Removed.
+ * WebKitSite/blog/wp-admin/images/fav-arrow-rtl.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/fav-arrow-vs.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/fav-arrow.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/fav-top-vs.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/fav-top.png: Removed.
+ * WebKitSite/blog/wp-admin/images/fav-vs.png: Removed.
+ * WebKitSite/blog/wp-admin/images/fav.png: Removed.
+ * WebKitSite/blog/wp-admin/images/generic.png: Removed.
+ * WebKitSite/blog/wp-admin/images/gray-grad.png: Removed.
+ * WebKitSite/blog/wp-admin/images/icons32-vs.png: Removed.
+ * WebKitSite/blog/wp-admin/images/icons32.png: Removed.
+ * WebKitSite/blog/wp-admin/images/list-vs.png: Removed.
+ * WebKitSite/blog/wp-admin/images/list.png: Removed.
+ * WebKitSite/blog/wp-admin/images/loading-publish.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/loading.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/logo-ghost.png: Removed.
+ * WebKitSite/blog/wp-admin/images/logo-login.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/logo.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/marker.png: Removed.
+ * WebKitSite/blog/wp-admin/images/mask.png: Removed.
+ * WebKitSite/blog/wp-admin/images/media-button-image.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/media-button-music.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/media-button-other.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/media-button-video.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/menu-arrows.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/menu-bits-rtl-vs.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/menu-bits-rtl.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/menu-bits-vs.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/menu-bits.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/menu-dark-rtl.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/menu-dark.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/menu-vs.png: Removed.
+ * WebKitSite/blog/wp-admin/images/menu.png: Removed.
+ * WebKitSite/blog/wp-admin/images/no.png: Removed.
+ * WebKitSite/blog/wp-admin/images/required.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/resize.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/screen-options-left.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/screen-options-right-up.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/screen-options-right.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/se.png: Removed.
+ * WebKitSite/blog/wp-admin/images/star.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/toggle-arrow-rtl.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/toggle-arrow.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/visit-site-button-grad-vs.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/visit-site-button-grad.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/wheel.png: Removed.
+ * WebKitSite/blog/wp-admin/images/white-grad-active.png: Removed.
+ * WebKitSite/blog/wp-admin/images/white-grad.png: Removed.
+ * WebKitSite/blog/wp-admin/images/wordpress-logo.png: Removed.
+ * WebKitSite/blog/wp-admin/images/wp-logo-vs.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/wp-logo.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/wpspin_dark.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/wpspin_light.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/xit.gif: Removed.
+ * WebKitSite/blog/wp-admin/images/yes.png: Removed.
+ * WebKitSite/blog/wp-admin/import: Removed.
+ * WebKitSite/blog/wp-admin/import.php: Removed.
+ * WebKitSite/blog/wp-admin/import/blogger.php: Removed.
+ * WebKitSite/blog/wp-admin/import/blogware.php: Removed.
+ * WebKitSite/blog/wp-admin/import/dotclear.php: Removed.
+ * WebKitSite/blog/wp-admin/import/greymatter.php: Removed.
+ * WebKitSite/blog/wp-admin/import/livejournal.php: Removed.
+ * WebKitSite/blog/wp-admin/import/mt.php: Removed.
+ * WebKitSite/blog/wp-admin/import/opml.php: Removed.
+ * WebKitSite/blog/wp-admin/import/rss.php: Removed.
+ * WebKitSite/blog/wp-admin/import/stp.php: Removed.
+ * WebKitSite/blog/wp-admin/import/textpattern.php: Removed.
+ * WebKitSite/blog/wp-admin/import/utw.php: Removed.
+ * WebKitSite/blog/wp-admin/import/wordpress.php: Removed.
+ * WebKitSite/blog/wp-admin/import/wp-cat2tag.php: Removed.
+ * WebKitSite/blog/wp-admin/includes: Removed.
+ * WebKitSite/blog/wp-admin/includes/admin.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/bookmark.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/class-ftp-pure.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/class-ftp-sockets.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/class-ftp.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/class-pclzip.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/class-wp-filesystem-base.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/class-wp-filesystem-direct.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/class-wp-filesystem-ftpext.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/class-wp-filesystem-ftpsockets.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/class-wp-filesystem-ssh2.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/class-wp-upgrader.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/comment.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/continents-cities.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/dashboard.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/export.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/file.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/image.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/import.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/manifest.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/media.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/misc.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/plugin-install.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/plugin.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/post.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/schema.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/taxonomy.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/template.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/theme-install.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/theme.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/update-core.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/update.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/upgrade.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/user.php: Removed.
+ * WebKitSite/blog/wp-admin/includes/widgets.php: Removed.
+ * WebKitSite/blog/wp-admin/index-extra.php: Removed.
+ * WebKitSite/blog/wp-admin/index.php: Removed.
+ * WebKitSite/blog/wp-admin/install-helper.php: Removed.
+ * WebKitSite/blog/wp-admin/install.php: Removed.
+ * WebKitSite/blog/wp-admin/js: Removed.
+ * WebKitSite/blog/wp-admin/js/cat.dev.js: Removed.
+ * WebKitSite/blog/wp-admin/js/cat.js: Removed.
+ * WebKitSite/blog/wp-admin/js/categories.dev.js: Removed.
+ * WebKitSite/blog/wp-admin/js/categories.js: Removed.
+ * WebKitSite/blog/wp-admin/js/comment.dev.js: Removed.
+ * WebKitSite/blog/wp-admin/js/comment.js: Removed.
+ * WebKitSite/blog/wp-admin/js/common.dev.js: Removed.
+ * WebKitSite/blog/wp-admin/js/common.js: Removed.
+ * WebKitSite/blog/wp-admin/js/custom-fields.dev.js: Removed.
+ * WebKitSite/blog/wp-admin/js/custom-fields.js: Removed.
+ * WebKitSite/blog/wp-admin/js/dashboard.dev.js: Removed.
+ * WebKitSite/blog/wp-admin/js/dashboard.js: Removed.
+ * WebKitSite/blog/wp-admin/js/edit-comments.dev.js: Removed.
+ * WebKitSite/blog/wp-admin/js/edit-comments.js: Removed.
+ * WebKitSite/blog/wp-admin/js/editor.dev.js: Removed.
+ * WebKitSite/blog/wp-admin/js/editor.js: Removed.
+ * WebKitSite/blog/wp-admin/js/farbtastic.js: Removed.
+ * WebKitSite/blog/wp-admin/js/gallery.dev.js: Removed.
+ * WebKitSite/blog/wp-admin/js/gallery.js: Removed.
+ * WebKitSite/blog/wp-admin/js/inline-edit-post.dev.js: Removed.
+ * WebKitSite/blog/wp-admin/js/inline-edit-post.js: Removed.
+ * WebKitSite/blog/wp-admin/js/inline-edit-tax.dev.js: Removed.
+ * WebKitSite/blog/wp-admin/js/inline-edit-tax.js: Removed.
+ * WebKitSite/blog/wp-admin/js/link.dev.js: Removed.
+ * WebKitSite/blog/wp-admin/js/link.js: Removed.
+ * WebKitSite/blog/wp-admin/js/media-upload.dev.js: Removed.
+ * WebKitSite/blog/wp-admin/js/media-upload.js: Removed.
+ * WebKitSite/blog/wp-admin/js/media.dev.js: Removed.
+ * WebKitSite/blog/wp-admin/js/media.js: Removed.
+ * WebKitSite/blog/wp-admin/js/page.dev.js: Removed.
+ * WebKitSite/blog/wp-admin/js/page.js: Removed.
+ * WebKitSite/blog/wp-admin/js/password-strength-meter.dev.js: Removed.
+ * WebKitSite/blog/wp-admin/js/password-strength-meter.js: Removed.
+ * WebKitSite/blog/wp-admin/js/plugin-install.dev.js: Removed.
+ * WebKitSite/blog/wp-admin/js/plugin-install.js: Removed.
+ * WebKitSite/blog/wp-admin/js/post.dev.js: Removed.
+ * WebKitSite/blog/wp-admin/js/post.js: Removed.
+ * WebKitSite/blog/wp-admin/js/postbox.dev.js: Removed.
+ * WebKitSite/blog/wp-admin/js/postbox.js: Removed.
+ * WebKitSite/blog/wp-admin/js/revisions-js.php: Removed.
+ * WebKitSite/blog/wp-admin/js/slug.dev.js: Removed.
+ * WebKitSite/blog/wp-admin/js/slug.js: Removed.
+ * WebKitSite/blog/wp-admin/js/tags.dev.js: Removed.
+ * WebKitSite/blog/wp-admin/js/tags.js: Removed.
+ * WebKitSite/blog/wp-admin/js/theme-preview.dev.js: Removed.
+ * WebKitSite/blog/wp-admin/js/theme-preview.js: Removed.
+ * WebKitSite/blog/wp-admin/js/user-profile.dev.js: Removed.
+ * WebKitSite/blog/wp-admin/js/user-profile.js: Removed.
+ * WebKitSite/blog/wp-admin/js/utils.dev.js: Removed.
+ * WebKitSite/blog/wp-admin/js/utils.js: Removed.
+ * WebKitSite/blog/wp-admin/js/widgets.dev.js: Removed.
+ * WebKitSite/blog/wp-admin/js/widgets.js: Removed.
+ * WebKitSite/blog/wp-admin/js/word-count.dev.js: Removed.
+ * WebKitSite/blog/wp-admin/js/word-count.js: Removed.
+ * WebKitSite/blog/wp-admin/js/wp-gears.dev.js: Removed.
+ * WebKitSite/blog/wp-admin/js/wp-gears.js: Removed.
+ * WebKitSite/blog/wp-admin/js/xfn.dev.js: Removed.
+ * WebKitSite/blog/wp-admin/js/xfn.js: Removed.
+ * WebKitSite/blog/wp-admin/link-add.php: Removed.
+ * WebKitSite/blog/wp-admin/link-category.php: Removed.
+ * WebKitSite/blog/wp-admin/link-manager.php: Removed.
+ * WebKitSite/blog/wp-admin/link-parse-opml.php: Removed.
+ * WebKitSite/blog/wp-admin/link.php: Removed.
+ * WebKitSite/blog/wp-admin/load-scripts.php: Removed.
+ * WebKitSite/blog/wp-admin/load-styles.php: Removed.
+ * WebKitSite/blog/wp-admin/media-new.php: Removed.
+ * WebKitSite/blog/wp-admin/media-upload.php: Removed.
+ * WebKitSite/blog/wp-admin/media.php: Removed.
+ * WebKitSite/blog/wp-admin/menu-header.php: Removed.
+ * WebKitSite/blog/wp-admin/menu.php: Removed.
+ * WebKitSite/blog/wp-admin/moderation.php: Removed.
+ * WebKitSite/blog/wp-admin/options-discussion.php: Removed.
+ * WebKitSite/blog/wp-admin/options-general.php: Removed.
+ * WebKitSite/blog/wp-admin/options-head.php: Removed.
+ * WebKitSite/blog/wp-admin/options-media.php: Removed.
+ * WebKitSite/blog/wp-admin/options-misc.php: Removed.
+ * WebKitSite/blog/wp-admin/options-permalink.php: Removed.
+ * WebKitSite/blog/wp-admin/options-privacy.php: Removed.
+ * WebKitSite/blog/wp-admin/options-reading.php: Removed.
+ * WebKitSite/blog/wp-admin/options-writing.php: Removed.
+ * WebKitSite/blog/wp-admin/options.php: Removed.
+ * WebKitSite/blog/wp-admin/page-new.php: Removed.
+ * WebKitSite/blog/wp-admin/page.php: Removed.
+ * WebKitSite/blog/wp-admin/plugin-editor.php: Removed.
+ * WebKitSite/blog/wp-admin/plugin-install.php: Removed.
+ * WebKitSite/blog/wp-admin/plugins.php: Removed.
+ * WebKitSite/blog/wp-admin/post-new.php: Removed.
+ * WebKitSite/blog/wp-admin/post.php: Removed.
+ * WebKitSite/blog/wp-admin/press-this.php: Removed.
+ * WebKitSite/blog/wp-admin/profile.php: Removed.
+ * WebKitSite/blog/wp-admin/revision.php: Removed.
+ * WebKitSite/blog/wp-admin/rtl.css: Removed.
+ * WebKitSite/blog/wp-admin/setup-config.php: Removed.
+ * WebKitSite/blog/wp-admin/sidebar.php: Removed.
+ * WebKitSite/blog/wp-admin/theme-editor.php: Removed.
+ * WebKitSite/blog/wp-admin/theme-install.php: Removed.
+ * WebKitSite/blog/wp-admin/themes.php: Removed.
+ * WebKitSite/blog/wp-admin/tools.php: Removed.
+ * WebKitSite/blog/wp-admin/update-core.php: Removed.
+ * WebKitSite/blog/wp-admin/update-links.php: Removed.
+ * WebKitSite/blog/wp-admin/update.php: Removed.
+ * WebKitSite/blog/wp-admin/upgrade-functions.php: Removed.
+ * WebKitSite/blog/wp-admin/upgrade.php: Removed.
+ * WebKitSite/blog/wp-admin/upload.php: Removed.
+ * WebKitSite/blog/wp-admin/user-edit.php: Removed.
+ * WebKitSite/blog/wp-admin/user-new.php: Removed.
+ * WebKitSite/blog/wp-admin/users.php: Removed.
+ * WebKitSite/blog/wp-admin/widgets.php: Removed.
+ * WebKitSite/blog/wp-admin/wp-admin.css: Removed.
+ * WebKitSite/blog/wp-app.php: Removed.
+ * WebKitSite/blog/wp-atom.php: Removed.
+ * WebKitSite/blog/wp-blog-header.php: Removed.
+ * WebKitSite/blog/wp-comments-post.php: Removed.
+ * WebKitSite/blog/wp-commentsrss2.php: Removed.
+ * WebKitSite/blog/wp-config-sample.php: Removed.
+ * WebKitSite/blog/wp-config.php: Removed.
+ * WebKitSite/blog/wp-content: Removed.
+ * WebKitSite/blog/wp-content/Picture9.png: Removed.
+ * WebKitSite/blog/wp-content/cache: Removed.
+ * WebKitSite/blog/wp-content/chrome.jpg: Removed.
+ * WebKitSite/blog/wp-content/chucknorris.png: Removed.
+ * WebKitSite/blog/wp-content/databaseexample.png: Removed.
+ * WebKitSite/blog/wp-content/drosera.png: Removed.
+ * WebKitSite/blog/wp-content/hitlist.png: Removed.
+ * WebKitSite/blog/wp-content/index.php: Removed.
+ * WebKitSite/blog/wp-content/plugins: Removed.
+ * WebKitSite/blog/wp-content/plugins/SK2: Removed.
+ * WebKitSite/blog/wp-content/plugins/SK2/sk2_plugins: Removed.
+ * WebKitSite/blog/wp-content/plugins/akismet: Removed.
+ * WebKitSite/blog/wp-content/plugins/akismet/akismet.gif: Removed.
+ * WebKitSite/blog/wp-content/plugins/akismet/akismet.php: Removed.
+ * WebKitSite/blog/wp-content/plugins/akismet/readme.txt: Removed.
+ * WebKitSite/blog/wp-content/plugins/commentcontrol.php: Removed.
+ * WebKitSite/blog/wp-content/plugins/hello.php: Removed.
+ * WebKitSite/blog/wp-content/plugins/index.php: Removed.
+ * WebKitSite/blog/wp-content/plugins/wp-cache: Removed.
+ * WebKitSite/blog/wp-content/rotate.png: Removed.
+ * WebKitSite/blog/wp-content/rotate.svg: Removed.
+ * WebKitSite/blog/wp-content/svgtext.png: Removed.
+ * WebKitSite/blog/wp-content/svgtextmini.png: Removed.
+ * WebKitSite/blog/wp-content/svgtextmini_01.png: Removed.
+ * WebKitSite/blog/wp-content/textfield_screenshot.jpg: Removed.
+ * WebKitSite/blog/wp-content/themes: Removed.
+ * WebKitSite/blog/wp-content/themes/classic: Removed.
+ * WebKitSite/blog/wp-content/themes/classic/comments-popup.php: Removed.
+ * WebKitSite/blog/wp-content/themes/classic/comments.php: Removed.
+ * WebKitSite/blog/wp-content/themes/classic/footer.php: Removed.
+ * WebKitSite/blog/wp-content/themes/classic/functions.php: Removed.
+ * WebKitSite/blog/wp-content/themes/classic/header.php: Removed.
+ * WebKitSite/blog/wp-content/themes/classic/index.php: Removed.
+ * WebKitSite/blog/wp-content/themes/classic/rtl.css: Removed.
+ * WebKitSite/blog/wp-content/themes/classic/screenshot.png: Removed.
+ * WebKitSite/blog/wp-content/themes/classic/sidebar.php: Removed.
+ * WebKitSite/blog/wp-content/themes/classic/style.css: Removed.
+ * WebKitSite/blog/wp-content/themes/default: Removed.
+ * WebKitSite/blog/wp-content/themes/default/404.php: Removed.
+ * WebKitSite/blog/wp-content/themes/default/archive.php: Removed.
+ * WebKitSite/blog/wp-content/themes/default/archives.php: Removed.
+ * WebKitSite/blog/wp-content/themes/default/comments-popup.php: Removed.
+ * WebKitSite/blog/wp-content/themes/default/comments.php: Removed.
+ * WebKitSite/blog/wp-content/themes/default/footer.php: Removed.
+ * WebKitSite/blog/wp-content/themes/default/functions.php: Removed.
+ * WebKitSite/blog/wp-content/themes/default/header.php: Removed.
+ * WebKitSite/blog/wp-content/themes/default/image.php: Removed.
+ * WebKitSite/blog/wp-content/themes/default/images: Removed.
+ * WebKitSite/blog/wp-content/themes/default/images/audio.jpg: Removed.
+ * WebKitSite/blog/wp-content/themes/default/images/header-img.php: Removed.
+ * WebKitSite/blog/wp-content/themes/default/images/kubrickbg-ltr.jpg: Removed.
+ * WebKitSite/blog/wp-content/themes/default/images/kubrickbg-rtl.jpg: Removed.
+ * WebKitSite/blog/wp-content/themes/default/images/kubrickbgcolor.jpg: Removed.
+ * WebKitSite/blog/wp-content/themes/default/images/kubrickbgwide.jpg: Removed.
+ * WebKitSite/blog/wp-content/themes/default/images/kubrickfooter.jpg: Removed.
+ * WebKitSite/blog/wp-content/themes/default/images/kubrickheader.jpg: Removed.
+ * WebKitSite/blog/wp-content/themes/default/index.php: Removed.
+ * WebKitSite/blog/wp-content/themes/default/links.php: Removed.
+ * WebKitSite/blog/wp-content/themes/default/page.php: Removed.
+ * WebKitSite/blog/wp-content/themes/default/rtl.css: Removed.
+ * WebKitSite/blog/wp-content/themes/default/screenshot.png: Removed.
+ * WebKitSite/blog/wp-content/themes/default/search.php: Removed.
+ * WebKitSite/blog/wp-content/themes/default/sidebar.php: Removed.
+ * WebKitSite/blog/wp-content/themes/default/single.php: Removed.
+ * WebKitSite/blog/wp-content/themes/default/style.css: Removed.
+ * WebKitSite/blog/wp-content/themes/index.php: Removed.
+ * WebKitSite/blog/wp-content/themes/webkit: Removed.
+ * WebKitSite/blog/wp-content/themes/webkit/404.php: Removed.
+ * WebKitSite/blog/wp-content/themes/webkit/archive.php: Removed.
+ * WebKitSite/blog/wp-content/themes/webkit/archives.php: Removed.
+ * WebKitSite/blog/wp-content/themes/webkit/comments-popup.php: Removed.
+ * WebKitSite/blog/wp-content/themes/webkit/comments.php: Removed.
+ * WebKitSite/blog/wp-content/themes/webkit/footer.php: Removed.
+ * WebKitSite/blog/wp-content/themes/webkit/header.php: Removed.
+ * WebKitSite/blog/wp-content/themes/webkit/index.php: Removed.
+ * WebKitSite/blog/wp-content/themes/webkit/links.php: Removed.
+ * WebKitSite/blog/wp-content/themes/webkit/page.php: Removed.
+ * WebKitSite/blog/wp-content/themes/webkit/search.php: Removed.
+ * WebKitSite/blog/wp-content/themes/webkit/searchform.php: Removed.
+ * WebKitSite/blog/wp-content/themes/webkit/sidebar.php: Removed.
+ * WebKitSite/blog/wp-content/themes/webkit/single.php: Removed.
+ * WebKitSite/blog/wp-content/themes/webkit/style.css: Removed.
+ * WebKitSite/blog/wp-content/uploads: Removed.
+ * WebKitSite/blog/wp-content/uploads/2007: Removed.
+ * WebKitSite/blog/wp-content/uploads/2007/06: Removed.
+ * WebKitSite/blog/wp-content/uploads/2007/06/newinspector.png: Removed.
+ * WebKitSite/blog/wp-content/webInspector.png: Removed.
+ * WebKitSite/blog/wp-cron.php: Removed.
+ * WebKitSite/blog/wp-feed.php: Removed.
+ * WebKitSite/blog/wp-images: Removed.
+ * WebKitSite/blog/wp-images/smilies: Removed.
+ * WebKitSite/blog/wp-includes: Removed.
+ * WebKitSite/blog/wp-includes/Text: Removed.
+ * WebKitSite/blog/wp-includes/Text/Diff: Removed.
+ * WebKitSite/blog/wp-includes/Text/Diff.php: Removed.
+ * WebKitSite/blog/wp-includes/Text/Diff/Engine: Removed.
+ * WebKitSite/blog/wp-includes/Text/Diff/Engine/native.php: Removed.
+ * WebKitSite/blog/wp-includes/Text/Diff/Engine/shell.php: Removed.
+ * WebKitSite/blog/wp-includes/Text/Diff/Engine/string.php: Removed.
+ * WebKitSite/blog/wp-includes/Text/Diff/Engine/xdiff.php: Removed.
+ * WebKitSite/blog/wp-includes/Text/Diff/Renderer: Removed.
+ * WebKitSite/blog/wp-includes/Text/Diff/Renderer.php: Removed.
+ * WebKitSite/blog/wp-includes/Text/Diff/Renderer/inline.php: Removed.
+ * WebKitSite/blog/wp-includes/atomlib.php: Removed.
+ * WebKitSite/blog/wp-includes/author-template.php: Removed.
+ * WebKitSite/blog/wp-includes/bookmark-template.php: Removed.
+ * WebKitSite/blog/wp-includes/bookmark.php: Removed.
+ * WebKitSite/blog/wp-includes/cache.php: Removed.
+ * WebKitSite/blog/wp-includes/canonical.php: Removed.
+ * WebKitSite/blog/wp-includes/capabilities.php: Removed.
+ * WebKitSite/blog/wp-includes/category-template.php: Removed.
+ * WebKitSite/blog/wp-includes/category.php: Removed.
+ * WebKitSite/blog/wp-includes/class-IXR.php: Removed.
+ * WebKitSite/blog/wp-includes/class-feed.php: Removed.
+ * WebKitSite/blog/wp-includes/class-phpass.php: Removed.
+ * WebKitSite/blog/wp-includes/class-phpmailer.php: Removed.
+ * WebKitSite/blog/wp-includes/class-pop3.php: Removed.
+ * WebKitSite/blog/wp-includes/class-simplepie.php: Removed.
+ * WebKitSite/blog/wp-includes/class-smtp.php: Removed.
+ * WebKitSite/blog/wp-includes/class-snoopy.php: Removed.
+ * WebKitSite/blog/wp-includes/class.wp-dependencies.php: Removed.
+ * WebKitSite/blog/wp-includes/class.wp-scripts.php: Removed.
+ * WebKitSite/blog/wp-includes/class.wp-styles.php: Removed.
+ * WebKitSite/blog/wp-includes/classes.php: Removed.
+ * WebKitSite/blog/wp-includes/comment-template.php: Removed.
+ * WebKitSite/blog/wp-includes/comment.php: Removed.
+ * WebKitSite/blog/wp-includes/compat.php: Removed.
+ * WebKitSite/blog/wp-includes/cron.php: Removed.
+ * WebKitSite/blog/wp-includes/default-filters.php: Removed.
+ * WebKitSite/blog/wp-includes/default-widgets.php: Removed.
+ * WebKitSite/blog/wp-includes/deprecated.php: Removed.
+ * WebKitSite/blog/wp-includes/feed-atom-comments.php: Removed.
+ * WebKitSite/blog/wp-includes/feed-atom.php: Removed.
+ * WebKitSite/blog/wp-includes/feed-rdf.php: Removed.
+ * WebKitSite/blog/wp-includes/feed-rss.php: Removed.
+ * WebKitSite/blog/wp-includes/feed-rss2-comments.php: Removed.
+ * WebKitSite/blog/wp-includes/feed-rss2.php: Removed.
+ * WebKitSite/blog/wp-includes/feed.php: Removed.
+ * WebKitSite/blog/wp-includes/formatting.php: Removed.
+ * WebKitSite/blog/wp-includes/functions.php: Removed.
+ * WebKitSite/blog/wp-includes/functions.wp-scripts.php: Removed.
+ * WebKitSite/blog/wp-includes/functions.wp-styles.php: Removed.
+ * WebKitSite/blog/wp-includes/general-template.php: Removed.
+ * WebKitSite/blog/wp-includes/gettext.php: Removed.
+ * WebKitSite/blog/wp-includes/http.php: Removed.
+ * WebKitSite/blog/wp-includes/images: Removed.
+ * WebKitSite/blog/wp-includes/images/blank.gif: Removed.
+ * WebKitSite/blog/wp-includes/images/crystal: Removed.
+ * WebKitSite/blog/wp-includes/images/crystal/archive.png: Removed.
+ * WebKitSite/blog/wp-includes/images/crystal/audio.png: Removed.
+ * WebKitSite/blog/wp-includes/images/crystal/code.png: Removed.
+ * WebKitSite/blog/wp-includes/images/crystal/default.png: Removed.
+ * WebKitSite/blog/wp-includes/images/crystal/document.png: Removed.
+ * WebKitSite/blog/wp-includes/images/crystal/interactive.png: Removed.
+ * WebKitSite/blog/wp-includes/images/crystal/license.txt: Removed.
+ * WebKitSite/blog/wp-includes/images/crystal/spreadsheet.png: Removed.
+ * WebKitSite/blog/wp-includes/images/crystal/text.png: Removed.
+ * WebKitSite/blog/wp-includes/images/crystal/video.png: Removed.
+ * WebKitSite/blog/wp-includes/images/rss.png: Removed.
+ * WebKitSite/blog/wp-includes/images/smilies: Removed.
+ * WebKitSite/blog/wp-includes/images/smilies/icon_arrow.gif: Removed.
+ * WebKitSite/blog/wp-includes/images/smilies/icon_biggrin.gif: Removed.
+ * WebKitSite/blog/wp-includes/images/smilies/icon_confused.gif: Removed.
+ * WebKitSite/blog/wp-includes/images/smilies/icon_cool.gif: Removed.
+ * WebKitSite/blog/wp-includes/images/smilies/icon_cry.gif: Removed.
+ * WebKitSite/blog/wp-includes/images/smilies/icon_eek.gif: Removed.
+ * WebKitSite/blog/wp-includes/images/smilies/icon_evil.gif: Removed.
+ * WebKitSite/blog/wp-includes/images/smilies/icon_exclaim.gif: Removed.
+ * WebKitSite/blog/wp-includes/images/smilies/icon_idea.gif: Removed.
+ * WebKitSite/blog/wp-includes/images/smilies/icon_lol.gif: Removed.
+ * WebKitSite/blog/wp-includes/images/smilies/icon_mad.gif: Removed.
+ * WebKitSite/blog/wp-includes/images/smilies/icon_mrgreen.gif: Removed.
+ * WebKitSite/blog/wp-includes/images/smilies/icon_neutral.gif: Removed.
+ * WebKitSite/blog/wp-includes/images/smilies/icon_question.gif: Removed.
+ * WebKitSite/blog/wp-includes/images/smilies/icon_razz.gif: Removed.
+ * WebKitSite/blog/wp-includes/images/smilies/icon_redface.gif: Removed.
+ * WebKitSite/blog/wp-includes/images/smilies/icon_rolleyes.gif: Removed.
+ * WebKitSite/blog/wp-includes/images/smilies/icon_sad.gif: Removed.
+ * WebKitSite/blog/wp-includes/images/smilies/icon_smile.gif: Removed.
+ * WebKitSite/blog/wp-includes/images/smilies/icon_surprised.gif: Removed.
+ * WebKitSite/blog/wp-includes/images/smilies/icon_twisted.gif: Removed.
+ * WebKitSite/blog/wp-includes/images/smilies/icon_wink.gif: Removed.
+ * WebKitSite/blog/wp-includes/images/upload.png: Removed.
+ * WebKitSite/blog/wp-includes/images/wlw: Removed.
+ * WebKitSite/blog/wp-includes/images/wlw/wp-comments.png: Removed.
+ * WebKitSite/blog/wp-includes/images/wlw/wp-icon.png: Removed.
+ * WebKitSite/blog/wp-includes/images/wlw/wp-watermark.png: Removed.
+ * WebKitSite/blog/wp-includes/js: Removed.
+ * WebKitSite/blog/wp-includes/js/autosave.dev.js: Removed.
+ * WebKitSite/blog/wp-includes/js/autosave.js: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/codepress.css: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/codepress.html: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/codepress.js: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/engines: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/engines/gecko.js: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/engines/khtml.js: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/engines/msie.js: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/engines/older.js: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/engines/opera.js: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/images: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/images/line-numbers.png: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/asp.css: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/asp.js: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/autoit.css: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/autoit.js: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/csharp.css: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/csharp.js: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/css.css: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/css.js: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/generic.css: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/generic.js: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/html.css: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/html.js: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/java.css: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/java.js: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/javascript.css: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/javascript.js: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/perl.css: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/perl.js: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/php.css: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/php.js: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/ruby.css: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/ruby.js: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/sql.css: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/sql.js: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/text.css: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/text.js: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/vbscript.css: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/vbscript.js: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/xsl.css: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/languages/xsl.js: Removed.
+ * WebKitSite/blog/wp-includes/js/codepress/license.txt: Removed.
+ * WebKitSite/blog/wp-includes/js/colorpicker.dev.js: Removed.
+ * WebKitSite/blog/wp-includes/js/colorpicker.js: Removed.
+ * WebKitSite/blog/wp-includes/js/comment-reply.dev.js: Removed.
+ * WebKitSite/blog/wp-includes/js/comment-reply.js: Removed.
+ * WebKitSite/blog/wp-includes/js/crop: Removed.
+ * WebKitSite/blog/wp-includes/js/crop/cropper.css: Removed.
+ * WebKitSite/blog/wp-includes/js/crop/cropper.js: Removed.
+ * WebKitSite/blog/wp-includes/js/crop/marqueeHoriz.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/crop/marqueeVert.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/hoverIntent.dev.js: Removed.
+ * WebKitSite/blog/wp-includes/js/hoverIntent.js: Removed.
+ * WebKitSite/blog/wp-includes/js/jcrop: Removed.
+ * WebKitSite/blog/wp-includes/js/jcrop/Jcrop.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/jcrop/jquery.Jcrop.css: Removed.
+ * WebKitSite/blog/wp-includes/js/jcrop/jquery.Jcrop.dev.js: Removed.
+ * WebKitSite/blog/wp-includes/js/jcrop/jquery.Jcrop.js: Removed.
+ * WebKitSite/blog/wp-includes/js/jquery: Removed.
+ * WebKitSite/blog/wp-includes/js/jquery/interface.js: Removed.
+ * WebKitSite/blog/wp-includes/js/jquery/jquery.color.dev.js: Removed.
+ * WebKitSite/blog/wp-includes/js/jquery/jquery.color.js: Removed.
+ * WebKitSite/blog/wp-includes/js/jquery/jquery.form.dev.js: Removed.
+ * WebKitSite/blog/wp-includes/js/jquery/jquery.form.js: Removed.
+ * WebKitSite/blog/wp-includes/js/jquery/jquery.hotkeys.dev.js: Removed.
+ * WebKitSite/blog/wp-includes/js/jquery/jquery.hotkeys.js: Removed.
+ * WebKitSite/blog/wp-includes/js/jquery/jquery.js: Removed.
+ * WebKitSite/blog/wp-includes/js/jquery/jquery.schedule.js: Removed.
+ * WebKitSite/blog/wp-includes/js/jquery/jquery.table-hotkeys.dev.js: Removed.
+ * WebKitSite/blog/wp-includes/js/jquery/jquery.table-hotkeys.js: Removed.
+ * WebKitSite/blog/wp-includes/js/jquery/suggest.dev.js: Removed.
+ * WebKitSite/blog/wp-includes/js/jquery/suggest.js: Removed.
+ * WebKitSite/blog/wp-includes/js/jquery/ui.core.js: Removed.
+ * WebKitSite/blog/wp-includes/js/jquery/ui.dialog.js: Removed.
+ * WebKitSite/blog/wp-includes/js/jquery/ui.draggable.js: Removed.
+ * WebKitSite/blog/wp-includes/js/jquery/ui.droppable.js: Removed.
+ * WebKitSite/blog/wp-includes/js/jquery/ui.resizable.js: Removed.
+ * WebKitSite/blog/wp-includes/js/jquery/ui.selectable.js: Removed.
+ * WebKitSite/blog/wp-includes/js/jquery/ui.sortable.js: Removed.
+ * WebKitSite/blog/wp-includes/js/jquery/ui.tabs.js: Removed.
+ * WebKitSite/blog/wp-includes/js/prototype.js: Removed.
+ * WebKitSite/blog/wp-includes/js/quicktags.dev.js: Removed.
+ * WebKitSite/blog/wp-includes/js/quicktags.js: Removed.
+ * WebKitSite/blog/wp-includes/js/scriptaculous: Removed.
+ * WebKitSite/blog/wp-includes/js/scriptaculous/MIT-LICENSE: Removed.
+ * WebKitSite/blog/wp-includes/js/scriptaculous/builder.js: Removed.
+ * WebKitSite/blog/wp-includes/js/scriptaculous/controls.js: Removed.
+ * WebKitSite/blog/wp-includes/js/scriptaculous/dragdrop.js: Removed.
+ * WebKitSite/blog/wp-includes/js/scriptaculous/effects.js: Removed.
+ * WebKitSite/blog/wp-includes/js/scriptaculous/prototype.js: Removed.
+ * WebKitSite/blog/wp-includes/js/scriptaculous/scriptaculous.js: Removed.
+ * WebKitSite/blog/wp-includes/js/scriptaculous/slider.js: Removed.
+ * WebKitSite/blog/wp-includes/js/scriptaculous/sound.js: Removed.
+ * WebKitSite/blog/wp-includes/js/scriptaculous/unittest.js: Removed.
+ * WebKitSite/blog/wp-includes/js/scriptaculous/wp-scriptaculous.js: Removed.
+ * WebKitSite/blog/wp-includes/js/swfobject.js: Removed.
+ * WebKitSite/blog/wp-includes/js/swfupload: Removed.
+ * WebKitSite/blog/wp-includes/js/swfupload/handlers.dev.js: Removed.
+ * WebKitSite/blog/wp-includes/js/swfupload/handlers.js: Removed.
+ * WebKitSite/blog/wp-includes/js/swfupload/plugins: Removed.
+ * WebKitSite/blog/wp-includes/js/swfupload/plugins/swfupload.cookies.js: Removed.
+ * WebKitSite/blog/wp-includes/js/swfupload/plugins/swfupload.queue.js: Removed.
+ * WebKitSite/blog/wp-includes/js/swfupload/plugins/swfupload.speed.js: Removed.
+ * WebKitSite/blog/wp-includes/js/swfupload/plugins/swfupload.swfobject.js: Removed.
+ * WebKitSite/blog/wp-includes/js/swfupload/swfupload-all.js: Removed.
+ * WebKitSite/blog/wp-includes/js/swfupload/swfupload.js: Removed.
+ * WebKitSite/blog/wp-includes/js/swfupload/swfupload.swf: Removed.
+ * WebKitSite/blog/wp-includes/js/thickbox: Removed.
+ * WebKitSite/blog/wp-includes/js/thickbox/loadingAnimation.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/thickbox/macFFBgHack.png: Removed.
+ * WebKitSite/blog/wp-includes/js/thickbox/tb-close.png: Removed.
+ * WebKitSite/blog/wp-includes/js/thickbox/thickbox.css: Removed.
+ * WebKitSite/blog/wp-includes/js/thickbox/thickbox.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/blank.htm: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/langs: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/langs/wp-langs-en.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/langs/wp-langs.php: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/license.txt: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/autosave: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/autosave/langs: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/directionality: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/directionality/editor_plugin.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/directionality/images: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/directionality/langs: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/fullscreen: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/fullscreen/editor_plugin.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/fullscreen/fullscreen.htm: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/inlinepopups: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/inlinepopups/css: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/inlinepopups/editor_plugin.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/inlinepopups/images: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/inlinepopups/jscripts: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/inlinepopups/skins: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/button.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/drag.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/window.css: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/inlinepopups/template.htm: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/media: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/media/css: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/media/css/content.css: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/media/css/media.css: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/media/editor_plugin.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/media/img: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/media/img/flash.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/media/img/flv_player.swf: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/media/img/quicktime.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/media/img/realmedia.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/media/img/shockwave.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/media/img/trans.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/media/img/windowsmedia.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/media/js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/media/js/embed.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/media/js/media.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/media/media.htm: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/paste: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/paste/blank.htm: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/paste/css: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/paste/editor_plugin.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/paste/images: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/paste/js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/paste/js/pastetext.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/paste/js/pasteword.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/paste/jscripts: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/paste/langs: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/paste/pastetext.htm: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/paste/pasteword.htm: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/safari: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/safari/blank.htm: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/safari/editor_plugin.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/classes: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/classes/EnchantSpell.php: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/classes/GoogleSpell.php: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/classes/PSpell.php: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/classes/PSpellShell.php: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/classes/SpellChecker.php: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/classes/utils: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/classes/utils/JSON.php: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/classes/utils/Logger.php: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/config.php: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/css: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/css/content.css: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/editor_plugin.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/images: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/img: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/img/wline.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/includes: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/includes/general.php: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/langs: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/spellchecker/rpc.php: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/tabfocus: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/tabfocus/editor_plugin.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wordpress: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wordpress/css: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wordpress/css/content.css: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wordpress/editor_plugin.dev.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wordpress/editor_plugin.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wordpress/images: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wordpress/img: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wordpress/img/audio.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wordpress/img/help.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wordpress/img/image.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wordpress/img/media.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wordpress/img/more.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wordpress/img/more_bug.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wordpress/img/page.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wordpress/img/page_bug.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wordpress/img/toolbars.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wordpress/img/video.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wordpress/langs: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wpeditimage: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wpeditimage/css: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wpeditimage/css/editimage-rtl.css: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wpeditimage/css/editimage.css: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wpeditimage/editimage.html: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wpeditimage/editor_plugin.dev.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wpeditimage/editor_plugin.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wpeditimage/img: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wpeditimage/img/delete.png: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wpeditimage/img/image.png: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wpeditimage/js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wpeditimage/js/editimage.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wpgallery: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wpgallery/editor_plugin.dev.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wpgallery/editor_plugin.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wpgallery/img: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wpgallery/img/delete.png: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wpgallery/img/edit.png: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wpgallery/img/gallery.png: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wpgallery/img/t.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wphelp: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wphelp/images: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/plugins/wphelp/langs: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/about.htm: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/anchor.htm: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/charmap.htm: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/color_picker.htm: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/css: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/editor_template.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/image.htm: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/images/xp: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/img: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/img/colorpicker.jpg: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/img/fm.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/img/gotmoxie.png: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/img/icons.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/img/sflogo.png: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/js/about.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/js/anchor.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/js/charmap.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/js/color_picker.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/js/image.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/js/link.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/js/source_editor.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/jscripts: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/langs: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/link.htm: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/default: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/default/content.css: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/default/dialog.css: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/default/img: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/default/img/buttons.png: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/default/img/items.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/default/img/menu_arrow.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/default/img/menu_check.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/default/img/progress.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/default/img/tabs.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/default/ui.css: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/o2k7: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/o2k7/content.css: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/o2k7/dialog.css: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/o2k7/img: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/o2k7/img/button_bg.png: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/o2k7/img/button_bg_black.png: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/o2k7/img/button_bg_silver.png: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/o2k7/ui.css: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/o2k7/ui_black.css: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/o2k7/ui_silver.css: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/wp_theme: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/content.css: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/dialog.css: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/butt2.png: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/button_bg.png: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/down_arrow.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/fade-butt.png: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/separator.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/tabs.gif: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/ui.css: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/themes/advanced/source_editor.htm: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/tiny_mce.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/tiny_mce_popup.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/utils: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/utils/editable_selects.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/utils/form_utils.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/utils/mctabs.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/utils/validate.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/wp-mce-help.php: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/wp-tinymce.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/wp-tinymce.js.gz: Removed.
+ * WebKitSite/blog/wp-includes/js/tinymce/wp-tinymce.php: Removed.
+ * WebKitSite/blog/wp-includes/js/tw-sack.dev.js: Removed.
+ * WebKitSite/blog/wp-includes/js/tw-sack.js: Removed.
+ * WebKitSite/blog/wp-includes/js/wp-ajax-response.dev.js: Removed.
+ * WebKitSite/blog/wp-includes/js/wp-ajax-response.js: Removed.
+ * WebKitSite/blog/wp-includes/js/wp-lists.dev.js: Removed.
+ * WebKitSite/blog/wp-includes/js/wp-lists.js: Removed.
+ * WebKitSite/blog/wp-includes/kses.php: Removed.
+ * WebKitSite/blog/wp-includes/l10n.php: Removed.
+ * WebKitSite/blog/wp-includes/link-template.php: Removed.
+ * WebKitSite/blog/wp-includes/locale.php: Removed.
+ * WebKitSite/blog/wp-includes/media.php: Removed.
+ * WebKitSite/blog/wp-includes/pluggable.php: Removed.
+ * WebKitSite/blog/wp-includes/plugin.php: Removed.
+ * WebKitSite/blog/wp-includes/pomo: Removed.
+ * WebKitSite/blog/wp-includes/pomo/entry.php: Removed.
+ * WebKitSite/blog/wp-includes/pomo/mo.php: Removed.
+ * WebKitSite/blog/wp-includes/pomo/po.php: Removed.
+ * WebKitSite/blog/wp-includes/pomo/streams.php: Removed.
+ * WebKitSite/blog/wp-includes/pomo/translations.php: Removed.
+ * WebKitSite/blog/wp-includes/post-template.php: Removed.
+ * WebKitSite/blog/wp-includes/post.php: Removed.
+ * WebKitSite/blog/wp-includes/query.php: Removed.
+ * WebKitSite/blog/wp-includes/registration-functions.php: Removed.
+ * WebKitSite/blog/wp-includes/registration.php: Removed.
+ * WebKitSite/blog/wp-includes/rewrite.php: Removed.
+ * WebKitSite/blog/wp-includes/rss-functions.php: Removed.
+ * WebKitSite/blog/wp-includes/rss.php: Removed.
+ * WebKitSite/blog/wp-includes/script-loader.php: Removed.
+ * WebKitSite/blog/wp-includes/shortcodes.php: Removed.
+ * WebKitSite/blog/wp-includes/streams.php: Removed.
+ * WebKitSite/blog/wp-includes/taxonomy.php: Removed.
+ * WebKitSite/blog/wp-includes/template-loader.php: Removed.
+ * WebKitSite/blog/wp-includes/theme.php: Removed.
+ * WebKitSite/blog/wp-includes/update.php: Removed.
+ * WebKitSite/blog/wp-includes/user.php: Removed.
+ * WebKitSite/blog/wp-includes/vars.php: Removed.
+ * WebKitSite/blog/wp-includes/version.php: Removed.
+ * WebKitSite/blog/wp-includes/widgets.php: Removed.
+ * WebKitSite/blog/wp-includes/wlwmanifest.xml: Removed.
+ * WebKitSite/blog/wp-includes/wp-db.php: Removed.
+ * WebKitSite/blog/wp-includes/wp-diff.php: Removed.
+ * WebKitSite/blog/wp-links-opml.php: Removed.
+ * WebKitSite/blog/wp-load.php: Removed.
+ * WebKitSite/blog/wp-login.php: Removed.
+ * WebKitSite/blog/wp-mail.php: Removed.
+ * WebKitSite/blog/wp-pass.php: Removed.
+ * WebKitSite/blog/wp-rdf.php: Removed.
+ * WebKitSite/blog/wp-register.php: Removed.
+ * WebKitSite/blog/wp-rss.php: Removed.
+ * WebKitSite/blog/wp-rss2.php: Removed.
+ * WebKitSite/blog/wp-settings.php: Removed.
+ * WebKitSite/blog/wp-trackback.php: Removed.
+ * WebKitSite/blog/xmlrpc.php: Removed.
+ * WebKitSite/building: Removed.
+ * WebKitSite/building/build-window.png: Removed.
+ * WebKitSite/building/build.html: Removed.
+ * WebKitSite/building/checkout.html: Removed.
+ * WebKitSite/building/custom-executable.png: Removed.
+ * WebKitSite/building/cygwin-downloader.zip: Removed.
+ * WebKitSite/building/debug.html: Removed.
+ * WebKitSite/building/debug.png: Removed.
+ * WebKitSite/building/info-tab.png: Removed.
+ * WebKitSite/building/launch-debugger-vs2005.png: Removed.
+ * WebKitSite/building/run.html: Removed.
+ * WebKitSite/building/set-as-startup-project-vs2005.png: Removed.
+ * WebKitSite/building/set-debugging-properties-vs2005.png: Removed.
+ * WebKitSite/building/tools.html: Removed.
+ * WebKitSite/coding: Removed.
+ * WebKitSite/coding/RefPtr.html: Removed.
+ * WebKitSite/coding/assertion-guidelines.html: Removed.
+ * WebKitSite/coding/bsd-license.html: Removed.
+ * WebKitSite/coding/coding-style.html: Removed.
+ * WebKitSite/coding/commit-review-policy.html: Removed.
+ * WebKitSite/coding/contributing.html: Removed.
+ * WebKitSite/coding/dom-element-attach.html: Removed.
+ * WebKitSite/coding/images: Removed.
+ * WebKitSite/coding/images/contribute_add_attachment.png: Removed.
+ * WebKitSite/coding/images/contribute_mark_review.png: Removed.
+ * WebKitSite/coding/images/dom-element-attach-large.png: Removed.
+ * WebKitSite/coding/images/dom-element-attach-small.png: Removed.
+ * WebKitSite/coding/images/dom-element-attach.graffle: Removed.
+ * WebKitSite/coding/lgpl-license.html: Removed.
+ * WebKitSite/coding/major-objects.html: Removed.
+ * WebKitSite/coding/scripts.html: Removed.
+ * WebKitSite/coding/technical-articles.html: Removed.
+ * WebKitSite/contact.html: Removed.
+ * WebKitSite/css: Removed.
+ * WebKitSite/css/blue.css: Removed.
+ * WebKitSite/css/gray.css: Removed.
+ * WebKitSite/css/green.css: Removed.
+ * WebKitSite/css/ie.css: Removed.
+ * WebKitSite/css/main.css: Removed.
+ * WebKit