Import Cobalt 21.master.0.301323
diff --git a/src/.pre-commit-config.yaml b/src/.pre-commit-config.yaml
index 8a5e743..2b7e100 100644
--- a/src/.pre-commit-config.yaml
+++ b/src/.pre-commit-config.yaml
@@ -135,3 +135,8 @@
         entry: python precommit_hooks/internal_file_check_wrapper.py
         language: python
         types: [text]
+    -   id: gn-format
+        name: GN format
+        entry: gn format
+        language: system
+        files: '.*\.gni?$'
diff --git a/src/base/files/file_starboard.cc b/src/base/files/file_starboard.cc
index 39b11a8..6c1e8ee 100644
--- a/src/base/files/file_starboard.cc
+++ b/src/base/files/file_starboard.cc
@@ -270,9 +270,7 @@
     case kSbFileErrorNotAFile:
     case kSbFileErrorNotEmpty:
     case kSbFileErrorInvalidUrl:
-#if SB_API_VERSION >= 11
     case kSbFileErrorIO:
-#endif
       // Starboard error codes are designed to match Chromium's exactly.
       return static_cast<File::Error>(sb_error);
       break;
diff --git a/src/base/logging.cc b/src/base/logging.cc
index 77dfd76..5c0e7ee 100644
--- a/src/base/logging.cc
+++ b/src/base/logging.cc
@@ -549,13 +549,6 @@
 
 void SetMinLogLevel(int level) {
   g_min_log_level = std::min(LOG_FATAL, level);
-
-#if defined(STARBOARD)
-#if SB_API_VERSION < 11
-  starboard::logging::SetMinLogLevel(
-      LogLevelToStarboardLogPriority(std::min(LOG_FATAL, level)));
-#endif
-#endif
 }
 
 #if defined(OFFICIAL_BUILD)
diff --git a/src/build/android/cpufeatures.gypi b/src/build/android/cpufeatures.gypi
deleted file mode 100644
index 17b262c..0000000
--- a/src/build/android/cpufeatures.gypi
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright (c) 2012 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# Depend on the Android NDK's cpu feature detection. The WebView build is part
-# of the system and the library already exists; for the normal build there is a
-# gyp file in the checked-in NDK to build it.
-{
-  'conditions': [
-    ['android_build_type != 0', {
-      'libraries': [
-        'cpufeatures.a'
-      ],
-    }, {
-      'dependencies': [
-        '<(android_ndk_root)/android_tools_ndk.gyp:cpu_features',
-      ],
-    }],
-  ],
-}
diff --git a/src/build/compiler_version.py b/src/build/compiler_version.py
deleted file mode 100755
index b349199..0000000
--- a/src/build/compiler_version.py
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/usr/bin/env python
-# Copyright (c) 2012 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-"""Compiler version checking tool for gcc
-
-Print gcc version as XY if you are running gcc X.Y.*.
-This is used to tweak build flags for gcc 4.4.
-"""
-
-import os
-import re
-import subprocess
-import sys
-
-def GetVersion(compiler):
-  try:
-    # Note that compiler could be something tricky like "distcc g++".
-    compiler = compiler + " -dumpversion"
-    pipe = subprocess.Popen(compiler, shell=True,
-                            stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-    gcc_output, gcc_error = pipe.communicate()
-    if pipe.returncode:
-      raise subprocess.CalledProcessError(pipe.returncode, compiler)
-
-    result = re.match(r"(\d+)\.(\d+)", gcc_output)
-    return result.group(1) + result.group(2)
-  except Exception, e:
-    if gcc_error:
-      sys.stderr.write(gcc_error)
-    print >> sys.stderr, "compiler_version.py failed to execute:", compiler
-    print >> sys.stderr, e
-    return ""
-
-def main():
-  # Check if CXX environment variable exists and
-  # if it does use that compiler.
-  cxx = os.getenv("CXX", None)
-  if cxx:
-    cxxversion = GetVersion(cxx)
-    if cxxversion != "":
-      print cxxversion
-      return 0
-  else:
-    # Otherwise we check the g++ version.
-    gccversion = GetVersion("g++")
-    if gccversion != "":
-      print gccversion
-      return 0
-
-  return 1
-
-if __name__ == "__main__":
-  sys.exit(main())
diff --git a/src/build/find_depot_tools.py b/src/build/find_depot_tools.py
deleted file mode 100755
index 1c34fea..0000000
--- a/src/build/find_depot_tools.py
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/usr/bin/env python
-# Copyright (c) 2011 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-"""Small utility function to find depot_tools and add it to the python path.
-
-Will throw an ImportError exception if depot_tools can't be found since it
-imports breakpad.
-
-This can also be used as a standalone script to print out the depot_tools
-directory location.
-"""
-
-import os
-import sys
-
-
-def IsRealDepotTools(path):
-  return os.path.isfile(os.path.join(path, 'gclient.py'))
-
-
-def add_depot_tools_to_path():
-  """Search for depot_tools and add it to sys.path."""
-  # First look if depot_tools is already in PYTHONPATH.
-  for i in sys.path:
-    if i.rstrip(os.sep).endswith('depot_tools') and IsRealDepotTools(i):
-      return i
-  # Then look if depot_tools is in PATH, common case.
-  for i in os.environ['PATH'].split(os.pathsep):
-    if IsRealDepotTools(i):
-      sys.path.append(i.rstrip(os.sep))
-      return i
-  # Rare case, it's not even in PATH, look upward up to root.
-  root_dir = os.path.dirname(os.path.abspath(__file__))
-  previous_dir = os.path.abspath(__file__)
-  while root_dir and root_dir != previous_dir:
-    i = os.path.join(root_dir, 'depot_tools')
-    if IsRealDepotTools(i):
-      sys.path.append(i)
-      return i
-    previous_dir = root_dir
-    root_dir = os.path.dirname(root_dir)
-  print >> sys.stderr, 'Failed to find depot_tools'
-  return None
-
-DEPOT_TOOLS_PATH = add_depot_tools_to_path()
-
-# pylint: disable=W0611
-import breakpad
-
-
-def main():
-  if DEPOT_TOOLS_PATH is None:
-    return 1
-  print DEPOT_TOOLS_PATH
-  return 0
-
-
-if __name__ == '__main__':
-  sys.exit(main())
diff --git a/src/build/internal/README.chromium b/src/build/internal/README.chromium
deleted file mode 100644
index 4624830..0000000
--- a/src/build/internal/README.chromium
+++ /dev/null
@@ -1,24 +0,0 @@
-Internal property sheets:
-  essential.vsprops
-    Contains the common settings used throughout the projects. Is included by either ..\debug.vsprops or ..\release.vsprops, so in general, it is not included directly.
-
-  release_defaults.vsprops
-    Included by ..\release.vsprops. Its settings are overriden by release_impl$(CHROME_BUILD_TYPE).vsprops. Uses the default VS setting which is "Maximize Speed". Results in relatively fast build with reasonable optimization level but without whole program optimization to reduce build time.
-
-  release_impl.vsprops
-    Included by ..\release.vsprops by default when CHROME_BUILD_TYPE is undefined. Includes release_defaults.vsprops.
-
-  release_impl_checksenabled.vsprops
-    Included by ..\release.vsprops when CHROME_BUILD_TYPE=_checksenabled. Matches what release_defaults.vsprops does, but doesn't actually inherit from it as we couldn't quite get that working. The only difference is that _DEBUG is set instead of NDEBUG. Used for keeping debug checks enabled with a build that is fast enough to dogfood with.
-
-  release_impl_official.vsprops
-    Included by ..\release.vsprops when CHROME_BUILD_TYPE=_official. Includes release_defaults.vsprops. Enables Whole Program Optimizations (WPO), which doubles the build time. Results in much more optimized build. Uses "Full Optimization" and "Flavor small code".
-
-  release_impl_pgo_instrument.vsprops
-    Included by ..\release.vsprops when CHROME_BUILD_TYPE=_pgo_instrument. Includes release_defaults.vsprops. Enables Profile Guided Optimization (PGO) instrumentation (first pass). Uses "Full Optimization" and "Flavor small code".
-
-  release_impl_pgo_optimize.vsprops
-    Included by ..\release.vsprops when CHROME_BUILD_TYPE=_pgo_optimize. Includes release_defaults.vsprops. Enables Profile Guided Optimization (PGO) optimization (second pass). Uses "Full Optimization" and "Flavor small code".
-
-  release_impl_purify.vsprops
-    Included by ..\release.vsprops when CHROME_BUILD_TYPE=_purify. Includes release_defaults.vsprops. Disables optimizations. Used with Purify to test without debug tools and without optimization; i.e. NDEBUG is defined but the compiler doesn't optimize the binary.
diff --git a/src/build/internal/release_defaults.gypi b/src/build/internal/release_defaults.gypi
deleted file mode 100644
index 1bf674a..0000000
--- a/src/build/internal/release_defaults.gypi
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright (c) 2011 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-{
-  'msvs_settings': {
-    'VCCLCompilerTool': {
-      'StringPooling': 'true',
-    },
-    'VCLinkerTool': {
-      # No incremental linking.
-      'LinkIncremental': '1',
-      # Eliminate Unreferenced Data (/OPT:REF).
-      'OptimizeReferences': '2',
-      # Folding on (/OPT:ICF).
-      'EnableCOMDATFolding': '2',
-    },
-  },
-}
diff --git a/src/build/internal/release_impl.gypi b/src/build/internal/release_impl.gypi
deleted file mode 100644
index 5ac0e09..0000000
--- a/src/build/internal/release_impl.gypi
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright (c) 2011 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-{
-  'includes': ['release_defaults.gypi'],
-  'msvs_settings': {
-    'VCCLCompilerTool': {
-      'OmitFramePointers': 'false',
-      # The above is not sufficient (http://crbug.com/106711): it
-      # simply eliminates an explicit "/Oy", but both /O2 and /Ox
-      # perform FPO regardless, so we must explicitly disable.
-      # We still want the false setting above to avoid having
-      # "/Oy /Oy-" and warnings about overriding.
-      'AdditionalOptions': ['/Oy-'],
-    },
-  },
-}
diff --git a/src/build/internal/release_impl_official.gypi b/src/build/internal/release_impl_official.gypi
deleted file mode 100644
index d084ae3..0000000
--- a/src/build/internal/release_impl_official.gypi
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (c) 2011 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-{
-  'includes': ['release_defaults.gypi'],
-  'defines': ['OFFICIAL_BUILD'],
-  'msvs_settings': {
-    'VCCLCompilerTool': {
-      'InlineFunctionExpansion': '2',
-      'EnableIntrinsicFunctions': 'true',
-      'EnableFiberSafeOptimizations': 'true',
-      'OmitFramePointers': 'false',
-      # The above is not sufficient (http://crbug.com/106711): it
-      # simply eliminates an explicit "/Oy", but both /O2 and /Ox
-      # perform FPO regardless, so we must explicitly disable.
-      # We still want the false setting above to avoid having
-      # "/Oy /Oy-" and warnings about overriding.
-      'AdditionalOptions': ['/Oy-'],
-    },
-    'VCLibrarianTool': {
-      'AdditionalOptions': [
-        '/ltcg',
-        '/expectedoutputsize:120000000'
-      ],
-    },
-    'VCLinkerTool': {
-      'AdditionalOptions': [
-        '/time',
-        # This may reduce memory fragmentation during linking.
-        # The expected size is 40*1024*1024, which gives us about 10M of
-        # headroom as of Dec 16, 2011.
-        '/expectedoutputsize:41943040',
-      ],
-      'LinkTimeCodeGeneration': '1',
-      # The /PROFILE flag causes the linker to add a "FIXUP" debug stream to
-      # the generated PDB. According to MSDN documentation, this flag is only
-      # available (or perhaps supported) in the Enterprise (team development)
-      # version of Visual Studio. If this blocks your official build, simply
-      # comment out this line, then  re-run "gclient runhooks".
-      'Profile': 'true',
-    },
-  },
-}
diff --git a/src/build/ios/mac_build.gypi b/src/build/ios/mac_build.gypi
deleted file mode 100644
index 775ff26..0000000
--- a/src/build/ios/mac_build.gypi
+++ /dev/null
@@ -1,79 +0,0 @@
-# Copyright (c) 2012 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# Xcode throws an error if an iOS target depends on a Mac OS X target. So
-# any place a utility program needs to be build and run, an action is
-# used to run ninja as script to work around this.
-# Example:
-# {
-#   'target_name': 'foo',
-#   'type': 'none',
-#   'variables': {
-#     # The name of a directory used for ninja. This cannot be shared with
-#     # another mac build.
-#     'ninja_output_dir': 'ninja-foo',
-#     # The full path to the location in which the ninja executable should be
-#     # placed. This cannot be shared with another mac build.
-#    'ninja_product_dir':
-#      '<(DEPTH)/xcodebuild/<(ninja_output_dir)/<(CONFIGURATION_NAME)',
-#     # The list of all the gyp files that contain the targets to run.
-#     're_run_targets': [
-#       'foo.gyp',
-#     ],
-#   },
-#   'includes': ['path_to/mac_build.gypi'],
-#   'actions': [
-#     {
-#       'action_name': 'compile foo',
-#       'inputs': [],
-#       'outputs': [],
-#       'action': [
-#         '<@(ninja_cmd)',
-#         # All the targets to build.
-#         'foo1',
-#         'foo2',
-#       ],
-#     },
-#   ],
-# }
-{
-  'variables': {
-    # Common ninja command line flags.
-    'ninja_cmd': [
-      # Bounce through clean_env to clean up the environment so things
-      # set by the iOS build don't pollute the Mac build.
-      '<(DEPTH)/build/ios/clean_env.py',
-      # ninja must be found in the PATH.
-      'ADD_TO_PATH=<!(echo $PATH)',
-      'ninja',
-      '-C',
-      '<(ninja_product_dir)',
-    ],
-
-    # Common syntax to rerun gyp to generate the Mac projects.
-    're_run_gyp': [
-      'build/gyp_chromium',
-      # Don't use anything set for the iOS side of things.
-      '--ignore-environment',
-      # Generate for ninja
-      '--format=ninja',
-      # Generate files into xcodebuild/ninja
-      '-Goutput_dir=xcodebuild/<(ninja_output_dir)',
-      # nacl isn't in the iOS checkout, make sure it's turned off
-      '-Ddisable_nacl=1',
-      # Add a variable to handle specific cases for mac_build.
-      '-Dios_mac_build=1',
-      # Pass through the Mac SDK version.
-      '-Dmac_sdk=<(mac_sdk)',
-    ],
-
-    # Rerun gyp for each of the projects needed. This is what actually
-    # generates the projects on disk.
-    're_run_gyp_execution':
-      '<!(cd <(DEPTH) && <@(re_run_gyp) <@(re_run_targets))',
-  },
-  # Since these are used to generate things needed by other targets, make
-  # them hard dependencies so they are always built first.
-  'hard_dependency': 1,
-}
diff --git a/src/build/jar_file_jni_generator.gypi b/src/build/jar_file_jni_generator.gypi
deleted file mode 100644
index 3c14cf8..0000000
--- a/src/build/jar_file_jni_generator.gypi
+++ /dev/null
@@ -1,53 +0,0 @@
-# Copyright (c) 2012 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# This file is meant to be included into a target to provide a rule
-# to generate jni bindings for system Java-files in a consistent manner.
-#
-# To use this, create a gyp target with the following form:
-# {
-#   'target_name': 'android_jar_jni_headers',
-#   'type': 'none',
-#   'variables': {
-#     'jni_gen_dir': 'chrome',
-#     'input_java_class': 'java/io/InputStream.class',
-#     'input_jar_file': '<(android_sdk)/android.jar',
-#   },
-#   'includes': [ '../build/jar_file_jni_generator.gypi' ],
-# },
-
-{
-  'variables': {
-    'jni_generator': '<(DEPTH)/base/android/jni_generator/jni_generator.py',
-  },
-  'actions': [
-    {
-      'action_name': 'generate_jni_headers_from_jar_file',
-      'inputs': [
-        '<(jni_generator)',
-        '<(input_jar_file)',
-      ],
-      'variables': {
-        'java_class_name': '<!(basename <(input_java_class)|sed "s/\.class//")'
-      },
-      'outputs': [
-        '<(SHARED_INTERMEDIATE_DIR)/<(jni_gen_dir)/jni/<(java_class_name)_jni.h',
-      ],
-      'action': [
-        '<(jni_generator)',
-        '-j',
-        '<(input_jar_file)',
-        '--input_file',
-        '<(input_java_class)',
-        '--output_dir',
-        '<(SHARED_INTERMEDIATE_DIR)/<(jni_gen_dir)/jni',
-      ],
-      'message': 'Generating JNI bindings from  <(input_jar_file)/<(input_java_class)',
-      'process_outputs_as_sources': 1,
-    },
-  ],
-  # This target exports a hard dependency because it generates header
-  # files.
-  'hard_dependency': 1,
-}
diff --git a/src/build/java.gypi b/src/build/java.gypi
deleted file mode 100644
index 0a1df8a..0000000
--- a/src/build/java.gypi
+++ /dev/null
@@ -1,153 +0,0 @@
-# Copyright (c) 2012 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# This file is meant to be included into a target to provide a rule
-# to build Java in a consistent manner.
-#
-# To use this, create a gyp target with the following form:
-# {
-#   'target_name': 'my-package_java',
-#   'type': 'none',
-#   'variables': {
-#     'package_name': 'my-package',
-#     'java_in_dir': 'path/to/package/root',
-#   },
-#   'includes': ['path/to/this/gypi/file'],
-# }
-#
-# The generated jar-file will be:
-#   <(PRODUCT_DIR)/lib.java/chromium_<(package_name).jar
-# Required variables:
-#  package_name - Used to name the intermediate output directory and in the
-#    names of some output files.
-#  java_in_dir - The top-level java directory. The src should be in
-#    <java_in_dir>/src.
-# Optional/automatic variables:
-#  additional_input_paths - These paths will be included in the 'inputs' list to
-#    ensure that this target is rebuilt when one of these paths changes.
-#  additional_src_dirs - Additional directories with .java files to be compiled
-#    and included in the output of this target.
-#  generated_src_dirs - Same as additional_src_dirs except used for .java files
-#    that are generated at build time. This should be set automatically by a
-#    target's dependencies. The .java files in these directories are not
-#    included in the 'inputs' list (unlike additional_src_dirs).
-#  input_jars_paths - The path to jars to be included in the classpath. This
-#    should be filled automatically by depending on the appropriate targets.
-#  javac_includes - A list of specific files to include. This is by default
-#    empty, which leads to inclusion of all files specified. May include
-#    wildcard, and supports '**/' for recursive path wildcards, ie.:
-#    '**/MyFileRegardlessOfDirectory.java', '**/IncludedPrefix*.java'.
-#  has_java_resources - Set to 1 if the java target contains an
-#    Android-compatible resources folder named res.  If 1, R_package and
-#    R_package_relpath must also be set.
-#  R_package - The java package in which the R class (which maps resources to
-#    integer IDs) should be generated, e.g. org.chromium.content.
-#  R_package_relpath - Same as R_package, but replace each '.' with '/'.
-
-{
-  'dependencies': [
-    '<(DEPTH)/build/build_output_dirs_android.gyp:build_output_dirs'
-  ],
-  # This all_dependent_settings is used for java targets only. This will add the
-  # chromium_<(package_name) jar to the classpath of dependent java targets.
-  'all_dependent_settings': {
-    'variables': {
-      'input_jars_paths': ['<(PRODUCT_DIR)/lib.java/chromium_<(package_name).jar'],
-    },
-  },
-  'variables': {
-    'input_jars_paths': [],
-    'additional_src_dirs': [],
-    'javac_includes': [],
-    'additional_input_paths': ['>@(additional_R_files)'],
-    'generated_src_dirs': ['>@(generated_R_dirs)'],
-    'generated_R_dirs': [],
-    'additional_R_files': [],
-    'has_java_resources%': 0,
-  },
-  'conditions': [
-    ['has_java_resources == 1', {
-      'variables': {
-        'res_dir': '<(java_in_dir)/res',
-        'crunched_res_dir': '<(SHARED_INTERMEDIATE_DIR)/<(package_name)/res',
-        'R_dir': '<(SHARED_INTERMEDIATE_DIR)/<(package_name)/java_R',
-        'R_file': '<(R_dir)/<(R_package_relpath)/R.java',
-        'generated_src_dirs': ['<(R_dir)'],
-        'additional_input_paths': ['<(R_file)'],
-      },
-      'all_dependent_settings': {
-        'variables': {
-          # Dependent jars include this target's R.java file via
-          # generated_R_dirs and additional_R_files.
-          'generated_R_dirs': ['<(R_dir)'],
-          'additional_R_files': ['<(R_file)'],
-
-          # Dependent APKs include this target's resources via
-          # additional_res_dirs and additional_res_packages.
-          'additional_res_dirs': ['<(crunched_res_dir)', '<(res_dir)'],
-          'additional_res_packages': ['<(R_package)'],
-        },
-      },
-      'actions': [
-        # Generate R.java and crunch image resources.
-        {
-          'action_name': 'process_resources',
-          'message': 'processing resources for <(package_name)',
-          'inputs': [
-            '<(DEPTH)/build/android/process_resources.py',
-            '<!@(find <(res_dir) -type f)',
-          ],
-          'outputs': [
-            '<(R_file)',
-          ],
-          'action': [
-            '<(DEPTH)/build/android/process_resources.py',
-            '--android-sdk', '<(android_sdk)',
-            '--android-sdk-tools', '<(android_sdk_tools)',
-            '--R-package', '<(R_package)',
-            '--R-dir', '<(R_dir)',
-            '--res-dir', '<(res_dir)',
-            '--crunched-res-dir', '<(crunched_res_dir)',
-          ],
-        },
-      ],
-    }],
-  ],
-  'actions': [
-    {
-      'action_name': 'ant_<(package_name)',
-      'message': 'Building <(package_name) java sources.',
-      'inputs': [
-        'android/ant/common.xml',
-        'android/ant/chromium-jars.xml',
-        '>!@(find >(java_in_dir) >(additional_src_dirs) -name "*.java")',
-        '>@(input_jars_paths)',
-        '>@(additional_input_paths)',
-      ],
-      'outputs': [
-        '<(PRODUCT_DIR)/lib.java/chromium_<(package_name).jar',
-      ],
-      'action': [
-        'ant',
-        '-DCONFIGURATION_NAME=<(CONFIGURATION_NAME)',
-        '-DANDROID_SDK=<(android_sdk)',
-        '-DANDROID_SDK_ROOT=<(android_sdk_root)',
-        '-DANDROID_SDK_TOOLS=<(android_sdk_tools)',
-        '-DANDROID_SDK_VERSION=<(android_sdk_version)',
-        '-DANDROID_GDBSERVER=<(android_gdbserver)',
-        '-DPRODUCT_DIR=<(ant_build_out)',
-
-        '-DADDITIONAL_SRC_DIRS=>(additional_src_dirs)',
-        '-DGENERATED_SRC_DIRS=>(generated_src_dirs)',
-        '-DINPUT_JARS_PATHS=>(input_jars_paths)',
-        '-DPACKAGE_NAME=<(package_name)',
-        '-DJAVAC_INCLUDES=>(javac_includes)',
-
-        '-Dbasedir=<(java_in_dir)',
-        '-buildfile',
-        '<(DEPTH)/build/android/ant/chromium-jars.xml'
-      ]
-    },
-  ],
-}
diff --git a/src/build/java_aidl.gypi b/src/build/java_aidl.gypi
deleted file mode 100644
index bb8f2b8..0000000
--- a/src/build/java_aidl.gypi
+++ /dev/null
@@ -1,78 +0,0 @@
-# Copyright (c) 2012 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# This file is meant to be included into a target to provide a rule
-# to build Java aidl files in a consistent manner.
-#
-# To use this, create a gyp target with the following form:
-# {
-#   'target_name': 'aidl_aidl-file-name',
-#   'type': 'none',
-#   'variables': {
-#     'package_name': <name-of-package>
-#     'aidl_interface_file': '<interface-path>/<interface-file>.aidl',
-#     'aidl_import_include': '<(DEPTH)/<path-to-src-dir>',
-#   },
-#   'sources': {
-#     '<input-path1>/<input-file1>.aidl',
-#     '<input-path2>/<input-file2>.aidl',
-#     ...
-#   },
-#   'includes': ['<path-to-this-file>/java_aidl.gypi'],
-# }
-#
-#
-# The generated java files will be:
-#   <(PRODUCT_DIR)/lib.java/<input-file1>.java
-#   <(PRODUCT_DIR)/lib.java/<input-file2>.java
-#   ...
-#
-# Optional variables:
-#  aidl_import_include - This should be an absolute path to your java src folder
-#    that contains the classes that are imported by your aidl files.
-#
-# TODO(cjhopman): dependents need to rebuild when this target's inputs have changed.
-
-{
-  'direct_dependent_settings': {
-    'variables': {
-      'generated_src_dirs': ['<(SHARED_INTERMEDIATE_DIR)/<(package_name)/aidl/'],
-    },
-  },
-  'variables': {
-    'aidl_import_include%': '',
-    'additional_aidl_arguments': [],
-    'additional_aidl_input_paths': [],
-  },
-  'conditions': [
-    ['"<(aidl_import_include)"!=""', {
-      'variables': {
-        'additional_aidl_arguments': [ '-I<(aidl_import_include)' ],
-        'additional_aidl_input_paths': [ '<!@(find <(aidl_import_include) -name "*.java")', ]
-      }
-    }],
-  ],
-  'rules': [
-    {
-      'rule_name': 'compile_aidl',
-      'extension': 'aidl',
-      'inputs': [
-        '<(android_sdk)/framework.aidl',
-        '<(aidl_interface_file)',
-        '<@(additional_aidl_input_paths)',
-      ],
-      'outputs': [
-        '<(SHARED_INTERMEDIATE_DIR)/<(package_name)/aidl/<(RULE_INPUT_ROOT).java',
-      ],
-      'action': [
-        '<(android_sdk_tools)/aidl',
-        '-p<(android_sdk)/framework.aidl',
-        '-p<(aidl_interface_file)',
-        '<@(additional_aidl_arguments)',
-        '<(RULE_INPUT_PATH)',
-        '<(SHARED_INTERMEDIATE_DIR)/<(package_name)/aidl/<(RULE_INPUT_ROOT).java',
-      ],
-    },
-  ],
-}
diff --git a/src/build/java_apk.gypi b/src/build/java_apk.gypi
deleted file mode 100644
index 6cacee1..0000000
--- a/src/build/java_apk.gypi
+++ /dev/null
@@ -1,220 +0,0 @@
-# Copyright (c) 2012 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# This file is meant to be included into a target to provide a rule
-# to build Android APKs in a consistent manner.
-#
-# To use this, create a gyp target with the following form:
-# {
-#   'target_name': 'my_package_apk',
-#   'type': 'none',
-#   'variables': {
-#     'package_name': 'my_package',
-#     'apk_name': 'MyPackage',
-#     'java_in_dir': 'path/to/package/root',
-#     'resource_dir': 'res',
-#   },
-#   'includes': ['path/to/this/gypi/file'],
-# }
-#
-# Note that this assumes that there's an ant buildfile <package_name>_apk.xml in
-# java_in_dir. So, if you have package_name="content_shell" and
-# java_in_dir="content/shell/android/java" you should have a directory structure
-# like:
-#
-# content/shell/android/java/content_shell_apk.xml
-# content/shell/android/java/src/org/chromium/base/Foo.java
-# content/shell/android/java/src/org/chromium/base/Bar.java
-#
-# Required variables:
-#  package_name - Used to name the intermediate output directory and in the
-#    names of some output files.
-#  apk_name - The final apk will be named <apk_name>.apk
-#  java_in_dir - The top-level java directory. The src should be in
-#    <java_in_dir>/src.
-# Optional/automatic variables:
-#  additional_input_paths - These paths will be included in the 'inputs' list to
-#    ensure that this target is rebuilt when one of these paths changes.
-#  additional_res_dirs - Additional directories containing Android resources.
-#  additional_res_packages - Package names of the R.java files corresponding to
-#    each directory in additional_res_dirs.
-#  additional_src_dirs - Additional directories with .java files to be compiled
-#    and included in the output of this target.
-#  asset_location - The directory where assets are located (default:
-#    <PRODUCT_DIR>/<package_name>/assets).
-#  generated_src_dirs - Same as additional_src_dirs except used for .java files
-#    that are generated at build time. This should be set automatically by a
-#    target's dependencies. The .java files in these directories are not
-#    included in the 'inputs' list (unlike additional_src_dirs).
-#  input_jars_paths - The path to jars to be included in the classpath. This
-#    should be filled automatically by depending on the appropriate targets.
-#  is_test_apk - Set to 1 if building a test apk.  This prevents resources from
-#    dependencies from being re-included.
-#  native_libs_paths - The path to any native library to be included in this
-#    target. This should be a path in <(SHARED_LIB_DIR). A stripped copy of
-#    the library will be included in the apk and symbolic links to the
-#    unstripped copy will be added to <(android_product_out) to enable native
-#    debugging.
-#  resource_dir - The directory for resources.
-#  R_package - A custom Java package to generate the resource file R.java in.
-#    By default, the package given in AndroidManifest.xml will be used.
-
-{
-  'variables': {
-    'asset_location%': '',
-    'additional_input_paths': [],
-    'input_jars_paths': [],
-    'additional_src_dirs': [],
-    'generated_src_dirs': [],
-    'app_manifest_version_name%': '<(android_app_version_name)',
-    'app_manifest_version_code%': '<(android_app_version_code)',
-    'proguard_enabled%': 'false',
-    'proguard_flags%': '',
-    'native_libs_paths': [],
-    'jar_name%': 'chromium_apk_<(package_name).jar',
-    'resource_dir%':'',
-    'R_package%':'',
-    'additional_res_dirs': [],
-    'additional_res_packages': [],
-    'is_test_apk%': 0,
-    'conditions' : [
-      ['OS == "lb_shell" and target_arch == "android"', {
-        'chromium_src_dir' : '<(ant_build_out)/../../../external/chromium',
-      },{
-        'chromium_src_dir' : '<(ant_build_out)/../..',
-      }],
-    ],
-  },
-  'sources': [
-      '<@(native_libs_paths)'
-  ],
-  # Pass the jar path to the apk's "fake" jar target.  This would be better as
-  # direct_dependent_settings, but a variable set by a direct_dependent_settings
-  # cannot be lifted in a dependent to all_dependent_settings.
-  'all_dependent_settings': {
-    'variables': {
-      'apk_output_jar_path': '<(PRODUCT_DIR)/lib.java/<(jar_name)',
-    },
-  },
-  'rules': [
-    {
-      'rule_name': 'copy_and_strip_native_libraries',
-      'extension': 'so',
-      'variables': {
-        'stripped_library_path': '<(PRODUCT_DIR)/<(package_name)/libs/<(android_app_abi)/<(RULE_INPUT_ROOT).so',
-      },
-      'outputs': [
-        '<(stripped_library_path)',
-      ],
-      # There is no way to do 2 actions for each source library in gyp. So to
-      # both strip the library and create the link in <(link_dir) a separate
-      # script is required.
-      'action': [
-        '<(DEPTH)/build/android/prepare_library_for_apk',
-        '<(android_strip)',
-        '<(RULE_INPUT_PATH)',
-        '<(stripped_library_path)',
-      ],
-    },
-  ],
-  'actions': [
-    {
-      # This action updates the timestamp of AndroidManifest.xml
-      # The aapt package step doesn't know to repackage APK resources
-      # if only the version code changes,
-      # while a change to a resource file will cause a repackage.
-      # Note that ninja only runs this action
-      # when <(android_app_version_code) changes.
-      'action_name': 'touch_manifest_for_apk_repackage',
-      'message': 'Touching AndroidManifest.xml',
-      'inputs': [],
-      'outputs': ['<(java_in_dir)/AndroidManifest.xml'],
-      'action': [
-        # -c to 'touch' means don't create any files.
-        # <(android_app_version_code) is not a file, this is just a way to
-        # have ninja consider it a dependency.
-        'touch', '-c', '<(java_in_dir)/AndroidManifest.xml', '<(android_app_version_code)'
-      ],
-    },
-    {
-      'action_name': 'ant_<(package_name)_apk',
-      'message': 'Building <(package_name) apk.',
-      'inputs': [
-        '<(java_in_dir)/AndroidManifest.xml',
-        '<(DEPTH)/build/android/ant/chromium-apk.xml',
-        '<(DEPTH)/build/android/ant/common.xml',
-        '<(DEPTH)/build/android/ant/sdk-targets.xml',
-        # If there is a separate find for additional_src_dirs, it will find the
-        # wrong .java files when additional_src_dirs is empty.
-        '>!@(find >(java_in_dir) >(additional_src_dirs) -name "*.java")',
-        '>@(input_jars_paths)',
-        '>@(native_libs_paths)',
-        '>@(additional_input_paths)',
-      ],
-      'conditions': [
-        ['resource_dir!=""', {
-          'inputs': ['<!@(find <(java_in_dir)/<(resource_dir) -name "*")']
-        }],
-        ['is_test_apk == 1', {
-          'variables': {
-            'additional_res_dirs=': [],
-            'additional_res_packages=': [],
-          }
-        }],
-        ['proguard_enabled == "true" and proguard_flags != ""', {
-          'inputs': ['<(java_in_dir)/<(proguard_flags)']
-        }]
-      ],
-      'outputs': [
-        '<(PRODUCT_DIR)/apks/<(apk_name).apk',
-      ],
-      'action': [
-        'ant',
-        '-DAPP_ABI=<(android_app_abi)',
-        '-DANDROID_GDBSERVER=<(android_gdbserver)',
-        '-DANDROID_SDK=<(android_sdk)',
-        '-DANDROID_SDK_ROOT=<(android_sdk_root)',
-        '-DANDROID_SDK_TOOLS=<(android_sdk_tools)',
-        '-DANDROID_SDK_VERSION=<(android_sdk_version)',
-        '-DANDROID_TOOLCHAIN=<(android_toolchain)',
-        '-DCHROMIUM_SRC=<(chromium_src_dir)',
-        '-DCONFIGURATION_NAME=<(CONFIGURATION_NAME)',
-        '-DPRODUCT_DIR=<(ant_build_out)',
-
-        '-DAPK_NAME=<(apk_name)',
-        '-DASSET_DIR=<(asset_location)',
-        '-DADDITIONAL_SRC_DIRS=>(additional_src_dirs)',
-        '-DGENERATED_SRC_DIRS=>(generated_src_dirs)',
-        '-DINPUT_JARS_PATHS=>(input_jars_paths)',
-        '-DJAR_NAME=<(jar_name)',
-        '-DPACKAGE_NAME=<(package_name)',
-        '-DRESOURCE_DIR=<(resource_dir)',
-        '-DADDITIONAL_RES_DIRS=>(additional_res_dirs)',
-        '-DADDITIONAL_RES_PACKAGES=>(additional_res_packages)',
-        '-DAPP_MANIFEST_VERSION_NAME=<(app_manifest_version_name)',
-        '-DAPP_MANIFEST_VERSION_CODE=<(app_manifest_version_code)',
-        '-DPROGUARD_FLAGS=>(proguard_flags)',
-        '-DPROGUARD_ENABLED=>(proguard_enabled)',
-
-        '-Dbasedir=<(java_in_dir)',
-        '-buildfile',
-        '<(DEPTH)/build/android/ant/chromium-apk.xml',
-
-        # Specify CONFIGURATION_NAME as the target for ant to build. The
-        # buildfile will then build the appropriate SDK tools target.
-        '<(CONFIGURATION_NAME)',
-      ]
-    },
-  ],
-  'conditions': [
-    ['R_package != ""', {
-      'variables': {
-        # We generate R.java in package R_package (in addition to the package
-        # listed in the AndroidManifest.xml, which is unavoidable).
-        'additional_res_dirs': ['<(DEPTH)/build/android/ant/empty/res'],
-        'additional_res_packages': ['<(R_package)'],
-      },
-    }],
-  ],
-}
diff --git a/src/build/jni_generator.gypi b/src/build/jni_generator.gypi
deleted file mode 100644
index 837d9ab..0000000
--- a/src/build/jni_generator.gypi
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright (c) 2012 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# This file is meant to be included into a target to provide a rule
-# to generate jni bindings for Java-files in a consistent manner.
-#
-# To use this, create a gyp target with the following form:
-#  {
-#    'target_name': 'base_jni_headers',
-#    'type': 'none',
-#    'sources': [
-#      'android/java/src/org/chromium/base/BuildInfo.java',
-#      ...
-#      ...
-#      'android/java/src/org/chromium/base/SystemMessageHandler.java',
-#    ],
-#    'variables': {
-#      'jni_gen_dir': 'base',
-#    },
-#    'includes': [ '../build/jni_generator.gypi' ],
-#  },
-#
-# The generated file name pattern can be seen on the "outputs" section below.
-# (note that RULE_INPUT_ROOT is the basename for the java file).
-#
-# See base/android/jni_generator/jni_generator.py for more info about the
-# format of generating JNI bindings.
-
-{
-  'variables': {
-    'jni_generator': '<(DEPTH)/base/android/jni_generator/jni_generator.py',
-  },
-  'rules': [
-    {
-      'rule_name': 'generate_jni_headers',
-      'extension': 'java',
-      'inputs': [
-        '<(jni_generator)',
-      ],
-      'outputs': [
-        '<(SHARED_INTERMEDIATE_DIR)/<(jni_gen_dir)/jni/<(RULE_INPUT_ROOT)_jni.h',
-      ],
-      'action': [
-        '<(jni_generator)',
-        '--input_file',
-        '<(RULE_INPUT_PATH)',
-        '--output_dir',
-        '<(SHARED_INTERMEDIATE_DIR)/<(jni_gen_dir)/jni',
-      ],
-      'message': 'Generating JNI bindings from <(RULE_INPUT_PATH)',
-      'process_outputs_as_sources': 1,
-    },
-  ],
-  # This target exports a hard dependency because it generates header
-  # files.
-  'hard_dependency': 1,
-}
diff --git a/src/build/protoc_java.gypi b/src/build/protoc_java.gypi
deleted file mode 100644
index 4465c10..0000000
--- a/src/build/protoc_java.gypi
+++ /dev/null
@@ -1,83 +0,0 @@
-# Copyright (c) 2012 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# This file is meant to be included into a target to provide a rule
-# to invoke protoc in a consistent manner. This is only to be included
-# for Java targets. When including this file, a .jar-file will be generated.
-# For other targets, see protoc.gypi.
-#
-# To use this, create a gyp target with the following form:
-# {
-#   'target_name': 'my_proto_lib',
-#   'sources': [
-#     'foo.proto',
-#     'bar.proto',
-#   ],
-#   'variables': {
-#     'proto_in_dir': '.'
-#   },
-#   'includes': ['path/to/this/gypi/file'],
-# }
-#
-# The 'proto_in_dir' variable must be the relative path to the
-# directory containing the .proto files.  If left out, it defaults to '.'.
-#
-# The 'output_java_files' variable specifies a list of output files that will
-# be generated. It is based on the package and java_outer_classname fields in
-# the proto. All the values must be prefixed with >(java_out_dir), since that
-# is the root directory of all the output.
-#
-# Implementation notes:
-# A target_name of foo and proto-specified 'package' java.package.path produces:
-#   <(PRODUCT_DIR)/java_proto/foo/{java/package/path/}{Foo,Bar}.java
-# where Foo and Bar are taken from 'java_outer_classname' of the protos.
-#
-# How the .jar-file is created is different than how protoc is used for other
-# targets, and as such, this lives in its own file.
-
-{
-  'variables': {
-    'protoc': '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)protoc<(EXECUTABLE_SUFFIX)',
-    'java_out_dir': '<(PRODUCT_DIR)/java_proto/<(_target_name)/src',
-    'proto_in_dir%': '.',
-    'stamp_file': '<(java_out_dir).stamp',
-    'script': '<(DEPTH)/build/protoc_java.py',
-
-    # The rest of the variables here are for the java.gypi include.
-    'package_name': '<(_target_name)',
-    'java_in_dir': '<(DEPTH)/build/android/empty',
-    'generated_src_dirs': ['<(java_out_dir)'],
-    # Adding the |stamp_file| to |additional_input_paths| makes the actions in
-    # the include of java.gypi depend on the genproto_java action.
-    'additional_input_paths': ['<(stamp_file)'],
-  },
-  'actions': [
-    {
-      'action_name': 'genproto_java',
-      'inputs': [
-        '<(script)',
-        '<(protoc)',
-        '<@(_sources)',
-      ],
-      # We do not know the names of the generated files, so we use a stamp.
-      'outputs': [
-        '<(stamp_file)',
-      ],
-      'action': [
-        '<(script)',
-        '<(protoc)',
-        '<(proto_in_dir)',
-        '<(java_out_dir)',
-        '<(stamp_file)',
-        '<@(_sources)',
-      ],
-      'message': 'Generating Java code from <(proto_in_dir)',
-    },
-  ],
-  'dependencies': [
-    '<(DEPTH)/third_party/protobuf/protobuf.gyp:protoc#host',
-    '<(DEPTH)/third_party/protobuf/protobuf.gyp:protobuf_lite_javalib',
-  ],
-  'includes': [ 'java.gypi' ],
-}
diff --git a/src/build/protoc_java.py b/src/build/protoc_java.py
deleted file mode 100755
index 42e2044..0000000
--- a/src/build/protoc_java.py
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/usr/bin/env python
-# Copyright (c) 2012 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-"""Generate java source files from protobufs
-
-Usage:
-    protoc_java.py {protoc} {proto_path} {java_out} {stamp_file} {proto_files}
-
-This is a helper file for the genproto_java action in protoc_java.gypi.
-
-It performs the following steps:
-1. Deletes all old sources (ensures deleted classes are not part of new jars).
-2. Creates source directory.
-3. Generates Java files using protoc.
-4. Creates a new stamp file.
-"""
-
-import os
-import shutil
-import subprocess
-import sys
-
-def main(argv):
-  if len(argv) < 5:
-    usage()
-    return 1
-
-  protoc_path, proto_path, java_out, stamp_file = argv[1:5]
-  proto_files = argv[5:]
-
-  # Delete all old sources
-  if os.path.exists(java_out):
-    shutil.rmtree(java_out)
-
-  # Create source directory
-  os.makedirs(java_out)
-
-  # Generate Java files using protoc
-  ret = subprocess.call(
-      [protoc_path, '--proto_path', proto_path, '--java_out', java_out]
-      + proto_files)
-
-  if ret == 0:
-    # Create a new stamp file
-    with file(stamp_file, 'a'):
-      os.utime(stamp_file, None)
-
-  return ret
-
-def usage():
-  print(__doc__);
-
-if __name__ == '__main__':
-  sys.exit(main(sys.argv))
diff --git a/src/cobalt/CHANGELOG.md b/src/cobalt/CHANGELOG.md
index ea8dbbd..48dcdc8 100644
--- a/src/cobalt/CHANGELOG.md
+++ b/src/cobalt/CHANGELOG.md
@@ -137,6 +137,11 @@
    rendering; the web app does not know about the custom transform so may not
    layout elements appropriately.
 
+ - **Added support for javascript code caching.**
+
+   Platforms can provide javascript code caching by implementing
+   CobaltExtensionJavaScriptCacheApi.
+
 ## Version 20
 
  - **Support for QUIC and SPDY is now enabled.**
diff --git a/src/cobalt/audio/audio_destination_node.cc b/src/cobalt/audio/audio_destination_node.cc
index e35f1f9..6f82ba8 100644
--- a/src/cobalt/audio/audio_destination_node.cc
+++ b/src/cobalt/audio/audio_destination_node.cc
@@ -59,6 +59,7 @@
   if (!audio_device_) {
     audio_device_.reset(
         new AudioDevice(static_cast<int>(channel_count(NULL)), this));
+    SB_LOG(INFO) << "Created audio device " << audio_device_.get() << '.';
     context()->PreventGarbageCollection();
   }
   audio_device_to_delete_ = NULL;
@@ -73,7 +74,10 @@
   DCHECK_EQ(number_of_inputs(), 1u);
   bool all_finished = true;
   Input(0)->FillAudioBus(audio_bus, silence, &all_finished);
-  if (all_consumed && all_finished) {
+  if (all_consumed && all_finished &&
+      audio_device_to_delete_ != audio_device_.get()) {
+    SB_LOG(INFO) << "Schedule to destroy audio device " << audio_device_.get()
+                 << '.';
     audio_device_to_delete_ = audio_device_.get();
     message_loop_->task_runner()->PostTask(
         FROM_HERE, base::Bind(&AudioDestinationNode::DestroyAudioDevice,
@@ -82,7 +86,12 @@
 }
 
 void AudioDestinationNode::DestroyAudioDevice() {
+  AudioLock::AutoLock lock(audio_lock());
+  if (!audio_device_.get()) {
+    return;
+  }
   if (audio_device_.get() == audio_device_to_delete_) {
+    SB_LOG(INFO) << "Destroying audio device " << audio_device_.get() << '.';
     audio_device_.reset();
     context()->AllowGarbageCollection();
   }
diff --git a/src/cobalt/audio/audio_device.cc b/src/cobalt/audio/audio_device.cc
index b177d07..7755e7f 100644
--- a/src/cobalt/audio/audio_device.cc
+++ b/src/cobalt/audio/audio_device.cc
@@ -91,15 +91,11 @@
     : number_of_channels_(number_of_channels),
       output_sample_type_(GetPreferredOutputStarboardSampleType()),
       render_callback_(callback),
-#if SB_API_VERSION >= 11
       frames_per_channel_(std::max(SbAudioSinkGetMinBufferSizeInFrames(
                                        number_of_channels, output_sample_type_,
                                        kStandardOutputSampleRate) +
                                        kRenderBufferSizeFrames * 2,
                                    kDefaultFramesPerChannel)),
-#else  // SB_API_VERSION >= 11
-      frames_per_channel_(kDefaultFramesPerChannel),
-#endif  // SB_API_VERSION >= 11
       input_audio_bus_(static_cast<size_t>(number_of_channels),
                        static_cast<size_t>(kRenderBufferSizeFrames),
                        GetPreferredOutputSampleType(), AudioBus::kPlanar),
diff --git a/src/cobalt/base/message_queue.h b/src/cobalt/base/message_queue.h
index 60e72ea..be36eea 100644
--- a/src/cobalt/base/message_queue.h
+++ b/src/cobalt/base/message_queue.h
@@ -58,6 +58,14 @@
     }
   }
 
+  // Clear all the messages in the queue.
+  void ClearAll() {
+    TRACE_EVENT0("cobalt::base", "MessageQueue::ClearAll()");
+    base::AutoLock lock(mutex_);
+    std::queue<base::Closure> empty_queue;
+    empty_queue.swap(queue_);
+  }
+
  private:
   base::Lock mutex_;
   std::queue<base::Closure> queue_;
diff --git a/src/cobalt/base/tokens.h b/src/cobalt/base/tokens.h
index bfe8fee..3077c2c 100644
--- a/src/cobalt/base/tokens.h
+++ b/src/cobalt/base/tokens.h
@@ -83,6 +83,8 @@
     MacroOpWithNameOnly(mouseup)                                     \
     MacroOpWithNameOnly(nomatch)                                     \
     MacroOpWithNameOnly(off)                                         \
+    MacroOpWithNameOnly(offline)                                     \
+    MacroOpWithNameOnly(online)                                      \
     MacroOpWithNameOnly(open)                                        \
     MacroOpWithNameOnly(pointerdown)                                 \
     MacroOpWithNameOnly(pointerenter)                                \
@@ -103,6 +105,7 @@
     MacroOpWithNameOnly(removesourcebuffer)                          \
     MacroOpWithNameOnly(removetrack)                                 \
     MacroOpWithNameOnly(resize)                                      \
+    MacroOpWithNameOnly(resourcetimingbufferfull)                    \
     MacroOpWithNameOnly(result)                                      \
     MacroOpWithNameOnly(resume)                                      \
     MacroOpWithNameOnly(scroll)                                      \
diff --git a/src/cobalt/base/window_on_offline_event.h b/src/cobalt/base/window_on_offline_event.h
new file mode 100644
index 0000000..a8336ed
--- /dev/null
+++ b/src/cobalt/base/window_on_offline_event.h
@@ -0,0 +1,31 @@
+// Copyright 2021 The Cobalt Authors. 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_BASE_WINDOW_ON_OFFLINE_EVENT_H_
+#define COBALT_BASE_WINDOW_ON_OFFLINE_EVENT_H_
+
+#include "cobalt/base/event.h"
+
+namespace base {
+
+class WindowOnOfflineEvent : public Event {
+ public:
+  WindowOnOfflineEvent() {}
+
+  BASE_EVENT_SUBCLASS(WindowOnOfflineEvent);
+};
+
+}  // namespace base
+
+#endif  // COBALT_BASE_WINDOW_ON_OFFLINE_EVENT_H_
diff --git a/src/cobalt/base/window_on_online_event.h b/src/cobalt/base/window_on_online_event.h
new file mode 100644
index 0000000..a426895
--- /dev/null
+++ b/src/cobalt/base/window_on_online_event.h
@@ -0,0 +1,31 @@
+// Copyright 2021 The Cobalt Authors. 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_BASE_WINDOW_ON_ONLINE_EVENT_H_
+#define COBALT_BASE_WINDOW_ON_ONLINE_EVENT_H_
+
+#include "cobalt/base/event.h"
+
+namespace base {
+
+class WindowOnOnlineEvent : public Event {
+ public:
+  WindowOnOnlineEvent() {}
+
+  BASE_EVENT_SUBCLASS(WindowOnOnlineEvent);
+};
+
+}  // namespace base
+
+#endif  // COBALT_BASE_WINDOW_ON_ONLINE_EVENT_H_
diff --git a/src/cobalt/base/wrap_main_starboard.h b/src/cobalt/base/wrap_main_starboard.h
index 03c1f36..23a2d91 100644
--- a/src/cobalt/base/wrap_main_starboard.h
+++ b/src/cobalt/base/wrap_main_starboard.h
@@ -116,32 +116,36 @@
     case kSbEventTypeUser:
     case kSbEventTypeLink:
     case kSbEventTypeVerticalSync:
-#if SB_API_VERSION < 11
-    case kSbEventTypeNetworkDisconnect:
-    case kSbEventTypeNetworkConnect:
-#endif  // SB_API_VERSION < 11
     case kSbEventTypeScheduled:
+#if SB_API_VERSION >= SB_ACCESSIBILITY_EVENTS_RENAMED_VERSION
+    case kSbEventTypeAccessibilitySettingsChanged:
+#else
     case kSbEventTypeAccessiblitySettingsChanged:
+#endif  // SB_API_VERSION >= SB_ACCESSIBILITY_EVENTS_RENAMED_VERSION
     case kSbEventTypeLowMemory:
-#if SB_API_VERSION >= 8
     case kSbEventTypeWindowSizeChanged:
-#endif  // SB_API_VERSION >= 8
 #if SB_API_VERSION >= 12 || SB_HAS(ON_SCREEN_KEYBOARD)
     case kSbEventTypeOnScreenKeyboardShown:
     case kSbEventTypeOnScreenKeyboardHidden:
     case kSbEventTypeOnScreenKeyboardFocused:
     case kSbEventTypeOnScreenKeyboardBlurred:
-#if SB_API_VERSION >= 11
     case kSbEventTypeOnScreenKeyboardSuggestionsUpdated:
-#endif  // SB_API_VERSION >= 11
 #endif  // SB_API_VERSION >= 12 ||
         // SB_HAS(ON_SCREEN_KEYBOARD)
 #if SB_API_VERSION >= 12 || SB_HAS(CAPTIONS)
     case kSbEventTypeAccessibilityCaptionSettingsChanged:
 #endif  // SB_API_VERSION >= 12 || SB_HAS(CAPTIONS)
 #if SB_API_VERSION >= 12
+#if SB_API_VERSION >= SB_ACCESSIBILITY_EVENTS_RENAMED_VERSION
+    case kSbEventTypeAccessibilityTextToSpeechSettingsChanged:
+#else
     case kSbEventTypeAccessiblityTextToSpeechSettingsChanged:
+#endif  // SB_API_VERSION >= SB_ACCESSIBILITY_EVENTS_RENAMED_VERSION
 #endif  // SB_API_VERSION >= 12
+#if SB_API_VERSION >= SB_NETWORK_EVENTS_VERSION
+    case kSbEventTypeOsNetworkDisconnected:
+    case kSbEventTypeOsNetworkConnected:
+#endif
       event_function(event);
       break;
   }
diff --git a/src/cobalt/bindings/README.md b/src/cobalt/bindings/README.md
index bb956cc..5d3b6a3 100644
--- a/src/cobalt/bindings/README.md
+++ b/src/cobalt/bindings/README.md
@@ -141,9 +141,9 @@
 
 script/ implements various utility functions, abstraction classes, and wrapper classes that are both used directly by Cobalt, and to support bindings.  The majority of these are either interfaces to abstract over important engine native APIs (such as forcing garbage collection, or getting heap statistics), or interfaces to allow Cobalt to interact with ECMAScript defined types that are implemented by the JavaScript engine, such as promises.
 
-[JavaScriptEngine](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/cobalt/script/javascript_engine.h?type=cs&q=JavaScriptEngine&sq=package:%5Ecobalt$&g=0#36) is an abstract isolated instance of the JavaScript engine.  It corresponds directly to the types [JSRuntime](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/third_party/mozjs-45/js/src/vm/Runtime.h?type=cs&q=JSRuntime&sq=package:%5Ecobalt$&g=0#597) and [v8::Isolate](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/v8/include/v8.h?type=cs&q=file:v8+Isolate&sq=package:%5Ecobalt$&g=0#6746).  These types are about everything that has to do with a JavaScript *before* the global object gets involved, so things like the heap, and builtin functions.  As this class owns the JavaScript heap, Cobalt must go through it when Cobalt wants to interact with the JavaScript heap, for things such as [forcing garbage collection](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/cobalt/script/javascript_engine.h?type=cs&q=JavaScriptEngine&sq=package:%5Ecobalt$&g=0#64) (which is used to lower memory footprint during suspend), [reporting extra memory usage implied by the engine](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/cobalt/script/javascript_engine.h?type=cs&q=JavaScriptEngine&sq=package:%5Ecobalt$&g=0#69) (so for example, when a JavaScript object being alive means that xhr data that lives in native Cobalt buffers is kept alive), and [gathering information about the size of the heap](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/cobalt/script/javascript_engine.h?type=cs&q=JavaScriptEngine&sq=package:%5Ecobalt$&g=0#78) (used in APIs such as [window.performance.memory](https://developer.mozilla.org/en-US/docs/Web/API/Window/performance)).  Additionally, having a JavaScriptEngine is a prerequisite for creating a GlobalEnvironment, which is required for JavaScript execution.
+[JavaScriptEngine](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/cobalt/script/javascript_engine.h?type=cs&q=JavaScriptEngine&sq=package:%5Ecobalt$&g=0#36) is an abstract isolated instance of the JavaScript engine.  It corresponds directly to the type [v8::Isolate](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/v8/include/v8.h?type=cs&q=file:v8+Isolate&sq=package:%5Ecobalt$&g=0#6746).  These types are about everything that has to do with a JavaScript *before* the global object gets involved, so things like the heap, and builtin functions.  As this class owns the JavaScript heap, Cobalt must go through it when Cobalt wants to interact with the JavaScript heap, for things such as [forcing garbage collection](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/cobalt/script/javascript_engine.h?type=cs&q=JavaScriptEngine&sq=package:%5Ecobalt$&g=0#64) (which is used to lower memory footprint during suspend), [reporting extra memory usage implied by the engine](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/cobalt/script/javascript_engine.h?type=cs&q=JavaScriptEngine&sq=package:%5Ecobalt$&g=0#69) (so for example, when a JavaScript object being alive means that xhr data that lives in native Cobalt buffers is kept alive), and [gathering information about the size of the heap](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/cobalt/script/javascript_engine.h?type=cs&q=JavaScriptEngine&sq=package:%5Ecobalt$&g=0#78) (used in APIs such as [window.performance.memory](https://developer.mozilla.org/en-US/docs/Web/API/Window/performance)).  Additionally, having a JavaScriptEngine is a prerequisite for creating a GlobalEnvironment, which is required for JavaScript execution.
 
-[GlobalEnvironment](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/cobalt/script/global_environment.h?type=cs&q=GlobalEnvironment&sq=package:%5Ecobalt$&g=0#38) is an abstract JavaScript execution context, which effectively means the [global object](https://www.ecma-international.org/ecma-262/6.0/#sec-global-object) itself, as well as things that are very closely related to the global object (such as script evaluation).  It corresponds to types [JSContext](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/third_party/mozjs-45/js/src/jscntxt.h?type=cs&q=%22struct+JSContext%22&sq=package:%5Ecobalt$&g=0#289) and [v8::Context](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/v8/include/v8.h?type=cs&q=file:v8+Context&sq=package:%5Ecobalt$&g=0#8380).  Also note that in the case of Cobalt, there is only one GlobalEnvironment per JavaScriptEngine, because we don't support features that would require two (such as iframes).  Cobalt will use this class when it wants to do things such as [evaluate scripts](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/cobalt/script/global_environment.h?q=GlobalEnvironment&sq=package:%5Ecobalt$&dr=CSs#68), inspect execution state (such as [getting a stack trace](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/cobalt/script/global_environment.h?q=GlobalEnvironment&sq=package:%5Ecobalt$&dr=CSs#76)), or [interact with garbage collection](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/cobalt/script/global_environment.h?q=GlobalEnvironment&sq=package:%5Ecobalt$&dr=CSs#89).  Implementations of this class are also responsible for setting up the global environment
+[GlobalEnvironment](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/cobalt/script/global_environment.h?type=cs&q=GlobalEnvironment&sq=package:%5Ecobalt$&g=0#38) is an abstract JavaScript execution context, which effectively means the [global object](https://www.ecma-international.org/ecma-262/6.0/#sec-global-object) itself, as well as things that are very closely related to the global object (such as script evaluation).  It corresponds to type [v8::Context](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/v8/include/v8.h?type=cs&q=file:v8+Context&sq=package:%5Ecobalt$&g=0#8380).  Also note that in the case of Cobalt, there is only one GlobalEnvironment per JavaScriptEngine, because we don't support features that would require two (such as iframes).  Cobalt will use this class when it wants to do things such as [evaluate scripts](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/cobalt/script/global_environment.h?q=GlobalEnvironment&sq=package:%5Ecobalt$&dr=CSs#68), inspect execution state (such as [getting a stack trace](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/cobalt/script/global_environment.h?q=GlobalEnvironment&sq=package:%5Ecobalt$&dr=CSs#76)), or [interact with garbage collection](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/cobalt/script/global_environment.h?q=GlobalEnvironment&sq=package:%5Ecobalt$&dr=CSs#89).  Implementations of this class are also responsible for setting up the global environment
 
 Additionally, it contains interfaces for JavaScript (both ES6 and Web IDL) types that Cobalt DOM code needs to interact with, such as [array buffers](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/cobalt/script/array_buffer.h?q=array_buffer%5C.h&sq=package:%5Ecobalt$&dr), [callback functions](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/cobalt/script/callback_function.h?sq=package:%5Ecobalt$&dr&g=0), and [promises](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/cobalt/script/promise.h?sq=package:%5Ecobalt$&dr&g=0).  One worthy of special attention is [ValueHandle](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/cobalt/script/value_handle.h?sq=package:%5Ecobalt$&dr&g=0), which represents an opaque JavaScript value (that could be anything), which can be used when interactions with an object is not the goal, but rather just holding onto it, and then likely passing it to someone else.
 
@@ -151,7 +151,7 @@
 
 # script/$engine
 
-Then, we designate a specific area of code to be our engine specific implementation of the interfaces established in script.  We commit to an engine at gyp time, and then based on that, [select the appropriate set of files](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/cobalt/script/engine.gyp?type=cs&q=file:cobalt+file:gyp+javascript_engine&sq=package:%5Ecobalt$&g=0#26).  This is the only area of Cobalt code (except for bindings/*/$engine, which is essentially more of the same stuff) that is allowed to include engine specific headers (files in v8/ and third_party/mozjs-45/).  Maintaining this abstraction has been useful throughout our multiple JavaScript engine migrations over the years.
+Then, we designate a specific area of code to be our engine specific implementation of the interfaces established in script.  We commit to an engine at gyp time, and then based on that, [select the appropriate set of files](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/cobalt/script/engine.gyp?type=cs&q=file:cobalt+file:gyp+javascript_engine&sq=package:%5Ecobalt$&g=0#26).  This is the only area of Cobalt code (except for bindings/*/$engine, which is essentially more of the same stuff) that is allowed to include engine specific headers (files in v8/).  Maintaining this abstraction has been useful throughout our multiple JavaScript engine migrations over the years.
 
 A large portion of script/$engine is filling in the types discussed in the previous section.  So [V8cEngine](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/cobalt/script/v8c/v8c_engine.h?q=V8cEngine&sq=package:%5Ecobalt$&dr=CSs#31) implements JavaScriptEngine by wrapping a v8::Isolate, and [V8cGlobalEnvironment](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/cobalt/script/v8c/v8c_global_environment.h?type=cs&q=V8cGlobalEnvironment&sq=package:%5Ecobalt$&g=0#44) implements GlobalEnvironment by wrapping a v8::Context.  Note that these files are actually quite a bit bigger than just being thin wrappers over the V8 types, as they have more work to do in addition to just implementing their script interfaces, such as [maintaining state necessary for bindings](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/cobalt/script/v8c/v8c_global_environment.h?type=cs&q=V8cGlobalEnvironment&sq=package:%5Ecobalt$&g=0#175) (interface objects need to be owned somewhere), [serving as a bridge between the Isolate](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/cobalt/script/v8c/v8c_global_environment.h?type=cs&q=V8cGlobalEnvironment&sq=package:%5Ecobalt$&g=0#49), and [dealing with garbage collection interaction](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/cobalt/script/v8c/v8c_engine.h?q=V8cEngine&sq=package:%5Ecobalt$&dr=CSs#61) (the engine specific [script::Tracer](https://cobalt.googlesource.com/cobalt/+/2a8c847d785c1602f60915c8e0112e0aec6a15a5/src/cobalt/script/tracer.h?type=cs&q=script::Tracer&sq=package:%5Ecobalt$&g=0#54) is implemented near them).
 
diff --git a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/derived_dictionary.h b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/derived_dictionary.h
deleted file mode 100644
index 477c0ac..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/derived_dictionary.h
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright 2020 The Cobalt Authors. 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/array_buffer.h"
-#include "cobalt/script/array_buffer_view.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/script/sequence.h"
-#include "cobalt/script/typed_arrays.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;
-  }
-
-
- using is_a_generated_dict = std::true_type;
-
- 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) {
-  stream << "[DerivedDictionary]";
-  return stream;
-}
-
-}  // namespace cobalt
-}  // namespace bindings
-}  // namespace testing
-
-#endif  // DerivedDictionary_h
diff --git a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/dictionary_with_dictionary_member.h b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/dictionary_with_dictionary_member.h
deleted file mode 100644
index b3b609d..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/dictionary_with_dictionary_member.h
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2020 The Cobalt Authors. 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/array_buffer.h"
-#include "cobalt/script/array_buffer_view.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/script/sequence.h"
-#include "cobalt/script/typed_arrays.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;
-  }
-
-
- using is_a_generated_dict = std::true_type;
-
- 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) {
-  stream << "[DictionaryWithDictionaryMember]";
-  return stream;
-}
-
-}  // namespace cobalt
-}  // namespace bindings
-}  // namespace testing
-
-#endif  // DictionaryWithDictionaryMember_h
diff --git a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_anonymous_indexed_getter_interface.cc b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_anonymous_indexed_getter_interface.cc
deleted file mode 100644
index 20c10f4..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_anonymous_indexed_getter_interface.cc
+++ /dev/null
@@ -1,541 +0,0 @@
-
-
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.cc.template
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "cobalt/bindings/testing/mozjs_anonymous_indexed_getter_interface.h"
-
-#include "base/trace_event/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/script/value_handle.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs-45/callback_function_conversion.h"
-#include "cobalt/script/mozjs-45/conversion_helpers.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer_view.h"
-#include "cobalt/script/mozjs-45/mozjs_callback_function.h"
-#include "cobalt/script/mozjs-45/mozjs_data_view.h"
-#include "cobalt/script/mozjs-45/mozjs_exception_state.h"
-#include "cobalt/script/mozjs-45/mozjs_global_environment.h"
-#include "cobalt/script/mozjs-45/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs-45/mozjs_typed_arrays.h"
-#include "cobalt/script/mozjs-45/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs-45/mozjs_value_handle.h"
-#include "cobalt/script/mozjs-45/native_promise.h"
-#include "cobalt/script/mozjs-45/proxy_handler.h"
-#include "cobalt/script/mozjs-45/type_traits.h"
-#include "cobalt/script/mozjs-45/wrapper_factory.h"
-#include "cobalt/script/mozjs-45/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs-45/js/src/jsapi.h"
-#include "third_party/mozjs-45/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::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandleHolder;
-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::kConversionFlagObjectOnly;
-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));
-  }
-}
-
-bool GetIndexedProperty(
-    JSContext* context, JS::HandleObject object, JS::HandleId id,
-    JS::MutableHandleValue vp) {
-  JS::RootedValue id_value(context);
-  if (!JS_IdToValue(context, id, &id_value)) {
-    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();
-}
-
-
-
-bool SetIndexedProperty(
-  JSContext* context, JS::HandleObject object, JS::HandleId id,
-  JS::MutableHandleValue vp, JS::ObjectOpResult& object_op_result) {
-  JS::RootedValue id_value(context);
-  if (!JS_IdToValue(context, id, &id_value)) {
-    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);
-  if (!exception_state.is_exception_set()) {
-    return object_op_result.succeed();
-  } else {
-    return false;
-  }
-}
-
-
-
-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>::DestructorAtExit
-    proxy_handler;
-
-bool DummyConstructor(JSContext* context, unsigned int argc, JS::Value* vp) {
-  MozjsExceptionState exception(context);
-  exception.SetSimpleException(
-      script::kTypeError, "AnonymousIndexedGetterInterface is not constructible.");
-  return false;
-}
-
-bool HasInstance(JSContext *context, JS::HandleObject type,
-                 JS::MutableHandleValue vp, bool *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;
-}
-
-const JSClass instance_class_definition = {
-    "AnonymousIndexedGetterInterface",
-    0 | JSCLASS_HAS_PRIVATE,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    &WrapperPrivate::Finalizer,  // finalize
-    NULL,  // call
-    NULL,  // hasInstance
-    NULL,  // construct
-    &WrapperPrivate::Trace,  // trace
-};
-
-const JSClass prototype_class_definition = {
-    "AnonymousIndexedGetterInterfacePrototype",
-};
-
-const JSClass interface_object_class_definition = {
-    "AnonymousIndexedGetterInterfaceConstructor",
-    0,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    NULL,  // finalize
-    NULL,  // call
-    &HasInstance,
-    NULL,
-};
-
-bool get_length(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-  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()) {
-    args.rval().set(result_value);
-  }
-  return !exception_state.is_exception_set();
-}
-
-
-
-const JSPropertySpec prototype_properties[] = {
-  {  // Readonly attribute
-    "length",
-    JSPROP_SHARED | JSPROP_ENUMERATE,
-    { { &get_length, NULL } },
-    JSNATIVE_WRAPPER(NULL),
-  },
-  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);
-
-  interface_data->prototype = JS_NewObjectWithGivenProto(
-    context, &prototype_class_definition, parent_prototype
-  );
-
-  JS::RootedObject rooted_prototype(context, interface_data->prototype);
-  bool success = JS_DefineProperties(
-      context,
-      rooted_prototype,
-      prototype_properties);
-
-  DCHECK(success);
-  success = JS_DefineFunctions(
-      context, rooted_prototype, prototype_functions);
-  DCHECK(success);
-
-  JS::RootedObject function_prototype(
-      context, JS_GetFunctionPrototype(context, global_object));
-  DCHECK(function_prototype);
-
-  const char name[] =
-      "AnonymousIndexedGetterInterface";
-
-  JSFunction* function = js::NewFunctionWithReserved(
-      context,
-      DummyConstructor,
-      0,
-      JSFUN_CONSTRUCTOR,
-      name);
-  interface_data->interface_object = JS_GetFunctionObject(function);
-
-  // Add the InterfaceObject.name property.
-  JS::RootedObject rooted_interface_object(
-      context, interface_data->interface_object);
-  JS::RootedValue name_value(context);
-
-  js::SetPrototype(context, rooted_interface_object, function_prototype);
-
-  name_value.setString(JS_NewStringCopyZ(context, name));
-  success = JS_DefineProperty(
-      context, rooted_interface_object, "name", name_value, JSPROP_READONLY,
-      NULL, NULL);
-  DCHECK(success);
-
-  // Define interface object properties (excluding 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);
-  success = JS_LinkConstructorAndPrototype(
-      context,
-      rooted_interface_object,
-      rooted_prototype);
-  DCHECK(success);
-}
-
-inline InterfaceData* GetInterfaceData(JSContext* context) {
-  const int kInterfaceUniqueId = 0;
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  // By convention, the |MozjsGlobalEnvironment| that we are associated with
-  // will hold our |InterfaceData| at index |kInterfaceUniqueId|, as we asked
-  // for it to be there in the first place, and could not have conflicted with
-  // any other interface.
-  return global_environment->GetInterfaceData(kInterfaceUniqueId);
-}
-
-}  // 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);
-
-  JSAutoCompartment auto_compartment(context, 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, &instance_class_definition, prototype));
-  DCHECK(new_object);
-  JS::RootedObject proxy(context,
-      ProxyHandler::NewProxy(
-          context, proxy_handler.Pointer(), new_object, prototype));
-  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));
-  const JSClass* proto_class = JS_GetClass(prototype);
-  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/mozjs45/testing/cobalt/bindings/testing/mozjs_anonymous_indexed_getter_interface.h b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_anonymous_indexed_getter_interface.h
deleted file mode 100644
index 8b19d05..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_anonymous_indexed_getter_interface.h
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.h.template
-
-#ifndef MozjsAnonymousIndexedGetterInterface_h
-#define MozjsAnonymousIndexedGetterInterface_h
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "base/containers/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-45/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/mozjs45/testing/cobalt/bindings/testing/mozjs_anonymous_named_getter_interface.cc b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_anonymous_named_getter_interface.cc
deleted file mode 100644
index 4fff4d4..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_anonymous_named_getter_interface.cc
+++ /dev/null
@@ -1,489 +0,0 @@
-
-
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.cc.template
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "cobalt/bindings/testing/mozjs_anonymous_named_getter_interface.h"
-
-#include "base/trace_event/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/script/value_handle.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs-45/callback_function_conversion.h"
-#include "cobalt/script/mozjs-45/conversion_helpers.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer_view.h"
-#include "cobalt/script/mozjs-45/mozjs_callback_function.h"
-#include "cobalt/script/mozjs-45/mozjs_data_view.h"
-#include "cobalt/script/mozjs-45/mozjs_exception_state.h"
-#include "cobalt/script/mozjs-45/mozjs_global_environment.h"
-#include "cobalt/script/mozjs-45/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs-45/mozjs_typed_arrays.h"
-#include "cobalt/script/mozjs-45/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs-45/mozjs_value_handle.h"
-#include "cobalt/script/mozjs-45/native_promise.h"
-#include "cobalt/script/mozjs-45/proxy_handler.h"
-#include "cobalt/script/mozjs-45/type_traits.h"
-#include "cobalt/script/mozjs-45/wrapper_factory.h"
-#include "cobalt/script/mozjs-45/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs-45/js/src/jsapi.h"
-#include "third_party/mozjs-45/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::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandleHolder;
-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::kConversionFlagObjectOnly;
-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);
-}
-
-bool GetNamedProperty(
-    JSContext* context, JS::HandleObject object, JS::HandleId id,
-    JS::MutableHandleValue vp) {
-  JS::RootedValue id_value(context);
-  if (!JS_IdToValue(context, id, &id_value)) {
-    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();
-}
-
-
-
-bool SetNamedProperty(
-  JSContext* context, JS::HandleObject object, JS::HandleId id,
-  JS::MutableHandleValue vp, JS::ObjectOpResult& object_op_result) {
-  JS::RootedValue id_value(context);
-  if (!JS_IdToValue(context, id, &id_value)) {
-    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);
-
-  if (!exception_state.is_exception_set()) {
-    return object_op_result.succeed();
-  } else {
-    return false;
-  }
-}
-
-
-
-
-
-
-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>::DestructorAtExit
-    proxy_handler;
-
-bool DummyConstructor(JSContext* context, unsigned int argc, JS::Value* vp) {
-  MozjsExceptionState exception(context);
-  exception.SetSimpleException(
-      script::kTypeError, "AnonymousNamedGetterInterface is not constructible.");
-  return false;
-}
-
-bool HasInstance(JSContext *context, JS::HandleObject type,
-                 JS::MutableHandleValue vp, bool *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;
-}
-
-const JSClass instance_class_definition = {
-    "AnonymousNamedGetterInterface",
-    0 | JSCLASS_HAS_PRIVATE,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    &WrapperPrivate::Finalizer,  // finalize
-    NULL,  // call
-    NULL,  // hasInstance
-    NULL,  // construct
-    &WrapperPrivate::Trace,  // trace
-};
-
-const JSClass prototype_class_definition = {
-    "AnonymousNamedGetterInterfacePrototype",
-};
-
-const JSClass interface_object_class_definition = {
-    "AnonymousNamedGetterInterfaceConstructor",
-    0,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    NULL,  // finalize
-    NULL,  // call
-    &HasInstance,
-    NULL,
-};
-
-
-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);
-
-  interface_data->prototype = JS_NewObjectWithGivenProto(
-    context, &prototype_class_definition, parent_prototype
-  );
-
-  JS::RootedObject rooted_prototype(context, interface_data->prototype);
-  bool success = JS_DefineProperties(
-      context,
-      rooted_prototype,
-      prototype_properties);
-
-  DCHECK(success);
-  success = JS_DefineFunctions(
-      context, rooted_prototype, prototype_functions);
-  DCHECK(success);
-
-  JS::RootedObject function_prototype(
-      context, JS_GetFunctionPrototype(context, global_object));
-  DCHECK(function_prototype);
-
-  const char name[] =
-      "AnonymousNamedGetterInterface";
-
-  JSFunction* function = js::NewFunctionWithReserved(
-      context,
-      DummyConstructor,
-      0,
-      JSFUN_CONSTRUCTOR,
-      name);
-  interface_data->interface_object = JS_GetFunctionObject(function);
-
-  // Add the InterfaceObject.name property.
-  JS::RootedObject rooted_interface_object(
-      context, interface_data->interface_object);
-  JS::RootedValue name_value(context);
-
-  js::SetPrototype(context, rooted_interface_object, function_prototype);
-
-  name_value.setString(JS_NewStringCopyZ(context, name));
-  success = JS_DefineProperty(
-      context, rooted_interface_object, "name", name_value, JSPROP_READONLY,
-      NULL, NULL);
-  DCHECK(success);
-
-  // Define interface object properties (excluding 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);
-  success = JS_LinkConstructorAndPrototype(
-      context,
-      rooted_interface_object,
-      rooted_prototype);
-  DCHECK(success);
-}
-
-inline InterfaceData* GetInterfaceData(JSContext* context) {
-  const int kInterfaceUniqueId = 1;
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  // By convention, the |MozjsGlobalEnvironment| that we are associated with
-  // will hold our |InterfaceData| at index |kInterfaceUniqueId|, as we asked
-  // for it to be there in the first place, and could not have conflicted with
-  // any other interface.
-  return global_environment->GetInterfaceData(kInterfaceUniqueId);
-}
-
-}  // 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);
-
-  JSAutoCompartment auto_compartment(context, 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, &instance_class_definition, prototype));
-  DCHECK(new_object);
-  JS::RootedObject proxy(context,
-      ProxyHandler::NewProxy(
-          context, proxy_handler.Pointer(), new_object, prototype));
-  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));
-  const JSClass* proto_class = JS_GetClass(prototype);
-  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/mozjs45/testing/cobalt/bindings/testing/mozjs_anonymous_named_getter_interface.h b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_anonymous_named_getter_interface.h
deleted file mode 100644
index ecd0de0..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_anonymous_named_getter_interface.h
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.h.template
-
-#ifndef MozjsAnonymousNamedGetterInterface_h
-#define MozjsAnonymousNamedGetterInterface_h
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "base/containers/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-45/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/mozjs45/testing/cobalt/bindings/testing/mozjs_anonymous_named_indexed_getter_interface.cc b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_anonymous_named_indexed_getter_interface.cc
deleted file mode 100644
index 2161ae4..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_anonymous_named_indexed_getter_interface.cc
+++ /dev/null
@@ -1,640 +0,0 @@
-
-
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.cc.template
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "cobalt/bindings/testing/mozjs_anonymous_named_indexed_getter_interface.h"
-
-#include "base/trace_event/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/script/value_handle.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs-45/callback_function_conversion.h"
-#include "cobalt/script/mozjs-45/conversion_helpers.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer_view.h"
-#include "cobalt/script/mozjs-45/mozjs_callback_function.h"
-#include "cobalt/script/mozjs-45/mozjs_data_view.h"
-#include "cobalt/script/mozjs-45/mozjs_exception_state.h"
-#include "cobalt/script/mozjs-45/mozjs_global_environment.h"
-#include "cobalt/script/mozjs-45/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs-45/mozjs_typed_arrays.h"
-#include "cobalt/script/mozjs-45/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs-45/mozjs_value_handle.h"
-#include "cobalt/script/mozjs-45/native_promise.h"
-#include "cobalt/script/mozjs-45/proxy_handler.h"
-#include "cobalt/script/mozjs-45/type_traits.h"
-#include "cobalt/script/mozjs-45/wrapper_factory.h"
-#include "cobalt/script/mozjs-45/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs-45/js/src/jsapi.h"
-#include "third_party/mozjs-45/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::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandleHolder;
-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::kConversionFlagObjectOnly;
-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);
-}
-
-bool GetNamedProperty(
-    JSContext* context, JS::HandleObject object, JS::HandleId id,
-    JS::MutableHandleValue vp) {
-  JS::RootedValue id_value(context);
-  if (!JS_IdToValue(context, id, &id_value)) {
-    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();
-}
-
-
-
-bool SetNamedProperty(
-  JSContext* context, JS::HandleObject object, JS::HandleId id,
-  JS::MutableHandleValue vp, JS::ObjectOpResult& object_op_result) {
-  JS::RootedValue id_value(context);
-  if (!JS_IdToValue(context, id, &id_value)) {
-    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);
-
-  if (!exception_state.is_exception_set()) {
-    return object_op_result.succeed();
-  } else {
-    return false;
-  }
-}
-
-
-
-
-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));
-  }
-}
-
-bool GetIndexedProperty(
-    JSContext* context, JS::HandleObject object, JS::HandleId id,
-    JS::MutableHandleValue vp) {
-  JS::RootedValue id_value(context);
-  if (!JS_IdToValue(context, id, &id_value)) {
-    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();
-}
-
-
-
-bool SetIndexedProperty(
-  JSContext* context, JS::HandleObject object, JS::HandleId id,
-  JS::MutableHandleValue vp, JS::ObjectOpResult& object_op_result) {
-  JS::RootedValue id_value(context);
-  if (!JS_IdToValue(context, id, &id_value)) {
-    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);
-  if (!exception_state.is_exception_set()) {
-    return object_op_result.succeed();
-  } else {
-    return false;
-  }
-}
-
-
-
-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>::DestructorAtExit
-    proxy_handler;
-
-bool DummyConstructor(JSContext* context, unsigned int argc, JS::Value* vp) {
-  MozjsExceptionState exception(context);
-  exception.SetSimpleException(
-      script::kTypeError, "AnonymousNamedIndexedGetterInterface is not constructible.");
-  return false;
-}
-
-bool HasInstance(JSContext *context, JS::HandleObject type,
-                 JS::MutableHandleValue vp, bool *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;
-}
-
-const JSClass instance_class_definition = {
-    "AnonymousNamedIndexedGetterInterface",
-    0 | JSCLASS_HAS_PRIVATE,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    &WrapperPrivate::Finalizer,  // finalize
-    NULL,  // call
-    NULL,  // hasInstance
-    NULL,  // construct
-    &WrapperPrivate::Trace,  // trace
-};
-
-const JSClass prototype_class_definition = {
-    "AnonymousNamedIndexedGetterInterfacePrototype",
-};
-
-const JSClass interface_object_class_definition = {
-    "AnonymousNamedIndexedGetterInterfaceConstructor",
-    0,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    NULL,  // finalize
-    NULL,  // call
-    &HasInstance,
-    NULL,
-};
-
-bool get_length(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-  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()) {
-    args.rval().set(result_value);
-  }
-  return !exception_state.is_exception_set();
-}
-
-
-
-const JSPropertySpec prototype_properties[] = {
-  {  // Readonly attribute
-    "length",
-    JSPROP_SHARED | JSPROP_ENUMERATE,
-    { { &get_length, NULL } },
-    JSNATIVE_WRAPPER(NULL),
-  },
-  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);
-
-  interface_data->prototype = JS_NewObjectWithGivenProto(
-    context, &prototype_class_definition, parent_prototype
-  );
-
-  JS::RootedObject rooted_prototype(context, interface_data->prototype);
-  bool success = JS_DefineProperties(
-      context,
-      rooted_prototype,
-      prototype_properties);
-
-  DCHECK(success);
-  success = JS_DefineFunctions(
-      context, rooted_prototype, prototype_functions);
-  DCHECK(success);
-
-  JS::RootedObject function_prototype(
-      context, JS_GetFunctionPrototype(context, global_object));
-  DCHECK(function_prototype);
-
-  const char name[] =
-      "AnonymousNamedIndexedGetterInterface";
-
-  JSFunction* function = js::NewFunctionWithReserved(
-      context,
-      DummyConstructor,
-      0,
-      JSFUN_CONSTRUCTOR,
-      name);
-  interface_data->interface_object = JS_GetFunctionObject(function);
-
-  // Add the InterfaceObject.name property.
-  JS::RootedObject rooted_interface_object(
-      context, interface_data->interface_object);
-  JS::RootedValue name_value(context);
-
-  js::SetPrototype(context, rooted_interface_object, function_prototype);
-
-  name_value.setString(JS_NewStringCopyZ(context, name));
-  success = JS_DefineProperty(
-      context, rooted_interface_object, "name", name_value, JSPROP_READONLY,
-      NULL, NULL);
-  DCHECK(success);
-
-  // Define interface object properties (excluding 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);
-  success = JS_LinkConstructorAndPrototype(
-      context,
-      rooted_interface_object,
-      rooted_prototype);
-  DCHECK(success);
-}
-
-inline InterfaceData* GetInterfaceData(JSContext* context) {
-  const int kInterfaceUniqueId = 2;
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  // By convention, the |MozjsGlobalEnvironment| that we are associated with
-  // will hold our |InterfaceData| at index |kInterfaceUniqueId|, as we asked
-  // for it to be there in the first place, and could not have conflicted with
-  // any other interface.
-  return global_environment->GetInterfaceData(kInterfaceUniqueId);
-}
-
-}  // 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);
-
-  JSAutoCompartment auto_compartment(context, 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, &instance_class_definition, prototype));
-  DCHECK(new_object);
-  JS::RootedObject proxy(context,
-      ProxyHandler::NewProxy(
-          context, proxy_handler.Pointer(), new_object, prototype));
-  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));
-  const JSClass* proto_class = JS_GetClass(prototype);
-  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/mozjs45/testing/cobalt/bindings/testing/mozjs_anonymous_named_indexed_getter_interface.h b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_anonymous_named_indexed_getter_interface.h
deleted file mode 100644
index 0c9746d..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_anonymous_named_indexed_getter_interface.h
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.h.template
-
-#ifndef MozjsAnonymousNamedIndexedGetterInterface_h
-#define MozjsAnonymousNamedIndexedGetterInterface_h
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "base/containers/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-45/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/mozjs45/testing/cobalt/bindings/testing/mozjs_arbitrary_interface.cc b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_arbitrary_interface.cc
deleted file mode 100644
index c2d685c..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_arbitrary_interface.cc
+++ /dev/null
@@ -1,564 +0,0 @@
-
-
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.cc.template
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "cobalt/bindings/testing/mozjs_arbitrary_interface.h"
-
-#include "base/trace_event/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/script/value_handle.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs-45/callback_function_conversion.h"
-#include "cobalt/script/mozjs-45/conversion_helpers.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer_view.h"
-#include "cobalt/script/mozjs-45/mozjs_callback_function.h"
-#include "cobalt/script/mozjs-45/mozjs_data_view.h"
-#include "cobalt/script/mozjs-45/mozjs_exception_state.h"
-#include "cobalt/script/mozjs-45/mozjs_global_environment.h"
-#include "cobalt/script/mozjs-45/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs-45/mozjs_typed_arrays.h"
-#include "cobalt/script/mozjs-45/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs-45/mozjs_value_handle.h"
-#include "cobalt/script/mozjs-45/native_promise.h"
-#include "cobalt/script/mozjs-45/proxy_handler.h"
-#include "cobalt/script/mozjs-45/type_traits.h"
-#include "cobalt/script/mozjs-45/wrapper_factory.h"
-#include "cobalt/script/mozjs-45/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs-45/js/src/jsapi.h"
-#include "third_party/mozjs-45/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::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandleHolder;
-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::kConversionFlagObjectOnly;
-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>::DestructorAtExit
-    proxy_handler;
-
-bool Constructor(JSContext* context, unsigned int argc, JS::Value* vp);
-
-bool HasInstance(JSContext *context, JS::HandleObject type,
-                 JS::MutableHandleValue vp, bool *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;
-}
-
-const JSClass instance_class_definition = {
-    "ArbitraryInterface",
-    0 | JSCLASS_HAS_PRIVATE,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    &WrapperPrivate::Finalizer,  // finalize
-    NULL,  // call
-    NULL,  // hasInstance
-    NULL,  // construct
-    &WrapperPrivate::Trace,  // trace
-};
-
-const JSClass prototype_class_definition = {
-    "ArbitraryInterfacePrototype",
-};
-
-const JSClass interface_object_class_definition = {
-    "ArbitraryInterfaceConstructor",
-    0,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    NULL,  // finalize
-    NULL,  // call
-    &HasInstance,
-    Constructor,
-};
-
-bool get_arbitraryProperty(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-  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()) {
-    args.rval().set(result_value);
-  }
-  return !exception_state.is_exception_set();
-}
-
-bool set_arbitraryProperty(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-
-  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;
-  if (args.length() != 1) {
-    NOTREACHED();
-    return false;
-  }
-  FromJSValue(context, args[0], 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();
-}
-
-
-bool 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)) {
-    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",
-    JSPROP_SHARED | JSPROP_ENUMERATE,
-    { { &get_arbitraryProperty, NULL } },
-    { { &set_arbitraryProperty, NULL } },
-  },
-  JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
-  JS_FNSPEC(
-      "arbitraryFunction", fcn_arbitraryFunction, NULL,
-      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);
-
-  interface_data->prototype = JS_NewObjectWithGivenProto(
-    context, &prototype_class_definition, parent_prototype
-  );
-
-  JS::RootedObject rooted_prototype(context, interface_data->prototype);
-  bool success = JS_DefineProperties(
-      context,
-      rooted_prototype,
-      prototype_properties);
-
-  DCHECK(success);
-  success = JS_DefineFunctions(
-      context, rooted_prototype, prototype_functions);
-  DCHECK(success);
-
-  JS::RootedObject function_prototype(
-      context, JS_GetFunctionPrototype(context, global_object));
-  DCHECK(function_prototype);
-
-  const char name[] =
-      "ArbitraryInterface";
-
-  JSFunction* function = js::NewFunctionWithReserved(
-      context,
-      Constructor,
-      0,
-      JSFUN_CONSTRUCTOR,
-      name);
-  interface_data->interface_object = JS_GetFunctionObject(function);
-
-  // Add the InterfaceObject.name property.
-  JS::RootedObject rooted_interface_object(
-      context, interface_data->interface_object);
-  JS::RootedValue name_value(context);
-
-  js::SetPrototype(context, rooted_interface_object, function_prototype);
-
-  name_value.setString(JS_NewStringCopyZ(context, name));
-  success = JS_DefineProperty(
-      context, rooted_interface_object, "name", name_value, JSPROP_READONLY,
-      NULL, NULL);
-  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,
-      JSPROP_READONLY, NULL, NULL);
-  DCHECK(success);
-
-  // Define interface object properties (excluding 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);
-  success = JS_LinkConstructorAndPrototype(
-      context,
-      rooted_interface_object,
-      rooted_prototype);
-  DCHECK(success);
-}
-
-inline InterfaceData* GetInterfaceData(JSContext* context) {
-  const int kInterfaceUniqueId = 3;
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  // By convention, the |MozjsGlobalEnvironment| that we are associated with
-  // will hold our |InterfaceData| at index |kInterfaceUniqueId|, as we asked
-  // for it to be there in the first place, and could not have conflicted with
-  // any other interface.
-  return global_environment->GetInterfaceData(kInterfaceUniqueId);
-}
-
-}  // 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);
-
-  JSAutoCompartment auto_compartment(context, 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, &instance_class_definition, prototype));
-  DCHECK(new_object);
-  JS::RootedObject proxy(context,
-      ProxyHandler::NewProxy(
-          context, proxy_handler.Pointer(), new_object, prototype));
-  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));
-  const JSClass* proto_class = JS_GetClass(prototype);
-  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 {
-
-
-
-bool 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());
-  args.rval().setObject(result_value.toObject());
-  return true;
-}
-
-
-}  // namespace
-
-
-}  // namespace testing
-}  // namespace bindings
-}  // namespace cobalt
-
-
diff --git a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_arbitrary_interface.h b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_arbitrary_interface.h
deleted file mode 100644
index cc7b572..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_arbitrary_interface.h
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.h.template
-
-#ifndef MozjsArbitraryInterface_h
-#define MozjsArbitraryInterface_h
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "base/containers/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-45/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/mozjs45/testing/cobalt/bindings/testing/mozjs_base_interface.cc b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_base_interface.cc
deleted file mode 100644
index e7208ab..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_base_interface.cc
+++ /dev/null
@@ -1,512 +0,0 @@
-
-
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.cc.template
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "cobalt/bindings/testing/mozjs_base_interface.h"
-
-#include "base/trace_event/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/script/value_handle.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs-45/callback_function_conversion.h"
-#include "cobalt/script/mozjs-45/conversion_helpers.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer_view.h"
-#include "cobalt/script/mozjs-45/mozjs_callback_function.h"
-#include "cobalt/script/mozjs-45/mozjs_data_view.h"
-#include "cobalt/script/mozjs-45/mozjs_exception_state.h"
-#include "cobalt/script/mozjs-45/mozjs_global_environment.h"
-#include "cobalt/script/mozjs-45/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs-45/mozjs_typed_arrays.h"
-#include "cobalt/script/mozjs-45/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs-45/mozjs_value_handle.h"
-#include "cobalt/script/mozjs-45/native_promise.h"
-#include "cobalt/script/mozjs-45/proxy_handler.h"
-#include "cobalt/script/mozjs-45/type_traits.h"
-#include "cobalt/script/mozjs-45/wrapper_factory.h"
-#include "cobalt/script/mozjs-45/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs-45/js/src/jsapi.h"
-#include "third_party/mozjs-45/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::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandleHolder;
-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::kConversionFlagObjectOnly;
-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>::DestructorAtExit
-    proxy_handler;
-
-bool Constructor(JSContext* context, unsigned int argc, JS::Value* vp);
-
-bool HasInstance(JSContext *context, JS::HandleObject type,
-                 JS::MutableHandleValue vp, bool *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;
-}
-
-const JSClass instance_class_definition = {
-    "BaseInterface",
-    0 | JSCLASS_HAS_PRIVATE,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    &WrapperPrivate::Finalizer,  // finalize
-    NULL,  // call
-    NULL,  // hasInstance
-    NULL,  // construct
-    &WrapperPrivate::Trace,  // trace
-};
-
-const JSClass prototype_class_definition = {
-    "BaseInterfacePrototype",
-};
-
-const JSClass interface_object_class_definition = {
-    "BaseInterfaceConstructor",
-    0,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    NULL,  // finalize
-    NULL,  // call
-    &HasInstance,
-    Constructor,
-};
-
-bool get_baseAttribute(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-  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()) {
-    args.rval().set(result_value);
-  }
-  return !exception_state.is_exception_set();
-}
-
-
-
-bool 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)) {
-    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",
-    JSPROP_SHARED | JSPROP_ENUMERATE,
-    { { &get_baseAttribute, NULL } },
-    JSNATIVE_WRAPPER(NULL),
-  },
-  JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
-  JS_FNSPEC(
-      "baseOperation", fcn_baseOperation, NULL,
-      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);
-
-  interface_data->prototype = JS_NewObjectWithGivenProto(
-    context, &prototype_class_definition, parent_prototype
-  );
-
-  JS::RootedObject rooted_prototype(context, interface_data->prototype);
-  bool success = JS_DefineProperties(
-      context,
-      rooted_prototype,
-      prototype_properties);
-
-  DCHECK(success);
-  success = JS_DefineFunctions(
-      context, rooted_prototype, prototype_functions);
-  DCHECK(success);
-
-  JS::RootedObject function_prototype(
-      context, JS_GetFunctionPrototype(context, global_object));
-  DCHECK(function_prototype);
-
-  const char name[] =
-      "BaseInterface";
-
-  JSFunction* function = js::NewFunctionWithReserved(
-      context,
-      Constructor,
-      0,
-      JSFUN_CONSTRUCTOR,
-      name);
-  interface_data->interface_object = JS_GetFunctionObject(function);
-
-  // Add the InterfaceObject.name property.
-  JS::RootedObject rooted_interface_object(
-      context, interface_data->interface_object);
-  JS::RootedValue name_value(context);
-
-  js::SetPrototype(context, rooted_interface_object, function_prototype);
-
-  name_value.setString(JS_NewStringCopyZ(context, name));
-  success = JS_DefineProperty(
-      context, rooted_interface_object, "name", name_value, JSPROP_READONLY,
-      NULL, NULL);
-  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,
-      JSPROP_READONLY, NULL, NULL);
-  DCHECK(success);
-
-  // Define interface object properties (excluding 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);
-  success = JS_LinkConstructorAndPrototype(
-      context,
-      rooted_interface_object,
-      rooted_prototype);
-  DCHECK(success);
-}
-
-inline InterfaceData* GetInterfaceData(JSContext* context) {
-  const int kInterfaceUniqueId = 4;
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  // By convention, the |MozjsGlobalEnvironment| that we are associated with
-  // will hold our |InterfaceData| at index |kInterfaceUniqueId|, as we asked
-  // for it to be there in the first place, and could not have conflicted with
-  // any other interface.
-  return global_environment->GetInterfaceData(kInterfaceUniqueId);
-}
-
-}  // 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);
-
-  JSAutoCompartment auto_compartment(context, 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, &instance_class_definition, prototype));
-  DCHECK(new_object);
-  JS::RootedObject proxy(context,
-      ProxyHandler::NewProxy(
-          context, proxy_handler.Pointer(), new_object, prototype));
-  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));
-  const JSClass* proto_class = JS_GetClass(prototype);
-  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 {
-
-
-
-bool 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());
-  args.rval().setObject(result_value.toObject());
-  return true;
-}
-
-
-}  // namespace
-
-
-}  // namespace testing
-}  // namespace bindings
-}  // namespace cobalt
-
-
diff --git a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_base_interface.h b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_base_interface.h
deleted file mode 100644
index f2a7420..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_base_interface.h
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.h.template
-
-#ifndef MozjsBaseInterface_h
-#define MozjsBaseInterface_h
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "base/containers/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-45/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/mozjs45/testing/cobalt/bindings/testing/mozjs_boolean_type_test_interface.cc b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_boolean_type_test_interface.cc
deleted file mode 100644
index b79605e..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_boolean_type_test_interface.cc
+++ /dev/null
@@ -1,618 +0,0 @@
-
-
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.cc.template
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "cobalt/bindings/testing/mozjs_boolean_type_test_interface.h"
-
-#include "base/trace_event/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/script/value_handle.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs-45/callback_function_conversion.h"
-#include "cobalt/script/mozjs-45/conversion_helpers.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer_view.h"
-#include "cobalt/script/mozjs-45/mozjs_callback_function.h"
-#include "cobalt/script/mozjs-45/mozjs_data_view.h"
-#include "cobalt/script/mozjs-45/mozjs_exception_state.h"
-#include "cobalt/script/mozjs-45/mozjs_global_environment.h"
-#include "cobalt/script/mozjs-45/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs-45/mozjs_typed_arrays.h"
-#include "cobalt/script/mozjs-45/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs-45/mozjs_value_handle.h"
-#include "cobalt/script/mozjs-45/native_promise.h"
-#include "cobalt/script/mozjs-45/proxy_handler.h"
-#include "cobalt/script/mozjs-45/type_traits.h"
-#include "cobalt/script/mozjs-45/wrapper_factory.h"
-#include "cobalt/script/mozjs-45/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs-45/js/src/jsapi.h"
-#include "third_party/mozjs-45/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::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandleHolder;
-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::kConversionFlagObjectOnly;
-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>::DestructorAtExit
-    proxy_handler;
-
-bool DummyConstructor(JSContext* context, unsigned int argc, JS::Value* vp) {
-  MozjsExceptionState exception(context);
-  exception.SetSimpleException(
-      script::kTypeError, "BooleanTypeTestInterface is not constructible.");
-  return false;
-}
-
-bool HasInstance(JSContext *context, JS::HandleObject type,
-                 JS::MutableHandleValue vp, bool *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;
-}
-
-const JSClass instance_class_definition = {
-    "BooleanTypeTestInterface",
-    0 | JSCLASS_HAS_PRIVATE,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    &WrapperPrivate::Finalizer,  // finalize
-    NULL,  // call
-    NULL,  // hasInstance
-    NULL,  // construct
-    &WrapperPrivate::Trace,  // trace
-};
-
-const JSClass prototype_class_definition = {
-    "BooleanTypeTestInterfacePrototype",
-};
-
-const JSClass interface_object_class_definition = {
-    "BooleanTypeTestInterfaceConstructor",
-    0,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    NULL,  // finalize
-    NULL,  // call
-    &HasInstance,
-    NULL,
-};
-
-bool get_booleanProperty(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-  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()) {
-    args.rval().set(result_value);
-  }
-  return !exception_state.is_exception_set();
-}
-
-bool set_booleanProperty(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-
-  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;
-  if (args.length() != 1) {
-    NOTREACHED();
-    return false;
-  }
-  FromJSValue(context, args[0], 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();
-}
-
-
-bool 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)) {
-    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();
-}
-
-bool 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)) {
-    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",
-    JSPROP_SHARED | JSPROP_ENUMERATE,
-    { { &get_booleanProperty, NULL } },
-    { { &set_booleanProperty, NULL } },
-  },
-  JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
-  JS_FNSPEC(
-      "booleanArgumentOperation", fcn_booleanArgumentOperation, NULL,
-      1, JSPROP_ENUMERATE, NULL),
-  JS_FNSPEC(
-      "booleanReturnOperation", fcn_booleanReturnOperation, NULL,
-      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);
-
-  interface_data->prototype = JS_NewObjectWithGivenProto(
-    context, &prototype_class_definition, parent_prototype
-  );
-
-  JS::RootedObject rooted_prototype(context, interface_data->prototype);
-  bool success = JS_DefineProperties(
-      context,
-      rooted_prototype,
-      prototype_properties);
-
-  DCHECK(success);
-  success = JS_DefineFunctions(
-      context, rooted_prototype, prototype_functions);
-  DCHECK(success);
-
-  JS::RootedObject function_prototype(
-      context, JS_GetFunctionPrototype(context, global_object));
-  DCHECK(function_prototype);
-
-  const char name[] =
-      "BooleanTypeTestInterface";
-
-  JSFunction* function = js::NewFunctionWithReserved(
-      context,
-      DummyConstructor,
-      0,
-      JSFUN_CONSTRUCTOR,
-      name);
-  interface_data->interface_object = JS_GetFunctionObject(function);
-
-  // Add the InterfaceObject.name property.
-  JS::RootedObject rooted_interface_object(
-      context, interface_data->interface_object);
-  JS::RootedValue name_value(context);
-
-  js::SetPrototype(context, rooted_interface_object, function_prototype);
-
-  name_value.setString(JS_NewStringCopyZ(context, name));
-  success = JS_DefineProperty(
-      context, rooted_interface_object, "name", name_value, JSPROP_READONLY,
-      NULL, NULL);
-  DCHECK(success);
-
-  // Define interface object properties (excluding 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);
-  success = JS_LinkConstructorAndPrototype(
-      context,
-      rooted_interface_object,
-      rooted_prototype);
-  DCHECK(success);
-}
-
-inline InterfaceData* GetInterfaceData(JSContext* context) {
-  const int kInterfaceUniqueId = 5;
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  // By convention, the |MozjsGlobalEnvironment| that we are associated with
-  // will hold our |InterfaceData| at index |kInterfaceUniqueId|, as we asked
-  // for it to be there in the first place, and could not have conflicted with
-  // any other interface.
-  return global_environment->GetInterfaceData(kInterfaceUniqueId);
-}
-
-}  // 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);
-
-  JSAutoCompartment auto_compartment(context, 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, &instance_class_definition, prototype));
-  DCHECK(new_object);
-  JS::RootedObject proxy(context,
-      ProxyHandler::NewProxy(
-          context, proxy_handler.Pointer(), new_object, prototype));
-  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));
-  const JSClass* proto_class = JS_GetClass(prototype);
-  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/mozjs45/testing/cobalt/bindings/testing/mozjs_boolean_type_test_interface.h b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_boolean_type_test_interface.h
deleted file mode 100644
index 1e26005..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_boolean_type_test_interface.h
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.h.template
-
-#ifndef MozjsBooleanTypeTestInterface_h
-#define MozjsBooleanTypeTestInterface_h
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "base/containers/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-45/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/mozjs45/testing/cobalt/bindings/testing/mozjs_callback_function_interface.cc b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_callback_function_interface.cc
deleted file mode 100644
index c756db7..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_callback_function_interface.cc
+++ /dev/null
@@ -1,941 +0,0 @@
-
-
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.cc.template
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "cobalt/bindings/testing/mozjs_callback_function_interface.h"
-
-#include "base/trace_event/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/script/value_handle.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-45/callback_function_conversion.h"
-#include "cobalt/script/mozjs-45/conversion_helpers.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer_view.h"
-#include "cobalt/script/mozjs-45/mozjs_callback_function.h"
-#include "cobalt/script/mozjs-45/mozjs_data_view.h"
-#include "cobalt/script/mozjs-45/mozjs_exception_state.h"
-#include "cobalt/script/mozjs-45/mozjs_global_environment.h"
-#include "cobalt/script/mozjs-45/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs-45/mozjs_typed_arrays.h"
-#include "cobalt/script/mozjs-45/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs-45/mozjs_value_handle.h"
-#include "cobalt/script/mozjs-45/native_promise.h"
-#include "cobalt/script/mozjs-45/proxy_handler.h"
-#include "cobalt/script/mozjs-45/type_traits.h"
-#include "cobalt/script/mozjs-45/wrapper_factory.h"
-#include "cobalt/script/mozjs-45/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs-45/js/src/jsapi.h"
-#include "third_party/mozjs-45/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::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandleHolder;
-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::kConversionFlagObjectOnly;
-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>::DestructorAtExit
-    proxy_handler;
-
-bool DummyConstructor(JSContext* context, unsigned int argc, JS::Value* vp) {
-  MozjsExceptionState exception(context);
-  exception.SetSimpleException(
-      script::kTypeError, "CallbackFunctionInterface is not constructible.");
-  return false;
-}
-
-bool HasInstance(JSContext *context, JS::HandleObject type,
-                 JS::MutableHandleValue vp, bool *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;
-}
-
-const JSClass instance_class_definition = {
-    "CallbackFunctionInterface",
-    0 | JSCLASS_HAS_PRIVATE,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    &WrapperPrivate::Finalizer,  // finalize
-    NULL,  // call
-    NULL,  // hasInstance
-    NULL,  // construct
-    &WrapperPrivate::Trace,  // trace
-};
-
-const JSClass prototype_class_definition = {
-    "CallbackFunctionInterfacePrototype",
-};
-
-const JSClass interface_object_class_definition = {
-    "CallbackFunctionInterfaceConstructor",
-    0,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    NULL,  // finalize
-    NULL,  // call
-    &HasInstance,
-    NULL,
-};
-
-bool get_callbackAttribute(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-  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()) {
-    args.rval().set(result_value);
-  }
-  return !exception_state.is_exception_set();
-}
-
-bool set_callbackAttribute(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-
-  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;
-  if (args.length() != 1) {
-    NOTREACHED();
-    return false;
-  }
-  FromJSValue(context, args[0], 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();
-}
-
-bool get_nullableCallbackAttribute(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-  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()) {
-    args.rval().set(result_value);
-  }
-  return !exception_state.is_exception_set();
-}
-
-bool set_nullableCallbackAttribute(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-
-  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;
-  if (args.length() != 1) {
-    NOTREACHED();
-    return false;
-  }
-  FromJSValue(context, args[0], (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();
-}
-
-
-bool 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)) {
-    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();
-}
-
-bool 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)) {
-    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();
-}
-
-bool 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)) {
-    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();
-}
-
-bool 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)) {
-    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();
-}
-
-bool 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)) {
-    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",
-    JSPROP_SHARED | JSPROP_ENUMERATE,
-    { { &get_callbackAttribute, NULL } },
-    { { &set_callbackAttribute, NULL } },
-  },
-  {  // Read/Write property
-    "nullableCallbackAttribute",
-    JSPROP_SHARED | JSPROP_ENUMERATE,
-    { { &get_nullableCallbackAttribute, NULL } },
-    { { &set_nullableCallbackAttribute, NULL } },
-  },
-  JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
-  JS_FNSPEC(
-      "takesFunctionThatReturnsString", fcn_takesFunctionThatReturnsString, NULL,
-      1, JSPROP_ENUMERATE, NULL),
-  JS_FNSPEC(
-      "takesFunctionWithNullableParameters", fcn_takesFunctionWithNullableParameters, NULL,
-      1, JSPROP_ENUMERATE, NULL),
-  JS_FNSPEC(
-      "takesFunctionWithOneParameter", fcn_takesFunctionWithOneParameter, NULL,
-      1, JSPROP_ENUMERATE, NULL),
-  JS_FNSPEC(
-      "takesFunctionWithSeveralParameters", fcn_takesFunctionWithSeveralParameters, NULL,
-      1, JSPROP_ENUMERATE, NULL),
-  JS_FNSPEC(
-      "takesVoidFunction", fcn_takesVoidFunction, NULL,
-      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);
-
-  interface_data->prototype = JS_NewObjectWithGivenProto(
-    context, &prototype_class_definition, parent_prototype
-  );
-
-  JS::RootedObject rooted_prototype(context, interface_data->prototype);
-  bool success = JS_DefineProperties(
-      context,
-      rooted_prototype,
-      prototype_properties);
-
-  DCHECK(success);
-  success = JS_DefineFunctions(
-      context, rooted_prototype, prototype_functions);
-  DCHECK(success);
-
-  JS::RootedObject function_prototype(
-      context, JS_GetFunctionPrototype(context, global_object));
-  DCHECK(function_prototype);
-
-  const char name[] =
-      "CallbackFunctionInterface";
-
-  JSFunction* function = js::NewFunctionWithReserved(
-      context,
-      DummyConstructor,
-      0,
-      JSFUN_CONSTRUCTOR,
-      name);
-  interface_data->interface_object = JS_GetFunctionObject(function);
-
-  // Add the InterfaceObject.name property.
-  JS::RootedObject rooted_interface_object(
-      context, interface_data->interface_object);
-  JS::RootedValue name_value(context);
-
-  js::SetPrototype(context, rooted_interface_object, function_prototype);
-
-  name_value.setString(JS_NewStringCopyZ(context, name));
-  success = JS_DefineProperty(
-      context, rooted_interface_object, "name", name_value, JSPROP_READONLY,
-      NULL, NULL);
-  DCHECK(success);
-
-  // Define interface object properties (excluding 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);
-  success = JS_LinkConstructorAndPrototype(
-      context,
-      rooted_interface_object,
-      rooted_prototype);
-  DCHECK(success);
-}
-
-inline InterfaceData* GetInterfaceData(JSContext* context) {
-  const int kInterfaceUniqueId = 6;
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  // By convention, the |MozjsGlobalEnvironment| that we are associated with
-  // will hold our |InterfaceData| at index |kInterfaceUniqueId|, as we asked
-  // for it to be there in the first place, and could not have conflicted with
-  // any other interface.
-  return global_environment->GetInterfaceData(kInterfaceUniqueId);
-}
-
-}  // 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);
-
-  JSAutoCompartment auto_compartment(context, 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, &instance_class_definition, prototype));
-  DCHECK(new_object);
-  JS::RootedObject proxy(context,
-      ProxyHandler::NewProxy(
-          context, proxy_handler.Pointer(), new_object, prototype));
-  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));
-  const JSClass* proto_class = JS_GetClass(prototype);
-  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/mozjs45/testing/cobalt/bindings/testing/mozjs_callback_function_interface.h b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_callback_function_interface.h
deleted file mode 100644
index c21a643..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_callback_function_interface.h
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.h.template
-
-#ifndef MozjsCallbackFunctionInterface_h
-#define MozjsCallbackFunctionInterface_h
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "base/containers/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-45/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/mozjs45/testing/cobalt/bindings/testing/mozjs_callback_interface_interface.cc b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_callback_interface_interface.cc
deleted file mode 100644
index 23a9f00..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_callback_interface_interface.cc
+++ /dev/null
@@ -1,616 +0,0 @@
-
-
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.cc.template
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "cobalt/bindings/testing/mozjs_callback_interface_interface.h"
-
-#include "base/trace_event/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/script/value_handle.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-45/callback_function_conversion.h"
-#include "cobalt/script/mozjs-45/conversion_helpers.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer_view.h"
-#include "cobalt/script/mozjs-45/mozjs_callback_function.h"
-#include "cobalt/script/mozjs-45/mozjs_data_view.h"
-#include "cobalt/script/mozjs-45/mozjs_exception_state.h"
-#include "cobalt/script/mozjs-45/mozjs_global_environment.h"
-#include "cobalt/script/mozjs-45/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs-45/mozjs_typed_arrays.h"
-#include "cobalt/script/mozjs-45/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs-45/mozjs_value_handle.h"
-#include "cobalt/script/mozjs-45/native_promise.h"
-#include "cobalt/script/mozjs-45/proxy_handler.h"
-#include "cobalt/script/mozjs-45/type_traits.h"
-#include "cobalt/script/mozjs-45/wrapper_factory.h"
-#include "cobalt/script/mozjs-45/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs-45/js/src/jsapi.h"
-#include "third_party/mozjs-45/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::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandleHolder;
-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::kConversionFlagObjectOnly;
-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>::DestructorAtExit
-    proxy_handler;
-
-bool DummyConstructor(JSContext* context, unsigned int argc, JS::Value* vp) {
-  MozjsExceptionState exception(context);
-  exception.SetSimpleException(
-      script::kTypeError, "CallbackInterfaceInterface is not constructible.");
-  return false;
-}
-
-bool HasInstance(JSContext *context, JS::HandleObject type,
-                 JS::MutableHandleValue vp, bool *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;
-}
-
-const JSClass instance_class_definition = {
-    "CallbackInterfaceInterface",
-    0 | JSCLASS_HAS_PRIVATE,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    &WrapperPrivate::Finalizer,  // finalize
-    NULL,  // call
-    NULL,  // hasInstance
-    NULL,  // construct
-    &WrapperPrivate::Trace,  // trace
-};
-
-const JSClass prototype_class_definition = {
-    "CallbackInterfaceInterfacePrototype",
-};
-
-const JSClass interface_object_class_definition = {
-    "CallbackInterfaceInterfaceConstructor",
-    0,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    NULL,  // finalize
-    NULL,  // call
-    &HasInstance,
-    NULL,
-};
-
-bool get_callbackAttribute(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-  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()) {
-    args.rval().set(result_value);
-  }
-  return !exception_state.is_exception_set();
-}
-
-bool set_callbackAttribute(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-
-  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;
-  if (args.length() != 1) {
-    NOTREACHED();
-    return false;
-  }
-  FromJSValue(context, args[0], (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();
-}
-
-
-bool 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)) {
-    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 callbackInterface;
-
-  DCHECK_LT(0, args.length());
-  JS::RootedValue non_optional_value0(
-      context, args[0]);
-  FromJSValue(context,
-              non_optional_value0,
-              kNoConversionFlags,
-              &exception_state, &callbackInterface);
-  if (exception_state.is_exception_set()) {
-    return false;
-  }
-
-  impl->RegisterCallback(callbackInterface);
-  result_value.set(JS::UndefinedHandleValue);
-  return !exception_state.is_exception_set();
-}
-
-bool 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)) {
-    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",
-    JSPROP_SHARED | JSPROP_ENUMERATE,
-    { { &get_callbackAttribute, NULL } },
-    { { &set_callbackAttribute, NULL } },
-  },
-  JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
-  JS_FNSPEC(
-      "registerCallback", fcn_registerCallback, NULL,
-      1, JSPROP_ENUMERATE, NULL),
-  JS_FNSPEC(
-      "someOperation", fcn_someOperation, NULL,
-      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);
-
-  interface_data->prototype = JS_NewObjectWithGivenProto(
-    context, &prototype_class_definition, parent_prototype
-  );
-
-  JS::RootedObject rooted_prototype(context, interface_data->prototype);
-  bool success = JS_DefineProperties(
-      context,
-      rooted_prototype,
-      prototype_properties);
-
-  DCHECK(success);
-  success = JS_DefineFunctions(
-      context, rooted_prototype, prototype_functions);
-  DCHECK(success);
-
-  JS::RootedObject function_prototype(
-      context, JS_GetFunctionPrototype(context, global_object));
-  DCHECK(function_prototype);
-
-  const char name[] =
-      "CallbackInterfaceInterface";
-
-  JSFunction* function = js::NewFunctionWithReserved(
-      context,
-      DummyConstructor,
-      0,
-      JSFUN_CONSTRUCTOR,
-      name);
-  interface_data->interface_object = JS_GetFunctionObject(function);
-
-  // Add the InterfaceObject.name property.
-  JS::RootedObject rooted_interface_object(
-      context, interface_data->interface_object);
-  JS::RootedValue name_value(context);
-
-  js::SetPrototype(context, rooted_interface_object, function_prototype);
-
-  name_value.setString(JS_NewStringCopyZ(context, name));
-  success = JS_DefineProperty(
-      context, rooted_interface_object, "name", name_value, JSPROP_READONLY,
-      NULL, NULL);
-  DCHECK(success);
-
-  // Define interface object properties (excluding 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);
-  success = JS_LinkConstructorAndPrototype(
-      context,
-      rooted_interface_object,
-      rooted_prototype);
-  DCHECK(success);
-}
-
-inline InterfaceData* GetInterfaceData(JSContext* context) {
-  const int kInterfaceUniqueId = 7;
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  // By convention, the |MozjsGlobalEnvironment| that we are associated with
-  // will hold our |InterfaceData| at index |kInterfaceUniqueId|, as we asked
-  // for it to be there in the first place, and could not have conflicted with
-  // any other interface.
-  return global_environment->GetInterfaceData(kInterfaceUniqueId);
-}
-
-}  // 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);
-
-  JSAutoCompartment auto_compartment(context, 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, &instance_class_definition, prototype));
-  DCHECK(new_object);
-  JS::RootedObject proxy(context,
-      ProxyHandler::NewProxy(
-          context, proxy_handler.Pointer(), new_object, prototype));
-  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));
-  const JSClass* proto_class = JS_GetClass(prototype);
-  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/mozjs45/testing/cobalt/bindings/testing/mozjs_callback_interface_interface.h b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_callback_interface_interface.h
deleted file mode 100644
index 4d3e258..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_callback_interface_interface.h
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.h.template
-
-#ifndef MozjsCallbackInterfaceInterface_h
-#define MozjsCallbackInterfaceInterface_h
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "base/containers/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-45/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/mozjs45/testing/cobalt/bindings/testing/mozjs_conditional_interface.cc b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_conditional_interface.cc
deleted file mode 100644
index bb19e92..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_conditional_interface.cc
+++ /dev/null
@@ -1,724 +0,0 @@
-
-
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.cc.template
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-
-#if defined(ENABLE_CONDITIONAL_INTERFACE)
-
-#include "cobalt/bindings/testing/mozjs_conditional_interface.h"
-
-#include "base/trace_event/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/script/value_handle.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs-45/callback_function_conversion.h"
-#include "cobalt/script/mozjs-45/conversion_helpers.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer_view.h"
-#include "cobalt/script/mozjs-45/mozjs_callback_function.h"
-#include "cobalt/script/mozjs-45/mozjs_data_view.h"
-#include "cobalt/script/mozjs-45/mozjs_exception_state.h"
-#include "cobalt/script/mozjs-45/mozjs_global_environment.h"
-#include "cobalt/script/mozjs-45/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs-45/mozjs_typed_arrays.h"
-#include "cobalt/script/mozjs-45/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs-45/mozjs_value_handle.h"
-#include "cobalt/script/mozjs-45/native_promise.h"
-#include "cobalt/script/mozjs-45/proxy_handler.h"
-#include "cobalt/script/mozjs-45/type_traits.h"
-#include "cobalt/script/mozjs-45/wrapper_factory.h"
-#include "cobalt/script/mozjs-45/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs-45/js/src/jsapi.h"
-#include "third_party/mozjs-45/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::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandleHolder;
-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::kConversionFlagObjectOnly;
-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>::DestructorAtExit
-    proxy_handler;
-
-bool DummyConstructor(JSContext* context, unsigned int argc, JS::Value* vp) {
-  MozjsExceptionState exception(context);
-  exception.SetSimpleException(
-      script::kTypeError, "ConditionalInterface is not constructible.");
-  return false;
-}
-
-bool HasInstance(JSContext *context, JS::HandleObject type,
-                 JS::MutableHandleValue vp, bool *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;
-}
-
-const JSClass instance_class_definition = {
-    "ConditionalInterface",
-    0 | JSCLASS_HAS_PRIVATE,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    &WrapperPrivate::Finalizer,  // finalize
-    NULL,  // call
-    NULL,  // hasInstance
-    NULL,  // construct
-    &WrapperPrivate::Trace,  // trace
-};
-
-const JSClass prototype_class_definition = {
-    "ConditionalInterfacePrototype",
-};
-
-const JSClass interface_object_class_definition = {
-    "ConditionalInterfaceConstructor",
-    0,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    NULL,  // finalize
-    NULL,  // call
-    &HasInstance,
-    NULL,
-};
-
-#if defined(ENABLE_CONDITIONAL_PROPERTY)
-bool get_enabledAttribute(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-  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()) {
-    args.rval().set(result_value);
-  }
-  return !exception_state.is_exception_set();
-}
-
-bool set_enabledAttribute(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-
-  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;
-  if (args.length() != 1) {
-    NOTREACHED();
-    return false;
-  }
-  FromJSValue(context, args[0], 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)
-bool get_disabledAttribute(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-  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()) {
-    args.rval().set(result_value);
-  }
-  return !exception_state.is_exception_set();
-}
-
-bool set_disabledAttribute(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-
-  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;
-  if (args.length() != 1) {
-    NOTREACHED();
-    return false;
-  }
-  FromJSValue(context, args[0], 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)
-
-
-bool 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)) {
-    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)
-
-
-bool 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)) {
-    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",
-    JSPROP_SHARED | JSPROP_ENUMERATE,
-    { { &get_enabledAttribute, NULL } },
-    { { &set_enabledAttribute, NULL } },
-  },
-#endif  // ENABLE_CONDITIONAL_PROPERTY
-#if defined(NO_ENABLE_CONDITIONAL_PROPERTY)
-  {  // Read/Write property
-    "disabledAttribute",
-    JSPROP_SHARED | JSPROP_ENUMERATE,
-    { { &get_disabledAttribute, NULL } },
-    { { &set_disabledAttribute, NULL } },
-  },
-#endif  // NO_ENABLE_CONDITIONAL_PROPERTY
-  JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
-#if defined(NO_ENABLE_CONDITIONAL_PROPERTY)
-  JS_FNSPEC(
-      "disabledOperation", fcn_disabledOperation, NULL,
-      0, JSPROP_ENUMERATE, NULL),
-#endif  // NO_ENABLE_CONDITIONAL_PROPERTY
-#if defined(ENABLE_CONDITIONAL_PROPERTY)
-  JS_FNSPEC(
-      "enabledOperation", fcn_enabledOperation, NULL,
-      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);
-
-  interface_data->prototype = JS_NewObjectWithGivenProto(
-    context, &prototype_class_definition, parent_prototype
-  );
-
-  JS::RootedObject rooted_prototype(context, interface_data->prototype);
-  bool success = JS_DefineProperties(
-      context,
-      rooted_prototype,
-      prototype_properties);
-
-  DCHECK(success);
-  success = JS_DefineFunctions(
-      context, rooted_prototype, prototype_functions);
-  DCHECK(success);
-
-  JS::RootedObject function_prototype(
-      context, JS_GetFunctionPrototype(context, global_object));
-  DCHECK(function_prototype);
-
-  const char name[] =
-      "ConditionalInterface";
-
-  JSFunction* function = js::NewFunctionWithReserved(
-      context,
-      DummyConstructor,
-      0,
-      JSFUN_CONSTRUCTOR,
-      name);
-  interface_data->interface_object = JS_GetFunctionObject(function);
-
-  // Add the InterfaceObject.name property.
-  JS::RootedObject rooted_interface_object(
-      context, interface_data->interface_object);
-  JS::RootedValue name_value(context);
-
-  js::SetPrototype(context, rooted_interface_object, function_prototype);
-
-  name_value.setString(JS_NewStringCopyZ(context, name));
-  success = JS_DefineProperty(
-      context, rooted_interface_object, "name", name_value, JSPROP_READONLY,
-      NULL, NULL);
-  DCHECK(success);
-
-  // Define interface object properties (excluding 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);
-  success = JS_LinkConstructorAndPrototype(
-      context,
-      rooted_interface_object,
-      rooted_prototype);
-  DCHECK(success);
-}
-
-inline InterfaceData* GetInterfaceData(JSContext* context) {
-  const int kInterfaceUniqueId = 8;
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  // By convention, the |MozjsGlobalEnvironment| that we are associated with
-  // will hold our |InterfaceData| at index |kInterfaceUniqueId|, as we asked
-  // for it to be there in the first place, and could not have conflicted with
-  // any other interface.
-  return global_environment->GetInterfaceData(kInterfaceUniqueId);
-}
-
-}  // 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);
-
-  JSAutoCompartment auto_compartment(context, 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, &instance_class_definition, prototype));
-  DCHECK(new_object);
-  JS::RootedObject proxy(context,
-      ProxyHandler::NewProxy(
-          context, proxy_handler.Pointer(), new_object, prototype));
-  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));
-  const JSClass* proto_class = JS_GetClass(prototype);
-  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/mozjs45/testing/cobalt/bindings/testing/mozjs_conditional_interface.h b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_conditional_interface.h
deleted file mode 100644
index 8b9c5a4..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_conditional_interface.h
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.h.template
-
-#ifndef MozjsConditionalInterface_h
-#define MozjsConditionalInterface_h
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-
-#if defined(ENABLE_CONDITIONAL_INTERFACE)
-
-#include "base/containers/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-45/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/mozjs45/testing/cobalt/bindings/testing/mozjs_constants_interface.cc b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_constants_interface.cc
deleted file mode 100644
index 3c5dccf..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_constants_interface.cc
+++ /dev/null
@@ -1,412 +0,0 @@
-
-
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.cc.template
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "cobalt/bindings/testing/mozjs_constants_interface.h"
-
-#include "base/trace_event/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/script/value_handle.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs-45/callback_function_conversion.h"
-#include "cobalt/script/mozjs-45/conversion_helpers.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer_view.h"
-#include "cobalt/script/mozjs-45/mozjs_callback_function.h"
-#include "cobalt/script/mozjs-45/mozjs_data_view.h"
-#include "cobalt/script/mozjs-45/mozjs_exception_state.h"
-#include "cobalt/script/mozjs-45/mozjs_global_environment.h"
-#include "cobalt/script/mozjs-45/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs-45/mozjs_typed_arrays.h"
-#include "cobalt/script/mozjs-45/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs-45/mozjs_value_handle.h"
-#include "cobalt/script/mozjs-45/native_promise.h"
-#include "cobalt/script/mozjs-45/proxy_handler.h"
-#include "cobalt/script/mozjs-45/type_traits.h"
-#include "cobalt/script/mozjs-45/wrapper_factory.h"
-#include "cobalt/script/mozjs-45/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs-45/js/src/jsapi.h"
-#include "third_party/mozjs-45/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::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandleHolder;
-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::kConversionFlagObjectOnly;
-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>::DestructorAtExit
-    proxy_handler;
-
-bool DummyConstructor(JSContext* context, unsigned int argc, JS::Value* vp) {
-  MozjsExceptionState exception(context);
-  exception.SetSimpleException(
-      script::kTypeError, "ConstantsInterface is not constructible.");
-  return false;
-}
-
-bool HasInstance(JSContext *context, JS::HandleObject type,
-                 JS::MutableHandleValue vp, bool *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;
-}
-
-const JSClass instance_class_definition = {
-    "ConstantsInterface",
-    0 | JSCLASS_HAS_PRIVATE,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    &WrapperPrivate::Finalizer,  // finalize
-    NULL,  // call
-    NULL,  // hasInstance
-    NULL,  // construct
-    &WrapperPrivate::Trace,  // trace
-};
-
-const JSClass prototype_class_definition = {
-    "ConstantsInterfacePrototype",
-};
-
-const JSClass interface_object_class_definition = {
-    "ConstantsInterfaceConstructor",
-    0,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    NULL,  // finalize
-    NULL,  // call
-    &HasInstance,
-    NULL,
-};
-
-
-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);
-
-  interface_data->prototype = JS_NewObjectWithGivenProto(
-    context, &prototype_class_definition, parent_prototype
-  );
-
-  JS::RootedObject rooted_prototype(context, interface_data->prototype);
-  bool success = JS_DefineProperties(
-      context,
-      rooted_prototype,
-      prototype_properties);
-
-  DCHECK(success);
-  success = JS_DefineFunctions(
-      context, rooted_prototype, prototype_functions);
-  DCHECK(success);
-
-  JS::RootedObject function_prototype(
-      context, JS_GetFunctionPrototype(context, global_object));
-  DCHECK(function_prototype);
-
-  const char name[] =
-      "ConstantsInterface";
-
-  JSFunction* function = js::NewFunctionWithReserved(
-      context,
-      DummyConstructor,
-      0,
-      JSFUN_CONSTRUCTOR,
-      name);
-  interface_data->interface_object = JS_GetFunctionObject(function);
-
-  // Add the InterfaceObject.name property.
-  JS::RootedObject rooted_interface_object(
-      context, interface_data->interface_object);
-  JS::RootedValue name_value(context);
-
-  js::SetPrototype(context, rooted_interface_object, function_prototype);
-
-  name_value.setString(JS_NewStringCopyZ(context, name));
-  success = JS_DefineProperty(
-      context, rooted_interface_object, "name", name_value, JSPROP_READONLY,
-      NULL, NULL);
-  DCHECK(success);
-
-  // Define constants.
-  {
-    success = JS_DefineProperty(context, rooted_prototype,
-        "INTEGER_CONSTANT", 5,
-        JSPROP_READONLY | JSPROP_ENUMERATE | JSPROP_PERMANENT, NULL, NULL);
-    DCHECK(success);
-    success = JS_DefineProperty(context, rooted_interface_object,
-        "INTEGER_CONSTANT", 5,
-        JSPROP_READONLY | JSPROP_ENUMERATE | JSPROP_PERMANENT, NULL, NULL);
-    DCHECK(success);
-  }
-  {
-    success = JS_DefineProperty(context, rooted_prototype,
-        "DOUBLE_CONSTANT", 2.718,
-        JSPROP_READONLY | JSPROP_ENUMERATE | JSPROP_PERMANENT, NULL, NULL);
-    DCHECK(success);
-    success = JS_DefineProperty(context, rooted_interface_object,
-        "DOUBLE_CONSTANT", 2.718,
-        JSPROP_READONLY | JSPROP_ENUMERATE | JSPROP_PERMANENT, NULL, NULL);
-    DCHECK(success);
-  }
-
-  // Define interface object properties (excluding 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);
-  success = JS_LinkConstructorAndPrototype(
-      context,
-      rooted_interface_object,
-      rooted_prototype);
-  DCHECK(success);
-}
-
-inline InterfaceData* GetInterfaceData(JSContext* context) {
-  const int kInterfaceUniqueId = 9;
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  // By convention, the |MozjsGlobalEnvironment| that we are associated with
-  // will hold our |InterfaceData| at index |kInterfaceUniqueId|, as we asked
-  // for it to be there in the first place, and could not have conflicted with
-  // any other interface.
-  return global_environment->GetInterfaceData(kInterfaceUniqueId);
-}
-
-}  // 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);
-
-  JSAutoCompartment auto_compartment(context, 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, &instance_class_definition, prototype));
-  DCHECK(new_object);
-  JS::RootedObject proxy(context,
-      ProxyHandler::NewProxy(
-          context, proxy_handler.Pointer(), new_object, prototype));
-  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));
-  const JSClass* proto_class = JS_GetClass(prototype);
-  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/mozjs45/testing/cobalt/bindings/testing/mozjs_constants_interface.h b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_constants_interface.h
deleted file mode 100644
index 3f246af..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_constants_interface.h
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.h.template
-
-#ifndef MozjsConstantsInterface_h
-#define MozjsConstantsInterface_h
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "base/containers/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-45/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/mozjs45/testing/cobalt/bindings/testing/mozjs_constructor_interface.cc b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_constructor_interface.cc
deleted file mode 100644
index 5fcdc6c..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_constructor_interface.cc
+++ /dev/null
@@ -1,470 +0,0 @@
-
-
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.cc.template
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "cobalt/bindings/testing/mozjs_constructor_interface.h"
-
-#include "base/trace_event/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/script/value_handle.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs-45/callback_function_conversion.h"
-#include "cobalt/script/mozjs-45/conversion_helpers.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer_view.h"
-#include "cobalt/script/mozjs-45/mozjs_callback_function.h"
-#include "cobalt/script/mozjs-45/mozjs_data_view.h"
-#include "cobalt/script/mozjs-45/mozjs_exception_state.h"
-#include "cobalt/script/mozjs-45/mozjs_global_environment.h"
-#include "cobalt/script/mozjs-45/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs-45/mozjs_typed_arrays.h"
-#include "cobalt/script/mozjs-45/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs-45/mozjs_value_handle.h"
-#include "cobalt/script/mozjs-45/native_promise.h"
-#include "cobalt/script/mozjs-45/proxy_handler.h"
-#include "cobalt/script/mozjs-45/type_traits.h"
-#include "cobalt/script/mozjs-45/wrapper_factory.h"
-#include "cobalt/script/mozjs-45/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs-45/js/src/jsapi.h"
-#include "third_party/mozjs-45/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::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandleHolder;
-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::kConversionFlagObjectOnly;
-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>::DestructorAtExit
-    proxy_handler;
-
-bool Constructor(JSContext* context, unsigned int argc, JS::Value* vp);
-
-bool HasInstance(JSContext *context, JS::HandleObject type,
-                 JS::MutableHandleValue vp, bool *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;
-}
-
-const JSClass instance_class_definition = {
-    "ConstructorInterface",
-    0 | JSCLASS_HAS_PRIVATE,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    &WrapperPrivate::Finalizer,  // finalize
-    NULL,  // call
-    NULL,  // hasInstance
-    NULL,  // construct
-    &WrapperPrivate::Trace,  // trace
-};
-
-const JSClass prototype_class_definition = {
-    "ConstructorInterfacePrototype",
-};
-
-const JSClass interface_object_class_definition = {
-    "ConstructorInterfaceConstructor",
-    0,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    NULL,  // finalize
-    NULL,  // call
-    &HasInstance,
-    Constructor,
-};
-
-
-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);
-
-  interface_data->prototype = JS_NewObjectWithGivenProto(
-    context, &prototype_class_definition, parent_prototype
-  );
-
-  JS::RootedObject rooted_prototype(context, interface_data->prototype);
-  bool success = JS_DefineProperties(
-      context,
-      rooted_prototype,
-      prototype_properties);
-
-  DCHECK(success);
-  success = JS_DefineFunctions(
-      context, rooted_prototype, prototype_functions);
-  DCHECK(success);
-
-  JS::RootedObject function_prototype(
-      context, JS_GetFunctionPrototype(context, global_object));
-  DCHECK(function_prototype);
-
-  const char name[] =
-      "ConstructorInterface";
-
-  JSFunction* function = js::NewFunctionWithReserved(
-      context,
-      Constructor,
-      0,
-      JSFUN_CONSTRUCTOR,
-      name);
-  interface_data->interface_object = JS_GetFunctionObject(function);
-
-  // Add the InterfaceObject.name property.
-  JS::RootedObject rooted_interface_object(
-      context, interface_data->interface_object);
-  JS::RootedValue name_value(context);
-
-  js::SetPrototype(context, rooted_interface_object, function_prototype);
-
-  name_value.setString(JS_NewStringCopyZ(context, name));
-  success = JS_DefineProperty(
-      context, rooted_interface_object, "name", name_value, JSPROP_READONLY,
-      NULL, NULL);
-  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,
-      JSPROP_READONLY, NULL, NULL);
-  DCHECK(success);
-
-  // Define interface object properties (excluding 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);
-  success = JS_LinkConstructorAndPrototype(
-      context,
-      rooted_interface_object,
-      rooted_prototype);
-  DCHECK(success);
-}
-
-inline InterfaceData* GetInterfaceData(JSContext* context) {
-  const int kInterfaceUniqueId = 10;
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  // By convention, the |MozjsGlobalEnvironment| that we are associated with
-  // will hold our |InterfaceData| at index |kInterfaceUniqueId|, as we asked
-  // for it to be there in the first place, and could not have conflicted with
-  // any other interface.
-  return global_environment->GetInterfaceData(kInterfaceUniqueId);
-}
-
-}  // 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);
-
-  JSAutoCompartment auto_compartment(context, 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, &instance_class_definition, prototype));
-  DCHECK(new_object);
-  JS::RootedObject proxy(context,
-      ProxyHandler::NewProxy(
-          context, proxy_handler.Pointer(), new_object, prototype));
-  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));
-  const JSClass* proto_class = JS_GetClass(prototype);
-  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 {
-
-
-bool 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());
-  args.rval().setObject(result_value.toObject());
-  return true;
-}
-bool 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());
-  args.rval().setObject(result_value.toObject());
-  return true;
-}
-
-bool 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/mozjs45/testing/cobalt/bindings/testing/mozjs_constructor_interface.h b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_constructor_interface.h
deleted file mode 100644
index 03ec8e7..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_constructor_interface.h
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.h.template
-
-#ifndef MozjsConstructorInterface_h
-#define MozjsConstructorInterface_h
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "base/containers/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-45/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/mozjs45/testing/cobalt/bindings/testing/mozjs_constructor_with_arguments_interface.cc b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_constructor_with_arguments_interface.cc
deleted file mode 100644
index f6fba62..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_constructor_with_arguments_interface.cc
+++ /dev/null
@@ -1,619 +0,0 @@
-
-
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.cc.template
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "cobalt/bindings/testing/mozjs_constructor_with_arguments_interface.h"
-
-#include "base/trace_event/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/script/value_handle.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs-45/callback_function_conversion.h"
-#include "cobalt/script/mozjs-45/conversion_helpers.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer_view.h"
-#include "cobalt/script/mozjs-45/mozjs_callback_function.h"
-#include "cobalt/script/mozjs-45/mozjs_data_view.h"
-#include "cobalt/script/mozjs-45/mozjs_exception_state.h"
-#include "cobalt/script/mozjs-45/mozjs_global_environment.h"
-#include "cobalt/script/mozjs-45/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs-45/mozjs_typed_arrays.h"
-#include "cobalt/script/mozjs-45/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs-45/mozjs_value_handle.h"
-#include "cobalt/script/mozjs-45/native_promise.h"
-#include "cobalt/script/mozjs-45/proxy_handler.h"
-#include "cobalt/script/mozjs-45/type_traits.h"
-#include "cobalt/script/mozjs-45/wrapper_factory.h"
-#include "cobalt/script/mozjs-45/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs-45/js/src/jsapi.h"
-#include "third_party/mozjs-45/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::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandleHolder;
-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::kConversionFlagObjectOnly;
-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>::DestructorAtExit
-    proxy_handler;
-
-bool Constructor(JSContext* context, unsigned int argc, JS::Value* vp);
-
-bool HasInstance(JSContext *context, JS::HandleObject type,
-                 JS::MutableHandleValue vp, bool *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;
-}
-
-const JSClass instance_class_definition = {
-    "ConstructorWithArgumentsInterface",
-    0 | JSCLASS_HAS_PRIVATE,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    &WrapperPrivate::Finalizer,  // finalize
-    NULL,  // call
-    NULL,  // hasInstance
-    NULL,  // construct
-    &WrapperPrivate::Trace,  // trace
-};
-
-const JSClass prototype_class_definition = {
-    "ConstructorWithArgumentsInterfacePrototype",
-};
-
-const JSClass interface_object_class_definition = {
-    "ConstructorWithArgumentsInterfaceConstructor",
-    0,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    NULL,  // finalize
-    NULL,  // call
-    &HasInstance,
-    Constructor,
-};
-
-bool get_longArg(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-  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()) {
-    args.rval().set(result_value);
-  }
-  return !exception_state.is_exception_set();
-}
-
-
-bool get_booleanArg(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-  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()) {
-    args.rval().set(result_value);
-  }
-  return !exception_state.is_exception_set();
-}
-
-
-bool get_stringArg(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-  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()) {
-    args.rval().set(result_value);
-  }
-  return !exception_state.is_exception_set();
-}
-
-
-
-const JSPropertySpec prototype_properties[] = {
-  {  // Readonly attribute
-    "longArg",
-    JSPROP_SHARED | JSPROP_ENUMERATE,
-    { { &get_longArg, NULL } },
-    JSNATIVE_WRAPPER(NULL),
-  },
-  {  // Readonly attribute
-    "booleanArg",
-    JSPROP_SHARED | JSPROP_ENUMERATE,
-    { { &get_booleanArg, NULL } },
-    JSNATIVE_WRAPPER(NULL),
-  },
-  {  // Readonly attribute
-    "stringArg",
-    JSPROP_SHARED | JSPROP_ENUMERATE,
-    { { &get_stringArg, NULL } },
-    JSNATIVE_WRAPPER(NULL),
-  },
-  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);
-
-  interface_data->prototype = JS_NewObjectWithGivenProto(
-    context, &prototype_class_definition, parent_prototype
-  );
-
-  JS::RootedObject rooted_prototype(context, interface_data->prototype);
-  bool success = JS_DefineProperties(
-      context,
-      rooted_prototype,
-      prototype_properties);
-
-  DCHECK(success);
-  success = JS_DefineFunctions(
-      context, rooted_prototype, prototype_functions);
-  DCHECK(success);
-
-  JS::RootedObject function_prototype(
-      context, JS_GetFunctionPrototype(context, global_object));
-  DCHECK(function_prototype);
-
-  const char name[] =
-      "ConstructorWithArgumentsInterface";
-
-  JSFunction* function = js::NewFunctionWithReserved(
-      context,
-      Constructor,
-      2,
-      JSFUN_CONSTRUCTOR,
-      name);
-  interface_data->interface_object = JS_GetFunctionObject(function);
-
-  // Add the InterfaceObject.name property.
-  JS::RootedObject rooted_interface_object(
-      context, interface_data->interface_object);
-  JS::RootedValue name_value(context);
-
-  js::SetPrototype(context, rooted_interface_object, function_prototype);
-
-  name_value.setString(JS_NewStringCopyZ(context, name));
-  success = JS_DefineProperty(
-      context, rooted_interface_object, "name", name_value, JSPROP_READONLY,
-      NULL, NULL);
-  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,
-      JSPROP_READONLY, NULL, NULL);
-  DCHECK(success);
-
-  // Define interface object properties (excluding 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);
-  success = JS_LinkConstructorAndPrototype(
-      context,
-      rooted_interface_object,
-      rooted_prototype);
-  DCHECK(success);
-}
-
-inline InterfaceData* GetInterfaceData(JSContext* context) {
-  const int kInterfaceUniqueId = 11;
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  // By convention, the |MozjsGlobalEnvironment| that we are associated with
-  // will hold our |InterfaceData| at index |kInterfaceUniqueId|, as we asked
-  // for it to be there in the first place, and could not have conflicted with
-  // any other interface.
-  return global_environment->GetInterfaceData(kInterfaceUniqueId);
-}
-
-}  // 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);
-
-  JSAutoCompartment auto_compartment(context, 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, &instance_class_definition, prototype));
-  DCHECK(new_object);
-  JS::RootedObject proxy(context,
-      ProxyHandler::NewProxy(
-          context, proxy_handler.Pointer(), new_object, prototype));
-  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));
-  const JSClass* proto_class = JS_GetClass(prototype);
-  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 {
-
-
-
-bool 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 defaultArg =
-      "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]);
-    if (!optional_value0.isUndefined()) {
-      FromJSValue(context,
-                  optional_value0,
-                  kNoConversionFlags,
-                  &exception_state,
-                  &defaultArg);
-    }
-    if (exception_state.is_exception_set()) {
-      return false;
-    }
-  }
-
-  scoped_refptr<ConstructorWithArgumentsInterface> new_object =
-      new ConstructorWithArgumentsInterface(arg1, arg2, defaultArg);
-  JS::RootedValue result_value(context);
-  ToJSValue(context, new_object, &result_value);
-  DCHECK(result_value.isObject());
-  args.rval().setObject(result_value.toObject());
-  return true;
-}
-
-
-}  // namespace
-
-
-}  // namespace testing
-}  // namespace bindings
-}  // namespace cobalt
-
-
diff --git a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_constructor_with_arguments_interface.h b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_constructor_with_arguments_interface.h
deleted file mode 100644
index 76a5c51..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_constructor_with_arguments_interface.h
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.h.template
-
-#ifndef MozjsConstructorWithArgumentsInterface_h
-#define MozjsConstructorWithArgumentsInterface_h
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "base/containers/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-45/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/mozjs45/testing/cobalt/bindings/testing/mozjs_convert_simple_object_interface.cc b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_convert_simple_object_interface.cc
deleted file mode 100644
index d91cf59..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_convert_simple_object_interface.cc
+++ /dev/null
@@ -1,476 +0,0 @@
-
-
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.cc.template
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "cobalt/bindings/testing/mozjs_convert_simple_object_interface.h"
-
-#include "base/trace_event/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/script/value_handle.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs-45/callback_function_conversion.h"
-#include "cobalt/script/mozjs-45/conversion_helpers.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer_view.h"
-#include "cobalt/script/mozjs-45/mozjs_callback_function.h"
-#include "cobalt/script/mozjs-45/mozjs_data_view.h"
-#include "cobalt/script/mozjs-45/mozjs_exception_state.h"
-#include "cobalt/script/mozjs-45/mozjs_global_environment.h"
-#include "cobalt/script/mozjs-45/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs-45/mozjs_typed_arrays.h"
-#include "cobalt/script/mozjs-45/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs-45/mozjs_value_handle.h"
-#include "cobalt/script/mozjs-45/native_promise.h"
-#include "cobalt/script/mozjs-45/proxy_handler.h"
-#include "cobalt/script/mozjs-45/type_traits.h"
-#include "cobalt/script/mozjs-45/wrapper_factory.h"
-#include "cobalt/script/mozjs-45/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs-45/js/src/jsapi.h"
-#include "third_party/mozjs-45/js/src/jsfriendapi.h"
-
-
-namespace {
-using cobalt::bindings::testing::ConvertSimpleObjectInterface;
-using cobalt::bindings::testing::MozjsConvertSimpleObjectInterface;
-using cobalt::script::CallbackInterfaceTraits;
-using cobalt::script::GlobalEnvironment;
-using cobalt::script::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandleHolder;
-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::kConversionFlagObjectOnly;
-using cobalt::script::mozjs::kNoConversionFlags;
-}  // namespace
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-
-namespace {
-
-
-
-
-
-
-
-class MozjsConvertSimpleObjectInterfaceHandler : public ProxyHandler {
- public:
-  MozjsConvertSimpleObjectInterfaceHandler()
-      : ProxyHandler(indexed_property_hooks, named_property_hooks) {}
-
- private:
-  static NamedPropertyHooks named_property_hooks;
-  static IndexedPropertyHooks indexed_property_hooks;
-};
-
-ProxyHandler::NamedPropertyHooks
-MozjsConvertSimpleObjectInterfaceHandler::named_property_hooks = {
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-};
-
-ProxyHandler::IndexedPropertyHooks
-MozjsConvertSimpleObjectInterfaceHandler::indexed_property_hooks = {
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-  NULL,
-};
-
-static base::LazyInstance<MozjsConvertSimpleObjectInterfaceHandler>::DestructorAtExit
-    proxy_handler;
-
-bool Constructor(JSContext* context, unsigned int argc, JS::Value* vp);
-
-bool HasInstance(JSContext *context, JS::HandleObject type,
-                 JS::MutableHandleValue vp, bool *success) {
-  JS::RootedObject global_object(
-      context, JS_GetGlobalForObject(context, type));
-  DCHECK(global_object);
-
-  JS::RootedObject prototype(
-      context, MozjsConvertSimpleObjectInterface::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;
-}
-
-const JSClass instance_class_definition = {
-    "ConvertSimpleObjectInterface",
-    0 | JSCLASS_HAS_PRIVATE,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    &WrapperPrivate::Finalizer,  // finalize
-    NULL,  // call
-    NULL,  // hasInstance
-    NULL,  // construct
-    &WrapperPrivate::Trace,  // trace
-};
-
-const JSClass prototype_class_definition = {
-    "ConvertSimpleObjectInterfacePrototype",
-};
-
-const JSClass interface_object_class_definition = {
-    "ConvertSimpleObjectInterfaceConstructor",
-    0,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    NULL,  // finalize
-    NULL,  // call
-    &HasInstance,
-    Constructor,
-};
-
-
-bool fcn_convertSimpleObjectToMapTest(
-    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)) {
-    NOTREACHED();
-    return false;
-  }
-  const JSClass* proto_class =
-      MozjsConvertSimpleObjectInterface::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<ConvertSimpleObjectInterface>())) {
-    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);
-  ConvertSimpleObjectInterface* impl =
-      wrapper_private->wrappable<ConvertSimpleObjectInterface>().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->ConvertSimpleObjectToMapTest(value, &exception_state);
-  result_value.set(JS::UndefinedHandleValue);
-  return !exception_state.is_exception_set();
-}
-
-const JSPropertySpec prototype_properties[] = {
-  JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
-  JS_FNSPEC(
-      "convertSimpleObjectToMapTest", fcn_convertSimpleObjectToMapTest, NULL,
-      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);
-
-  interface_data->prototype = JS_NewObjectWithGivenProto(
-    context, &prototype_class_definition, parent_prototype
-  );
-
-  JS::RootedObject rooted_prototype(context, interface_data->prototype);
-  bool success = JS_DefineProperties(
-      context,
-      rooted_prototype,
-      prototype_properties);
-
-  DCHECK(success);
-  success = JS_DefineFunctions(
-      context, rooted_prototype, prototype_functions);
-  DCHECK(success);
-
-  JS::RootedObject function_prototype(
-      context, JS_GetFunctionPrototype(context, global_object));
-  DCHECK(function_prototype);
-
-  const char name[] =
-      "ConvertSimpleObjectInterface";
-
-  JSFunction* function = js::NewFunctionWithReserved(
-      context,
-      Constructor,
-      0,
-      JSFUN_CONSTRUCTOR,
-      name);
-  interface_data->interface_object = JS_GetFunctionObject(function);
-
-  // Add the InterfaceObject.name property.
-  JS::RootedObject rooted_interface_object(
-      context, interface_data->interface_object);
-  JS::RootedValue name_value(context);
-
-  js::SetPrototype(context, rooted_interface_object, function_prototype);
-
-  name_value.setString(JS_NewStringCopyZ(context, name));
-  success = JS_DefineProperty(
-      context, rooted_interface_object, "name", name_value, JSPROP_READONLY,
-      NULL, NULL);
-  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,
-      JSPROP_READONLY, NULL, NULL);
-  DCHECK(success);
-
-  // Define interface object properties (excluding 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);
-  success = JS_LinkConstructorAndPrototype(
-      context,
-      rooted_interface_object,
-      rooted_prototype);
-  DCHECK(success);
-}
-
-inline InterfaceData* GetInterfaceData(JSContext* context) {
-  const int kInterfaceUniqueId = 12;
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  // By convention, the |MozjsGlobalEnvironment| that we are associated with
-  // will hold our |InterfaceData| at index |kInterfaceUniqueId|, as we asked
-  // for it to be there in the first place, and could not have conflicted with
-  // any other interface.
-  return global_environment->GetInterfaceData(kInterfaceUniqueId);
-}
-
-}  // namespace
-
-// static
-JSObject* MozjsConvertSimpleObjectInterface::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);
-
-  JSAutoCompartment auto_compartment(context, 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, &instance_class_definition, prototype));
-  DCHECK(new_object);
-  JS::RootedObject proxy(context,
-      ProxyHandler::NewProxy(
-          context, proxy_handler.Pointer(), new_object, prototype));
-  WrapperPrivate::AddPrivateData(context, proxy, wrappable);
-  return proxy;
-}
-
-// static
-const JSClass* MozjsConvertSimpleObjectInterface::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));
-  const JSClass* proto_class = JS_GetClass(prototype);
-  return proto_class;
-}
-
-// static
-JSObject* MozjsConvertSimpleObjectInterface::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* MozjsConvertSimpleObjectInterface::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 {
-
-
-
-bool Constructor(JSContext* context, unsigned int argc, JS::Value* vp) {
-  MozjsExceptionState exception_state(context);
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-
-  scoped_refptr<ConvertSimpleObjectInterface> new_object =
-      new ConvertSimpleObjectInterface();
-  JS::RootedValue result_value(context);
-  ToJSValue(context, new_object, &result_value);
-  DCHECK(result_value.isObject());
-  args.rval().setObject(result_value.toObject());
-  return true;
-}
-
-
-}  // namespace
-
-
-}  // namespace testing
-}  // namespace bindings
-}  // namespace cobalt
-
-
diff --git a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_convert_simple_object_interface.h b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_convert_simple_object_interface.h
deleted file mode 100644
index 96d44aa..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_convert_simple_object_interface.h
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.h.template
-
-#ifndef MozjsConvertSimpleObjectInterface_h
-#define MozjsConvertSimpleObjectInterface_h
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "base/containers/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/convert_simple_object_interface.h"
-
-#include "third_party/mozjs-45/js/src/jsapi.h"
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-class MozjsConvertSimpleObjectInterface {
- 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  // MozjsConvertSimpleObjectInterface_h
diff --git a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_derived_dictionary.cc b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_derived_dictionary.cc
deleted file mode 100644
index 583d39b..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_derived_dictionary.cc
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/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-45/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, nullptr));
-  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, kPropertyAttributes, nullptr, nullptr)) {
-      // Some internal error occurred.
-      NOTREACHED();
-      return;
-    }
-  }
-  out_value.setObject(*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.";
-  MozjsExceptionState* mozjs_exception_state = base::polymorphic_downcast<MozjsExceptionState*>(exception_state);
-  DCHECK(!mozjs_exception_state->is_exception_set());
-
-  FromJSValue(context, value, conversion_flags, exception_state,
-      static_cast<cobalt::bindings::testing::TestDictionary*>(out_dictionary));
-  if (mozjs_exception_state->is_exception_set()) {
-    return;
-  }
-  // 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, &value.toObject());
-  JS::RootedValue additional_member(context);
-  if (!JS_GetProperty(context, dictionary_object,
-                      "additionalMember",
-                      &additional_member)) {
-    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/mozjs45/testing/cobalt/bindings/testing/mozjs_derived_getter_setter_interface.cc b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_derived_getter_setter_interface.cc
deleted file mode 100644
index 50a51e6..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_derived_getter_setter_interface.cc
+++ /dev/null
@@ -1,956 +0,0 @@
-
-
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.cc.template
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "cobalt/bindings/testing/mozjs_derived_getter_setter_interface.h"
-
-#include "base/trace_event/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/script/value_handle.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-45/callback_function_conversion.h"
-#include "cobalt/script/mozjs-45/conversion_helpers.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer_view.h"
-#include "cobalt/script/mozjs-45/mozjs_callback_function.h"
-#include "cobalt/script/mozjs-45/mozjs_data_view.h"
-#include "cobalt/script/mozjs-45/mozjs_exception_state.h"
-#include "cobalt/script/mozjs-45/mozjs_global_environment.h"
-#include "cobalt/script/mozjs-45/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs-45/mozjs_typed_arrays.h"
-#include "cobalt/script/mozjs-45/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs-45/mozjs_value_handle.h"
-#include "cobalt/script/mozjs-45/native_promise.h"
-#include "cobalt/script/mozjs-45/proxy_handler.h"
-#include "cobalt/script/mozjs-45/type_traits.h"
-#include "cobalt/script/mozjs-45/wrapper_factory.h"
-#include "cobalt/script/mozjs-45/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs-45/js/src/jsapi.h"
-#include "third_party/mozjs-45/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::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandleHolder;
-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::kConversionFlagObjectOnly;
-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);
-}
-
-bool GetNamedProperty(
-    JSContext* context, JS::HandleObject object, JS::HandleId id,
-    JS::MutableHandleValue vp) {
-  JS::RootedValue id_value(context);
-  if (!JS_IdToValue(context, id, &id_value)) {
-    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();
-}
-
-
-
-bool SetNamedProperty(
-  JSContext* context, JS::HandleObject object, JS::HandleId id,
-  JS::MutableHandleValue vp, JS::ObjectOpResult& object_op_result) {
-  JS::RootedValue id_value(context);
-  if (!JS_IdToValue(context, id, &id_value)) {
-    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);
-
-  if (!exception_state.is_exception_set()) {
-    return object_op_result.succeed();
-  } else {
-    return false;
-  }
-}
-
-
-
-
-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));
-  }
-}
-
-bool GetIndexedProperty(
-    JSContext* context, JS::HandleObject object, JS::HandleId id,
-    JS::MutableHandleValue vp) {
-  JS::RootedValue id_value(context);
-  if (!JS_IdToValue(context, id, &id_value)) {
-    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();
-}
-
-
-
-bool SetIndexedProperty(
-  JSContext* context, JS::HandleObject object, JS::HandleId id,
-  JS::MutableHandleValue vp, JS::ObjectOpResult& object_op_result) {
-  JS::RootedValue id_value(context);
-  if (!JS_IdToValue(context, id, &id_value)) {
-    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);
-  if (!exception_state.is_exception_set()) {
-    return object_op_result.succeed();
-  } else {
-    return false;
-  }
-}
-
-
-
-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>::DestructorAtExit
-    proxy_handler;
-
-bool DummyConstructor(JSContext* context, unsigned int argc, JS::Value* vp) {
-  MozjsExceptionState exception(context);
-  exception.SetSimpleException(
-      script::kTypeError, "DerivedGetterSetterInterface is not constructible.");
-  return false;
-}
-
-bool HasInstance(JSContext *context, JS::HandleObject type,
-                 JS::MutableHandleValue vp, bool *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;
-}
-
-const JSClass instance_class_definition = {
-    "DerivedGetterSetterInterface",
-    0 | JSCLASS_HAS_PRIVATE,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    &WrapperPrivate::Finalizer,  // finalize
-    NULL,  // call
-    NULL,  // hasInstance
-    NULL,  // construct
-    &WrapperPrivate::Trace,  // trace
-};
-
-const JSClass prototype_class_definition = {
-    "DerivedGetterSetterInterfacePrototype",
-};
-
-const JSClass interface_object_class_definition = {
-    "DerivedGetterSetterInterfaceConstructor",
-    0,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    NULL,  // finalize
-    NULL,  // call
-    &HasInstance,
-    NULL,
-};
-
-bool get_length(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-  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()) {
-    args.rval().set(result_value);
-  }
-  return !exception_state.is_exception_set();
-}
-
-
-bool get_propertyOnDerivedClass(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-  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()) {
-    args.rval().set(result_value);
-  }
-  return !exception_state.is_exception_set();
-}
-
-bool set_propertyOnDerivedClass(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-
-  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;
-  if (args.length() != 1) {
-    NOTREACHED();
-    return false;
-  }
-  FromJSValue(context, args[0], 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();
-}
-
-
-bool 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)) {
-    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();
-}
-
-bool 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)) {
-    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();
-}
-
-bool 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)) {
-    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",
-    JSPROP_SHARED | JSPROP_ENUMERATE,
-    { { &get_length, NULL } },
-    JSNATIVE_WRAPPER(NULL),
-  },
-  {  // Read/Write property
-    "propertyOnDerivedClass",
-    JSPROP_SHARED | JSPROP_ENUMERATE,
-    { { &get_propertyOnDerivedClass, NULL } },
-    { { &set_propertyOnDerivedClass, NULL } },
-  },
-  JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
-  JS_FNSPEC(
-      "derivedIndexedGetter", fcn_derivedIndexedGetter, NULL,
-      1, JSPROP_ENUMERATE, NULL),
-  JS_FNSPEC(
-      "derivedIndexedSetter", fcn_derivedIndexedSetter, NULL,
-      2, JSPROP_ENUMERATE, NULL),
-  JS_FNSPEC(
-      "operationOnDerivedClass", fcn_operationOnDerivedClass, NULL,
-      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));
-  static_assert(
-      std::is_base_of<NamedIndexedGetterInterface, DerivedGetterSetterInterface>::value,
-      "Expected DerivedGetterSetterInterface to have C++ parent class "
-      "NamedIndexedGetterInterface, because that is its WebIDL parent.");
-
-  DCHECK(parent_prototype);
-
-  interface_data->prototype = JS_NewObjectWithGivenProto(
-    context, &prototype_class_definition, parent_prototype
-  );
-
-  JS::RootedObject rooted_prototype(context, interface_data->prototype);
-  bool success = JS_DefineProperties(
-      context,
-      rooted_prototype,
-      prototype_properties);
-
-  DCHECK(success);
-  success = JS_DefineFunctions(
-      context, rooted_prototype, prototype_functions);
-  DCHECK(success);
-
-  JS::RootedObject function_prototype(
-      context, JS_GetFunctionPrototype(context, global_object));
-  DCHECK(function_prototype);
-
-  const char name[] =
-      "DerivedGetterSetterInterface";
-
-  JSFunction* function = js::NewFunctionWithReserved(
-      context,
-      DummyConstructor,
-      0,
-      JSFUN_CONSTRUCTOR,
-      name);
-  interface_data->interface_object = JS_GetFunctionObject(function);
-
-  // Add the InterfaceObject.name property.
-  JS::RootedObject rooted_interface_object(
-      context, interface_data->interface_object);
-  JS::RootedValue name_value(context);
-
-  js::SetPrototype(context, rooted_interface_object, function_prototype);
-
-  name_value.setString(JS_NewStringCopyZ(context, name));
-  success = JS_DefineProperty(
-      context, rooted_interface_object, "name", name_value, JSPROP_READONLY,
-      NULL, NULL);
-  DCHECK(success);
-
-  // Define interface object properties (excluding 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);
-  success = JS_LinkConstructorAndPrototype(
-      context,
-      rooted_interface_object,
-      rooted_prototype);
-  DCHECK(success);
-}
-
-inline InterfaceData* GetInterfaceData(JSContext* context) {
-  const int kInterfaceUniqueId = 15;
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  // By convention, the |MozjsGlobalEnvironment| that we are associated with
-  // will hold our |InterfaceData| at index |kInterfaceUniqueId|, as we asked
-  // for it to be there in the first place, and could not have conflicted with
-  // any other interface.
-  return global_environment->GetInterfaceData(kInterfaceUniqueId);
-}
-
-}  // 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);
-
-  JSAutoCompartment auto_compartment(context, 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, &instance_class_definition, prototype));
-  DCHECK(new_object);
-  JS::RootedObject proxy(context,
-      ProxyHandler::NewProxy(
-          context, proxy_handler.Pointer(), new_object, prototype));
-  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));
-  const JSClass* proto_class = JS_GetClass(prototype);
-  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/mozjs45/testing/cobalt/bindings/testing/mozjs_derived_getter_setter_interface.h b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_derived_getter_setter_interface.h
deleted file mode 100644
index 0c3d509..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_derived_getter_setter_interface.h
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.h.template
-
-#ifndef MozjsDerivedGetterSetterInterface_h
-#define MozjsDerivedGetterSetterInterface_h
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "base/containers/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-45/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/mozjs45/testing/cobalt/bindings/testing/mozjs_derived_interface.cc b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_derived_interface.cc
deleted file mode 100644
index e7ff564..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_derived_interface.cc
+++ /dev/null
@@ -1,521 +0,0 @@
-
-
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.cc.template
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "cobalt/bindings/testing/mozjs_derived_interface.h"
-
-#include "base/trace_event/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/script/value_handle.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-45/callback_function_conversion.h"
-#include "cobalt/script/mozjs-45/conversion_helpers.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer_view.h"
-#include "cobalt/script/mozjs-45/mozjs_callback_function.h"
-#include "cobalt/script/mozjs-45/mozjs_data_view.h"
-#include "cobalt/script/mozjs-45/mozjs_exception_state.h"
-#include "cobalt/script/mozjs-45/mozjs_global_environment.h"
-#include "cobalt/script/mozjs-45/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs-45/mozjs_typed_arrays.h"
-#include "cobalt/script/mozjs-45/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs-45/mozjs_value_handle.h"
-#include "cobalt/script/mozjs-45/native_promise.h"
-#include "cobalt/script/mozjs-45/proxy_handler.h"
-#include "cobalt/script/mozjs-45/type_traits.h"
-#include "cobalt/script/mozjs-45/wrapper_factory.h"
-#include "cobalt/script/mozjs-45/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs-45/js/src/jsapi.h"
-#include "third_party/mozjs-45/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::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandleHolder;
-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::kConversionFlagObjectOnly;
-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>::DestructorAtExit
-    proxy_handler;
-
-bool Constructor(JSContext* context, unsigned int argc, JS::Value* vp);
-
-bool HasInstance(JSContext *context, JS::HandleObject type,
-                 JS::MutableHandleValue vp, bool *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;
-}
-
-const JSClass instance_class_definition = {
-    "DerivedInterface",
-    0 | JSCLASS_HAS_PRIVATE,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    &WrapperPrivate::Finalizer,  // finalize
-    NULL,  // call
-    NULL,  // hasInstance
-    NULL,  // construct
-    &WrapperPrivate::Trace,  // trace
-};
-
-const JSClass prototype_class_definition = {
-    "DerivedInterfacePrototype",
-};
-
-const JSClass interface_object_class_definition = {
-    "DerivedInterfaceConstructor",
-    0,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    NULL,  // finalize
-    NULL,  // call
-    &HasInstance,
-    Constructor,
-};
-
-bool get_derivedAttribute(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-  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()) {
-    args.rval().set(result_value);
-  }
-  return !exception_state.is_exception_set();
-}
-
-
-
-bool 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)) {
-    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",
-    JSPROP_SHARED | JSPROP_ENUMERATE,
-    { { &get_derivedAttribute, NULL } },
-    JSNATIVE_WRAPPER(NULL),
-  },
-  JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
-  JS_FNSPEC(
-      "derivedOperation", fcn_derivedOperation, NULL,
-      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));
-  static_assert(
-      std::is_base_of<BaseInterface, DerivedInterface>::value,
-      "Expected DerivedInterface to have C++ parent class "
-      "BaseInterface, because that is its WebIDL parent.");
-
-  DCHECK(parent_prototype);
-
-  interface_data->prototype = JS_NewObjectWithGivenProto(
-    context, &prototype_class_definition, parent_prototype
-  );
-
-  JS::RootedObject rooted_prototype(context, interface_data->prototype);
-  bool success = JS_DefineProperties(
-      context,
-      rooted_prototype,
-      prototype_properties);
-
-  DCHECK(success);
-  success = JS_DefineFunctions(
-      context, rooted_prototype, prototype_functions);
-  DCHECK(success);
-
-  JS::RootedObject function_prototype(
-      context, JS_GetFunctionPrototype(context, global_object));
-  DCHECK(function_prototype);
-
-  const char name[] =
-      "DerivedInterface";
-
-  JSFunction* function = js::NewFunctionWithReserved(
-      context,
-      Constructor,
-      0,
-      JSFUN_CONSTRUCTOR,
-      name);
-  interface_data->interface_object = JS_GetFunctionObject(function);
-
-  // Add the InterfaceObject.name property.
-  JS::RootedObject rooted_interface_object(
-      context, interface_data->interface_object);
-  JS::RootedValue name_value(context);
-
-  js::SetPrototype(context, rooted_interface_object, function_prototype);
-
-  name_value.setString(JS_NewStringCopyZ(context, name));
-  success = JS_DefineProperty(
-      context, rooted_interface_object, "name", name_value, JSPROP_READONLY,
-      NULL, NULL);
-  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,
-      JSPROP_READONLY, NULL, NULL);
-  DCHECK(success);
-
-  // Define interface object properties (excluding 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);
-  success = JS_LinkConstructorAndPrototype(
-      context,
-      rooted_interface_object,
-      rooted_prototype);
-  DCHECK(success);
-}
-
-inline InterfaceData* GetInterfaceData(JSContext* context) {
-  const int kInterfaceUniqueId = 16;
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  // By convention, the |MozjsGlobalEnvironment| that we are associated with
-  // will hold our |InterfaceData| at index |kInterfaceUniqueId|, as we asked
-  // for it to be there in the first place, and could not have conflicted with
-  // any other interface.
-  return global_environment->GetInterfaceData(kInterfaceUniqueId);
-}
-
-}  // 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);
-
-  JSAutoCompartment auto_compartment(context, 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, &instance_class_definition, prototype));
-  DCHECK(new_object);
-  JS::RootedObject proxy(context,
-      ProxyHandler::NewProxy(
-          context, proxy_handler.Pointer(), new_object, prototype));
-  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));
-  const JSClass* proto_class = JS_GetClass(prototype);
-  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 {
-
-
-
-bool 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());
-  args.rval().setObject(result_value.toObject());
-  return true;
-}
-
-
-}  // namespace
-
-
-}  // namespace testing
-}  // namespace bindings
-}  // namespace cobalt
-
-
diff --git a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_derived_interface.h b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_derived_interface.h
deleted file mode 100644
index d3f1147..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_derived_interface.h
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.h.template
-
-#ifndef MozjsDerivedInterface_h
-#define MozjsDerivedInterface_h
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "base/containers/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-45/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/mozjs45/testing/cobalt/bindings/testing/mozjs_dictionary_interface.cc b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_dictionary_interface.cc
deleted file mode 100644
index 060866a..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_dictionary_interface.cc
+++ /dev/null
@@ -1,703 +0,0 @@
-
-
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.cc.template
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "cobalt/bindings/testing/mozjs_dictionary_interface.h"
-
-#include "base/trace_event/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/script/value_handle.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-45/callback_function_conversion.h"
-#include "cobalt/script/mozjs-45/conversion_helpers.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer_view.h"
-#include "cobalt/script/mozjs-45/mozjs_callback_function.h"
-#include "cobalt/script/mozjs-45/mozjs_data_view.h"
-#include "cobalt/script/mozjs-45/mozjs_exception_state.h"
-#include "cobalt/script/mozjs-45/mozjs_global_environment.h"
-#include "cobalt/script/mozjs-45/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs-45/mozjs_typed_arrays.h"
-#include "cobalt/script/mozjs-45/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs-45/mozjs_value_handle.h"
-#include "cobalt/script/mozjs-45/native_promise.h"
-#include "cobalt/script/mozjs-45/proxy_handler.h"
-#include "cobalt/script/mozjs-45/type_traits.h"
-#include "cobalt/script/mozjs-45/wrapper_factory.h"
-#include "cobalt/script/mozjs-45/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs-45/js/src/jsapi.h"
-#include "third_party/mozjs-45/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::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandleHolder;
-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::kConversionFlagObjectOnly;
-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>::DestructorAtExit
-    proxy_handler;
-
-bool DummyConstructor(JSContext* context, unsigned int argc, JS::Value* vp) {
-  MozjsExceptionState exception(context);
-  exception.SetSimpleException(
-      script::kTypeError, "DictionaryInterface is not constructible.");
-  return false;
-}
-
-bool HasInstance(JSContext *context, JS::HandleObject type,
-                 JS::MutableHandleValue vp, bool *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;
-}
-
-const JSClass instance_class_definition = {
-    "DictionaryInterface",
-    0 | JSCLASS_HAS_PRIVATE,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    &WrapperPrivate::Finalizer,  // finalize
-    NULL,  // call
-    NULL,  // hasInstance
-    NULL,  // construct
-    &WrapperPrivate::Trace,  // trace
-};
-
-const JSClass prototype_class_definition = {
-    "DictionaryInterfacePrototype",
-};
-
-const JSClass interface_object_class_definition = {
-    "DictionaryInterfaceConstructor",
-    0,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    NULL,  // finalize
-    NULL,  // call
-    &HasInstance,
-    NULL,
-};
-
-bool get_dictionarySequence(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-  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()) {
-    args.rval().set(result_value);
-  }
-  return !exception_state.is_exception_set();
-}
-
-bool set_dictionarySequence(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-
-  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;
-  if (args.length() != 1) {
-    NOTREACHED();
-    return false;
-  }
-  FromJSValue(context, args[0], 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();
-}
-
-
-bool 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)) {
-    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();
-}
-
-bool 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)) {
-    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();
-}
-
-bool 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)) {
-    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",
-    JSPROP_SHARED | JSPROP_ENUMERATE,
-    { { &get_dictionarySequence, NULL } },
-    { { &set_dictionarySequence, NULL } },
-  },
-  JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
-  JS_FNSPEC(
-      "derivedDictionaryOperation", fcn_derivedDictionaryOperation, NULL,
-      1, JSPROP_ENUMERATE, NULL),
-  JS_FNSPEC(
-      "dictionaryOperation", fcn_dictionaryOperation, NULL,
-      1, JSPROP_ENUMERATE, NULL),
-  JS_FNSPEC(
-      "testOperation", fcn_testOperation, NULL,
-      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);
-
-  interface_data->prototype = JS_NewObjectWithGivenProto(
-    context, &prototype_class_definition, parent_prototype
-  );
-
-  JS::RootedObject rooted_prototype(context, interface_data->prototype);
-  bool success = JS_DefineProperties(
-      context,
-      rooted_prototype,
-      prototype_properties);
-
-  DCHECK(success);
-  success = JS_DefineFunctions(
-      context, rooted_prototype, prototype_functions);
-  DCHECK(success);
-
-  JS::RootedObject function_prototype(
-      context, JS_GetFunctionPrototype(context, global_object));
-  DCHECK(function_prototype);
-
-  const char name[] =
-      "DictionaryInterface";
-
-  JSFunction* function = js::NewFunctionWithReserved(
-      context,
-      DummyConstructor,
-      0,
-      JSFUN_CONSTRUCTOR,
-      name);
-  interface_data->interface_object = JS_GetFunctionObject(function);
-
-  // Add the InterfaceObject.name property.
-  JS::RootedObject rooted_interface_object(
-      context, interface_data->interface_object);
-  JS::RootedValue name_value(context);
-
-  js::SetPrototype(context, rooted_interface_object, function_prototype);
-
-  name_value.setString(JS_NewStringCopyZ(context, name));
-  success = JS_DefineProperty(
-      context, rooted_interface_object, "name", name_value, JSPROP_READONLY,
-      NULL, NULL);
-  DCHECK(success);
-
-  // Define interface object properties (excluding 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);
-  success = JS_LinkConstructorAndPrototype(
-      context,
-      rooted_interface_object,
-      rooted_prototype);
-  DCHECK(success);
-}
-
-inline InterfaceData* GetInterfaceData(JSContext* context) {
-  const int kInterfaceUniqueId = 17;
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  // By convention, the |MozjsGlobalEnvironment| that we are associated with
-  // will hold our |InterfaceData| at index |kInterfaceUniqueId|, as we asked
-  // for it to be there in the first place, and could not have conflicted with
-  // any other interface.
-  return global_environment->GetInterfaceData(kInterfaceUniqueId);
-}
-
-}  // 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);
-
-  JSAutoCompartment auto_compartment(context, 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, &instance_class_definition, prototype));
-  DCHECK(new_object);
-  JS::RootedObject proxy(context,
-      ProxyHandler::NewProxy(
-          context, proxy_handler.Pointer(), new_object, prototype));
-  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));
-  const JSClass* proto_class = JS_GetClass(prototype);
-  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/mozjs45/testing/cobalt/bindings/testing/mozjs_dictionary_interface.h b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_dictionary_interface.h
deleted file mode 100644
index 786ff22..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_dictionary_interface.h
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.h.template
-
-#ifndef MozjsDictionaryInterface_h
-#define MozjsDictionaryInterface_h
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "base/containers/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-45/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/mozjs45/testing/cobalt/bindings/testing/mozjs_dictionary_with_dictionary_member.cc b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_dictionary_with_dictionary_member.cc
deleted file mode 100644
index a5f86d8..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_dictionary_with_dictionary_member.cc
+++ /dev/null
@@ -1,102 +0,0 @@
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/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-45/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, nullptr));
-  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, kPropertyAttributes, nullptr, nullptr)) {
-      // Some internal error occurred.
-      NOTREACHED();
-      return;
-    }
-  }
-  out_value.setObject(*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.";
-  MozjsExceptionState* mozjs_exception_state = base::polymorphic_downcast<MozjsExceptionState*>(exception_state);
-  DCHECK(!mozjs_exception_state->is_exception_set());
-
-  // 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, &value.toObject());
-  JS::RootedValue nested_dictionary(context);
-  if (!JS_GetProperty(context, dictionary_object,
-                      "nestedDictionary",
-                      &nested_dictionary)) {
-    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/mozjs45/testing/cobalt/bindings/testing/mozjs_disabled_interface.cc b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_disabled_interface.cc
deleted file mode 100644
index 0deb485..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_disabled_interface.cc
+++ /dev/null
@@ -1,549 +0,0 @@
-
-
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.cc.template
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-
-#if defined(NO_ENABLE_CONDITIONAL_INTERFACE)
-
-#include "cobalt/bindings/testing/mozjs_disabled_interface.h"
-
-#include "base/trace_event/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/script/value_handle.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs-45/callback_function_conversion.h"
-#include "cobalt/script/mozjs-45/conversion_helpers.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer_view.h"
-#include "cobalt/script/mozjs-45/mozjs_callback_function.h"
-#include "cobalt/script/mozjs-45/mozjs_data_view.h"
-#include "cobalt/script/mozjs-45/mozjs_exception_state.h"
-#include "cobalt/script/mozjs-45/mozjs_global_environment.h"
-#include "cobalt/script/mozjs-45/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs-45/mozjs_typed_arrays.h"
-#include "cobalt/script/mozjs-45/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs-45/mozjs_value_handle.h"
-#include "cobalt/script/mozjs-45/native_promise.h"
-#include "cobalt/script/mozjs-45/proxy_handler.h"
-#include "cobalt/script/mozjs-45/type_traits.h"
-#include "cobalt/script/mozjs-45/wrapper_factory.h"
-#include "cobalt/script/mozjs-45/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs-45/js/src/jsapi.h"
-#include "third_party/mozjs-45/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::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandleHolder;
-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::kConversionFlagObjectOnly;
-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>::DestructorAtExit
-    proxy_handler;
-
-bool DummyConstructor(JSContext* context, unsigned int argc, JS::Value* vp) {
-  MozjsExceptionState exception(context);
-  exception.SetSimpleException(
-      script::kTypeError, "DisabledInterface is not constructible.");
-  return false;
-}
-
-bool HasInstance(JSContext *context, JS::HandleObject type,
-                 JS::MutableHandleValue vp, bool *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;
-}
-
-const JSClass instance_class_definition = {
-    "DisabledInterface",
-    0 | JSCLASS_HAS_PRIVATE,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    &WrapperPrivate::Finalizer,  // finalize
-    NULL,  // call
-    NULL,  // hasInstance
-    NULL,  // construct
-    &WrapperPrivate::Trace,  // trace
-};
-
-const JSClass prototype_class_definition = {
-    "DisabledInterfacePrototype",
-};
-
-const JSClass interface_object_class_definition = {
-    "DisabledInterfaceConstructor",
-    0,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    NULL,  // finalize
-    NULL,  // call
-    &HasInstance,
-    NULL,
-};
-
-bool get_disabledProperty(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-  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()) {
-    args.rval().set(result_value);
-  }
-  return !exception_state.is_exception_set();
-}
-
-bool set_disabledProperty(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-
-  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;
-  if (args.length() != 1) {
-    NOTREACHED();
-    return false;
-  }
-  FromJSValue(context, args[0], 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();
-}
-
-
-bool 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)) {
-    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",
-    JSPROP_SHARED | JSPROP_ENUMERATE,
-    { { &get_disabledProperty, NULL } },
-    { { &set_disabledProperty, NULL } },
-  },
-  JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
-  JS_FNSPEC(
-      "disabledFunction", fcn_disabledFunction, NULL,
-      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);
-
-  interface_data->prototype = JS_NewObjectWithGivenProto(
-    context, &prototype_class_definition, parent_prototype
-  );
-
-  JS::RootedObject rooted_prototype(context, interface_data->prototype);
-  bool success = JS_DefineProperties(
-      context,
-      rooted_prototype,
-      prototype_properties);
-
-  DCHECK(success);
-  success = JS_DefineFunctions(
-      context, rooted_prototype, prototype_functions);
-  DCHECK(success);
-
-  JS::RootedObject function_prototype(
-      context, JS_GetFunctionPrototype(context, global_object));
-  DCHECK(function_prototype);
-
-  const char name[] =
-      "DisabledInterface";
-
-  JSFunction* function = js::NewFunctionWithReserved(
-      context,
-      DummyConstructor,
-      0,
-      JSFUN_CONSTRUCTOR,
-      name);
-  interface_data->interface_object = JS_GetFunctionObject(function);
-
-  // Add the InterfaceObject.name property.
-  JS::RootedObject rooted_interface_object(
-      context, interface_data->interface_object);
-  JS::RootedValue name_value(context);
-
-  js::SetPrototype(context, rooted_interface_object, function_prototype);
-
-  name_value.setString(JS_NewStringCopyZ(context, name));
-  success = JS_DefineProperty(
-      context, rooted_interface_object, "name", name_value, JSPROP_READONLY,
-      NULL, NULL);
-  DCHECK(success);
-
-  // Define interface object properties (excluding 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);
-  success = JS_LinkConstructorAndPrototype(
-      context,
-      rooted_interface_object,
-      rooted_prototype);
-  DCHECK(success);
-}
-
-inline InterfaceData* GetInterfaceData(JSContext* context) {
-  const int kInterfaceUniqueId = 19;
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  // By convention, the |MozjsGlobalEnvironment| that we are associated with
-  // will hold our |InterfaceData| at index |kInterfaceUniqueId|, as we asked
-  // for it to be there in the first place, and could not have conflicted with
-  // any other interface.
-  return global_environment->GetInterfaceData(kInterfaceUniqueId);
-}
-
-}  // 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);
-
-  JSAutoCompartment auto_compartment(context, 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, &instance_class_definition, prototype));
-  DCHECK(new_object);
-  JS::RootedObject proxy(context,
-      ProxyHandler::NewProxy(
-          context, proxy_handler.Pointer(), new_object, prototype));
-  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));
-  const JSClass* proto_class = JS_GetClass(prototype);
-  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/mozjs45/testing/cobalt/bindings/testing/mozjs_disabled_interface.h b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_disabled_interface.h
deleted file mode 100644
index dd9f5ce..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_disabled_interface.h
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.h.template
-
-#ifndef MozjsDisabledInterface_h
-#define MozjsDisabledInterface_h
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-
-#if defined(NO_ENABLE_CONDITIONAL_INTERFACE)
-
-#include "base/containers/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-45/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/mozjs45/testing/cobalt/bindings/testing/mozjs_dom_string_test_interface.cc b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_dom_string_test_interface.cc
deleted file mode 100644
index 2d98d32..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_dom_string_test_interface.cc
+++ /dev/null
@@ -1,922 +0,0 @@
-
-
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.cc.template
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "cobalt/bindings/testing/mozjs_dom_string_test_interface.h"
-
-#include "base/trace_event/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/script/value_handle.h"
-
-#include "mozjs_gen_type_conversion.h"
-
-#include "base/lazy_instance.h"
-#include "cobalt/script/exception_state.h"
-#include "cobalt/script/mozjs-45/callback_function_conversion.h"
-#include "cobalt/script/mozjs-45/conversion_helpers.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer_view.h"
-#include "cobalt/script/mozjs-45/mozjs_callback_function.h"
-#include "cobalt/script/mozjs-45/mozjs_data_view.h"
-#include "cobalt/script/mozjs-45/mozjs_exception_state.h"
-#include "cobalt/script/mozjs-45/mozjs_global_environment.h"
-#include "cobalt/script/mozjs-45/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs-45/mozjs_typed_arrays.h"
-#include "cobalt/script/mozjs-45/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs-45/mozjs_value_handle.h"
-#include "cobalt/script/mozjs-45/native_promise.h"
-#include "cobalt/script/mozjs-45/proxy_handler.h"
-#include "cobalt/script/mozjs-45/type_traits.h"
-#include "cobalt/script/mozjs-45/wrapper_factory.h"
-#include "cobalt/script/mozjs-45/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs-45/js/src/jsapi.h"
-#include "third_party/mozjs-45/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::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandleHolder;
-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::kConversionFlagObjectOnly;
-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>::DestructorAtExit
-    proxy_handler;
-
-bool DummyConstructor(JSContext* context, unsigned int argc, JS::Value* vp) {
-  MozjsExceptionState exception(context);
-  exception.SetSimpleException(
-      script::kTypeError, "DOMStringTestInterface is not constructible.");
-  return false;
-}
-
-bool HasInstance(JSContext *context, JS::HandleObject type,
-                 JS::MutableHandleValue vp, bool *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;
-}
-
-const JSClass instance_class_definition = {
-    "DOMStringTestInterface",
-    0 | JSCLASS_HAS_PRIVATE,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    &WrapperPrivate::Finalizer,  // finalize
-    NULL,  // call
-    NULL,  // hasInstance
-    NULL,  // construct
-    &WrapperPrivate::Trace,  // trace
-};
-
-const JSClass prototype_class_definition = {
-    "DOMStringTestInterfacePrototype",
-};
-
-const JSClass interface_object_class_definition = {
-    "DOMStringTestInterfaceConstructor",
-    0,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    NULL,  // finalize
-    NULL,  // call
-    &HasInstance,
-    NULL,
-};
-
-bool get_property(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-  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()) {
-    args.rval().set(result_value);
-  }
-  return !exception_state.is_exception_set();
-}
-
-bool set_property(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-
-  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;
-  if (args.length() != 1) {
-    NOTREACHED();
-    return false;
-  }
-  FromJSValue(context, args[0], 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();
-}
-
-bool get_readOnlyProperty(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-  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()) {
-    args.rval().set(result_value);
-  }
-  return !exception_state.is_exception_set();
-}
-
-
-bool get_readOnlyTokenProperty(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-  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()) {
-    args.rval().set(result_value);
-  }
-  return !exception_state.is_exception_set();
-}
-
-
-bool get_nullIsEmptyProperty(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-  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()) {
-    args.rval().set(result_value);
-  }
-  return !exception_state.is_exception_set();
-}
-
-bool set_nullIsEmptyProperty(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-
-  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;
-  if (args.length() != 1) {
-    NOTREACHED();
-    return false;
-  }
-  FromJSValue(context, args[0], (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();
-}
-
-bool get_undefinedIsEmptyProperty(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-  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()) {
-    args.rval().set(result_value);
-  }
-  return !exception_state.is_exception_set();
-}
-
-bool set_undefinedIsEmptyProperty(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-
-  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;
-  if (args.length() != 1) {
-    NOTREACHED();
-    return false;
-  }
-  FromJSValue(context, args[0], (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();
-}
-
-bool get_nullableUndefinedIsEmptyProperty(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-  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()) {
-    args.rval().set(result_value);
-  }
-  return !exception_state.is_exception_set();
-}
-
-bool set_nullableUndefinedIsEmptyProperty(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-
-  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;
-  if (args.length() != 1) {
-    NOTREACHED();
-    return false;
-  }
-  FromJSValue(context, args[0], (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",
-    JSPROP_SHARED | JSPROP_ENUMERATE,
-    { { &get_property, NULL } },
-    { { &set_property, NULL } },
-  },
-  {  // Readonly attribute
-    "readOnlyProperty",
-    JSPROP_SHARED | JSPROP_ENUMERATE,
-    { { &get_readOnlyProperty, NULL } },
-    JSNATIVE_WRAPPER(NULL),
-  },
-  {  // Readonly attribute
-    "readOnlyTokenProperty",
-    JSPROP_SHARED | JSPROP_ENUMERATE,
-    { { &get_readOnlyTokenProperty, NULL } },
-    JSNATIVE_WRAPPER(NULL),
-  },
-  {  // Read/Write property
-    "nullIsEmptyProperty",
-    JSPROP_SHARED | JSPROP_ENUMERATE,
-    { { &get_nullIsEmptyProperty, NULL } },
-    { { &set_nullIsEmptyProperty, NULL } },
-  },
-  {  // Read/Write property
-    "undefinedIsEmptyProperty",
-    JSPROP_SHARED | JSPROP_ENUMERATE,
-    { { &get_undefinedIsEmptyProperty, NULL } },
-    { { &set_undefinedIsEmptyProperty, NULL } },
-  },
-  {  // Read/Write property
-    "nullableUndefinedIsEmptyProperty",
-    JSPROP_SHARED | JSPROP_ENUMERATE,
-    { { &get_nullableUndefinedIsEmptyProperty, NULL } },
-    { { &set_nullableUndefinedIsEmptyProperty, NULL } },
-  },
-  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);
-
-  interface_data->prototype = JS_NewObjectWithGivenProto(
-    context, &prototype_class_definition, parent_prototype
-  );
-
-  JS::RootedObject rooted_prototype(context, interface_data->prototype);
-  bool success = JS_DefineProperties(
-      context,
-      rooted_prototype,
-      prototype_properties);
-
-  DCHECK(success);
-  success = JS_DefineFunctions(
-      context, rooted_prototype, prototype_functions);
-  DCHECK(success);
-
-  JS::RootedObject function_prototype(
-      context, JS_GetFunctionPrototype(context, global_object));
-  DCHECK(function_prototype);
-
-  const char name[] =
-      "DOMStringTestInterface";
-
-  JSFunction* function = js::NewFunctionWithReserved(
-      context,
-      DummyConstructor,
-      0,
-      JSFUN_CONSTRUCTOR,
-      name);
-  interface_data->interface_object = JS_GetFunctionObject(function);
-
-  // Add the InterfaceObject.name property.
-  JS::RootedObject rooted_interface_object(
-      context, interface_data->interface_object);
-  JS::RootedValue name_value(context);
-
-  js::SetPrototype(context, rooted_interface_object, function_prototype);
-
-  name_value.setString(JS_NewStringCopyZ(context, name));
-  success = JS_DefineProperty(
-      context, rooted_interface_object, "name", name_value, JSPROP_READONLY,
-      NULL, NULL);
-  DCHECK(success);
-
-  // Define interface object properties (excluding 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);
-  success = JS_LinkConstructorAndPrototype(
-      context,
-      rooted_interface_object,
-      rooted_prototype);
-  DCHECK(success);
-}
-
-inline InterfaceData* GetInterfaceData(JSContext* context) {
-  const int kInterfaceUniqueId = 13;
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  // By convention, the |MozjsGlobalEnvironment| that we are associated with
-  // will hold our |InterfaceData| at index |kInterfaceUniqueId|, as we asked
-  // for it to be there in the first place, and could not have conflicted with
-  // any other interface.
-  return global_environment->GetInterfaceData(kInterfaceUniqueId);
-}
-
-}  // 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);
-
-  JSAutoCompartment auto_compartment(context, 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, &instance_class_definition, prototype));
-  DCHECK(new_object);
-  JS::RootedObject proxy(context,
-      ProxyHandler::NewProxy(
-          context, proxy_handler.Pointer(), new_object, prototype));
-  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));
-  const JSClass* proto_class = JS_GetClass(prototype);
-  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/mozjs45/testing/cobalt/bindings/testing/mozjs_dom_string_test_interface.h b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_dom_string_test_interface.h
deleted file mode 100644
index 0da2b64..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_dom_string_test_interface.h
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.h.template
-
-#ifndef MozjsDOMStringTestInterface_h
-#define MozjsDOMStringTestInterface_h
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "base/containers/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-45/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/mozjs45/testing/cobalt/bindings/testing/mozjs_enumeration_interface.cc b/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_enumeration_interface.cc
deleted file mode 100644
index c1d4783..0000000
--- a/src/cobalt/bindings/generated/mozjs45/testing/cobalt/bindings/testing/mozjs_enumeration_interface.cc
+++ /dev/null
@@ -1,584 +0,0 @@
-
-
-// Copyright 2020 The Cobalt Authors. 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/mozjs45/templates/interface.cc.template
-
-#include "cobalt/bindings/shared/idl_conditional_macros.h"
-
-#include "cobalt/bindings/testing/mozjs_enumeration_interface.h"
-
-#include "base/trace_event/trace_event.h"
-#include "cobalt/base/polymorphic_downcast.h"
-#include "cobalt/script/global_environment.h"
-#include "cobalt/script/script_value.h"
-#include "cobalt/script/value_handle.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-45/callback_function_conversion.h"
-#include "cobalt/script/mozjs-45/conversion_helpers.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer.h"
-#include "cobalt/script/mozjs-45/mozjs_array_buffer_view.h"
-#include "cobalt/script/mozjs-45/mozjs_callback_function.h"
-#include "cobalt/script/mozjs-45/mozjs_data_view.h"
-#include "cobalt/script/mozjs-45/mozjs_exception_state.h"
-#include "cobalt/script/mozjs-45/mozjs_global_environment.h"
-#include "cobalt/script/mozjs-45/mozjs_property_enumerator.h"
-#include "cobalt/script/mozjs-45/mozjs_typed_arrays.h"
-#include "cobalt/script/mozjs-45/mozjs_user_object_holder.h"
-#include "cobalt/script/mozjs-45/mozjs_value_handle.h"
-#include "cobalt/script/mozjs-45/native_promise.h"
-#include "cobalt/script/mozjs-45/proxy_handler.h"
-#include "cobalt/script/mozjs-45/type_traits.h"
-#include "cobalt/script/mozjs-45/wrapper_factory.h"
-#include "cobalt/script/mozjs-45/wrapper_private.h"
-#include "cobalt/script/property_enumerator.h"
-#include "cobalt/script/sequence.h"
-#include "third_party/mozjs-45/js/src/jsapi.h"
-#include "third_party/mozjs-45/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::ScriptValue;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandle;
-using cobalt::script::ValueHandleHolder;
-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::kConversionFlagObjectOnly;
-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>::DestructorAtExit
-    proxy_handler;
-
-bool Constructor(JSContext* context, unsigned int argc, JS::Value* vp);
-
-bool HasInstance(JSContext *context, JS::HandleObject type,
-                 JS::MutableHandleValue vp, bool *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;
-}
-
-const JSClass instance_class_definition = {
-    "EnumerationInterface",
-    0 | JSCLASS_HAS_PRIVATE,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    &WrapperPrivate::Finalizer,  // finalize
-    NULL,  // call
-    NULL,  // hasInstance
-    NULL,  // construct
-    &WrapperPrivate::Trace,  // trace
-};
-
-const JSClass prototype_class_definition = {
-    "EnumerationInterfacePrototype",
-};
-
-const JSClass interface_object_class_definition = {
-    "EnumerationInterfaceConstructor",
-    0,
-    NULL,  // addProperty
-    NULL,  // delProperty
-    NULL,  // getProperty
-    NULL,  // setProperty
-    NULL,  // enumerate
-    NULL,  // resolve
-    NULL,  // mayResolve
-    NULL,  // finalize
-    NULL,  // call
-    &HasInstance,
-    Constructor,
-};
-
-bool get_enumProperty(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-  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()) {
-    args.rval().set(result_value);
-  }
-  return !exception_state.is_exception_set();
-}
-
-bool set_enumProperty(
-    JSContext* context, unsigned argc, JS::Value* vp) {
-
-  JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
-  if (!args.thisv().isObject()) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kTypeError, "Invalid this.");
-    return false;
-  }
-  JS::RootedObject object(context, &args.thisv().toObject());
-
-  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;
-  if (args.length() != 1) {
-    NOTREACHED();
-    return false;
-  }
-  FromJSValue(context, args[0], 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();
-}
-
-
-bool 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)) {
-    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]);
-    if (!optional_value0.isUndefined()) {
-      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",
-    JSPROP_SHARED | JSPROP_ENUMERATE,
-    { { &get_enumProperty, NULL } },
-    { { &set_enumProperty, NULL } },
-  },
-  JS_PS_END
-};
-
-const JSFunctionSpec prototype_functions[] = {
-  JS_FNSPEC(
-      "optionalEnumWithDefault", fcn_optionalEnumWithDefault, NULL,
-      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);
-
-  interface_data->prototype = JS_NewObjectWithGivenProto(
-    context, &prototype_class_definition, parent_prototype
-  );
-
-  JS::RootedObject rooted_prototype(context, interface_data->prototype);
-  bool success = JS_DefineProperties(
-      context,
-      rooted_prototype,
-      prototype_properties);
-
-  DCHECK(success);
-  success = JS_DefineFunctions(
-      context, rooted_prototype, prototype_functions);
-  DCHECK(success);
-
-  JS::RootedObject function_prototype(
-      context, JS_GetFunctionPrototype(context, global_object));
-  DCHECK(function_prototype);
-
-  const char name[] =
-      "EnumerationInterface";
-
-  JSFunction* function = js::NewFunctionWithReserved(
-      context,
-      Constructor,
-      0,
-      JSFUN_CONSTRUCTOR,
-      name);
-  interface_data->interface_object = JS_GetFunctionObject(function);
-
-  // Add the InterfaceObject.name property.
-  JS::RootedObject rooted_interface_object(
-      context, interface_data->interface_object);
-  JS::RootedValue name_value(context);
-
-  js::SetPrototype(context, rooted_interface_object, function_prototype);
-
-  name_value.setString(JS_NewStringCopyZ(context, name));
-  success = JS_DefineProperty(
-      context, rooted_interface_object, "name", name_value, JSPROP_READONLY,
-      NULL, NULL);
-  DCHECK(success);
-
-  // Add the InterfaceObject.length property. It is set to the leng