Revert "Import Cobalt 6.16000".

Accidentally committed COBALT on top of COBALT_2.

This reverts commit 71840339e1109efe930df5c60712d91cdcc962a8.
diff --git a/src/base/atomicops.h b/src/base/atomicops.h
index 6d04858..230a601 100644
--- a/src/base/atomicops.h
+++ b/src/base/atomicops.h
@@ -31,10 +31,6 @@
 #include "base/basictypes.h"
 #include "build/build_config.h"
 
-#if defined(OS_STARBOARD)
-#include "starboard/atomic.h"
-#endif  // defined(OS_STARBOARD)
-
 #if (defined(OS_WIN) && defined(ARCH_CPU_64_BITS)) || defined(__LB_XB360__) || defined(__LB_XB1__)
 // windows.h #defines this (only on x64). This causes problems because the
 // public API also uses MemoryBarrier at the public name for this fence. So, on
@@ -47,12 +43,6 @@
 namespace base {
 namespace subtle {
 
-#if defined(OS_STARBOARD)
-typedef SbAtomic32 Atomic32;
-#if defined(ARCH_CPU_64_BITS)
-typedef SbAtomic64 Atomic64;
-#endif  // defined(ARCH_CPU_64_BITS)
-#else
 typedef int32 Atomic32;
 #ifdef ARCH_CPU_64_BITS
 // We need to be able to go between Atomic64 and AtomicWord implicitly.  This
@@ -65,7 +55,6 @@
 typedef intptr_t Atomic64;
 #endif
 #endif
-#endif  // defined(OS_STARBOARD)
 
 // Use AtomicWord for a machine-sized pointer.  It will use the Atomic32 or
 // Atomic64 routines below, depending on your architecture.
diff --git a/src/base/base.gypi b/src/base/base.gypi
index c1a5fff..fde1a96 100644
--- a/src/base/base.gypi
+++ b/src/base/base.gypi
@@ -589,6 +589,11 @@
               ['include', 'sys_string_conversions_linux.cc'],
             ],
           }],
+          [ 'OS=="lb_shell" and target_arch!="linux" and target_arch!="android"', {
+            'sources!': [
+              'string16.cc',  # wchar_t is 2-bytes wide, string16 == wstring here.
+            ],
+          }],
           [ 'OS=="lb_shell" and target_arch=="android"', {
             'sources/' : [
               ['exclude', 'message_pump_shell.cc'],
@@ -655,6 +660,14 @@
               # We use thread_checker_impl_atomic.cc instead.
               'threading/thread_checker_impl.cc',
             ],
+            'conditions': [
+              ['target_os!="linux" and target_arch!="android"', {
+                'sources!': [
+                  # Since wchar_t is 2-bytes wide, string16 == wstring here.
+                  'string16.cc',
+                ],
+              }],
+            ],
           }],  # OS == "starboard"
           [ 'OS=="lb_shell" or OS=="starboard"', {
             'sources!': [
diff --git a/src/base/callback_helpers.h b/src/base/callback_helpers.h
index ada0090..52cb71b 100644
--- a/src/base/callback_helpers.h
+++ b/src/base/callback_helpers.h
@@ -25,27 +25,6 @@
   return ret;
 }
 
-inline bool ResetAndRunIfNotNull(base::Closure* cb) {
-  if (cb->is_null()) {
-    return false;
-  }
-  base::Closure ret(*cb);
-  cb->Reset();
-  ret.Run();
-  return true;
-}
-
-template <typename Sig, typename ParamType>
-bool ResetAndRunIfNotNull(base::Callback<Sig>* cb, const ParamType& param) {
-  if (cb->is_null()) {
-    return false;
-  }
-  base::Callback<Sig> ret(*cb);
-  cb->Reset();
-  ret.Run(param);
-  return true;
-}
-
 }  // namespace base
 
 #endif  // BASE_CALLBACK_HELPERS_H_
diff --git a/src/base/circular_buffer_shell.cc b/src/base/circular_buffer_shell.cc
index ce64f42..ae58e4b 100644
--- a/src/base/circular_buffer_shell.cc
+++ b/src/base/circular_buffer_shell.cc
@@ -15,7 +15,7 @@
 #include "starboard/memory.h"
 #define malloc SbMemoryAllocate
 #define realloc SbMemoryReallocate
-#define free SbMemoryDeallocate
+#define free SbMemoryFree
 #endif
 
 static inline void* add_to_pointer(void* pointer, size_t amount) {
diff --git a/src/base/debug/trace_event_impl.cc b/src/base/debug/trace_event_impl.cc
index ac641c3..5af61e5 100644
--- a/src/base/debug/trace_event_impl.cc
+++ b/src/base/debug/trace_event_impl.cc
@@ -114,7 +114,6 @@
 
 TraceEvent::TraceEvent(int thread_id,
                        TimeTicks timestamp,
-                       TimeTicks thread_timestamp,
                        char phase,
                        const unsigned char* category_enabled,
                        const char* name,
@@ -125,7 +124,6 @@
                        const unsigned long long* arg_values,
                        unsigned char flags)
     : timestamp_(timestamp),
-      thread_timestamp_(thread_timestamp),
       id_(id),
       category_enabled_(category_enabled),
       name_(name),
@@ -244,7 +242,6 @@
 
 void TraceEvent::AppendAsJSON(std::string* out) const {
   int64 time_int64 = timestamp_.ToInternalValue();
-  int64 thread_time_int64 = thread_timestamp_.ToInternalValue();
   int process_id = TraceLog::GetInstance()->process_id();
   // Category name checked at category creation time.
   DCHECK(!strchr(name_, '"'));
@@ -269,11 +266,6 @@
   }
   *out += "}";
 
-  // add thread timestamp only if it was available
-  if (TimeTicks::HasThreadNow()) {
-    StringAppendF(out, ",\"tts\":%" PRId64, thread_time_int64);
-  }
-
   // If id_ is set, print it out as a hex string so we don't loose any
   // bits (it might be a 64-bit pointer).
   if (flags_ & TRACE_EVENT_FLAG_HAS_ID)
@@ -675,7 +667,6 @@
 #endif
 
   TimeTicks now = TimeTicks::NowFromSystemTraceTime() - time_offset_;
-  TimeTicks thread_now = TimeTicks::ThreadNow();
   NotificationHelper notifier(this);
   {
     AutoLock lock(lock_);
@@ -719,7 +710,7 @@
 
     logged_events_.push_back(
         TraceEvent(thread_id,
-                   now, thread_now, phase, category_enabled, name, id,
+                   now, phase, category_enabled, name, id,
                    num_args, arg_names, arg_types, arg_values,
                    flags));
 
@@ -804,7 +795,7 @@
       trace_event_internal::SetTraceValue(it->second, &arg_type, &arg_value);
       logged_events_.push_back(
           TraceEvent(it->first,
-                     TimeTicks(), TimeTicks(), TRACE_EVENT_PHASE_METADATA,
+                     TimeTicks(), TRACE_EVENT_PHASE_METADATA,
                      &g_category_enabled[g_category_metadata],
                      "thread_name", trace_event_internal::kNoEventId,
                      num_args, &arg_name, &arg_type, &arg_value,
diff --git a/src/base/debug/trace_event_impl.h b/src/base/debug/trace_event_impl.h
index 6d373c7..b8b4110 100644
--- a/src/base/debug/trace_event_impl.h
+++ b/src/base/debug/trace_event_impl.h
@@ -64,7 +64,6 @@
   TraceEvent();
   TraceEvent(int thread_id,
              TimeTicks timestamp,
-             TimeTicks thread_timestamp,
              char phase,
              const unsigned char* category_enabled,
              const char* name,
@@ -88,7 +87,6 @@
                                 std::string* out);
 
   TimeTicks timestamp() const { return timestamp_; }
-  TimeTicks thread_timestamp() const { return thread_timestamp_; }
 
   // Exposed for unittesting:
 
@@ -109,7 +107,6 @@
  private:
   // Note: these are ordered by size (largest first) for optimal packing.
   TimeTicks timestamp_;
-  TimeTicks thread_timestamp_;
   // id_ can be used to store phase-specific data.
   unsigned long long id_;
   TraceValue arg_values_[kTraceMaxNumArgs];
diff --git a/src/base/file_util_proxy_unittest.cc b/src/base/file_util_proxy_unittest.cc
index dcd5ad8..e238b32 100644
--- a/src/base/file_util_proxy_unittest.cc
+++ b/src/base/file_util_proxy_unittest.cc
@@ -39,18 +39,10 @@
   }
 
   void DidFinish(PlatformFileError error) {
-    if (error_ == PLATFORM_FILE_OK) {
-      error_ = error;
-    }
+    error_ = error;
     MessageLoop::current()->Quit();
   }
 
-  void NeedsMoreWork(PlatformFileError error) {
-    if (error_ == PLATFORM_FILE_OK) {
-      error_ = error;
-    }
-  }
-
   void DidCreateOrOpen(PlatformFileError error,
                        PassPlatformFile file,
                        bool created) {
@@ -384,14 +376,10 @@
   ASSERT_EQ(10, info.size);
 
   // Run.
-  PlatformFile file = GetTestPlatformFile(PLATFORM_FILE_OPEN |
-      PLATFORM_FILE_WRITE);
   FileUtilProxy::Truncate(
-      file_task_runner(), file, 7,
-      Bind(&FileUtilProxyTest::NeedsMoreWork, weak_factory_.GetWeakPtr()));
-  FileUtilProxy::Flush(
       file_task_runner(),
-      file,
+      GetTestPlatformFile(PLATFORM_FILE_OPEN | PLATFORM_FILE_WRITE),
+      7,
       Bind(&FileUtilProxyTest::DidFinish, weak_factory_.GetWeakPtr()));
   MessageLoop::current()->Run();
 
@@ -421,14 +409,10 @@
   ASSERT_EQ(10, info.size);
 
   // Run.
-  PlatformFile file = GetTestPlatformFile(PLATFORM_FILE_OPEN |
-      PLATFORM_FILE_WRITE);
   FileUtilProxy::Truncate(
-      file_task_runner(), file, 53,
-      Bind(&FileUtilProxyTest::NeedsMoreWork, weak_factory_.GetWeakPtr()));
-  FileUtilProxy::Flush(
       file_task_runner(),
-      file,
+      GetTestPlatformFile(PLATFORM_FILE_OPEN | PLATFORM_FILE_WRITE),
+      53,
       Bind(&FileUtilProxyTest::DidFinish, weak_factory_.GetWeakPtr()));
   MessageLoop::current()->Run();
 
diff --git a/src/base/file_util_starboard.cc b/src/base/file_util_starboard.cc
index a2e9b2b..0c6511a 100644
--- a/src/base/file_util_starboard.cc
+++ b/src/base/file_util_starboard.cc
@@ -193,8 +193,8 @@
   }
 
   base::PlatformFile destination_file = base::CreatePlatformFileUnsafe(
-      to_path, base::PLATFORM_FILE_CREATE_ALWAYS | base::PLATFORM_FILE_WRITE,
-      NULL, NULL);
+      to_path, base::PLATFORM_FILE_CREATE | base::PLATFORM_FILE_WRITE, NULL,
+      NULL);
   if (destination_file == base::kInvalidPlatformFileValue) {
     DPLOG(ERROR) << "CopyFile(): Unable to open destination file: "
                  << to_path.value();
diff --git a/src/base/file_util_unittest.cc b/src/base/file_util_unittest.cc
index 81fdcc7..6f4e111 100644
--- a/src/base/file_util_unittest.cc
+++ b/src/base/file_util_unittest.cc
@@ -211,16 +211,7 @@
 // Simple function to dump some text into a new file.
 void CreateTextFile(const FilePath& filename,
                     const std::wstring& contents) {
-#if defined(OS_STARBOARD)
-  SbFile file =
-      SbFileOpen(filename.value().c_str(), kSbFileCreateAlways | kSbFileWrite,
-                 NULL /*out_created*/, NULL /*out_error*/);
-  EXPECT_TRUE(file != kSbFileInvalid);
-  std::string utf8 = WideToUTF8(contents);
-  int bytes_written = SbFileWrite(file, utf8.c_str(), utf8.length());
-  EXPECT_TRUE(bytes_written == utf8.length());
-  SbFileClose(file);
-#elif defined(__LB_PS3__)
+#if defined(__LB_PS3__)
   FILE *file = fopen(filename.value().c_str(), "w");
   ASSERT_TRUE(file != NULL);
   fputws(contents.c_str(), file);
@@ -241,35 +232,18 @@
   ASSERT_TRUE(file.is_open());
   file << contents;
   file.close();
-#endif  // defined(OS_STARBOARD)
+#endif
 }
 
 // Simple function to take out some text from a file.
 std::wstring ReadTextFile(const FilePath& filename) {
-#if defined(OS_STARBOARD)
-  SbFile file =
-      SbFileOpen(filename.value().c_str(), kSbFileOpenOnly | kSbFileRead,
-                 NULL /*out_created*/, NULL /*out_error*/);
-  EXPECT_TRUE(file != kSbFileInvalid);
-  char utf8_buffer[64] = {0};
-  int bytes_read =
-      SbFileRead(file, utf8_buffer, SB_ARRAY_SIZE_INT(utf8_buffer));
-  EXPECT_TRUE(bytes_read >= 0);
-  SbFileClose(file);
-  std::wstring result;
-  bool did_convert =
-      UTF8ToWide(utf8_buffer, SbStringGetLength(utf8_buffer), &result);
-  EXPECT_TRUE(did_convert);
-  return result;
-#elif defined(__LB_PS3__)
   wchar_t contents[64];
+#if defined(__LB_PS3__)
   FILE *file = fopen(filename.value().c_str(), "r");
   EXPECT_TRUE(file != NULL);
   fgetws(contents, arraysize(contents), file);
   fclose(file);
-  return std::wstring(contents);
 #elif defined(__LB_WIIU__)
-  wchar_t contents[64];
   char mb_sequence_buffer[64];
   int fd = open(filename.value().c_str(), O_RDONLY);
   EXPECT_TRUE(fd >= 0);
@@ -279,16 +253,14 @@
   const char * mb_sequence = mb_sequence_buffer;
   size_t nbytes = mbsrtowcs(contents, &mb_sequence, sizeof(contents), NULL);
   EXPECT_TRUE(mb_sequence == NULL);
-  return std::wstring(contents);
 #else
-  wchar_t contents[64];
   std::wifstream file;
   file.open(filename.value().c_str());
   EXPECT_TRUE(file.is_open());
   file.getline(contents, arraysize(contents));
   file.close();
-  return std::wstring(contents);
 #endif
+  return std::wstring(contents);
 }
 
 #if defined(OS_WIN)
diff --git a/src/base/i18n/file_util_icu.cc b/src/base/i18n/file_util_icu.cc
index 0dd1523..fc07d13 100644
--- a/src/base/i18n/file_util_icu.cc
+++ b/src/base/i18n/file_util_icu.cc
@@ -159,7 +159,7 @@
     // Windows uses UTF-16 encoding for filenames.
     U16_NEXT(file_name->data(), cursor, static_cast<int>(file_name->length()),
              code_point);
-#elif defined(OS_POSIX) || defined(OS_STARBOARD)
+#elif defined(OS_POSIX) || defined(OS_STARBAORD)
     // Linux doesn't actually define an encoding. It basically allows anything
     // except for a few special ASCII characters.
     unsigned char cur_char = static_cast<unsigned char>((*file_name)[cursor++]);
diff --git a/src/base/location.cc b/src/base/location.cc
index fe8581a..b6ded2c 100644
--- a/src/base/location.cc
+++ b/src/base/location.cc
@@ -92,11 +92,9 @@
 BASE_EXPORT const void* GetProgramCounter() {
 #if defined(COMPILER_MSVC)
   return _ReturnAddress();
-#elif defined(COMPILER_SNC)
-  return __builtin_return_address(0);
 #elif defined(COMPILER_GCC) && !defined(__LB_PS3__) && !defined(__LB_WIIU__)
   return __builtin_extract_return_addr(__builtin_return_address(0));
-#endif  // defined(COMPILER_MSVC)
+#endif  // COMPILER_GCC
 
   return NULL;
 }
diff --git a/src/base/logging.cc b/src/base/logging.cc
index d3a97e5..6a135ea 100644
--- a/src/base/logging.cc
+++ b/src/base/logging.cc
@@ -406,25 +406,6 @@
   return true;
 }
 
-#if defined(OS_STARBOARD)
-SbLogPriority LogLevelToStarboardLogPriority(int level) {
-  switch (level) {
-    case LOG_INFO:
-      return kSbLogPriorityInfo;
-    case LOG_WARNING:
-      return kSbLogPriorityWarning;
-    case LOG_ERROR:
-    case LOG_ERROR_REPORT:
-      return kSbLogPriorityError;
-    case LOG_FATAL:
-      return kSbLogPriorityFatal;
-    default:
-      NOTREACHED() << "Unrecognized log level.";
-      return kSbLogPriorityInfo;
-  }
-}
-#endif  // defined(OS_STARBOARD)
-
 }  // namespace
 
 
@@ -486,11 +467,6 @@
 
 void SetMinLogLevel(int level) {
   min_log_level = std::min(LOG_ERROR_REPORT, level);
-
-#if defined(OS_STARBOARD)
-  starboard::logging::SetMinLogLevel(
-      LogLevelToStarboardLogPriority(std::min(LOG_FATAL, level)));
-#endif
 }
 
 int GetMinLogLevel() {
@@ -674,7 +650,23 @@
   if (logging_destination == LOG_ONLY_TO_SYSTEM_DEBUG_LOG ||
       logging_destination == LOG_TO_BOTH_FILE_AND_SYSTEM_DEBUG_LOG) {
 #if defined(OS_STARBOARD)
-    SbLog(LogLevelToStarboardLogPriority(severity_), str_newline.c_str());
+    SbLogPriority priority = kSbLogPriorityUnknown;
+    switch (severity_) {
+      case LOG_INFO:
+        priority = kSbLogPriorityInfo;
+        break;
+      case LOG_WARNING:
+        priority = kSbLogPriorityWarning;
+        break;
+      case LOG_ERROR:
+      case LOG_ERROR_REPORT:
+        priority = kSbLogPriorityError;
+        break;
+      case LOG_FATAL:
+        priority = kSbLogPriorityFatal;
+        break;
+    }
+    SbLog(priority, str_newline.c_str());
 #elif defined(OS_WIN) || defined(COBALT_WIN)
     OutputDebugStringA(str_newline.c_str());
 #elif defined(OS_ANDROID) || defined(__LB_ANDROID__)
diff --git a/src/base/memory/aligned_memory.h b/src/base/memory/aligned_memory.h
index 8ea96b7..040b56d 100644
--- a/src/base/memory/aligned_memory.h
+++ b/src/base/memory/aligned_memory.h
@@ -99,7 +99,7 @@
 #if defined(COMPILER_MSVC)
   _aligned_free(ptr);
 #elif defined(OS_STARBOARD)
-  SbMemoryDeallocateAligned(ptr);
+  SbMemoryFreeAligned(ptr);
 #else
   free(ptr);
 #endif
diff --git a/src/base/memory/scoped_ptr.h b/src/base/memory/scoped_ptr.h
index 7f2d7dc..9ee780e 100644
--- a/src/base/memory/scoped_ptr.h
+++ b/src/base/memory/scoped_ptr.h
@@ -395,7 +395,7 @@
  public:
   inline void operator()(void* x) const {
 #if defined(OS_STARBOARD)
-    SbMemoryDeallocate(x);
+    SbMemoryFree(x);
 #else
     free(x);
 #endif
diff --git a/src/base/pickle.cc b/src/base/pickle.cc
index e5050b9..43121c9 100644
--- a/src/base/pickle.cc
+++ b/src/base/pickle.cc
@@ -10,7 +10,7 @@
 #if defined(OS_STARBOARD)
 #include "starboard/memory.h"
 #define realloc SbMemoryReallocate
-#define free SbMemoryDeallocate
+#define free SbMemoryFree
 #define memcpy SbMemoryCopy
 #else
 #include <stdlib.h>
diff --git a/src/base/platform_file_starboard.cc b/src/base/platform_file_starboard.cc
index cc116c6..c28fd65 100644
--- a/src/base/platform_file_starboard.cc
+++ b/src/base/platform_file_starboard.cc
@@ -161,7 +161,21 @@
 
 int ReadPlatformFileAtCurrentPos(PlatformFile file, char *data, int size) {
   base::ThreadRestrictions::AssertIOAllowed();
-  return SbFileReadAll(file, data, size);
+  if (file < 0 || size < 0)
+    return -1;
+
+  int bytes_read = 0;
+  int rv;
+  do {
+    rv = SbFileRead(file, data, size);
+    if (rv <= 0) {
+      break;
+    }
+
+    bytes_read += rv;
+  } while (bytes_read < size);
+
+  return bytes_read ? bytes_read : rv;
 }
 
 int ReadPlatformFileNoBestEffort(PlatformFile file,
@@ -237,7 +251,22 @@
                                   const char* data,
                                   int size) {
   base::ThreadRestrictions::AssertIOAllowed();
-  return SbFileWriteAll(file, data, size);
+  if (size < 0) {
+    return -1;
+  }
+
+  int bytes_written = 0;
+  int result;
+  do {
+    result = SbFileWrite(file, data, size);
+    if (result <= 0) {
+      break;
+    }
+
+    bytes_written += result;
+  } while (bytes_written < size);
+
+  return bytes_written ? bytes_written : result;
 }
 
 int WritePlatformFileCurPosNoBestEffort(PlatformFile file,
diff --git a/src/base/platform_file_unittest.cc b/src/base/platform_file_unittest.cc
index 607dc66..e73d930 100644
--- a/src/base/platform_file_unittest.cc
+++ b/src/base/platform_file_unittest.cc
@@ -197,8 +197,16 @@
 
   // Make sure the file was extended.
   int64 file_size = 0;
-  base::FlushPlatformFile(file);
+#if defined(__LB_SHELL__)
+  // At this point, the file buffer may not have been flushed to disk,
+  // so reading the new file size from disk is flaky.  Instead, read the file
+  // size from the file descriptor using GetPlatformFileInfo.
+  base::PlatformFileInfo file_info;
+  EXPECT_TRUE(base::GetPlatformFileInfo(file, &file_info));
+  file_size = file_info.size;
+#else
   EXPECT_TRUE(file_util::GetFileSize(file_path, &file_size));
+#endif
   EXPECT_EQ(kOffsetBeyondEndOfFile + kPartialWriteLength, file_size);
 
   // Make sure the file was zero-padded.
@@ -238,7 +246,6 @@
   const int kExtendedFileLength = 10;
   int64 file_size = 0;
   EXPECT_TRUE(base::TruncatePlatformFile(file, kExtendedFileLength));
-  base::FlushPlatformFile(file);
   EXPECT_TRUE(file_util::GetFileSize(file_path, &file_size));
   EXPECT_EQ(kExtendedFileLength, file_size);
 
@@ -254,7 +261,6 @@
   // Truncate the file.
   const int kTruncatedFileLength = 2;
   EXPECT_TRUE(base::TruncatePlatformFile(file, kTruncatedFileLength));
-  base::FlushPlatformFile(file);
   EXPECT_TRUE(file_util::GetFileSize(file_path, &file_size));
   EXPECT_EQ(kTruncatedFileLength, file_size);
 
diff --git a/src/base/shared_memory.h b/src/base/shared_memory.h
index 8589779..bf77788 100644
--- a/src/base/shared_memory.h
+++ b/src/base/shared_memory.h
@@ -67,7 +67,7 @@
   }
   ~RefCountedMem() {
 #if defined(OS_STARBOARD)
-    SbMemoryDeallocate(memory_);
+    SbMemoryFree(memory_);
 #else
     free(memory_);
 #endif
diff --git a/src/base/stl_util.h b/src/base/stl_util.h
index 483fd53..c612769 100644
--- a/src/base/stl_util.h
+++ b/src/base/stl_util.h
@@ -7,7 +7,7 @@
 
 #include <algorithm>
 #include <functional>
-#if defined(__LB_SHELL__) || defined(STARBOARD)
+#if defined(__LB_SHELL__)  // TODO: Starboard?
 #include <iterator>
 #endif
 #include <string>
diff --git a/src/base/string16.cc b/src/base/string16.cc
index 9c5acb7..930e09f 100644
--- a/src/base/string16.cc
+++ b/src/base/string16.cc
@@ -4,9 +4,14 @@
 
 #include "base/string16.h"
 
+#if defined(WCHAR_T_IS_UTF16)
 
-// See discussion in string16.h: This is only needed on 32-bit wchar_t systems.
-#if defined(WCHAR_T_IS_UTF32)
+#error This file should not be used on 2-byte wchar_t systems
+// If this winds up being needed on 2-byte wchar_t systems, either the
+// definitions below can be used, or the host system's wide character
+// functions like wmemcmp can be wrapped.
+
+#elif defined(WCHAR_T_IS_UTF32)
 
 #include <ostream>
 
diff --git a/src/base/stringprintf_unittest.cc b/src/base/stringprintf_unittest.cc
index 143fc42..d8fdfee 100644
--- a/src/base/stringprintf_unittest.cc
+++ b/src/base/stringprintf_unittest.cc
@@ -180,7 +180,7 @@
 // lbshell platforms do not support positional parameters,
 // and lbshell does not use the few parts of chromium that
 // leverage positional parameter support in the OS.
-#if !defined(__LB_SHELL__) && !defined(OS_STARBOARD)
+#if !defined(__LB_SHELL__)
 // Test that the positional parameters work.
 TEST(StringPrintfTest, PositionalParameters) {
   std::string out;
diff --git a/src/base/test/test_file_util_starboard.cc b/src/base/test/test_file_util_starboard.cc
index f8127c6..ef4cdad 100644
--- a/src/base/test/test_file_util_starboard.cc
+++ b/src/base/test/test_file_util_starboard.cc
@@ -36,7 +36,7 @@
 // Mostly a verbatim copy of CopyDirectory
 bool CopyRecursiveDirNoCache(const FilePath& source_dir,
                              const FilePath& dest_dir) {
-  char top_dir[SB_FILE_MAX_PATH];
+  char top_dir[PATH_MAX];
   if (base::strlcpy(top_dir, source_dir.value().c_str(), arraysize(top_dir)) >=
       arraysize(top_dir)) {
     return false;
diff --git a/src/base/third_party/dmg_fp/dtoa.cc b/src/base/third_party/dmg_fp/dtoa.cc
index 3c5d5a5..1339d3f 100644
--- a/src/base/third_party/dmg_fp/dtoa.cc
+++ b/src/base/third_party/dmg_fp/dtoa.cc
@@ -205,7 +205,7 @@
 #if defined(STARBOARD)
 #include "starboard/memory.h"
 #define MALLOC SbMemoryAllocate
-#define FREE SbMemoryDeallocate
+#define FREE SbMemoryFree
 #else
 #include "stdlib.h"
 #include "string.h"
diff --git a/src/base/third_party/nspr/prcpucfg_starboard.h b/src/base/third_party/nspr/prcpucfg_starboard.h
index 3aaa298..5bdf40d 100644
--- a/src/base/third_party/nspr/prcpucfg_starboard.h
+++ b/src/base/third_party/nspr/prcpucfg_starboard.h
@@ -55,7 +55,7 @@
 #  define IS_64
 #endif
 
-#if SB_IS(ARCH_PPC)
+#if SB_IS(ARCH_PPC) && SB_IS(32_BIT)
 #define PR_BYTES_PER_BYTE   1
 #define PR_BYTES_PER_SHORT  2
 #define PR_BYTES_PER_INT    4
diff --git a/src/base/threading/thread_local.h b/src/base/threading/thread_local.h
index fb6dfb2..762d77b 100644
--- a/src/base/threading/thread_local.h
+++ b/src/base/threading/thread_local.h
@@ -73,7 +73,7 @@
 
   static void AllocateSlot(SlotType& slot);
   static void FreeSlot(SlotType& slot);
-  static void* GetValueFromSlot(const SlotType& slot);
+  static void* GetValueFromSlot(SlotType& slot);
   static void SetValueInSlot(SlotType& slot, void* value);
 };
 
@@ -90,7 +90,7 @@
     internal::ThreadLocalPlatform::FreeSlot(slot_);
   }
 
-  Type* Get() const {
+  Type* Get() {
     return static_cast<Type*>(
         internal::ThreadLocalPlatform::GetValueFromSlot(slot_));
   }
@@ -113,7 +113,7 @@
   ThreadLocalBoolean() { }
   ~ThreadLocalBoolean() { }
 
-  bool Get() const {
+  bool Get() {
     return tlp_.Get() != NULL;
   }
 
diff --git a/src/base/threading/thread_local_posix.cc b/src/base/threading/thread_local_posix.cc
index 1b381c2..4951006 100644
--- a/src/base/threading/thread_local_posix.cc
+++ b/src/base/threading/thread_local_posix.cc
@@ -25,7 +25,7 @@
 }
 
 // static
-void* ThreadLocalPlatform::GetValueFromSlot(const SlotType& slot) {
+void* ThreadLocalPlatform::GetValueFromSlot(SlotType& slot) {
   return pthread_getspecific(slot);
 }
 
diff --git a/src/base/threading/thread_local_starboard.cc b/src/base/threading/thread_local_starboard.cc
index 1234425..e3a96d6 100644
--- a/src/base/threading/thread_local_starboard.cc
+++ b/src/base/threading/thread_local_starboard.cc
@@ -33,7 +33,7 @@
 }
 
 // static
-void* ThreadLocalPlatform::GetValueFromSlot(const SlotType& slot) {
+void* ThreadLocalPlatform::GetValueFromSlot(SlotType& slot) {
   return SbThreadGetLocalValue(slot);
 }
 
diff --git a/src/base/threading/thread_local_win.cc b/src/base/threading/thread_local_win.cc
index 7e82c90..56d3a3a 100644
--- a/src/base/threading/thread_local_win.cc
+++ b/src/base/threading/thread_local_win.cc
@@ -26,7 +26,7 @@
 }
 
 // static
-void* ThreadLocalPlatform::GetValueFromSlot(const SlotType& slot) {
+void* ThreadLocalPlatform::GetValueFromSlot(SlotType& slot) {
   return TlsGetValue(slot);
 }
 
diff --git a/src/base/time.h b/src/base/time.h
index 9fde0e4..38bc53a 100644
--- a/src/base/time.h
+++ b/src/base/time.h
@@ -593,15 +593,6 @@
   // SHOULD ONLY BE USED WHEN IT IS REALLY NEEDED.
   static TimeTicks HighResNow();
 
-  // Returns the amount of time the current thread has spent in the execution
-  // state (i.e. not pre-empted or waiting on some event). If this is not
-  // available, then HighResNow() will be returned.
-  static TimeTicks ThreadNow();
-
-  // Returns whether ThreadNow() is implemented to report thread time (as
-  // opposed to HighResNow()).
-  static bool HasThreadNow();
-
   // Returns the current system trace time or, if none is defined, the current
   // high-res time (i.e. HighResNow()). On systems where a global trace clock
   // is defined, timestamping TraceEvents's with this value guarantees
diff --git a/src/base/time_mac.cc b/src/base/time_mac.cc
index 327f9e6..883a35b 100644
--- a/src/base/time_mac.cc
+++ b/src/base/time_mac.cc
@@ -192,16 +192,6 @@
 }
 
 // static
-TimeTicks TimeTicks::ThreadNow() {
-  return HighResNow();
-}
-
-// static
-bool TimeTicks::HasThreadNow() {
-  return false;
-}
-
-// static
 TimeTicks TimeTicks::NowFromSystemTraceTime() {
   return HighResNow();
 }
diff --git a/src/base/time_posix.cc b/src/base/time_posix.cc
index d053ff2..80b1c4e 100644
--- a/src/base/time_posix.cc
+++ b/src/base/time_posix.cc
@@ -267,27 +267,6 @@
   return Now();
 }
 
-// static
-TimeTicks TimeTicks::ThreadNow() {
-  uint64_t absolute_micro;
-
-  struct timespec ts;
-  if (clock_gettime(CLOCK_THREAD_CPUTIME_ID, &ts) != 0) {
-    return HighResNow();
-  }
-
-  absolute_micro =
-      (static_cast<int64>(ts.tv_sec) * Time::kMicrosecondsPerSecond) +
-      (static_cast<int64>(ts.tv_nsec) / Time::kNanosecondsPerMicrosecond);
-
-  return TimeTicks(absolute_micro);
-}
-
-// static
-bool TimeTicks::HasThreadNow() {
-  return true;
-}
-
 #if defined(OS_CHROMEOS)
 // Force definition of the system trace clock; it is a chromeos-only api
 // at the moment and surfacing it in the right place requires mucking
diff --git a/src/base/time_starboard.cc b/src/base/time_starboard.cc
index 0327166..2e7785e 100644
--- a/src/base/time_starboard.cc
+++ b/src/base/time_starboard.cc
@@ -97,24 +97,6 @@
 }
 
 // static
-TimeTicks TimeTicks::ThreadNow() {
-#if SB_VERSION(3) && SB_HAS(TIME_THREAD_NOW)
-  return TimeTicks(SbTimeGetMonotonicThreadNow());
-#else
-  return HighResNow();
-#endif
-}
-
-// static
-bool TimeTicks::HasThreadNow() {
-#if SB_VERSION(3) && SB_HAS(TIME_THREAD_NOW)
-  return true;
-#else
-  return false;
-#endif
-}
-
-// static
 TimeTicks TimeTicks::NowFromSystemTraceTime() {
   return HighResNow();
 }
diff --git a/src/base/time_win.cc b/src/base/time_win.cc
index 294a564..6d8e432 100644
--- a/src/base/time_win.cc
+++ b/src/base/time_win.cc
@@ -460,16 +460,6 @@
 }
 
 // static
-TimeTicks TimeTicks::ThreadNow() {
-  return HighResNow();
-}
-
-// static
-bool TimeTicks::HasThreadNow() {
-  return false;
-}
-
-// static
 TimeTicks TimeTicks::NowFromSystemTraceTime() {
   return HighResNow();
 }
diff --git a/src/base/tools_sanity_unittest.cc b/src/base/tools_sanity_unittest.cc
index 074a13e..a901f59 100644
--- a/src/base/tools_sanity_unittest.cc
+++ b/src/base/tools_sanity_unittest.cc
@@ -15,7 +15,7 @@
 
 #if defined(OS_STARBOARD)
 #include "starboard/memory.h"
-#define free SbMemoryDeallocate
+#define free SbMemoryFree
 #define malloc SbMemoryAllocate
 #endif
 
diff --git a/src/cobalt/audio/async_audio_decoder.cc b/src/cobalt/audio/async_audio_decoder.cc
index 2aa7a62..cb23a87 100644
--- a/src/cobalt/audio/async_audio_decoder.cc
+++ b/src/cobalt/audio/async_audio_decoder.cc
@@ -19,7 +19,6 @@
 #include "base/bind.h"
 #include "base/logging.h"
 #include "cobalt/audio/audio_file_reader.h"
-#include "cobalt/audio/audio_helpers.h"
 
 namespace cobalt {
 namespace audio {
@@ -31,17 +30,15 @@
 void Decode(
     const uint8* audio_data, size_t size,
     const AsyncAudioDecoder::DecodeFinishCallback& decode_finish_callback) {
-  scoped_ptr<AudioFileReader> reader(AudioFileReader::TryCreate(
-      audio_data, size, GetPreferredOutputSampleType()));
+  scoped_ptr<AudioFileReader> reader(
+      AudioFileReader::TryCreate(audio_data, size));
 
   if (reader) {
-    decode_finish_callback.Run(reader->sample_rate(),
-                               reader->number_of_frames(),
-                               reader->number_of_channels(),
-                               reader->sample_data(), reader->sample_type());
+    decode_finish_callback.Run(
+        reader->sample_rate(), reader->number_of_frames(),
+        reader->number_of_channels(), reader->sample_data());
   } else {
-    decode_finish_callback.Run(0.f, 0, 0, scoped_array<uint8>(),
-                               kSampleTypeFloat32);
+    decode_finish_callback.Run(0.f, 0, 0, scoped_array<uint8>());
   }
 }
 
diff --git a/src/cobalt/audio/async_audio_decoder.h b/src/cobalt/audio/async_audio_decoder.h
index 3827260..b78d2a7 100644
--- a/src/cobalt/audio/async_audio_decoder.h
+++ b/src/cobalt/audio/async_audio_decoder.h
@@ -20,7 +20,6 @@
 #include "base/callback.h"
 #include "base/threading/thread.h"
 #include "cobalt/audio/audio_buffer.h"
-#include "cobalt/audio/audio_helpers.h"
 #include "cobalt/dom/array_buffer.h"
 
 namespace cobalt {
@@ -28,10 +27,9 @@
 
 class AsyncAudioDecoder {
  public:
-  typedef base::Callback<void(float sample_rate, int32 number_of_frames,
-                              int32 number_of_channels,
-                              scoped_array<uint8> channels_data,
-                              SampleType sample_type)> DecodeFinishCallback;
+  typedef base::Callback<void(
+      float sample_rate, int32 number_of_frames, int32 number_of_channels,
+      scoped_array<uint8> channels_data)> DecodeFinishCallback;
 
   AsyncAudioDecoder();
 
diff --git a/src/cobalt/audio/audio.gyp b/src/cobalt/audio/audio.gyp
index 350a599..f13d2c3 100644
--- a/src/cobalt/audio/audio.gyp
+++ b/src/cobalt/audio/audio.gyp
@@ -37,7 +37,6 @@
         'audio_file_reader.h',
         'audio_file_reader_wav.cc',
         'audio_file_reader_wav.h',
-        'audio_helpers.h',
         'audio_node.cc',
         'audio_node.h',
         'audio_node_input.cc',
diff --git a/src/cobalt/audio/audio_buffer.cc b/src/cobalt/audio/audio_buffer.cc
index a93eba2..f6b8d6b 100644
--- a/src/cobalt/audio/audio_buffer.cc
+++ b/src/cobalt/audio/audio_buffer.cc
@@ -16,7 +16,6 @@
 
 #include "cobalt/audio/audio_buffer.h"
 
-#include "cobalt/audio/audio_helpers.h"
 #include "cobalt/dom/dom_exception.h"
 
 namespace cobalt {
@@ -25,54 +24,35 @@
 AudioBuffer::AudioBuffer(script::EnvironmentSettings* settings,
                          float sample_rate, int32 number_of_frames,
                          int32 number_of_channels,
-                         scoped_array<uint8> channels_data,
-                         SampleType sample_type)
-    : sample_rate_(sample_rate),
-      length_(number_of_frames),
-      sample_type_(sample_type) {
+                         scoped_array<uint8> channels_data)
+    : sample_rate_(sample_rate), length_(number_of_frames) {
   DCHECK_GT(sample_rate_, 0);
   DCHECK_GT(length_, 0);
   DCHECK_GT(number_of_channels, 0);
 
   // Create an ArrayBuffer stores sample data from all channels.
-  const uint32 length =
-      number_of_frames * number_of_channels *
-      (sample_type == kSampleTypeFloat32 ? sizeof(float) : sizeof(int16));
   scoped_refptr<dom::ArrayBuffer> array_buffer(new dom::ArrayBuffer(
-      settings, dom::ArrayBuffer::kFromHeap, channels_data.Pass(), length));
+      settings, dom::ArrayBuffer::kFromHeap, channels_data.Pass(),
+      number_of_frames * number_of_channels * sizeof(float)));
 
-  // Each channel should have |number_of_frames * size_of_sample_type| bytes.
-  // We create |number_of_channels| of {Float32,Int16}Array as views into the
-  // above ArrayBuffer.  This does not need any extra allocation.
-  if (sample_type == kSampleTypeFloat32) {
-    channels_data_.resize(static_cast<size_t>(number_of_channels));
-    uint32 start_offset_in_bytes = 0;
-    for (int32 i = 0; i < number_of_channels; ++i) {
-      channels_data_[static_cast<size_t>(i)] =
-          new dom::Float32Array(settings, array_buffer, start_offset_in_bytes,
-                                static_cast<uint32>(number_of_frames), NULL);
-      start_offset_in_bytes += number_of_frames * sizeof(float);
-    }
-  } else if (sample_type == kSampleTypeInt16) {
-    channels_int16_data_.resize(static_cast<size_t>(number_of_channels));
-    uint32 start_offset_in_bytes = 0;
-    for (int32 i = 0; i < number_of_channels; ++i) {
-      channels_int16_data_[static_cast<size_t>(i)] =
-          new dom::Int16Array(settings, array_buffer, start_offset_in_bytes,
+  channels_data_.resize(static_cast<size_t>(number_of_channels));
+  // Each channel should have |number_of_frames * sizeof(float)| bytes.  We
+  // create |number_of_channels| of Float32Array as views into the above
+  // ArrayBuffer, this doesn't need any extra allocation.
+  uint32 start_offset_in_bytes = 0;
+  for (int32 i = 0; i < number_of_channels; ++i) {
+    channels_data_[static_cast<size_t>(i)] =
+        new dom::Float32Array(settings, array_buffer, start_offset_in_bytes,
                               static_cast<uint32>(number_of_frames), NULL);
-      start_offset_in_bytes += number_of_frames * sizeof(int16);
-    }
-  } else {
-    NOTREACHED();
+    start_offset_in_bytes += number_of_frames * sizeof(float);
   }
 }
 
 scoped_refptr<dom::Float32Array> AudioBuffer::GetChannelData(
     uint32 channel_index, script::ExceptionState* exception_state) const {
-  DCHECK_EQ(sample_type_, kSampleTypeFloat32);
   // The index value MUST be less than number_of_channels() or an INDEX_SIZE_ERR
   // exception MUST be thrown.
-  if (channel_index >= channels_data_.size()) {
+  if (channel_index >= static_cast<uint32>(number_of_channels())) {
     dom::DOMException::Raise(dom::DOMException::kIndexSizeErr, exception_state);
     return NULL;
   }
@@ -80,18 +60,5 @@
   return channels_data_[channel_index];
 }
 
-scoped_refptr<dom::Int16Array> AudioBuffer::GetChannelDataInt16(
-    uint32 channel_index, script::ExceptionState* exception_state) const {
-  DCHECK_EQ(sample_type_, kSampleTypeInt16);
-  // The index value MUST be less than number_of_channels() or an INDEX_SIZE_ERR
-  // exception MUST be thrown.
-  if (channel_index >= channels_int16_data_.size()) {
-    dom::DOMException::Raise(dom::DOMException::kIndexSizeErr, exception_state);
-    return NULL;
-  }
-
-  return channels_int16_data_[channel_index];
-}
-
 }  // namespace audio
 }  // namespace cobalt
diff --git a/src/cobalt/audio/audio_buffer.h b/src/cobalt/audio/audio_buffer.h
index c58fef5..a1fab1e 100644
--- a/src/cobalt/audio/audio_buffer.h
+++ b/src/cobalt/audio/audio_buffer.h
@@ -21,9 +21,7 @@
 
 #include "base/memory/ref_counted.h"
 #include "base/memory/scoped_ptr.h"  // For scoped_array
-#include "cobalt/audio/audio_helpers.h"
 #include "cobalt/dom/float32_array.h"
-#include "cobalt/dom/int16_array.h"
 #include "cobalt/script/environment_settings.h"
 #include "cobalt/script/wrappable.h"
 
@@ -47,7 +45,7 @@
   // half.
   AudioBuffer(script::EnvironmentSettings* settings, float sample_rate,
               int32 number_of_frames, int32 number_of_channels,
-              scoped_array<uint8> channels_data, SampleType sample_type);
+              scoped_array<uint8> channels_data);
 
   // Web API: AudioBuffer
   //
@@ -62,35 +60,22 @@
 
   // The number of discrete audio channels.
   int32 number_of_channels() const {
-    if (sample_type_ == kSampleTypeFloat32) {
-      return static_cast<int32>(channels_data_.size());
-    } else if (sample_type_ == kSampleTypeInt16) {
-      return static_cast<int32>(channels_int16_data_.size());
-    } else {
-      NOTREACHED();
-      return 0;
-    }
+    return static_cast<int32>(channels_data_.size());
   }
 
   // Represents the PCM audio data for the specific channel.
   scoped_refptr<dom::Float32Array> GetChannelData(
       uint32 channel_index, script::ExceptionState* exception_state) const;
 
-  scoped_refptr<dom::Int16Array> GetChannelDataInt16(
-      uint32 channel_index, script::ExceptionState* exception_state) const;
-
   DEFINE_WRAPPABLE_TYPE(AudioBuffer);
 
  private:
   typedef std::vector<scoped_refptr<dom::Float32Array> > Float32ArrayVector;
-  typedef std::vector<scoped_refptr<dom::Int16Array> > Int16ArrayVector;
 
   float sample_rate_;
   int32 length_;
-  SampleType sample_type_;
 
   Float32ArrayVector channels_data_;
-  Int16ArrayVector channels_int16_data_;
 
   DISALLOW_COPY_AND_ASSIGN(AudioBuffer);
 };
diff --git a/src/cobalt/audio/audio_buffer_source_node.cc b/src/cobalt/audio/audio_buffer_source_node.cc
index 222ab7a..6f3538f 100644
--- a/src/cobalt/audio/audio_buffer_source_node.cc
+++ b/src/cobalt/audio/audio_buffer_source_node.cc
@@ -94,7 +94,7 @@
 }
 
 scoped_ptr<ShellAudioBus> AudioBufferSourceNode::PassAudioBusFromSource(
-    int32 number_of_frames, SampleType sample_type) {
+    int32 number_of_frames) {
   // This is called by Audio thread.
   audio_lock()->AssertLocked();
 
@@ -108,42 +108,21 @@
 
   size_t channels = static_cast<size_t>(buffer_->number_of_channels());
 
-  if (sample_type == kSampleTypeFloat32) {
-    std::vector<float*> audio_buffer(channels, NULL);
-    for (size_t i = 0; i < channels; ++i) {
-      scoped_refptr<dom::Float32Array> buffer_data =
-          buffer_->GetChannelData(static_cast<uint32>(i), NULL);
-      scoped_refptr<dom::Float32Array> sub_array = buffer_data->Subarray(
-          NULL, read_index_, read_index_ + number_of_frames);
-      audio_buffer[i] = sub_array->data();
-    }
-
-    read_index_ += number_of_frames;
-
-    scoped_ptr<ShellAudioBus> audio_bus(
-        new ShellAudioBus(static_cast<size_t>(number_of_frames), audio_buffer));
-
-    return audio_bus.Pass();
-  } else if (sample_type == kSampleTypeInt16) {
-    std::vector<int16*> audio_buffer(channels, NULL);
-    for (size_t i = 0; i < channels; ++i) {
-      scoped_refptr<dom::Int16Array> buffer_data =
-          buffer_->GetChannelDataInt16(static_cast<uint32>(i), NULL);
-      scoped_refptr<dom::Int16Array> sub_array = buffer_data->Subarray(
-          NULL, read_index_, read_index_ + number_of_frames);
-      audio_buffer[i] = sub_array->data();
-    }
-
-    read_index_ += number_of_frames;
-
-    scoped_ptr<ShellAudioBus> audio_bus(
-        new ShellAudioBus(static_cast<size_t>(number_of_frames), audio_buffer));
-
-    return audio_bus.Pass();
+  std::vector<float*> audio_buffer;
+  for (size_t i = 0; i < channels; ++i) {
+    scoped_refptr<dom::Float32Array> buffer_data =
+        buffer_->GetChannelData(static_cast<uint32>(i), NULL);
+    scoped_refptr<dom::Float32Array> sub_array = buffer_data->Subarray(
+        NULL, read_index_, read_index_ + number_of_frames);
+    audio_buffer.push_back(sub_array->data());
   }
 
-  NOTREACHED();
-  return scoped_ptr<ShellAudioBus>();
+  read_index_ += number_of_frames;
+
+  scoped_ptr<ShellAudioBus> audio_bus(
+      new ShellAudioBus(static_cast<size_t>(number_of_frames), audio_buffer));
+
+  return audio_bus.Pass();
 }
 
 }  // namespace audio
diff --git a/src/cobalt/audio/audio_buffer_source_node.h b/src/cobalt/audio/audio_buffer_source_node.h
index ce4f42f..ee808d3 100644
--- a/src/cobalt/audio/audio_buffer_source_node.h
+++ b/src/cobalt/audio/audio_buffer_source_node.h
@@ -72,7 +72,7 @@
   }
 
   scoped_ptr<ShellAudioBus> PassAudioBusFromSource(
-      int32 number_of_frames, SampleType sample_type) OVERRIDE;
+      int32 number_of_frames) OVERRIDE;
 
   DEFINE_WRAPPABLE_TYPE(AudioBufferSourceNode);
 
diff --git a/src/cobalt/audio/audio_context.cc b/src/cobalt/audio/audio_context.cc
index 0962977..178d7b6 100644
--- a/src/cobalt/audio/audio_context.cc
+++ b/src/cobalt/audio/audio_context.cc
@@ -85,14 +85,13 @@
 void AudioContext::DecodeFinish(int callback_id, float sample_rate,
                                 int32 number_of_frames,
                                 int32 number_of_channels,
-                                scoped_array<uint8> channels_data,
-                                SampleType sample_type) {
+                                scoped_array<uint8> channels_data) {
   if (!main_message_loop_->BelongsToCurrentThread()) {
     main_message_loop_->PostTask(
         FROM_HERE,
         base::Bind(&AudioContext::DecodeFinish, weak_this_, callback_id,
                    sample_rate, number_of_frames, number_of_channels,
-                   base::Passed(&channels_data), sample_type));
+                   base::Passed(&channels_data)));
     return;
   }
 
@@ -106,7 +105,7 @@
   if (channels_data) {
     const scoped_refptr<AudioBuffer>& audio_buffer =
         new AudioBuffer(info->env_settings, sample_rate, number_of_frames,
-                        number_of_channels, channels_data.Pass(), sample_type);
+                        number_of_channels, channels_data.Pass());
     info->success_callback.value().Run(audio_buffer);
   } else if (info->error_callback) {
     info->error_callback.value().value().Run();
diff --git a/src/cobalt/audio/audio_context.h b/src/cobalt/audio/audio_context.h
index 9b3ac6f..5cd34a8 100644
--- a/src/cobalt/audio/audio_context.h
+++ b/src/cobalt/audio/audio_context.h
@@ -165,8 +165,8 @@
 
   void DecodeAudioDataInternal(scoped_ptr<DecodeCallbackInfo> info);
   void DecodeFinish(int callback_id, float sample_rate, int32 number_of_frames,
-                    int32 number_of_channels, scoped_array<uint8> channels_data,
-                    SampleType sample_type);
+                    int32 number_of_channels,
+                    scoped_array<uint8> channels_data);
 
   base::WeakPtrFactory<AudioContext> weak_ptr_factory_;
   // We construct a WeakPtr upon AudioContext's construction in order to
diff --git a/src/cobalt/audio/audio_destination_node.cc b/src/cobalt/audio/audio_destination_node.cc
index e0eda2b..59d80df 100644
--- a/src/cobalt/audio/audio_destination_node.cc
+++ b/src/cobalt/audio/audio_destination_node.cc
@@ -38,6 +38,8 @@
     : AudioNode(context), max_channel_count_(kMaxChannelCount) {
   AudioLock::AutoLock lock(audio_lock());
 
+  audio_device_.reset(
+      new AudioDevice(static_cast<int>(channel_count(NULL)), this));
   AddInput(new AudioNodeInput(this));
 }
 
@@ -52,15 +54,6 @@
   RemoveAllInputs();
 }
 
-void AudioDestinationNode::OnInputNodeConnected() {
-  audio_lock()->AssertLocked();
-
-  if (!audio_device_) {
-    audio_device_.reset(
-        new AudioDevice(static_cast<int>(channel_count(NULL)), this));
-  }
-}
-
 void AudioDestinationNode::FillAudioBus(ShellAudioBus* audio_bus,
                                         bool* silence) {
   // This is called by Audio thread.
diff --git a/src/cobalt/audio/audio_destination_node.h b/src/cobalt/audio/audio_destination_node.h
index 50bfe7e..7a760a0 100644
--- a/src/cobalt/audio/audio_destination_node.h
+++ b/src/cobalt/audio/audio_destination_node.h
@@ -20,7 +20,6 @@
 #include <vector>
 
 #include "cobalt/audio/audio_device.h"
-#include "cobalt/audio/audio_helpers.h"
 #include "cobalt/audio/audio_node.h"
 #include "media/base/shell_audio_bus.h"
 
@@ -48,9 +47,8 @@
   uint32 max_channel_count() const { return max_channel_count_; }
 
   // From AudioNode.
-  void OnInputNodeConnected() OVERRIDE;
-  scoped_ptr<ShellAudioBus> PassAudioBusFromSource(int32 /*number_of_frames*/,
-                                                   SampleType) OVERRIDE {
+  scoped_ptr<ShellAudioBus> PassAudioBusFromSource(
+      int32 /*number_of_frames*/) OVERRIDE {
     NOTREACHED();
     return scoped_ptr<ShellAudioBus>();
   }
diff --git a/src/cobalt/audio/audio_device.cc b/src/cobalt/audio/audio_device.cc
index e666970..8ab8b57 100644
--- a/src/cobalt/audio/audio_device.cc
+++ b/src/cobalt/audio/audio_device.cc
@@ -18,7 +18,6 @@
 
 #include "base/debug/trace_event.h"
 #include "base/memory/scoped_ptr.h"
-#include "cobalt/audio/audio_helpers.h"
 #if defined(OS_STARBOARD)
 #include "starboard/audio_sink.h"
 #include "starboard/configuration.h"
@@ -47,6 +46,41 @@
 
 #if defined(SB_USE_SB_AUDIO_SINK)
 
+namespace {
+// Helper function to compute the size of the two valid starboard audio sample
+// types.
+size_t GetSampleSize(SbMediaAudioSampleType sample_type) {
+  switch (sample_type) {
+    case kSbMediaAudioSampleTypeFloat32:
+      return sizeof(float);
+    case kSbMediaAudioSampleTypeInt16:
+      return sizeof(int16);
+  }
+  NOTREACHED();
+  return 0u;
+}
+
+const float kMaxInt16AsFloat32 = 32767.0f;
+
+template <typename SourceType, typename DestType>
+DestType ConvertSample(SourceType sample);
+
+template <>
+int16 ConvertSample<float, int16>(float sample) {
+  if (!(-1.0 <= sample && sample <= 1.0)) {
+    DLOG(WARNING) <<
+      "Sample of type float32 must lie on interval [-1.0, 1.0], got: " <<
+      sample << ".";
+  }
+  return static_cast<int16>(sample * kMaxInt16AsFloat32);
+}
+
+template <>
+float ConvertSample<float, float>(float sample) {
+  return sample;
+}
+}  // namespace
+
 class AudioDevice::Impl {
  public:
   Impl(int number_of_channels, RenderCallback* callback);
@@ -64,7 +98,7 @@
 
   void FillOutputAudioBus();
 
-  template <typename InputType, typename OutputType>
+  template <typename OutputType>
   inline void FillOutputAudioBusForType();
 
   int number_of_channels_;
@@ -92,14 +126,16 @@
 // AudioDevice::Impl.
 AudioDevice::Impl::Impl(int number_of_channels, RenderCallback* callback)
     : number_of_channels_(number_of_channels),
-      output_sample_type_(GetPreferredOutputStarboardSampleType()),
+      output_sample_type_(
+          SbAudioSinkIsAudioSampleTypeSupported(kSbMediaAudioSampleTypeFloat32)
+              ? kSbMediaAudioSampleTypeFloat32
+              : kSbMediaAudioSampleTypeInt16),
       render_callback_(callback),
       input_audio_bus_(static_cast<size_t>(number_of_channels),
                        static_cast<size_t>(kRenderBufferSizeFrames),
-                       GetPreferredOutputSampleType(), ShellAudioBus::kPlanar),
-      output_frame_buffer_(
-          new uint8[kFramesPerChannel * number_of_channels_ *
-                    GetStarboardSampleTypeSize(output_sample_type_)]),
+                       ShellAudioBus::kFloat32, ShellAudioBus::kPlanar),
+      output_frame_buffer_(new uint8[kFramesPerChannel * number_of_channels_ *
+                                       GetSampleSize(output_sample_type_)]),
       frames_rendered_(0),
       frames_consumed_(0),
       was_silence_last_update_(false),
@@ -111,7 +147,7 @@
       kSbMediaAudioFrameStorageTypeInterleaved))
       << "Only interleaved frame storage is supported.";
   DCHECK(SbAudioSinkIsAudioSampleTypeSupported(output_sample_type_))
-      << "Output sample type " << output_sample_type_ << " is not supported.";
+      << "Output sample type " << output_sample_type_ << " is not supported";
 
   frame_buffers_[0] = output_frame_buffer_.get();
   audio_sink_ = SbAudioSinkCreate(
@@ -195,7 +231,7 @@
   frames_consumed_ += frames_consumed;
 }
 
-template <typename InputType, typename OutputType>
+template <typename OutputType>
 inline void AudioDevice::Impl::FillOutputAudioBusForType() {
   // Determine the offset into the audio bus that represents the tail of
   // buffered data.
@@ -206,10 +242,8 @@
   output_buffer += channel_offset * number_of_channels_;
   for (size_t frame = 0; frame < kRenderBufferSizeFrames; ++frame) {
     for (size_t channel = 0; channel < input_audio_bus_.channels(); ++channel) {
-      *output_buffer = ConvertSample<InputType, OutputType>(
-          input_audio_bus_
-              .GetSampleForType<InputType, media::ShellAudioBus::kPlanar>(
-                  channel, frame));
+      *output_buffer = ConvertSample<float, OutputType>(
+          input_audio_bus_.GetFloat32Sample(channel, frame));
       ++output_buffer;
     }
   }
@@ -217,20 +251,10 @@
 
 void AudioDevice::Impl::FillOutputAudioBus() {
   TRACE_EVENT0("cobalt::audio", "AudioDevice::Impl::FillOutputAudioBus()");
-
-  const bool is_input_int16 =
-      input_audio_bus_.sample_type() == media::ShellAudioBus::kInt16;
-  const bool is_output_int16 =
-      output_sample_type_ == kSbMediaAudioSampleTypeInt16;
-
-  if (is_input_int16 && is_output_int16) {
-    FillOutputAudioBusForType<int16, int16>();
-  } else if (!is_input_int16 && is_output_int16) {
-    FillOutputAudioBusForType<float, int16>();
-  } else if (is_input_int16 && !is_output_int16) {
-    FillOutputAudioBusForType<int16, float>();
-  } else if (!is_input_int16 && !is_output_int16) {
-    FillOutputAudioBusForType<float, float>();
+  if (output_sample_type_ == kSbMediaAudioSampleTypeFloat32) {
+    FillOutputAudioBusForType<float>();
+  } else if (output_sample_type_ == kSbMediaAudioSampleTypeInt16) {
+    FillOutputAudioBusForType<int16>();
   } else {
     NOTREACHED();
   }
@@ -305,7 +329,7 @@
                              channel_layout, GetAudioHardwareSampleRate(),
                              bytes_per_sample * 8, kRenderBufferSizeFrames);
 
-  // Create 1 channel audio bus since we only support interleaved.
+  // Create 1 channel audio bus due to we only support interleaved.
   output_audio_bus_ =
       AudioBus::Create(1, kFramesPerChannel * number_of_channels);
 
diff --git a/src/cobalt/audio/audio_file_reader.cc b/src/cobalt/audio/audio_file_reader.cc
index a858789..ed61830 100644
--- a/src/cobalt/audio/audio_file_reader.cc
+++ b/src/cobalt/audio/audio_file_reader.cc
@@ -23,10 +23,9 @@
 
 // static
 scoped_ptr<AudioFileReader> AudioFileReader::TryCreate(const uint8* data,
-                                                       size_t size,
-                                                       SampleType sample_type) {
+                                                       size_t size) {
   // Try to create other type of audio file reader.
-  return AudioFileReaderWAV::TryCreate(data, size, sample_type).Pass();
+  return AudioFileReaderWAV::TryCreate(data, size).Pass();
 }
 
 }  // namespace audio
diff --git a/src/cobalt/audio/audio_file_reader.h b/src/cobalt/audio/audio_file_reader.h
index 2d35a25..4897878 100644
--- a/src/cobalt/audio/audio_file_reader.h
+++ b/src/cobalt/audio/audio_file_reader.h
@@ -19,8 +19,6 @@
 
 #include "base/memory/scoped_ptr.h"  // For scoped_array
 
-#include "cobalt/audio/audio_helpers.h"
-
 namespace cobalt {
 namespace audio {
 
@@ -28,8 +26,7 @@
  public:
   virtual ~AudioFileReader() {}
 
-  static scoped_ptr<AudioFileReader> TryCreate(const uint8* data, size_t size,
-                                               SampleType sample_type);
+  static scoped_ptr<AudioFileReader> TryCreate(const uint8* data, size_t size);
 
   // Returns the sample data stored as float sample in planar form.  Note that
   // this function transfers the ownership of the data to the caller so it can
@@ -38,7 +35,6 @@
   virtual float sample_rate() const = 0;
   virtual int32 number_of_frames() const = 0;
   virtual int32 number_of_channels() const = 0;
-  virtual SampleType sample_type() const = 0;
 };
 
 }  // namespace audio
diff --git a/src/cobalt/audio/audio_file_reader_wav.cc b/src/cobalt/audio/audio_file_reader_wav.cc
index d0875f2..322fa0d 100644
--- a/src/cobalt/audio/audio_file_reader_wav.cc
+++ b/src/cobalt/audio/audio_file_reader_wav.cc
@@ -46,15 +46,15 @@
 }  // namespace
 
 // static
-scoped_ptr<AudioFileReader> AudioFileReaderWAV::TryCreate(
-    const uint8* data, size_t size, SampleType sample_type) {
+scoped_ptr<AudioFileReader> AudioFileReaderWAV::TryCreate(const uint8* data,
+                                                          size_t size) {
   // Need at least the |kWAVChunkSize| bytes for this to be a WAV.
   if (size < kWAVChunkSize) {
     return scoped_ptr<AudioFileReader>();
   }
 
   scoped_ptr<AudioFileReaderWAV> audio_file_reader_wav(
-      new AudioFileReaderWAV(data, size, sample_type));
+      new AudioFileReaderWAV(data, size));
 
   if (!audio_file_reader_wav->is_valid()) {
     return scoped_ptr<AudioFileReader>();
@@ -63,12 +63,8 @@
   return make_scoped_ptr<AudioFileReader>(audio_file_reader_wav.release());
 }
 
-AudioFileReaderWAV::AudioFileReaderWAV(const uint8* data, size_t size,
-                                       SampleType sample_type)
-    : sample_rate_(0.f),
-      number_of_frames_(0),
-      number_of_channels_(0),
-      sample_type_(sample_type) {
+AudioFileReaderWAV::AudioFileReaderWAV(const uint8* data, size_t size)
+    : sample_rate_(0.f), number_of_frames_(0), number_of_channels_(0) {
   DCHECK_GE(size, kWAVRIFFChunkHeaderSize);
 
   if (ParseRIFFHeader(data, size)) {
@@ -153,10 +149,6 @@
 
   // Load channel count.
   number_of_channels_ = load_uint16_little_endian(data + offset + 2);
-  if (number_of_channels_ == 0) {
-    DLOG(ERROR) << "No channel on WAV.";
-    return false;
-  }
 
   // Load sample rate.
   sample_rate_ =
@@ -183,51 +175,32 @@
   const uint8* data_samples = data + offset;
 
   // Set number of frames based on size of data chunk.
-  const int32 bytes_per_src_sample =
+  int32 bytes_per_src_sample =
       static_cast<int32>(is_sample_in_float ? sizeof(float) : sizeof(int16));
   number_of_frames_ =
       static_cast<int32>(size / (bytes_per_src_sample * number_of_channels_));
-  const int32 bytes_per_dest_sample =
-      static_cast<int32>(GetSampleTypeSize(sample_type_));
-  const bool is_dest_float = sample_type_ == kSampleTypeFloat32;
 
-  // We store audio samples in the current platform's preferred format.
-  sample_data_.reset(new uint8[static_cast<size_t>(
-      number_of_frames_ * number_of_channels_ * bytes_per_dest_sample)]);
+  // We always store audio samples in float.
+  sample_data_.reset(
+      new uint8[number_of_frames_ * number_of_channels_ * sizeof(float)]);
 
-  // Here we handle all 4 possible conversion cases.  Also note that the
-  // source data is stored interleaved, and that need to convert it to planar.
-  uint8* dest_sample = sample_data_.get();
+  // The source data is stored interleaved.  We need to convert it into planar.
+  float* dest_sample = reinterpret_cast<float*>(sample_data_.get());
   for (int32 i = 0; i < number_of_channels_; ++i) {
     const uint8* src_samples = data_samples + i * bytes_per_src_sample;
 
     for (int32 j = 0; j < number_of_frames_; ++j) {
-      if (is_dest_float) {
-        float sample;
-        if (is_sample_in_float) {
-          uint32 sample_as_uint32 = load_uint32_little_endian(src_samples);
-          sample = bit_cast<float>(sample_as_uint32);
-        } else {
-          uint16 sample_pcm_unsigned = load_uint16_little_endian(src_samples);
-          int16 sample_pcm = bit_cast<int16>(sample_pcm_unsigned);
-          sample = ConvertSample<int16, float>(sample_pcm);
-        }
-        reinterpret_cast<float*>(dest_sample)[i * number_of_frames_ + j] =
-            sample;
-        src_samples += bytes_per_src_sample * number_of_channels_;
+      float sample;
+      if (is_sample_in_float) {
+        uint32 sample_as_uint32 = load_uint32_little_endian(src_samples);
+        sample = bit_cast<float>(sample_as_uint32);
       } else {
-        int16 sample;
-        if (is_sample_in_float) {
-          uint32 sample_as_uint32 = load_uint32_little_endian(src_samples);
-          float value = bit_cast<float>(sample_as_uint32);
-          sample = ConvertSample<float, int16>(value);
-        } else {
-          sample = bit_cast<int16>(load_uint16_little_endian(src_samples));
-        }
-        reinterpret_cast<int16*>(dest_sample)[i * number_of_frames_ + j] =
-            sample;
-        src_samples += bytes_per_src_sample * number_of_channels_;
+        uint16 sample_pcm_unsigned = load_uint16_little_endian(src_samples);
+        int16 sample_pcm = bit_cast<int16>(sample_pcm_unsigned);
+        sample = static_cast<float>(sample_pcm) / 32768.0f;
       }
+      dest_sample[i * number_of_frames_ + j] = sample;
+      src_samples += bytes_per_src_sample * number_of_channels_;
     }
   }
 
diff --git a/src/cobalt/audio/audio_file_reader_wav.h b/src/cobalt/audio/audio_file_reader_wav.h
index dc3699a..cab1a1d 100644
--- a/src/cobalt/audio/audio_file_reader_wav.h
+++ b/src/cobalt/audio/audio_file_reader_wav.h
@@ -18,7 +18,6 @@
 #define COBALT_AUDIO_AUDIO_FILE_READER_WAV_H_
 
 #include "cobalt/audio/audio_file_reader.h"
-#include "cobalt/audio/audio_helpers.h"
 
 namespace cobalt {
 namespace audio {
@@ -27,17 +26,15 @@
 //   http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html
 class AudioFileReaderWAV : public AudioFileReader {
  public:
-  static scoped_ptr<AudioFileReader> TryCreate(const uint8* data, size_t size,
-                                               SampleType sample_type);
+  static scoped_ptr<AudioFileReader> TryCreate(const uint8* data, size_t size);
 
   scoped_array<uint8> sample_data() OVERRIDE { return sample_data_.Pass(); }
   float sample_rate() const OVERRIDE { return sample_rate_; }
   int32 number_of_frames() const OVERRIDE { return number_of_frames_; }
   int32 number_of_channels() const OVERRIDE { return number_of_channels_; }
-  SampleType sample_type() const OVERRIDE { return sample_type_; }
 
  private:
-  AudioFileReaderWAV(const uint8* data, size_t size, SampleType sample_type);
+  AudioFileReaderWAV(const uint8* data, size_t size);
 
   bool ParseRIFFHeader(const uint8* data, size_t size);
   void ParseChunks(const uint8* data, size_t size);
@@ -52,7 +49,6 @@
   float sample_rate_;
   int32 number_of_frames_;
   int32 number_of_channels_;
-  SampleType sample_type_;
 };
 
 }  // namespace audio
diff --git a/src/cobalt/audio/audio_helpers.h b/src/cobalt/audio/audio_helpers.h
deleted file mode 100644
index 2f0c06a..0000000
--- a/src/cobalt/audio/audio_helpers.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright 2016 Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef COBALT_AUDIO_AUDIO_HELPERS_H_
-#define COBALT_AUDIO_AUDIO_HELPERS_H_
-
-#include "media/base/shell_audio_bus.h"
-
-#if defined(OS_STARBOARD)
-#include "starboard/audio_sink.h"
-#include "starboard/media.h"
-#endif
-
-namespace cobalt {
-namespace audio {
-
-typedef ::media::ShellAudioBus::SampleType SampleType;
-const SampleType kSampleTypeInt16 = ::media::ShellAudioBus::kInt16;
-const SampleType kSampleTypeFloat32 = ::media::ShellAudioBus::kFloat32;
-
-const float kMaxInt16AsFloat32 = 32767.0f;
-
-#if defined(OS_STARBOARD)
-// Get the size in bytes of an SbMediaAudioSampleType.
-inline size_t GetStarboardSampleTypeSize(SbMediaAudioSampleType sample_type) {
-  switch (sample_type) {
-    case kSbMediaAudioSampleTypeFloat32:
-      return sizeof(float);
-    case kSbMediaAudioSampleTypeInt16:
-      return sizeof(int16);
-  }
-  NOTREACHED();
-  return 0u;
-}
-#endif
-
-// Get the size in bytes of an internal sample type, which is an alias for
-// media::ShellAudioBus::SampleType.
-inline size_t GetSampleTypeSize(SampleType sample_type) {
-  switch (sample_type) {
-    case kSampleTypeInt16:
-      return sizeof(int16);
-    case kSampleTypeFloat32:
-      return sizeof(float);
-  }
-  NOTREACHED();
-  return 0u;
-}
-
-// Get the sample type that we would prefer to output in using starboard, as
-// an internal SampleType.  If we are not running on starboard or using the
-// starboard media pipeline, then the preferred sample type is always float32.
-inline SampleType GetPreferredOutputSampleType() {
-#if defined(OS_STARBOARD)
-#if SB_CAN(MEDIA_USE_STARBOARD_PIPELINE)
-  if (SbAudioSinkIsAudioSampleTypeSupported(kSbMediaAudioSampleTypeFloat32)) {
-    return kSampleTypeFloat32;
-  }
-  DCHECK(SbAudioSinkIsAudioSampleTypeSupported(kSbMediaAudioSampleTypeInt16))
-      << "At least one starboard audio sample type must be supported if using "
-         "starboard media pipeline.";
-  return kSampleTypeInt16;
-#else   // SB_CAN(MEDIA_USE_STARBOARD_PIPELINE)
-  return kSampleTypeFloat32;
-#endif  // SB_CAN(MEDIA_USE_STARBOARD_PIPELINE)
-#else   // defined(OS_STARBOARD)
-  return kSampleTypeFloat32;
-#endif  // defined(OS_STARBOARD)
-}
-
-#if defined(OS_STARBOARD)
-// The same as GetPreferredOutputSampleType, only as an SbMediaAudioSample
-// rather than an internal SampleType.
-inline SbMediaAudioSampleType GetPreferredOutputStarboardSampleType() {
-  if (SbAudioSinkIsAudioSampleTypeSupported(kSbMediaAudioSampleTypeFloat32)) {
-    return kSbMediaAudioSampleTypeFloat32;
-  }
-  return kSbMediaAudioSampleTypeInt16;
-}
-#endif
-
-// Convert a sample value from {int16,float} to {int16,float}.
-template <typename SourceType, typename DestType>
-inline DestType ConvertSample(SourceType sample);
-
-template <>
-inline int16 ConvertSample<float, int16>(float sample) {
-  if (!(-1.0 <= sample && sample <= 1.0)) {
-    DLOG(WARNING)
-        << "Sample of type float32 must lie on interval [-1.0, 1.0], got: "
-        << sample << ".";
-  }
-  return static_cast<int16>(sample * kMaxInt16AsFloat32);
-}
-
-template <>
-inline float ConvertSample<int16, float>(int16 sample) {
-  float int16_sample_as_float = static_cast<float>(sample);
-  return int16_sample_as_float / kMaxInt16AsFloat32;
-}
-
-template <>
-inline float ConvertSample<float, float>(float sample) {
-  return sample;
-}
-
-template <>
-inline int16 ConvertSample<int16, int16>(int16 sample) {
-  return sample;
-}
-
-}  // namespace audio
-}  // namespace cobalt
-
-#endif  // COBALT_AUDIO_AUDIO_HELPERS_H_
diff --git a/src/cobalt/audio/audio_node.h b/src/cobalt/audio/audio_node.h
index 01a578d..11f4ae4 100644
--- a/src/cobalt/audio/audio_node.h
+++ b/src/cobalt/audio/audio_node.h
@@ -20,7 +20,6 @@
 #include <string>
 #include <vector>
 
-#include "cobalt/audio/audio_helpers.h"
 #include "cobalt/audio/audio_node_input.h"
 #include "cobalt/audio/audio_node_output.h"
 #include "cobalt/dom/dom_exception.h"
@@ -111,12 +110,9 @@
   // Disconnects an AudioNode's output.
   void Disconnect(uint32 output, script::ExceptionState* exception_state);
 
-  // Called when a new input node has been connected.
-  virtual void OnInputNodeConnected() {}
-
   // TODO: Support wrapping ShellAudioBus into another ShellAudioBus.
   virtual scoped_ptr<ShellAudioBus> PassAudioBusFromSource(
-      int32 number_of_frames, SampleType sample_type) = 0;
+      int32 number_of_frames) = 0;
 
   AudioLock* audio_lock() const { return audio_lock_.get(); }
 
diff --git a/src/cobalt/audio/audio_node_input.cc b/src/cobalt/audio/audio_node_input.cc
index b7ac086..2f42724 100644
--- a/src/cobalt/audio/audio_node_input.cc
+++ b/src/cobalt/audio/audio_node_input.cc
@@ -197,7 +197,6 @@
 
   output->AddInput(this);
   outputs_.insert(output);
-  owner_node_->OnInputNodeConnected();
 }
 
 void AudioNodeInput::Disconnect(AudioNodeOutput* output) {
@@ -233,19 +232,13 @@
   // TODO: Consider computing computedNumberOfChannels and do up-mix or
   // down-mix base on computedNumberOfChannels. The current implementation
   // is based on the fact that the channelCountMode is max.
-  if (owner_node_->channel_count_mode() != AudioNode::kMax) {
-    DLOG(ERROR) << "Unsupported channel count mode: "
-                << owner_node_->channel_count_mode();
-    return;
-  }
-
+  DCHECK_EQ(owner_node_->channel_count_mode(), AudioNode::kMax);
   // Pull audio buffer from connected audio input. When an input is connected
   // from one or more AudioNode outputs. Fan-in is supported.
   for (std::set<AudioNodeOutput*>::iterator iter = outputs_.begin();
        iter != outputs_.end(); ++iter) {
     scoped_ptr<ShellAudioBus> audio_bus = (*iter)->PassAudioBusFromSource(
-        static_cast<int32>(output_audio_bus->frames()),
-        output_audio_bus->sample_type());
+        static_cast<int32>(output_audio_bus->frames()));
 
     if (audio_bus) {
       MixAudioBuffer(owner_node_->channel_interpretation(), audio_bus.get(),
diff --git a/src/cobalt/audio/audio_node_input_output_test.cc b/src/cobalt/audio/audio_node_input_output_test.cc
index 095217f..b72579e 100644
--- a/src/cobalt/audio/audio_node_input_output_test.cc
+++ b/src/cobalt/audio/audio_node_input_output_test.cc
@@ -14,9 +14,9 @@
  * limitations under the License.
  */
 
-#include "cobalt/audio/audio_buffer_source_node.h"
 #include "cobalt/audio/audio_context.h"
-#include "cobalt/audio/audio_helpers.h"
+
+#include "cobalt/audio/audio_buffer_source_node.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace cobalt {
@@ -37,8 +37,8 @@
   }
 
   // From AudioNode.
-  scoped_ptr<ShellAudioBus> PassAudioBusFromSource(int32, /*number_of_frames*/
-                                                   SampleType) OVERRIDE {
+  scoped_ptr<ShellAudioBus> PassAudioBusFromSource(
+      int32 /*number_of_frames*/) OVERRIDE {
     NOTREACHED();
     return scoped_ptr<ShellAudioBus>();
   }
@@ -58,8 +58,7 @@
   scoped_refptr<AudioBufferSourceNode> source(new AudioBufferSourceNode(NULL));
   scoped_refptr<AudioBuffer> buffer(
       new AudioBuffer(NULL, 44100, static_cast<int32>(num_of_frames),
-                      static_cast<int32>(num_of_src_channel), src_data.Pass(),
-                      GetPreferredOutputSampleType()));
+                      static_cast<int32>(num_of_src_channel), src_data.Pass()));
   source->set_buffer(buffer);
 
   scoped_refptr<AudioDestinationNodeMock> destination(
@@ -626,10 +625,9 @@
   memcpy(src_buffer_1, src_data_in_float_1, 200 * sizeof(uint8));
   scoped_refptr<AudioBufferSourceNode> source_1(
       new AudioBufferSourceNode(NULL));
-  scoped_refptr<AudioBuffer> buffer_1(
-      new AudioBuffer(NULL, 44100, static_cast<int32>(num_of_frames_1),
-                      static_cast<int32>(num_of_src_channel), src_data_1.Pass(),
-                      GetPreferredOutputSampleType()));
+  scoped_refptr<AudioBuffer> buffer_1(new AudioBuffer(
+      NULL, 44100, static_cast<int32>(num_of_frames_1),
+      static_cast<int32>(num_of_src_channel), src_data_1.Pass()));
   source_1->set_buffer(buffer_1);
 
   size_t num_of_frames_2 = 50;
@@ -644,10 +642,9 @@
   memcpy(src_buffer_2, src_data_in_float_2, 400 * sizeof(uint8));
   scoped_refptr<AudioBufferSourceNode> source_2(
       new AudioBufferSourceNode(NULL));
-  scoped_refptr<AudioBuffer> buffer_2(
-      new AudioBuffer(NULL, 44100, static_cast<int32>(num_of_frames_2),
-                      static_cast<int32>(num_of_src_channel), src_data_2.Pass(),
-                      GetPreferredOutputSampleType()));
+  scoped_refptr<AudioBuffer> buffer_2(new AudioBuffer(
+      NULL, 44100, static_cast<int32>(num_of_frames_2),
+      static_cast<int32>(num_of_src_channel), src_data_2.Pass()));
   source_2->set_buffer(buffer_2);
 
   scoped_refptr<AudioDestinationNodeMock> destination(
diff --git a/src/cobalt/audio/audio_node_output.cc b/src/cobalt/audio/audio_node_output.cc
index 747bc01..d2ce36c 100644
--- a/src/cobalt/audio/audio_node_output.cc
+++ b/src/cobalt/audio/audio_node_output.cc
@@ -58,13 +58,12 @@
 }
 
 scoped_ptr<ShellAudioBus> AudioNodeOutput::PassAudioBusFromSource(
-    int32 number_of_frames, SampleType sample_type) {
+    int32 number_of_frames) {
   // This is called by Audio thread.
   owner_node_->audio_lock()->AssertLocked();
 
   // Pull audio buffer from its owner node.
-  return owner_node_->PassAudioBusFromSource(number_of_frames, sample_type)
-      .Pass();
+  return owner_node_->PassAudioBusFromSource(number_of_frames).Pass();
 }
 
 }  // namespace audio
diff --git a/src/cobalt/audio/audio_node_output.h b/src/cobalt/audio/audio_node_output.h
index decd54c..f01b274 100644
--- a/src/cobalt/audio/audio_node_output.h
+++ b/src/cobalt/audio/audio_node_output.h
@@ -22,7 +22,6 @@
 
 #include "base/memory/ref_counted.h"
 #include "cobalt/audio/audio_buffer.h"
-#include "cobalt/audio/audio_helpers.h"
 #include "media/base/shell_audio_bus.h"
 
 namespace cobalt {
@@ -45,8 +44,7 @@
 
   void DisconnectAll();
 
-  scoped_ptr<ShellAudioBus> PassAudioBusFromSource(int32 number_of_frames,
-                                                   SampleType sample_type);
+  scoped_ptr<ShellAudioBus> PassAudioBusFromSource(int32 number_of_frames);
 
  private:
   AudioNode* const owner_node_;
diff --git a/src/cobalt/base/base.gyp b/src/cobalt/base/base.gyp
index 29ad3e2..19652ec 100644
--- a/src/cobalt/base/base.gyp
+++ b/src/cobalt/base/base.gyp
@@ -49,6 +49,7 @@
         'poller.h',
         'polymorphic_downcast.h',
         'polymorphic_equatable.h',
+        'sanitizer_options.cc',
         'source_location.h',
         'stop_watch.cc',
         'stop_watch.h',
diff --git a/src/cobalt/base/c_val.h b/src/cobalt/base/c_val.h
index 7331781..c4bcc0c 100644
--- a/src/cobalt/base/c_val.h
+++ b/src/cobalt/base/c_val.h
@@ -249,7 +249,6 @@
       {10LL * 1024LL * 1024LL * 1024LL, 1024LL * 1024LL * 1024LL, "GB"},
       {10LL * 1024LL * 1024LL, 1024LL * 1024LL, "MB"},
       {10LL * 1024LL, 1024LL, "KB"},
-      {0LL, 1L, "B"},
   };
   return ThresholdList<cval::SizeInBytes>(thresholds, arraysize(thresholds));
 }
@@ -292,23 +291,21 @@
   if (negative) {
     oss << "-";
   }
-
-  oss << std::fixed << std::setprecision(1) << std::setfill('0');
   if (value_in_us > kHour) {
-    oss << value_in_us / kHour << ":" << std::setw(2)
-        << (value_in_us % kHour) / kMinute << ":"
+    oss << value_in_us / kHour << ":" << std::setfill('0') << std::setw(2)
+        << (value_in_us % kHour) / kMinute << ":" << std::setfill('0')
         << std::setw(2) << (value_in_us % kMinute) / kSecond << "h";
   } else if (value_in_us > kMinute) {
-    oss << value_in_us / kMinute << ":" << std::setw(2)
+    oss << value_in_us / kMinute << ":" << std::setfill('0') << std::setw(2)
         << (value_in_us % kMinute) / kSecond << "m";
-  } else if (value_in_us > kSecond) {
-    oss << std::setw(1)
-        << static_cast<double>(value_in_us) / kSecond << "s";
-  } else if (value_in_us > kMillisecond) {
-    oss << std::setw(1)
-        << static_cast<double>(value_in_us) / kMillisecond << "ms";
-  } else {
+  } else if (value_in_us > kSecond * 10) {
+    oss << value_in_us / kSecond << "s";
+  } else if (value_in_us > kMillisecond * 2) {
+    oss << value_in_us / kMillisecond << "ms";
+  } else if (value_in_us > 0) {
     oss << value_in_us << "us";
+  } else {
+    oss << value_in_us;
   }
 
   return oss.str();
diff --git a/src/cobalt/base/c_val_test.cc b/src/cobalt/base/c_val_test.cc
index c1941d3..9751266 100644
--- a/src/cobalt/base/c_val_test.cc
+++ b/src/cobalt/base/c_val_test.cc
@@ -16,7 +16,6 @@
 
 #include <limits>
 
-#include "base/time.h"
 #include "cobalt/base/c_val.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -65,27 +64,7 @@
   base::CValManager* cvm = base::CValManager::GetInstance();
   base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
   EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "4294M");
-}
-
-TEST(CValTest, RegisterAndPrintU32Zero) {
-  const std::string cval_name = "32-bit unsigned int";
-  const uint32_t cval_value = 0;
-  base::CVal<uint32_t> cval(cval_name, cval_value, "Description.");
-  base::CValManager* cvm = base::CValManager::GetInstance();
-  base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
-  EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "0");
-}
-
-TEST(CValTest, RegisterAndPrintU32K) {
-  const std::string cval_name = "32-bit unsigned int";
-  const uint32_t cval_value = 50000;
-  base::CVal<uint32_t> cval(cval_name, cval_value, "Description.");
-  base::CValManager* cvm = base::CValManager::GetInstance();
-  base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
-  EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "50K");
+  EXPECT_EQ(*result, "4095MB");
 }
 
 TEST(CValTest, RegisterAndPrintU64) {
@@ -95,7 +74,7 @@
   base::CValManager* cvm = base::CValManager::GetInstance();
   base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
   EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "18446744073709M");
+  EXPECT_EQ(*result, "17592186044415MB");
 }
 
 TEST(CValTest, RegisterAndPrintS32) {
@@ -118,266 +97,6 @@
   EXPECT_EQ(*result, "-9223372036854775808");
 }
 
-TEST(CValTest, RegisterAndPrintSizeInBytesB) {
-  const std::string cval_name = "SizeInBytes";
-  cval::SizeInBytes cval_value(500);
-  base::CVal<cval::SizeInBytes> cval(cval_name, cval_value, "Description.");
-  base::CValManager* cvm = base::CValManager::GetInstance();
-  base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
-  EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "500B");
-}
-
-TEST(CValTest, RegisterAndPrintSizeInBytesZero) {
-  const std::string cval_name = "SizeInBytes";
-  cval::SizeInBytes cval_value(0);
-  base::CVal<cval::SizeInBytes> cval(cval_name, cval_value, "Description.");
-  base::CValManager* cvm = base::CValManager::GetInstance();
-  base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
-  EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "0B");
-}
-
-TEST(CValTest, RegisterAndPrintSizeInBytesKB) {
-  const std::string cval_name = "SizeInBytes";
-  cval::SizeInBytes cval_value(50000UL);
-  base::CVal<cval::SizeInBytes> cval(cval_name, cval_value, "Description.");
-  base::CValManager* cvm = base::CValManager::GetInstance();
-  base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
-  EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "48KB");
-}
-
-TEST(CValTest, RegisterAndPrintSizeInBytesMB) {
-  const std::string cval_name = "SizeInBytes";
-  cval::SizeInBytes cval_value(50000000UL);
-  base::CVal<cval::SizeInBytes> cval(cval_name, cval_value, "Description.");
-  base::CValManager* cvm = base::CValManager::GetInstance();
-  base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
-  EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "47MB");
-}
-
-TEST(CValTest, RegisterAndPrintSizeInBytesGB) {
-  const std::string cval_name = "SizeInBytes";
-  cval::SizeInBytes cval_value(50000000000UL);
-  base::CVal<cval::SizeInBytes> cval(cval_name, cval_value, "Description.");
-  base::CValManager* cvm = base::CValManager::GetInstance();
-  base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
-  EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "46GB");
-}
-
-TEST(CValTest, RegisterAndPrintTimeDeltaMicroseconds) {
-  const std::string cval_name = "TimeDelta";
-  base::TimeDelta cval_value(base::TimeDelta::FromMicroseconds(50));
-  base::CVal<base::TimeDelta> cval(cval_name, cval_value, "Description.");
-  base::CValManager* cvm = base::CValManager::GetInstance();
-  base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
-  EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "50us");
-}
-
-TEST(CValTest, RegisterAndPrintTimeDeltaZero) {
-  const std::string cval_name = "TimeDelta";
-  base::TimeDelta cval_value(base::TimeDelta::FromMicroseconds(0));
-  base::CVal<base::TimeDelta> cval(cval_name, cval_value, "Description.");
-  base::CValManager* cvm = base::CValManager::GetInstance();
-  base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
-  EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "0us");
-}
-
-TEST(CValTest, RegisterAndPrintTimeDeltaMilliseconds) {
-  const std::string cval_name = "TimeDelta";
-  base::TimeDelta cval_value(base::TimeDelta::FromMilliseconds(50));
-  base::CVal<base::TimeDelta> cval(cval_name, cval_value, "Description.");
-  base::CValManager* cvm = base::CValManager::GetInstance();
-  base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
-  EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "50.0ms");
-}
-
-TEST(CValTest, RegisterAndPrintTimeDeltaMillisecondsSingleDigit) {
-  const std::string cval_name = "TimeDelta";
-  base::TimeDelta cval_value(base::TimeDelta::FromMilliseconds(5));
-  base::CVal<base::TimeDelta> cval(cval_name, cval_value, "Description.");
-  base::CValManager* cvm = base::CValManager::GetInstance();
-  base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
-  EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "5.0ms");
-}
-
-TEST(CValTest, RegisterAndPrintTimeDeltaMillisecondsFraction) {
-  const std::string cval_name = "TimeDelta";
-  base::TimeDelta cval_value(base::TimeDelta::FromMicroseconds(5500));
-  base::CVal<base::TimeDelta> cval(cval_name, cval_value, "Description.");
-  base::CValManager* cvm = base::CValManager::GetInstance();
-  base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
-  EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "5.5ms");
-}
-
-TEST(CValTest, RegisterAndPrintTimeDeltaSeconds) {
-  const std::string cval_name = "TimeDelta";
-  base::TimeDelta cval_value(base::TimeDelta::FromSeconds(50));
-  base::CVal<base::TimeDelta> cval(cval_name, cval_value, "Description.");
-  base::CValManager* cvm = base::CValManager::GetInstance();
-  base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
-  EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "50.0s");
-}
-
-TEST(CValTest, RegisterAndPrintTimeDeltaSecondsSingleDigit) {
-  const std::string cval_name = "TimeDelta";
-  base::TimeDelta cval_value(base::TimeDelta::FromSeconds(5));
-  base::CVal<base::TimeDelta> cval(cval_name, cval_value, "Description.");
-  base::CValManager* cvm = base::CValManager::GetInstance();
-  base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
-  EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "5.0s");
-}
-
-TEST(CValTest, RegisterAndPrintTimeDeltaSecondsFraction) {
-  const std::string cval_name = "TimeDelta";
-  base::TimeDelta cval_value(base::TimeDelta::FromMilliseconds(5500));
-  base::CVal<base::TimeDelta> cval(cval_name, cval_value, "Description.");
-  base::CValManager* cvm = base::CValManager::GetInstance();
-  base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
-  EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "5.5s");
-}
-
-TEST(CValTest, RegisterAndPrintTimeDeltaMinutes) {
-  const std::string cval_name = "TimeDelta";
-  base::TimeDelta cval_value(base::TimeDelta::FromMinutes(50));
-  base::CVal<base::TimeDelta> cval(cval_name, cval_value, "Description.");
-  base::CValManager* cvm = base::CValManager::GetInstance();
-  base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
-  EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "50:00m");
-}
-
-TEST(CValTest, RegisterAndPrintTimeDeltaMinutesSingleDigit) {
-  const std::string cval_name = "TimeDelta";
-  base::TimeDelta cval_value(base::TimeDelta::FromMinutes(5));
-  base::CVal<base::TimeDelta> cval(cval_name, cval_value, "Description.");
-  base::CValManager* cvm = base::CValManager::GetInstance();
-  base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
-  EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "5:00m");
-}
-
-TEST(CValTest, RegisterAndPrintTimeDeltaMinutesAndSeconds) {
-  const std::string cval_name = "TimeDelta";
-  base::TimeDelta cval_value(base::TimeDelta::FromSeconds(92));
-  base::CVal<base::TimeDelta> cval(cval_name, cval_value, "Description.");
-  base::CValManager* cvm = base::CValManager::GetInstance();
-  base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
-  EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "1:32m");
-}
-
-TEST(CValTest, RegisterAndPrintTimeDeltaHours) {
-  const std::string cval_name = "TimeDelta";
-  base::TimeDelta cval_value(base::TimeDelta::FromHours(50));
-  base::CVal<base::TimeDelta> cval(cval_name, cval_value, "Description.");
-  base::CValManager* cvm = base::CValManager::GetInstance();
-  base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
-  EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "50:00:00h");
-}
-
-TEST(CValTest, RegisterAndPrintTimeDeltaHoursSingleDigit) {
-  const std::string cval_name = "TimeDelta";
-  base::TimeDelta cval_value(base::TimeDelta::FromHours(5));
-  base::CVal<base::TimeDelta> cval(cval_name, cval_value, "Description.");
-  base::CValManager* cvm = base::CValManager::GetInstance();
-  base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
-  EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "5:00:00h");
-}
-
-TEST(CValTest, RegisterAndPrintTimeDeltaHoursAndMinutes) {
-  const std::string cval_name = "TimeDelta";
-  base::TimeDelta cval_value(base::TimeDelta::FromMinutes(92));
-  base::CVal<base::TimeDelta> cval(cval_name, cval_value, "Description.");
-  base::CValManager* cvm = base::CValManager::GetInstance();
-  base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
-  EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "1:32:00h");
-}
-
-TEST(CValTest, RegisterAndPrintTimeDeltaHoursAndMinutesAndSeconds) {
-  const std::string cval_name = "TimeDelta";
-  base::TimeDelta cval_value(base::TimeDelta::FromSeconds(92 * 60 + 32));
-  base::CVal<base::TimeDelta> cval(cval_name, cval_value, "Description.");
-  base::CValManager* cvm = base::CValManager::GetInstance();
-  base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
-  EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "1:32:32h");
-}
-
-TEST(CValTest, RegisterAndPrintTimeDeltaHoursAndSeconds) {
-  const std::string cval_name = "TimeDelta";
-  base::TimeDelta cval_value(base::TimeDelta::FromSeconds(60 * 60 + 32));
-  base::CVal<base::TimeDelta> cval(cval_name, cval_value, "Description.");
-  base::CValManager* cvm = base::CValManager::GetInstance();
-  base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
-  EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "1:00:32h");
-}
-
-TEST(CValTest, RegisterAndPrintTimeDeltaNegativeMicroseconds) {
-  const std::string cval_name = "TimeDelta";
-  base::TimeDelta cval_value(base::TimeDelta::FromMicroseconds(-3));
-  base::CVal<base::TimeDelta> cval(cval_name, cval_value, "Description.");
-  base::CValManager* cvm = base::CValManager::GetInstance();
-  base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
-  EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "-3us");
-}
-
-TEST(CValTest, RegisterAndPrintTimeDeltaNegativeMilliseconds) {
-  const std::string cval_name = "TimeDelta";
-  base::TimeDelta cval_value(base::TimeDelta::FromMilliseconds(-3));
-  base::CVal<base::TimeDelta> cval(cval_name, cval_value, "Description.");
-  base::CValManager* cvm = base::CValManager::GetInstance();
-  base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
-  EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "-3.0ms");
-}
-
-TEST(CValTest, RegisterAndPrintTimeDeltaNegativeSeconds) {
-  const std::string cval_name = "TimeDelta";
-  base::TimeDelta cval_value(base::TimeDelta::FromSeconds(-3));
-  base::CVal<base::TimeDelta> cval(cval_name, cval_value, "Description.");
-  base::CValManager* cvm = base::CValManager::GetInstance();
-  base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
-  EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "-3.0s");
-}
-
-TEST(CValTest, RegisterAndPrintTimeDeltaNegativeMinutes) {
-  const std::string cval_name = "TimeDelta";
-  base::TimeDelta cval_value(base::TimeDelta::FromMinutes(-3));
-  base::CVal<base::TimeDelta> cval(cval_name, cval_value, "Description.");
-  base::CValManager* cvm = base::CValManager::GetInstance();
-  base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
-  EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "-3:00m");
-}
-
-TEST(CValTest, RegisterAndPrintTimeDeltaNegativeHours) {
-  const std::string cval_name = "TimeDelta";
-  base::TimeDelta cval_value(base::TimeDelta::FromHours(-3));
-  base::CVal<base::TimeDelta> cval(cval_name, cval_value, "Description.");
-  base::CValManager* cvm = base::CValManager::GetInstance();
-  base::optional<std::string> result = cvm->GetValueAsPrettyString(cval_name);
-  EXPECT_TRUE(result);
-  EXPECT_EQ(*result, "-3:00:00h");
-}
-
 TEST(CValTest, RegisterAndPrintFloat) {
   const std::string cval_name = "float";
   const float cval_value = 3.14159f;
diff --git a/src/cobalt/base/console_commands.cc b/src/cobalt/base/console_commands.cc
index 73e4f1b..eecf31a 100644
--- a/src/cobalt/base/console_commands.cc
+++ b/src/cobalt/base/console_commands.cc
@@ -50,15 +50,10 @@
                                           const std::string& message) const {
   DCHECK_GT(channel.length(), size_t(0));
   base::AutoLock auto_lock(lock_);
-  CommandHandlerMap::const_iterator iter =
-      command_channel_map_.lower_bound(channel);
-  bool handler_found = false;
-  while (iter != command_channel_map_.end() && iter->first == channel) {
-    handler_found = true;
+  CommandHandlerMap::const_iterator iter = command_channel_map_.find(channel);
+  if (iter != command_channel_map_.end()) {
     iter->second->callback().Run(message);
-    ++iter;
-  }
-  if (!handler_found) {
+  } else {
     DLOG(WARNING) << "No command handler registered for channel: " << channel;
   }
 }
@@ -76,9 +71,8 @@
 std::string ConsoleCommandManager::GetShortHelp(
     const std::string& channel) const {
   base::AutoLock auto_lock(lock_);
-  for (CommandHandlerMap::const_iterator iter =
-           command_channel_map_.lower_bound(channel);
-       iter != command_channel_map_.end() && iter->first == channel; ++iter) {
+  CommandHandlerMap::const_iterator iter = command_channel_map_.find(channel);
+  if (iter != command_channel_map_.end()) {
     return iter->second->short_help();
   }
   return "No help available for unregistered channel: " + channel;
@@ -87,9 +81,8 @@
 std::string ConsoleCommandManager::GetLongHelp(
     const std::string& channel) const {
   base::AutoLock auto_lock(lock_);
-  for (CommandHandlerMap::const_iterator iter =
-           command_channel_map_.lower_bound(channel);
-       iter != command_channel_map_.end() && iter->first == channel; ++iter) {
+  CommandHandlerMap::const_iterator iter = command_channel_map_.find(channel);
+  if (iter != command_channel_map_.end()) {
     return iter->second->long_help();
   }
   return "No help available for unregistered channel: " + channel;
@@ -99,22 +92,14 @@
     const CommandHandler* handler) {
   DCHECK_GT(handler->channel().length(), size_t(0));
   base::AutoLock auto_lock(lock_);
-  command_channel_map_.insert(std::make_pair(handler->channel(), handler));
+  command_channel_map_[handler->channel()] = handler;
 }
 
 void ConsoleCommandManager::UnregisterCommandHandler(
     const CommandHandler* handler) {
-  const std::string& channel = handler->channel();
-  DCHECK_GT(channel.length(), size_t(0));
+  DCHECK_GT(handler->channel().length(), size_t(0));
   base::AutoLock auto_lock(lock_);
-  for (CommandHandlerMap::iterator iter =
-           command_channel_map_.lower_bound(channel);
-       iter != command_channel_map_.end() && iter->first == channel; ++iter) {
-    if (iter->second == handler) {
-      command_channel_map_.erase(iter);
-      break;
-    }
-  }
+  command_channel_map_.erase(handler->channel());
 }
 
 #else   // ENABLE_DEBUG_CONSOLE
diff --git a/src/cobalt/base/console_commands.h b/src/cobalt/base/console_commands.h
index f12113e..47144d6 100644
--- a/src/cobalt/base/console_commands.h
+++ b/src/cobalt/base/console_commands.h
@@ -89,7 +89,7 @@
 
 #if defined(ENABLE_DEBUG_CONSOLE)
   // Command handler map type.
-  typedef std::multimap<std::string, const CommandHandler*> CommandHandlerMap;
+  typedef std::map<std::string, const CommandHandler*> CommandHandlerMap;
 
   // Methods to register/unregister command handlers.
   // These are intended only to be called from the command handler objects.
diff --git a/src/cobalt/base/deep_link_event.h b/src/cobalt/base/deep_link_event.h
index b5c2afa..5e3df4b 100644
--- a/src/cobalt/base/deep_link_event.h
+++ b/src/cobalt/base/deep_link_event.h
@@ -20,7 +20,6 @@
 #include <string>
 
 #include "base/compiler_specific.h"
-#include "base/string_util.h"
 #include "cobalt/base/event.h"
 
 namespace base {
@@ -29,9 +28,6 @@
  public:
   explicit DeepLinkEvent(const std::string& link) : link_(link) {}
   const std::string& link() const { return link_; }
-  bool IsH5vccLink() const {
-    return StartsWithASCII(link_, "h5vcc", true);
-  }
 
   BASE_EVENT_SUBCLASS(DeepLinkEvent);
 
diff --git a/src/cobalt/base/sanitizer_options.cc b/src/cobalt/base/sanitizer_options.cc
new file mode 100644
index 0000000..b5311a5
--- /dev/null
+++ b/src/cobalt/base/sanitizer_options.cc
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2015 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#if defined(ADDRESS_SANITIZER)
+
+// Functions returning default options are declared weak in the tools' runtime
+// libraries. To make the linker pick the strong replacements for those
+// functions from this module, we explicitly force its inclusion by passing
+// -Wl,-u_sanitizer_options_link_helper
+extern "C" void _sanitizer_options_link_helper() { }
+
+// The callbacks we define here will be called from the sanitizer runtime, but
+// aren't referenced from the executable. We must ensure that those
+// callbacks are not sanitizer-instrumented, and that they aren't stripped by
+// the linker.
+#define SANITIZER_HOOK_ATTRIBUTE          \
+  extern "C"                              \
+  __attribute__((no_sanitize_address))    \
+  __attribute__((no_sanitize_memory))     \
+  __attribute__((no_sanitize_thread))     \
+  __attribute__((visibility("default")))  \
+  __attribute__((used))
+
+extern "C" char kLSanDefaultSuppressions[];
+
+char kLSanDefaultSuppressions[] =
+    // 16-byte leak from a call to calloc() in this library.
+    "leak:egl_gallium.so\n";
+
+SANITIZER_HOOK_ATTRIBUTE const char *__lsan_default_suppressions() {
+  return kLSanDefaultSuppressions;
+}
+
+#endif  // defined(ADDRESS_SANITIZER)
diff --git a/src/cobalt/base/tokens.h b/src/cobalt/base/tokens.h
index cae31dd..b2e24cd 100644
--- a/src/cobalt/base/tokens.h
+++ b/src/cobalt/base/tokens.h
@@ -83,7 +83,6 @@
     MacroOpWithNameAndValue(class_selector_prefix, ".")                 \
     MacroOpWithNameAndValue(comment_node_name, "#comment")              \
     MacroOpWithNameAndValue(document_name, "#document")                 \
-    MacroOpWithNameAndValue(domcontentloaded, "DOMContentLoaded")       \
     MacroOpWithNameAndValue(empty_pseudo_class_selector, "empty")       \
     MacroOpWithNameAndValue(focus_pseudo_class_selector, "focus")       \
     MacroOpWithNameAndValue(hover_pseudo_class_selector, "hover")       \
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsAnonymousIndexedGetterInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsAnonymousIndexedGetterInterface.cc
index 9a486e9..be7915c 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsAnonymousIndexedGetterInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsAnonymousIndexedGetterInterface.cc
@@ -280,15 +280,6 @@
 JSBool get_length(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  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);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsAnonymousNamedIndexedGetterInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsAnonymousNamedIndexedGetterInterface.cc
index 0d132c4..388c186 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsAnonymousNamedIndexedGetterInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsAnonymousNamedIndexedGetterInterface.cc
@@ -371,15 +371,6 @@
 JSBool get_length(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  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);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsArbitraryInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsArbitraryInterface.cc
index 38699b2..71b31f2 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsArbitraryInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsArbitraryInterface.cc
@@ -191,15 +191,6 @@
 JSBool get_arbitraryProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  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);
 
@@ -222,15 +213,6 @@
 JSBool set_arbitraryProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  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);
 
@@ -265,15 +247,6 @@
     NOTREACHED();
     return false;
   }
-  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);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsBaseInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsBaseInterface.cc
index c6f9524..bf4b5a3 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsBaseInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsBaseInterface.cc
@@ -191,15 +191,6 @@
 JSBool get_baseAttribute(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  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);
 
@@ -234,15 +225,6 @@
     NOTREACHED();
     return false;
   }
-  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);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsBooleanTypeTestInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsBooleanTypeTestInterface.cc
index 2599232..1796c62 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsBooleanTypeTestInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsBooleanTypeTestInterface.cc
@@ -189,15 +189,6 @@
 JSBool get_booleanProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  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);
 
@@ -220,15 +211,6 @@
 JSBool set_booleanProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  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);
 
@@ -263,15 +245,6 @@
     NOTREACHED();
     return false;
   }
-  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);
 
@@ -318,15 +291,6 @@
     NOTREACHED();
     return false;
   }
-  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);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsCallbackFunctionInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsCallbackFunctionInterface.cc
index fce394f..0b7e907 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsCallbackFunctionInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsCallbackFunctionInterface.cc
@@ -193,15 +193,6 @@
 JSBool get_callbackAttribute(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  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);
 
@@ -224,15 +215,6 @@
 JSBool set_callbackAttribute(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  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);
 
@@ -255,15 +237,6 @@
 JSBool get_nullableCallbackAttribute(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  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);
 
@@ -286,15 +259,6 @@
 JSBool set_nullableCallbackAttribute(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  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);
 
@@ -329,15 +293,6 @@
     NOTREACHED();
     return false;
   }
-  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);
 
@@ -384,15 +339,6 @@
     NOTREACHED();
     return false;
   }
-  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);
 
@@ -439,15 +385,6 @@
     NOTREACHED();
     return false;
   }
-  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);
 
@@ -494,15 +431,6 @@
     NOTREACHED();
     return false;
   }
-  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);
 
@@ -549,15 +477,6 @@
     NOTREACHED();
     return false;
   }
-  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);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsCallbackInterfaceInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsCallbackInterfaceInterface.cc
index 468faf3..d4321ff 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsCallbackInterfaceInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsCallbackInterfaceInterface.cc
@@ -193,15 +193,6 @@
 JSBool get_callbackAttribute(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  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);
 
@@ -224,15 +215,6 @@
 JSBool set_callbackAttribute(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  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);
 
@@ -267,15 +249,6 @@
     NOTREACHED();
     return false;
   }
-  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);
 
@@ -322,15 +295,6 @@
     NOTREACHED();
     return false;
   }
-  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);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsConditionalInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsConditionalInterface.cc
index 2610e00..e8e5a7d 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsConditionalInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsConditionalInterface.cc
@@ -192,15 +192,6 @@
 JSBool get_enabledAttribute(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  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);
 
@@ -223,15 +214,6 @@
 JSBool set_enabledAttribute(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  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);
 
@@ -256,15 +238,6 @@
 JSBool get_disabledAttribute(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  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);
 
@@ -287,15 +260,6 @@
 JSBool set_disabledAttribute(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  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);
 
@@ -332,15 +296,6 @@
     NOTREACHED();
     return false;
   }
-  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);
 
@@ -371,15 +326,6 @@
     NOTREACHED();
     return false;
   }
-  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);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsConstructorWithArgumentsInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsConstructorWithArgumentsInterface.cc
index 756c696..09ccf2a 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsConstructorWithArgumentsInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsConstructorWithArgumentsInterface.cc
@@ -191,15 +191,6 @@
 JSBool get_longArg(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  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);
 
@@ -222,15 +213,6 @@
 JSBool get_booleanArg(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  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);
 
@@ -253,15 +235,6 @@
 JSBool get_stringArg(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  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);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsDOMStringTestInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsDOMStringTestInterface.cc
index 7092da5..7fb410b 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsDOMStringTestInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsDOMStringTestInterface.cc
@@ -189,15 +189,6 @@
 JSBool get_property(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  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);
 
@@ -220,15 +211,6 @@
 JSBool set_property(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  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);
 
@@ -251,15 +233,6 @@
 JSBool get_readOnlyProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  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);
 
@@ -282,15 +255,6 @@
 JSBool get_readOnlyTokenProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  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);
 
@@ -313,15 +277,6 @@
 JSBool get_nullIsEmptyProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  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);
 
@@ -344,15 +299,6 @@
 JSBool set_nullIsEmptyProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  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);
 
@@ -375,15 +321,6 @@
 JSBool get_undefinedIsEmptyProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  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);
 
@@ -406,15 +343,6 @@
 JSBool set_undefinedIsEmptyProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  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);
 
@@ -437,15 +365,6 @@
 JSBool get_nullableUndefinedIsEmptyProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  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);
 
@@ -468,15 +387,6 @@
 JSBool set_nullableUndefinedIsEmptyProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  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);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsDerivedGetterSetterInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsDerivedGetterSetterInterface.cc
index 7c48cfc..9d7f281 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsDerivedGetterSetterInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsDerivedGetterSetterInterface.cc
@@ -371,15 +371,6 @@
 JSBool get_length(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  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);
 
@@ -402,15 +393,6 @@
 JSBool get_propertyOnDerivedClass(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  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);
 
@@ -433,15 +415,6 @@
 JSBool set_propertyOnDerivedClass(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  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);
 
@@ -476,15 +449,6 @@
     NOTREACHED();
     return false;
   }
-  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);
 
@@ -537,15 +501,6 @@
     NOTREACHED();
     return false;
   }
-  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);
 
@@ -604,15 +559,6 @@
     NOTREACHED();
     return false;
   }
-  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);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsDerivedInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsDerivedInterface.cc
index 5e26084..8d64be2 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsDerivedInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsDerivedInterface.cc
@@ -191,15 +191,6 @@
 JSBool get_derivedAttribute(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  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);
 
@@ -234,15 +225,6 @@
     NOTREACHED();
     return false;
   }
-  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);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsDisabledInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsDisabledInterface.cc
index 5e3f995..3f3d4a7 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsDisabledInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsDisabledInterface.cc
@@ -191,15 +191,6 @@
 JSBool get_disabledProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  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);
 
@@ -222,15 +213,6 @@
 JSBool set_disabledProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  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);
 
@@ -265,15 +247,6 @@
     NOTREACHED();
     return false;
   }
-  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);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsEnumerationInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsEnumerationInterface.cc
index 38c99f1..c54bde2 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsEnumerationInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsEnumerationInterface.cc
@@ -200,15 +200,6 @@
 JSBool get_enumProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  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);
 
@@ -231,15 +222,6 @@
 JSBool set_enumProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  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);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsExceptionObjectInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsExceptionObjectInterface.cc
index d9f10ef..64e3ca6 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsExceptionObjectInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsExceptionObjectInterface.cc
@@ -190,15 +190,6 @@
 JSBool get_error(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<ExceptionObjectInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -221,15 +212,6 @@
 JSBool get_message(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<ExceptionObjectInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsExceptionsInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsExceptionsInterface.cc
index 6ab9aab..5f1a396 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsExceptionsInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsExceptionsInterface.cc
@@ -191,15 +191,6 @@
 JSBool get_attributeThrowsException(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<ExceptionsInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -222,15 +213,6 @@
 JSBool set_attributeThrowsException(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<ExceptionsInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -265,15 +247,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<ExceptionsInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsExtendedIDLAttributesInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsExtendedIDLAttributesInterface.cc
index e197c87..07cceda 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsExtendedIDLAttributesInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsExtendedIDLAttributesInterface.cc
@@ -201,15 +201,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<ExtendedIDLAttributesInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -217,10 +208,10 @@
       WrapperPrivate::GetFromObject(context, object);
   ExtendedIDLAttributesInterface* impl =
       wrapper_private->wrappable<ExtendedIDLAttributesInterface>().get();
-  MozjsGlobalEnvironment* callwith_global_environment =
+  MozjsGlobalEnvironment* global_environment =
       static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
 
-  impl->CallWithSettings(callwith_global_environment->GetEnvironmentSettings());
+  impl->CallWithSettings(global_environment->GetEnvironmentSettings());
   result_value.set(JS::UndefinedHandleValue);
   return !exception_state.is_exception_set();
 }
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsGarbageCollectionTestInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsGarbageCollectionTestInterface.cc
index 9ba778e..d2cfb40 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsGarbageCollectionTestInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsGarbageCollectionTestInterface.cc
@@ -202,15 +202,6 @@
 JSBool get_previous(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<GarbageCollectionTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -233,15 +224,6 @@
 JSBool set_previous(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<GarbageCollectionTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -264,15 +246,6 @@
 JSBool get_next(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<GarbageCollectionTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -295,15 +268,6 @@
 JSBool set_next(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<GarbageCollectionTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsGlobalInterfaceParent.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsGlobalInterfaceParent.cc
index a0ddac4..d742500 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsGlobalInterfaceParent.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsGlobalInterfaceParent.cc
@@ -201,15 +201,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<GlobalInterfaceParent>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsIndexedGetterInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsIndexedGetterInterface.cc
index 66f6497..752334e 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsIndexedGetterInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsIndexedGetterInterface.cc
@@ -295,15 +295,6 @@
 JSBool get_length(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<IndexedGetterInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -338,15 +329,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<IndexedGetterInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -393,15 +375,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<IndexedGetterInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -454,15 +427,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<IndexedGetterInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsInterfaceWithUnsupportedProperties.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsInterfaceWithUnsupportedProperties.cc
index 56ad080..a578e9c 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsInterfaceWithUnsupportedProperties.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsInterfaceWithUnsupportedProperties.cc
@@ -189,15 +189,6 @@
 JSBool get_supportedAttribute(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<InterfaceWithUnsupportedProperties>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsNamedGetterInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsNamedGetterInterface.cc
index 51f1f54..918f252 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsNamedGetterInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsNamedGetterInterface.cc
@@ -307,15 +307,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NamedGetterInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -362,15 +353,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NamedGetterInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -423,15 +405,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NamedGetterInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsNamedIndexedGetterInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsNamedIndexedGetterInterface.cc
index 2715fd9..2965f0f 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsNamedIndexedGetterInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsNamedIndexedGetterInterface.cc
@@ -371,15 +371,6 @@
 JSBool get_length(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NamedIndexedGetterInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -402,15 +393,6 @@
 JSBool get_propertyOnBaseClass(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NamedIndexedGetterInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -433,15 +415,6 @@
 JSBool set_propertyOnBaseClass(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NamedIndexedGetterInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -476,15 +449,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NamedIndexedGetterInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -537,15 +501,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NamedIndexedGetterInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -604,15 +559,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NamedIndexedGetterInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -665,15 +611,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NamedIndexedGetterInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -732,15 +669,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NamedIndexedGetterInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsNestedPutForwardsInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsNestedPutForwardsInterface.cc
index 9b732fe..69fab04 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsNestedPutForwardsInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsNestedPutForwardsInterface.cc
@@ -193,15 +193,6 @@
 JSBool get_nestedForwardingAttribute(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NestedPutForwardsInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -224,15 +215,6 @@
 JSBool set_nestedForwardingAttribute(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NestedPutForwardsInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsNullableTypesTestInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsNullableTypesTestInterface.cc
index e7533d8..c0010f4 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsNullableTypesTestInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsNullableTypesTestInterface.cc
@@ -193,15 +193,6 @@
 JSBool get_nullableBooleanProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NullableTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -224,15 +215,6 @@
 JSBool set_nullableBooleanProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NullableTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -255,15 +237,6 @@
 JSBool get_nullableNumericProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NullableTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -286,15 +259,6 @@
 JSBool set_nullableNumericProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NullableTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -317,15 +281,6 @@
 JSBool get_nullableStringProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NullableTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -348,15 +303,6 @@
 JSBool set_nullableStringProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NullableTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -379,15 +325,6 @@
 JSBool get_nullableObjectProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NullableTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -410,15 +347,6 @@
 JSBool set_nullableObjectProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NullableTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -453,15 +381,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NullableTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -508,15 +427,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NullableTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -551,15 +461,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NullableTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -606,15 +507,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NullableTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -649,15 +541,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NullableTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -704,15 +587,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NullableTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -747,15 +621,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NullableTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -802,15 +667,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NullableTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsNumericTypesTestInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsNumericTypesTestInterface.cc
index eb604d8..4bf1c6e 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsNumericTypesTestInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsNumericTypesTestInterface.cc
@@ -189,15 +189,6 @@
 JSBool get_byteProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -220,15 +211,6 @@
 JSBool set_byteProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -251,15 +233,6 @@
 JSBool get_octetProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -282,15 +255,6 @@
 JSBool set_octetProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -313,15 +277,6 @@
 JSBool get_shortProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -344,15 +299,6 @@
 JSBool set_shortProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -375,15 +321,6 @@
 JSBool get_unsignedShortProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -406,15 +343,6 @@
 JSBool set_unsignedShortProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -437,15 +365,6 @@
 JSBool get_longProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -468,15 +387,6 @@
 JSBool set_longProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -499,15 +409,6 @@
 JSBool get_unsignedLongProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -530,15 +431,6 @@
 JSBool set_unsignedLongProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -561,15 +453,6 @@
 JSBool get_longLongProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -592,15 +475,6 @@
 JSBool set_longLongProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -623,15 +497,6 @@
 JSBool get_unsignedLongLongProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -654,15 +519,6 @@
 JSBool set_unsignedLongLongProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -685,15 +541,6 @@
 JSBool get_doubleProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -716,15 +563,6 @@
 JSBool set_doubleProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -747,15 +585,6 @@
 JSBool get_unrestrictedDoubleProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -778,15 +607,6 @@
 JSBool set_unrestrictedDoubleProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -821,15 +641,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -876,15 +687,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -919,15 +721,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -974,15 +767,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -1017,15 +801,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -1072,15 +847,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -1127,15 +893,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -1170,15 +927,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -1213,15 +961,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -1268,15 +1007,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -1311,15 +1041,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -1366,15 +1087,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -1409,15 +1121,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -1464,15 +1167,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -1507,15 +1201,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -1562,15 +1247,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -1617,15 +1293,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -1660,15 +1327,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -1703,15 +1361,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -1758,15 +1407,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<NumericTypesTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsObjectTypeBindingsInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsObjectTypeBindingsInterface.cc
index 77631f6..1b20995 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsObjectTypeBindingsInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsObjectTypeBindingsInterface.cc
@@ -201,15 +201,6 @@
 JSBool get_arbitraryObject(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<ObjectTypeBindingsInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -232,15 +223,6 @@
 JSBool set_arbitraryObject(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<ObjectTypeBindingsInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -263,15 +245,6 @@
 JSBool get_baseInterface(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<ObjectTypeBindingsInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -294,15 +267,6 @@
 JSBool get_derivedInterface(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<ObjectTypeBindingsInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -325,15 +289,6 @@
 JSBool set_derivedInterface(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<ObjectTypeBindingsInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -356,15 +311,6 @@
 JSBool get_objectProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<ObjectTypeBindingsInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -387,15 +333,6 @@
 JSBool set_objectProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<ObjectTypeBindingsInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsOperationsTestInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsOperationsTestInterface.cc
index 293e7cd..b30eecb 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsOperationsTestInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsOperationsTestInterface.cc
@@ -205,15 +205,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<OperationsTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -248,15 +239,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<OperationsTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -291,15 +273,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<OperationsTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -344,15 +317,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<OperationsTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -451,15 +415,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<OperationsTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -518,15 +473,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<OperationsTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -555,15 +501,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<OperationsTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -610,15 +547,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<OperationsTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -665,15 +593,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<OperationsTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -744,15 +663,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<OperationsTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -828,10 +738,6 @@
       MozjsGlobalEnvironment* global_environment =
           static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
       WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-      JS::RootedObject object(context);
-      if (arg.isObject()) {
-        object = JSVAL_TO_OBJECT(arg);
-      }
       if (arg.isNumber()) {
         return fcn_overloadedFunction2(
                   context, argc, vp);
@@ -853,12 +759,8 @@
       MozjsGlobalEnvironment* global_environment =
           static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
       WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-      JS::RootedObject object(context);
-      if (arg.isObject()) {
-        object = JSVAL_TO_OBJECT(arg);
-      }
       if (arg.isObject() ? wrapper_factory->DoesObjectImplementInterface(
-              object, base::GetTypeId<ArbitraryInterface>()) :
+              JSVAL_TO_OBJECT(arg), base::GetTypeId<ArbitraryInterface>()) :
               false) {
         return fcn_overloadedFunction5(
                   context, argc, vp);
@@ -893,15 +795,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<OperationsTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -948,15 +841,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<OperationsTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -999,10 +883,6 @@
       MozjsGlobalEnvironment* global_environment =
           static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
       WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-      JS::RootedObject object(context);
-      if (arg.isObject()) {
-        object = JSVAL_TO_OBJECT(arg);
-      }
       if (arg.isNullOrUndefined()) {
         return fcn_overloadedNullable2(
                   context, argc, vp);
@@ -1037,15 +917,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<OperationsTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -1080,15 +951,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<OperationsTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -1137,15 +999,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<OperationsTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -1232,15 +1085,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<OperationsTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -1287,15 +1131,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<OperationsTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -1324,15 +1159,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<OperationsTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -1379,15 +1205,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<OperationsTestInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsPutForwardsInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsPutForwardsInterface.cc
index dfc7ffa..870e3a3 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsPutForwardsInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsPutForwardsInterface.cc
@@ -193,15 +193,6 @@
 JSBool get_forwardingAttribute(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<PutForwardsInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -224,15 +215,6 @@
 JSBool set_forwardingAttribute(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<PutForwardsInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsSingleOperationInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsSingleOperationInterface.cc
index 36e73dd..aaf933d 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsSingleOperationInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsSingleOperationInterface.cc
@@ -27,7 +27,6 @@
 #include "cobalt/script/logging_exception_state.h"
 #include "cobalt/script/mozjs/conversion_helpers.h"
 #include "cobalt/script/mozjs/mozjs_callback_interface.h"
-#include "cobalt/script/mozjs/util/exception_helpers.h"
 #include "third_party/mozjs/js/src/jsapi.h"
 #include "third_party/mozjs/js/src/jscntxt.h"
 
@@ -41,7 +40,6 @@
 using cobalt::script::mozjs::FromJSValue;
 using cobalt::script::mozjs::GetCallableForCallbackInterface;
 using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::util::GetExceptionString;
 }  // namespace
 
 namespace cobalt {
@@ -60,13 +58,13 @@
     bool* had_exception) const {
   bool success = false;
   base::optional<int32_t > cobalt_return_value;
-  JSAutoRequest auto_request(context_);
   JSExceptionState* previous_exception_state = JS_SaveExceptionState(context_);
 
   // This could be set to NULL if it was garbage collected.
   JS::RootedObject implementing_object(context_, implementing_object_.Get());
   DLOG_IF(WARNING, !implementing_object) << "Implementing object is NULL.";
   if (implementing_object) {
+    JSAutoRequest auto_request(context_);
     JSAutoCompartment auto_compartment(context_, implementing_object);
 
     // Get callable object.
@@ -92,8 +90,7 @@
       DCHECK(function);
       success = JS::Call(context_, this_value, function, kNumArguments, args,
                          return_value.address());
-      DLOG_IF(WARNING, !success) << "Exception in callback: "
-                                 << GetExceptionString(context_);
+      DLOG_IF(WARNING, !success) << "Exception in callback.";
       if (success) {
         LoggingExceptionState exception_state;
         FromJSValue(context_, return_value, 0, &exception_state,
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsStaticPropertiesInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsStaticPropertiesInterface.cc
index 82a5868..02ad356 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsStaticPropertiesInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsStaticPropertiesInterface.cc
@@ -425,10 +425,6 @@
       MozjsGlobalEnvironment* global_environment =
           static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
       WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-      JS::RootedObject object(context);
-      if (arg.isObject()) {
-        object = JSVAL_TO_OBJECT(arg);
-      }
       if (arg.isNumber()) {
         return staticfcn_staticFunction2(
                   context, argc, vp);
@@ -450,12 +446,8 @@
       MozjsGlobalEnvironment* global_environment =
           static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
       WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-      JS::RootedObject object(context);
-      if (arg.isObject()) {
-        object = JSVAL_TO_OBJECT(arg);
-      }
       if (arg.isObject() ? wrapper_factory->DoesObjectImplementInterface(
-              object, base::GetTypeId<ArbitraryInterface>()) :
+              JSVAL_TO_OBJECT(arg), base::GetTypeId<ArbitraryInterface>()) :
               false) {
         return staticfcn_staticFunction5(
                   context, argc, vp);
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsStringifierAttributeInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsStringifierAttributeInterface.cc
index 428506c..b1b8349 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsStringifierAttributeInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsStringifierAttributeInterface.cc
@@ -189,15 +189,6 @@
 JSBool get_theStringifierAttribute(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<StringifierAttributeInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -220,15 +211,6 @@
 JSBool set_theStringifierAttribute(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<StringifierAttributeInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsStringifierOperationInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsStringifierOperationInterface.cc
index 8d33990..6b6dd67 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsStringifierOperationInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsStringifierOperationInterface.cc
@@ -201,15 +201,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<StringifierOperationInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsTargetInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsTargetInterface.cc
index 82de15a..644db8f 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsTargetInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsTargetInterface.cc
@@ -201,15 +201,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<TargetInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -238,15 +229,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<TargetInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsUnionTypesInterface.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsUnionTypesInterface.cc
index e6cf73b..5c9b31f 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsUnionTypesInterface.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsUnionTypesInterface.cc
@@ -197,15 +197,6 @@
 JSBool get_unionProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<UnionTypesInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -228,15 +219,6 @@
 JSBool set_unionProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<UnionTypesInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -259,15 +241,6 @@
 JSBool get_unionWithNullableMemberProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<UnionTypesInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -290,15 +263,6 @@
 JSBool set_unionWithNullableMemberProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<UnionTypesInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -321,15 +285,6 @@
 JSBool get_nullableUnionProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<UnionTypesInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -352,15 +307,6 @@
 JSBool set_nullableUnionProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<UnionTypesInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -383,15 +329,6 @@
 JSBool get_unionBaseProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<UnionTypesInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -414,15 +351,6 @@
 JSBool set_unionBaseProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<UnionTypesInterface>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
diff --git a/src/cobalt/bindings/generated/mozjs/testing/MozjsWindow.cc b/src/cobalt/bindings/generated/mozjs/testing/MozjsWindow.cc
index 212ecca..0a5ddd1 100644
--- a/src/cobalt/bindings/generated/mozjs/testing/MozjsWindow.cc
+++ b/src/cobalt/bindings/generated/mozjs/testing/MozjsWindow.cc
@@ -382,15 +382,6 @@
 JSBool get_windowProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<Window>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -413,15 +404,6 @@
 JSBool set_windowProperty(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<Window>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -444,15 +426,6 @@
 JSBool get_window(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<Window>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -487,15 +460,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<Window>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
@@ -503,12 +467,12 @@
       WrapperPrivate::GetFromObject(context, object);
   Window* impl =
       wrapper_private->wrappable<Window>().get();
-  MozjsGlobalEnvironment* callwith_global_environment =
+  MozjsGlobalEnvironment* global_environment =
       static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
 
   if (!exception_state.is_exception_set()) {
     ToJSValue(context,
-              impl->GetStackTrace(callwith_global_environment->GetStackTrace()),
+              impl->GetStackTrace(global_environment->GetStackTrace()),
               &result_value);
   }
   if (!exception_state.is_exception_set()) {
@@ -532,15 +496,6 @@
     NOTREACHED();
     return false;
   }
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<Window>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
   MozjsExceptionState exception_state(context);
   JS::RootedValue result_value(context);
 
diff --git a/src/cobalt/bindings/mozjs/code_generator.py b/src/cobalt/bindings/mozjs/code_generator.py
index c99c10a..12ac5fb 100644
--- a/src/cobalt/bindings/mozjs/code_generator.py
+++ b/src/cobalt/bindings/mozjs/code_generator.py
@@ -42,8 +42,8 @@
   def inherits_interface(self, interface_name, arg):
     return ('%s.isObject() ?'
             ' wrapper_factory->DoesObjectImplementInterface(\n'
-            '              object, base::GetTypeId<%s>()) :\n'
-            '              false') % (arg, interface_name)
+            '              JSVAL_TO_OBJECT(%s), base::GetTypeId<%s>()) :\n'
+            '              false') % (arg, arg, interface_name)
 
   def is_number(self, arg):
     return '%s.isNumber()' % arg
diff --git a/src/cobalt/bindings/mozjs/templates/callback-interface.cc.template b/src/cobalt/bindings/mozjs/templates/callback-interface.cc.template
index 895e453..f307bbc 100644
--- a/src/cobalt/bindings/mozjs/templates/callback-interface.cc.template
+++ b/src/cobalt/bindings/mozjs/templates/callback-interface.cc.template
@@ -20,7 +20,6 @@
 #include "cobalt/script/logging_exception_state.h"
 #include "cobalt/script/mozjs/conversion_helpers.h"
 #include "cobalt/script/mozjs/mozjs_callback_interface.h"
-#include "cobalt/script/mozjs/util/exception_helpers.h"
 #include "third_party/mozjs/js/src/jsapi.h"
 #include "third_party/mozjs/js/src/jscntxt.h"
 {% endblock includes %}
@@ -31,7 +30,6 @@
 using cobalt::script::mozjs::FromJSValue;
 using cobalt::script::mozjs::GetCallableForCallbackInterface;
 using cobalt::script::mozjs::ToJSValue;
-using cobalt::script::mozjs::util::GetExceptionString;
 {% endblock using_directives %}
 
 {% block implementation %}
@@ -58,13 +56,13 @@
 {% if overload.type != 'void' %}
   {{overload.type}} cobalt_return_value;
 {% endif %}
-  JSAutoRequest auto_request(context_);
   JSExceptionState* previous_exception_state = JS_SaveExceptionState(context_);
 
   // This could be set to NULL if it was garbage collected.
   JS::RootedObject implementing_object(context_, implementing_object_.Get());
   DLOG_IF(WARNING, !implementing_object) << "Implementing object is NULL.";
   if (implementing_object) {
+    JSAutoRequest auto_request(context_);
     JSAutoCompartment auto_compartment(context_, implementing_object);
 
     // Get callable object.
@@ -92,8 +90,7 @@
       DCHECK(function);
       success = JS::Call(context_, this_value, function, kNumArguments, args,
                          return_value.address());
-      DLOG_IF(WARNING, !success) << "Exception in callback: "
-                                 << GetExceptionString(context_);
+      DLOG_IF(WARNING, !success) << "Exception in callback.";
 {% if overload.type != 'void' %}
       if (success) {
         LoggingExceptionState exception_state;
diff --git a/src/cobalt/bindings/mozjs/templates/interface.cc.template b/src/cobalt/bindings/mozjs/templates/interface.cc.template
index b92a526..eb4e553 100644
--- a/src/cobalt/bindings/mozjs/templates/interface.cc.template
+++ b/src/cobalt/bindings/mozjs/templates/interface.cc.template
@@ -15,7 +15,6 @@
  #}
 {% from 'macros.cc.template' import add_extra_arguments %}
 {% from 'macros.cc.template' import call_cobalt_function %}
-{% from 'macros.cc.template' import check_if_object_implements_interface with context %}
 {% from 'macros.cc.template' import constructor_implementation with context %}
 {% from 'macros.cc.template' import function_implementation with context %}
 {% from 'macros.cc.template' import get_impl_class_instance %}
@@ -459,7 +458,6 @@
 JSBool get_{{attribute.idl_name}}(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JS::MutableHandleValue vp) {
-{{ check_if_object_implements_interface() }}
 {{ nonstatic_function_prologue(impl_class) }}
 {% endif %}
 {{ call_cobalt_function(impl_class, attribute.type,
@@ -482,7 +480,6 @@
 JSBool set_{{attribute.idl_name}}(
     JSContext* context, JS::HandleObject object, JS::HandleId id,
     JSBool strict, JS::MutableHandleValue vp) {
-{{ check_if_object_implements_interface() }}
 {{ nonstatic_function_prologue(impl_class)}}
 {% endif %} {#- attribute.is_static #}
 {{ set_attribute_implementation(attribute, impl_class) -}}
diff --git a/src/cobalt/bindings/mozjs/templates/macros.cc.template b/src/cobalt/bindings/mozjs/templates/macros.cc.template
index 58b5669..f9153c7 100644
--- a/src/cobalt/bindings/mozjs/templates/macros.cc.template
+++ b/src/cobalt/bindings/mozjs/templates/macros.cc.template
@@ -15,21 +15,6 @@
  #}
 
 {#
- # Checks if object implements interface.
- #}
-{% macro check_if_object_implements_interface() %}
-  MozjsGlobalEnvironment* global_environment =
-      static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-  WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-  if (!wrapper_factory->DoesObjectImplementInterface(
-        object, base::GetTypeId<{{impl_class}}>())) {
-    MozjsExceptionState exception(context);
-    exception.SetSimpleException(script::kDoesNotImplementInterface);
-    return false;
-  }
-{%- endmacro %}
-
-{#
  # Function body for operation bindings.
  # Parameters:
  #     operation: The operation context object
@@ -51,7 +36,6 @@
     NOTREACHED();
     return false;
   }
-{{ check_if_object_implements_interface() }}
 {{ nonstatic_function_prologue(impl_class) }}
 {% endif %}
 {% call(arguments_list) extract_arguments(operation) %}
@@ -272,10 +256,10 @@
  #}
 {% macro add_extra_arguments(arguments_list, raises_exception, call_with) %}
 {% if call_with %}
-  MozjsGlobalEnvironment* callwith_global_environment =
+  MozjsGlobalEnvironment* global_environment =
       static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
-{% do arguments_list.insert(
-    0, 'callwith_global_environment->Get%s()'|format(call_with)) %}
+{% do arguments_list.insert(0,
+                            'global_environment->Get%s()'|format(call_with)) %}
 {% endif %}
 {% do arguments_list.append('&exception_state') if raises_exception %}
 {%- endmacro %}
@@ -388,10 +372,6 @@
       MozjsGlobalEnvironment* global_environment =
           static_cast<MozjsGlobalEnvironment*>(JS_GetContextPrivate(context));
       WrapperFactory* wrapper_factory = global_environment->wrapper_factory();
-      JS::RootedObject object(context);
-      if (arg.isObject()) {
-        object = JSVAL_TO_OBJECT(arg);
-      }
 {% endif %}
 {% for test, overload in resolution_tests %}
       if ({{test("arg")}}) {
diff --git a/src/cobalt/bindings/testing/bindings_test_base.h b/src/cobalt/bindings/testing/bindings_test_base.h
index f634699..25e9ea2 100644
--- a/src/cobalt/bindings/testing/bindings_test_base.h
+++ b/src/cobalt/bindings/testing/bindings_test_base.h
@@ -25,7 +25,6 @@
 #include "cobalt/script/global_environment.h"
 #include "cobalt/script/javascript_engine.h"
 #include "cobalt/script/source_code.h"
-#include "cobalt/script/wrappable.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -72,17 +71,6 @@
     return global_environment_->EvaluateScript(source, out_result);
   }
 
-  bool EvaluateScript(const std::string& script,
-                      const scoped_refptr<script::Wrappable>& owning_object,
-                      base::optional<script::OpaqueHandleHolder::Reference>*
-                          out_opaque_handle = NULL) {
-    scoped_refptr<script::SourceCode> source =
-        script::SourceCode::CreateSourceCode(
-            script, base::SourceLocation("[object BindingsTestBase]", 1, 1));
-    return global_environment_->EvaluateScript(source, owning_object,
-                                               out_opaque_handle);
-  }
-
   void CollectGarbage() { engine_->CollectGarbage(); }
 
  protected:
diff --git a/src/cobalt/bindings/testing/evaluate_script_test.cc b/src/cobalt/bindings/testing/evaluate_script_test.cc
deleted file mode 100644
index 61d74fa..0000000
--- a/src/cobalt/bindings/testing/evaluate_script_test.cc
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright 2016 Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "cobalt/bindings/testing/arbitrary_interface.h"
-#include "cobalt/bindings/testing/bindings_test_base.h"
-#include "cobalt/bindings/testing/object_type_bindings_interface.h"
-#include "cobalt/bindings/testing/script_object_owner.h"
-
-using cobalt::script::OpaqueHandleHolder;
-using ::testing::_;
-using ::testing::Invoke;
-using ::testing::Return;
-using ::testing::StrictMock;
-
-namespace cobalt {
-namespace bindings {
-namespace testing {
-
-namespace {
-class EvaluateScriptTest
-    : public InterfaceBindingsTest<ObjectTypeBindingsInterface> {};
-}  // namespace
-
-TEST_F(EvaluateScriptTest, TwoArguments) {
-  std::string result;
-
-  std::string script =
-      "function fib(n) {\n"
-      "  if (n <= 0) {\n"
-      "    return 0;\n"
-      "  } else if (n == 1) {\n"
-      "    return 1;\n"
-      "  } else {\n"
-      "    return fib(n - 1) + fib(n - 2);\n"
-      "  }\n"
-      "}\n"
-      "fib(8)";
-  EXPECT_TRUE(EvaluateScript(script, &result));
-  EXPECT_STREQ("21", result.c_str());
-}
-
-TEST_F(EvaluateScriptTest, ThreeArguments) {
-  std::string script =
-      "function fib(n) {\n"
-      "  if (n <= 0) {\n"
-      "    return 0;\n"
-      "  } else if (n == 1) {\n"
-      "    return 1;\n"
-      "  } else {\n"
-      "    return fib(n - 1) + fib(n - 2);\n"
-      "  }\n"
-      "}\n"
-      "fib(8)";
-
-  // Call with null out handle.
-  scoped_refptr<StrictMock<ArbitraryInterface> > arbitrary_interface_mock(
-      new StrictMock<ArbitraryInterface>());
-  EXPECT_TRUE(EvaluateScript(script, arbitrary_interface_mock, NULL));
-
-  // Call with non-null, but unset optional handle.
-  base::optional<OpaqueHandleHolder::Reference> opaque_handle;
-  EXPECT_TRUE(EvaluateScript(script, arbitrary_interface_mock, &opaque_handle));
-  ASSERT_FALSE(opaque_handle->referenced_object().IsNull());
-
-  EXPECT_CALL(test_mock(), object_property())
-      .WillOnce(Return(&opaque_handle->referenced_object()));
-  std::string result;
-  EXPECT_TRUE(EvaluateScript("test.objectProperty == 21;", &result));
-  EXPECT_STREQ("true", result.c_str());
-}
-
-}  // namespace testing
-}  // namespace bindings
-}  // namespace cobalt
diff --git a/src/cobalt/bindings/testing/object_type_bindings_test.cc b/src/cobalt/bindings/testing/object_type_bindings_test.cc
index e80d859..7c5cbf0 100644
--- a/src/cobalt/bindings/testing/object_type_bindings_test.cc
+++ b/src/cobalt/bindings/testing/object_type_bindings_test.cc
@@ -273,18 +273,6 @@
   EXPECT_THAT(result.c_str(), StartsWith("TypeError:"));
 }
 
-TEST_F(UserObjectBindingsTest, CallWrongObjectType) {
-  std::string result;
-  EXPECT_TRUE(EvaluateScript("var obj = new Object()", NULL));
-  EXPECT_TRUE(EvaluateScript("var arb = new ArbitraryInterface()", NULL));
-
-  // Calling a function with the wrong object type is a type error.
-  EXPECT_FALSE(
-      EvaluateScript("obj.arbitraryFunction = arb.arbitraryFunction;\n"
-                     "obj.arbitraryFunction();", &result));
-  EXPECT_THAT(result.c_str(), StartsWith("TypeError:"));
-}
-
 }  // namespace testing
 }  // namespace bindings
 }  // namespace cobalt
diff --git a/src/cobalt/bindings/testing/testing.gyp b/src/cobalt/bindings/testing/testing.gyp
index e9f6492..0286dcd 100644
--- a/src/cobalt/bindings/testing/testing.gyp
+++ b/src/cobalt/bindings/testing/testing.gyp
@@ -129,7 +129,6 @@
         'dependent_interface_test.cc',
         'dom_string_bindings_test.cc',
         'enumeration_bindings_test.cc',
-        'evaluate_script_test.cc',
         'exceptions_bindings_test.cc',
         'extended_attributes_test.cc',
         'garbage_collection_test.cc',
diff --git a/src/cobalt/browser/application.cc b/src/cobalt/browser/application.cc
index 470eda6..72e730e 100644
--- a/src/cobalt/browser/application.cc
+++ b/src/cobalt/browser/application.cc
@@ -20,7 +20,6 @@
 #include <vector>
 
 #include "base/command_line.h"
-#include "base/debug/trace_event.h"
 #include "base/lazy_instance.h"
 #include "base/logging.h"
 #include "base/path_service.h"
@@ -51,34 +50,18 @@
 #endif  // defined(__LB_SHELL__FOR_RELEASE__)
 #include "lbshell/src/lb_memory_pages.h"
 #endif  // defined(__LB_SHELL__)
-#if defined(OS_STARBOARD)
-#include "nb/analytics/memory_tracker.h"
-#include "nb/analytics/memory_tracker_impl.h"
-#include "starboard/configuration.h"
-#include "starboard/log.h"
-#endif  // defined(OS_STARBOARD)
 
 namespace cobalt {
 namespace browser {
 
 namespace {
 const int kStatUpdatePeriodMs = 1000;
-#if defined(COBALT_BUILD_TYPE_GOLD)
-const int kLiteStatUpdatePeriodMs = 1000;
-#else
-const int kLiteStatUpdatePeriodMs = 16;
-#endif
 
 const char kDefaultURL[] = "https://www.youtube.com/tv";
 
 #if defined(ENABLE_REMOTE_DEBUGGING)
 int GetRemoteDebuggingPort() {
-#if defined(SB_OVERRIDE_DEFAULT_REMOTE_DEBUGGING_PORT)
-  const int kDefaultRemoteDebuggingPort =
-      SB_OVERRIDE_DEFAULT_REMOTE_DEBUGGING_PORT;
-#else
   const int kDefaultRemoteDebuggingPort = 9222;
-#endif  // defined(SB_OVERRIDE_DEFAULT_REMOTE_DEBUGGING_PORT)
   int remote_debugging_port = kDefaultRemoteDebuggingPort;
 #if defined(ENABLE_DEBUG_COMMAND_LINE_SWITCHES)
   CommandLine* command_line = CommandLine::ForCurrentProcess();
@@ -117,19 +100,6 @@
   }
   return webdriver_port;
 }
-
-std::string GetWebDriverListenIp() {
-  // The default port on which the webdriver server should listen for incoming
-  // connections.
-  std::string webdriver_listen_ip =
-      webdriver::WebDriverModule::kDefaultListenIp;
-  CommandLine* command_line = CommandLine::ForCurrentProcess();
-  if (command_line->HasSwitch(switches::kWebDriverListenIp)) {
-    webdriver_listen_ip =
-        command_line->GetSwitchValueASCII(switches::kWebDriverListenIp);
-  }
-  return webdriver_listen_ip;
-}
 #endif  // ENABLE_DEBUG_COMMAND_LINE_SWITCHES
 #endif  // ENABLE_WEBDRIVER
 
@@ -194,31 +164,6 @@
 }
 #endif  // ENABLE_DEBUG_COMMAND_LINE_SWITCHES
 
-std::string GetMinLogLevelString() {
-#if defined(ENABLE_DEBUG_COMMAND_LINE_SWITCHES)
-  CommandLine* command_line = CommandLine::ForCurrentProcess();
-  if (command_line->HasSwitch(switches::kMinLogLevel)) {
-    return command_line->GetSwitchValueASCII(switches::kMinLogLevel);
-  }
-#endif  // ENABLE_DEBUG_COMMAND_LINE_SWITCHES
-  return "info";
-}
-
-int StringToLogLevel(const std::string& log_level) {
-  if (log_level == "info") {
-    return logging::LOG_INFO;
-  } else if (log_level == "warning") {
-    return logging::LOG_WARNING;
-  } else if (log_level == "error") {
-    return logging::LOG_ERROR;
-  } else if (log_level == "fatal") {
-    return logging::LOG_FATAL;
-  } else {
-    NOTREACHED() << "Unrecognized logging level: " << log_level;
-    return logging::LOG_INFO;
-  }
-}
-
 void SetIntegerIfSwitchIsSet(const char* switch_name, int* output) {
   if (CommandLine::ForCurrentProcess()->HasSwitch(switch_name)) {
     int32 out;
@@ -242,8 +187,6 @@
                           &options->scratch_surface_cache_size_in_bytes);
   SetIntegerIfSwitchIsSet(browser::switches::kSkiaCacheSizeInBytes,
                           &options->skia_cache_size_in_bytes);
-  SetIntegerIfSwitchIsSet(browser::switches::kSoftwareSurfaceCacheSizeInBytes,
-                          &options->software_surface_cache_size_in_bytes);
 }
 
 void ApplyCommandLineSettingsToWebModuleOptions(WebModule::Options* options) {
@@ -315,18 +258,7 @@
     : message_loop_(MessageLoop::current()),
       quit_closure_(quit_closure),
       start_time_(base::TimeTicks::Now()),
-      stats_update_timer_(true, true),
-      lite_stats_update_timer_(true, true) {
-  // Check to see if a timed_trace has been set, indicating that we should
-  // begin a timed trace upon startup.
-  base::TimeDelta trace_duration = GetTimedTraceDuration();
-  if (trace_duration != base::TimeDelta()) {
-    trace_event::TraceToFileForDuration(
-        FilePath(FILE_PATH_LITERAL("timed_trace.json")), trace_duration);
-  }
-
-  TRACE_EVENT0("cobalt::browser", "Application::Application()");
-
+      stats_update_timer_(true, true) {
   DCHECK(MessageLoop::current());
   DCHECK_EQ(MessageLoop::TYPE_UI, MessageLoop::current()->type());
 
@@ -335,16 +267,17 @@
 
   RegisterUserLogs();
 
-  // Set the minimum logging level, if specified on the command line.
-  logging::SetMinLogLevel(StringToLogLevel(GetMinLogLevelString()));
-
   stats_update_timer_.Start(
       FROM_HERE, base::TimeDelta::FromMilliseconds(kStatUpdatePeriodMs),
       base::Bind(&Application::UpdatePeriodicStats, base::Unretained(this)));
-  lite_stats_update_timer_.Start(
-      FROM_HERE, base::TimeDelta::FromMilliseconds(kLiteStatUpdatePeriodMs),
-      base::Bind(&Application::UpdatePeriodicLiteStats,
-                 base::Unretained(this)));
+
+  // Check to see if a timed_trace has been set, indicating that we should
+  // begin a timed trace upon startup.
+  base::TimeDelta trace_duration = GetTimedTraceDuration();
+  if (trace_duration != base::TimeDelta()) {
+    trace_event::TraceToFileForDuration(
+        FilePath(FILE_PATH_LITERAL("timed_trace.json")), trace_duration);
+  }
 
   // Get the initial URL.
   GURL initial_url = GetInitialURL();
@@ -441,20 +374,6 @@
     DLOG(INFO) << "Use ShellRawVideoDecoderStub";
     options.media_module_options.use_video_decoder_stub = true;
   }
-  if (command_line->HasSwitch(switches::kMemoryTracker)) {
-#if defined(OS_STARBOARD)
-    using nb::analytics::MemoryTrackerPrintThread;
-    using nb::analytics::MemoryTracker;
-
-    DLOG(INFO) << "Using MemoryTracking";
-    MemoryTracker* memory_tracker = MemoryTracker::Get();
-    memory_tracker->InstallGlobalTrackingHooks();
-    memory_tracker_print_thread_ = CreateDebugPrintThread(memory_tracker);
-#else
-    DLOG(INFO)
-        << "Memory tracker is not enabled on non-starboard builds.";
-#endif
-  }
 #endif  // ENABLE_DEBUG_COMMAND_LINE_SWITCHES
 
   base::optional<math::Size> viewport_size;
@@ -511,18 +430,14 @@
       base::Bind(&Application::OnApplicationEvent, base::Unretained(this));
   event_dispatcher_.AddEventCallback(system_window::ApplicationEvent::TypeId(),
                                      application_event_callback_);
-  deep_link_event_callback_ =
-      base::Bind(&Application::OnDeepLinkEvent, base::Unretained(this));
-  event_dispatcher_.AddEventCallback(base::DeepLinkEvent::TypeId(),
-                                     deep_link_event_callback_);
 
 #if defined(ENABLE_WEBDRIVER)
 #if defined(ENABLE_DEBUG_COMMAND_LINE_SWITCHES)
   if (command_line->HasSwitch(switches::kEnableWebDriver)) {
+    int webdriver_port = GetWebDriverPort();
     web_driver_module_.reset(new webdriver::WebDriverModule(
-        GetWebDriverPort(), GetWebDriverListenIp(),
-        base::Bind(&BrowserModule::CreateSessionDriver,
-                   base::Unretained(browser_module_.get())),
+        webdriver_port, base::Bind(&BrowserModule::CreateSessionDriver,
+                                   base::Unretained(browser_module_.get())),
         base::Bind(&BrowserModule::RequestScreenshotToBuffer,
                    base::Unretained(browser_module_.get())),
         base::Bind(&BrowserModule::SetProxy,
@@ -557,13 +472,6 @@
 }
 
 Application::~Application() {
-#if defined(OS_STARBOARD)
-  // explicitly reset here because the destruction of the object is complex
-  // and involves a thread join. If this were to hang the app then having
-  // the destruction at this point gives a real file-line number and a place
-  // for the debugger to land.
-  memory_tracker_print_thread_.reset(NULL);
-#endif
   // Unregister event callbacks.
   event_dispatcher_.RemoveEventCallback(account::AccountEvent::TypeId(),
                                         account_event_callback_);
@@ -571,8 +479,6 @@
                                         network_event_callback_);
   event_dispatcher_.RemoveEventCallback(
       system_window::ApplicationEvent::TypeId(), application_event_callback_);
-  event_dispatcher_.RemoveEventCallback(
-      base::DeepLinkEvent::TypeId(), deep_link_event_callback_);
 
   app_status_ = kShutDownAppStatus;
 }
@@ -593,7 +499,6 @@
 }
 
 void Application::OnAccountEvent(const base::Event* event) {
-  TRACE_EVENT0("cobalt::browser", "Application::OnAccountEvent()");
   const account::AccountEvent* account_event =
       base::polymorphic_downcast<const account::AccountEvent*>(event);
   if (account_event->type() == account::AccountEvent::kSignedIn) {
@@ -608,7 +513,6 @@
 }
 
 void Application::OnNetworkEvent(const base::Event* event) {
-  TRACE_EVENT0("cobalt::browser", "Application::OnNetworkEvent()");
   DCHECK(network_event_thread_checker_.CalledOnValidThread());
   const network::NetworkEvent* network_event =
       base::polymorphic_downcast<const network::NetworkEvent*>(event);
@@ -629,7 +533,6 @@
 }
 
 void Application::OnApplicationEvent(const base::Event* event) {
-  TRACE_EVENT0("cobalt::browser", "Application::OnApplicationEvent()");
   DCHECK(application_event_thread_checker_.CalledOnValidThread());
   const system_window::ApplicationEvent* app_event =
       base::polymorphic_downcast<const system_window::ApplicationEvent*>(event);
@@ -660,18 +563,7 @@
   }
 }
 
-void Application::OnDeepLinkEvent(const base::Event* event) {
-  TRACE_EVENT0("cobalt::browser", "Application::OnDeepLinkEvent()");
-  const base::DeepLinkEvent* deep_link_event =
-      base::polymorphic_downcast<const base::DeepLinkEvent*>(event);
-  // TODO: Remove this when terminal application states are properly handled.
-  if (deep_link_event->IsH5vccLink()) {
-    browser_module_->Navigate(GURL(deep_link_event->link()));
-  }
-}
-
 void Application::WebModuleRecreated() {
-  TRACE_EVENT0("cobalt::browser", "Application::WebModuleRecreated()");
 #if defined(ENABLE_WEBDRIVER)
   if (web_driver_module_) {
     web_driver_module_->OnWindowRecreated();
@@ -748,12 +640,7 @@
   }
 }
 
-void Application::UpdatePeriodicLiteStats() {
-  c_val_stats_.app_lifetime = base::TimeTicks::Now() - start_time_;
-}
-
 void Application::UpdatePeriodicStats() {
-  TRACE_EVENT0("cobalt::browser", "Application::UpdatePeriodicStats()");
 #if defined(__LB_SHELL__)
   bool memory_stats_updated = false;
 #if !defined(__LB_SHELL__FOR_RELEASE__)
@@ -792,6 +679,8 @@
     *c_val_stats_.used_gpu_memory = used_gpu_memory;
   }
 #endif
+
+  c_val_stats_.app_lifetime = base::TimeTicks::Now() - start_time_;
 }
 
 }  // namespace browser
diff --git a/src/cobalt/browser/application.h b/src/cobalt/browser/application.h
index a118a1c..5abba84 100644
--- a/src/cobalt/browser/application.h
+++ b/src/cobalt/browser/application.h
@@ -33,11 +33,6 @@
 #include "cobalt/debug/debug_web_server.h"
 #endif
 
-#if defined(OS_STARBOARD)
-#include "nb/analytics/memory_tracker.h"
-#include "nb/scoped_ptr.h"
-#endif
-
 namespace cobalt {
 namespace browser {
 
@@ -72,9 +67,6 @@
   // Called to handle an application event.
   void OnApplicationEvent(const base::Event* event);
 
-  // Called to handle a deep link event.
-  void OnDeepLinkEvent(const base::Event* event);
-
   // Called when a navigation occurs in the BrowserModule.
   void WebModuleRecreated();
 
@@ -96,7 +88,6 @@
   base::EventCallback account_event_callback_;
   base::EventCallback network_event_callback_;
   base::EventCallback application_event_callback_;
-  base::EventCallback deep_link_event_callback_;
 
   // Thread checkers to ensure that callbacks for network and application events
   // always occur on the same thread.
@@ -159,7 +150,6 @@
   void UpdateAndMaybeRegisterUserAgent();
 
   void UpdatePeriodicStats();
-  void UpdatePeriodicLiteStats();
 
   static ssize_t available_memory_;
   static int64 lifetime_in_ms_;
@@ -177,14 +167,6 @@
   CValStats c_val_stats_;
 
   base::Timer stats_update_timer_;
-  base::Timer lite_stats_update_timer_;
-
-#if defined(OS_STARBOARD)
-  // This thread (when active) will print out memory statistics of the engine.
-  // It is activated by the command line -memory_tracker.
-  nb::scoped_ptr<nb::analytics::MemoryTrackerPrintThread>
-      memory_tracker_print_thread_;
-#endif
 };
 
 // Factory method for creating an application.  It should be implemented
diff --git a/src/cobalt/browser/browser.gyp b/src/cobalt/browser/browser.gyp
index 3572dbb..1115bbd 100644
--- a/src/cobalt/browser/browser.gyp
+++ b/src/cobalt/browser/browser.gyp
@@ -75,7 +75,6 @@
         '<(DEPTH)/cobalt/webdriver/webdriver.gyp:webdriver',
         '<(DEPTH)/cobalt/xhr/xhr.gyp:xhr',
         '<(DEPTH)/googleurl/googleurl.gyp:googleurl',
-        '<(DEPTH)/nb/nb.gyp:nb',
         'browser_bindings.gyp:bindings',
         'screen_shot_writer',
       ],
@@ -83,6 +82,11 @@
         ['enable_about_scheme == 1', {
           'defines': [ 'ENABLE_ABOUT_SCHEME' ],
         }],
+        ['OS=="starboard" or (OS=="lb_shell" and target_arch == "ps3")', {
+          'dependencies': [
+            '<(DEPTH)/nb/nb.gyp:nb',
+          ],
+        }],
       ],
     },
 
diff --git a/src/cobalt/browser/browser_bindings.gyp b/src/cobalt/browser/browser_bindings.gyp
index e73cd8b..329d8e2 100644
--- a/src/cobalt/browser/browser_bindings.gyp
+++ b/src/cobalt/browser/browser_bindings.gyp
@@ -179,8 +179,6 @@
         '../web_animations/KeyframeEffectReadOnly.idl',
 
         '../webdriver/ScriptExecutor.idl',
-        '../webdriver/ScriptExecutorParams.idl',
-        '../webdriver/ScriptExecutorResult.idl',
 
         '../xhr/XMLHttpRequest.idl',
         '../xhr/XMLHttpRequestEventTarget.idl',
diff --git a/src/cobalt/browser/browser_module.cc b/src/cobalt/browser/browser_module.cc
index 9a730cc..a6df61e 100644
--- a/src/cobalt/browser/browser_module.cc
+++ b/src/cobalt/browser/browser_module.cc
@@ -16,16 +16,12 @@
 
 #include "cobalt/browser/browser_module.h"
 
-#include <vector>
-
 #include "base/bind.h"
 #include "base/command_line.h"
 #include "base/debug/trace_event.h"
 #include "base/logging.h"
 #include "base/path_service.h"
 #include "base/stl_util.h"
-#include "base/string_number_conversions.h"
-#include "base/string_split.h"
 #include "cobalt/base/cobalt_paths.h"
 #include "cobalt/base/source_location.h"
 #include "cobalt/base/tokens.h"
@@ -37,7 +33,6 @@
 #include "cobalt/dom/keycode.h"
 #include "cobalt/h5vcc/h5vcc.h"
 #include "cobalt/input/input_device_manager_fuzzer.h"
-#include "nb/memory_scope.h"
 
 namespace cobalt {
 namespace browser {
@@ -59,15 +54,6 @@
     "activated or not.  While activated, input will constantly and randomly be "
     "generated and passed directly into the main web module.";
 
-const char kSetMediaConfigCommand[] = "set_media_config";
-const char kSetMediaConfigCommandShortHelp[] =
-    "Sets media module configuration.";
-const char kSetMediaConfigCommandLongHelp[] =
-    "This can be called in the form of set_media_config('name=value'), where "
-    "name is a string and value is an int.  Refer to the implementation of "
-    "MediaModule::SetConfiguration() on individual platform for settings "
-    "supported on the particular platform.";
-
 #if defined(ENABLE_SCREENSHOT)
 // Command to take a screenshot.
 const char kScreenshotCommand[] = "screenshot";
@@ -136,6 +122,10 @@
           renderer_module_.pipeline()->GetResourceProvider())),
       array_buffer_cache_(new dom::ArrayBuffer::Cache(3 * 1024 * 1024)),
 #endif  // defined(ENABLE_GPU_ARRAY_BUFFER_ALLOCATOR)
+      media_module_(media::MediaModule::Create(
+          system_window, renderer_module_.render_target()->GetSize(),
+          renderer_module_.pipeline()->GetResourceProvider(),
+          options.media_module_options)),
       network_module_(&storage_manager_, system_window->event_dispatcher(),
                       options.network_module_options),
       render_tree_combiner_(&renderer_module_,
@@ -151,10 +141,6 @@
           kFuzzerToggleCommand,
           base::Bind(&BrowserModule::OnFuzzerToggle, base::Unretained(this)),
           kFuzzerToggleCommandShortHelp, kFuzzerToggleCommandLongHelp)),
-      ALLOW_THIS_IN_INITIALIZER_LIST(set_media_config_command_handler_(
-          kSetMediaConfigCommand,
-          base::Bind(&BrowserModule::OnSetMediaConfig, base::Unretained(this)),
-          kSetMediaConfigCommandShortHelp, kSetMediaConfigCommandLongHelp)),
 #if defined(ENABLE_SCREENSHOT)
       ALLOW_THIS_IN_INITIALIZER_LIST(screenshot_command_handler_(
           kScreenshotCommand,
@@ -168,25 +154,6 @@
       has_resumed_(true, false),
       will_quit_(false),
       suspended_(false) {
-  TRACE_EVENT0("cobalt::browser", "BrowserModule::BrowserModule()");
-  // All allocations for media will be tracked by "Media" memory scope.
-  {
-    TRACK_MEMORY_SCOPE("Media");
-    math::Size output_size = renderer_module_.render_target()->GetSize();
-    if (system_window->GetVideoPixelRatio() != 1.f) {
-      output_size.set_width(
-          static_cast<int>(static_cast<float>(output_size.width()) *
-                           system_window->GetVideoPixelRatio()));
-      output_size.set_height(
-          static_cast<int>(static_cast<float>(output_size.height()) *
-                           system_window->GetVideoPixelRatio()));
-    }
-    media_module_ = (media::MediaModule::Create(
-        system_window, output_size,
-        renderer_module_.pipeline()->GetResourceProvider(),
-        options.media_module_options));
-  }
-
   // Setup our main web module to have the H5VCC API injected into it.
   DCHECK(!ContainsKey(web_module_options_.injected_window_attributes, "h5vcc"));
   h5vcc::H5vcc::Settings h5vcc_settings;
@@ -235,7 +202,6 @@
 }
 
 void BrowserModule::Navigate(const GURL& url) {
-  TRACE_EVENT0("cobalt::browser", "BrowserModule::Navigate()");
   web_module_loaded_.Reset();
 
   // Always post this as a task in case this is being called from the WebModule.
@@ -244,7 +210,6 @@
 }
 
 void BrowserModule::Reload() {
-  TRACE_EVENT0("cobalt::browser", "BrowserModule::Reload()");
   DCHECK_EQ(MessageLoop::current(), self_message_loop_);
   DCHECK(web_module_);
   web_module_->ExecuteJavascript(
@@ -253,7 +218,6 @@
 }
 
 void BrowserModule::NavigateInternal(const GURL& url) {
-  TRACE_EVENT0("cobalt::browser", "BrowserModule::NavigateInternal()");
   DCHECK_EQ(MessageLoop::current(), self_message_loop_);
 
   // First try the registered handlers (e.g. for h5vcc://). If one of these
@@ -277,15 +241,6 @@
                        renderer_module_.pipeline()->GetResourceProvider(),
                        kLayoutMaxRefreshFrequencyInHz));
 
-#if defined(OS_STARBOARD)
-#if SB_HAS(1_CORE)
-  // Wait until the splash screen is ready before loading the main web module.
-  // This prevents starvation of the splash screen module and decoding of the
-  // splash screen image(s).
-  splash_screen_->WaitUntilReady();
-#endif
-#endif
-
   // Create new WebModule.
 #if !defined(COBALT_FORCE_CSP)
   web_module_options_.csp_insecure_allowed_token =
@@ -301,14 +256,6 @@
       array_buffer_allocator_.get();
   options.dom_settings_options.array_buffer_cache = array_buffer_cache_.get();
 #endif  // defined(ENABLE_GPU_ARRAY_BUFFER_ALLOCATOR)
-#if defined(ENABLE_FAKE_MICROPHONE)
-  if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kFakeMicrophone) ||
-      CommandLine::ForCurrentProcess()->HasSwitch(switches::kInputFuzzer)) {
-    options.dom_settings_options.microphone_options.enable_fake_microphone =
-        true;
-  }
-#endif  // defined(ENABLE_FAKE_MICROPHONE)
-
   options.image_cache_capacity_multiplier_when_playing_video =
       COBALT_IMAGE_CACHE_CAPACITY_MULTIPLIER_WHEN_PLAYING_VIDEO;
   web_module_.reset(new WebModule(
@@ -325,7 +272,6 @@
 }
 
 void BrowserModule::OnLoad() {
-  TRACE_EVENT0("cobalt::browser", "BrowserModule::OnLoad()");
   // Repost to our own message loop if necessary. This also prevents
   // asynchonrous access to this object by |web_module_| during destruction.
   if (MessageLoop::current() != self_message_loop_) {
@@ -338,10 +284,11 @@
   web_module_loaded_.Signal();
 }
 
+#if defined(ENABLE_WEBDRIVER)
 bool BrowserModule::WaitForLoad(const base::TimeDelta& timeout) {
-  TRACE_EVENT0("cobalt::browser", "BrowserModule::WaitForLoad()");
   return web_module_loaded_.TimedWait(timeout);
 }
+#endif
 
 #if defined(ENABLE_SCREENSHOT)
 void BrowserModule::RequestScreenshotToFile(const FilePath& path,
@@ -427,30 +374,6 @@
   }
 }
 
-void BrowserModule::OnSetMediaConfig(const std::string& config) {
-  if (MessageLoop::current() != self_message_loop_) {
-    self_message_loop_->PostTask(
-        FROM_HERE,
-        base::Bind(&BrowserModule::OnSetMediaConfig, weak_this_, config));
-    return;
-  }
-
-  std::vector<std::string> tokens;
-  base::SplitString(config, '=', &tokens);
-
-  int value;
-  if (tokens.size() != 2 || !base::StringToInt(tokens[1], &value)) {
-    LOG(WARNING) << "Media configuration '" << config << "' is not in the"
-                 << " form of '<string name>=<int value>'.";
-    return;
-  }
-  if (media_module_->SetConfiguration(tokens[0], value)) {
-    LOG(INFO) << "Successfully setting " << tokens[0] << " to " << value;
-  } else {
-    LOG(WARNING) << "Failed to set " << tokens[0] << " to " << value;
-  }
-}
-
 void BrowserModule::QueueOnDebugConsoleRenderTreeProduced(
     const browser::WebModule::LayoutResults& layout_results) {
   TRACE_EVENT0("cobalt::browser",
@@ -469,11 +392,6 @@
                "BrowserModule::OnDebugConsoleRenderTreeProduced()");
   DCHECK_EQ(MessageLoop::current(), self_message_loop_);
 
-  if (debug_console_->GetMode() == debug::DebugHub::kDebugConsoleOff) {
-    render_tree_combiner_.UpdateDebugConsoleRenderTree(base::nullopt);
-    return;
-  }
-
   render_tree_combiner_.UpdateDebugConsoleRenderTree(renderer::Submission(
       layout_results.render_tree, layout_results.layout_time));
 }
@@ -517,7 +435,6 @@
 }
 
 void BrowserModule::OnError(const GURL& url, const std::string& error) {
-  TRACE_EVENT0("cobalt::browser", "BrowserModule::OnError()");
   LOG(ERROR) << error;
   std::string url_string = "h5vcc://network-failure";
 
@@ -528,7 +445,6 @@
 }
 
 bool BrowserModule::FilterKeyEvent(const dom::KeyboardEvent::Data& event) {
-  TRACE_EVENT0("cobalt::browser", "BrowserModule::FilterKeyEvent()");
   // Check for hotkeys first. If it is a hotkey, no more processing is needed.
   if (!FilterKeyEventForHotkeys(event)) {
     return false;
@@ -594,10 +510,7 @@
   return false;
 }
 
-void BrowserModule::DestroySplashScreen() {
-  TRACE_EVENT0("cobalt::browser", "BrowserModule::DestroySplashScreen()");
-  splash_screen_.reset(NULL);
-}
+void BrowserModule::DestroySplashScreen() { splash_screen_.reset(NULL); }
 
 #if defined(ENABLE_WEBDRIVER)
 scoped_ptr<webdriver::SessionDriver> BrowserModule::CreateSessionDriver(
@@ -669,12 +582,10 @@
 }
 
 void BrowserModule::Suspend() {
-  TRACE_EVENT0("cobalt::browser", "BrowserModule::Suspend()");
   DCHECK_EQ(MessageLoop::current(), self_message_loop_);
   DCHECK(!suspended_);
 
-// First suspend all our web modules which implies that they will release their
-// resource provider and all resources created through it.
+// First release the resource provider used by all of our web modules.
 #if defined(ENABLE_DEBUG_CONSOLE)
   if (debug_console_) {
     debug_console_->Suspend();
@@ -712,7 +623,6 @@
 }
 
 void BrowserModule::Resume() {
-  TRACE_EVENT0("cobalt::browser", "BrowserModule::Resume()");
   DCHECK_EQ(MessageLoop::current(), self_message_loop_);
   DCHECK(suspended_);
 
@@ -743,8 +653,6 @@
 
 #if defined(OS_STARBOARD)
 void BrowserModule::OnRendererSubmissionRasterized() {
-  TRACE_EVENT0("cobalt::browser",
-               "BrowserModule::OnRendererSubmissionRasterized()");
   if (!is_rendered_) {
     // Hide the system splash screen when the first render has completed.
     is_rendered_ = true;
diff --git a/src/cobalt/browser/browser_module.h b/src/cobalt/browser/browser_module.h
index 82322b3..669738a 100644
--- a/src/cobalt/browser/browser_module.h
+++ b/src/cobalt/browser/browser_module.h
@@ -17,8 +17,8 @@
 #ifndef COBALT_BROWSER_BROWSER_MODULE_H_
 #define COBALT_BROWSER_BROWSER_MODULE_H_
 
+#include <list>
 #include <string>
-#include <vector>
 
 #include "base/memory/scoped_ptr.h"
 #include "base/synchronization/lock.h"
@@ -71,7 +71,7 @@
 
   // Type for a collection of URL handler callbacks that can potentially handle
   // a URL before using it to initialize a new WebModule.
-  typedef std::vector<URLHandler::URLHandlerCallback> URLHandlerCollection;
+  typedef std::list<URLHandler::URLHandlerCallback> URLHandlerCollection;
 
   BrowserModule(const GURL& url, system_window::SystemWindow* system_window,
                 account::AccountManager* account_manager,
@@ -127,10 +127,12 @@
   // Called when the WebModule's Window.onload event is fired.
   void OnLoad();
 
+#if defined(ENABLE_WEBDRIVER)
   // Wait for the onload event to be fired with the specified timeout. If the
   // webmodule is not currently loading the document, this will return
   // immediately.
   bool WaitForLoad(const base::TimeDelta& timeout);
+#endif
 
   // Glue function to deal with the production of the main render tree,
   // and will manage handing it off to the renderer.
@@ -180,10 +182,6 @@
   // Toggles the input fuzzer on/off.  Ignores the parameter.
   void OnFuzzerToggle(const std::string&);
 
-  // Use the config in the form of '<string name>=<int value>' to call
-  // MediaModule::SetConfiguration().
-  void OnSetMediaConfig(const std::string& config);
-
   // Glue function to deal with the production of the debug console render tree,
   // and will manage handing it off to the renderer.
   void QueueOnDebugConsoleRenderTreeProduced(
@@ -301,12 +299,9 @@
 
   TraceManager trace_manager;
 
-  // Command handler object for toggling the input fuzzer on/off.
+  // Command handler object for toggline the input fuzzer on/off.
   base::ConsoleCommandManager::CommandHandler fuzzer_toggle_command_handler_;
 
-  // Command handler object for setting media module config.
-  base::ConsoleCommandManager::CommandHandler set_media_config_command_handler_;
-
 #if defined(ENABLE_SCREENSHOT)
   // Command handler object for screenshot command from the debug console.
   base::ConsoleCommandManager::CommandHandler screenshot_command_handler_;
diff --git a/src/cobalt/browser/cobalt.gyp b/src/cobalt/browser/cobalt.gyp
index f5bcfe9..4f73099 100644
--- a/src/cobalt/browser/cobalt.gyp
+++ b/src/cobalt/browser/cobalt.gyp
@@ -94,17 +94,4 @@
     },
 
   ],
-  'conditions': [
-    ['final_executable_type == "shared_library"', {
-      'targets': [
-        {
-          'target_name': 'cobalt_bin',
-          'type': 'executable',
-          'dependencies': [
-            'cobalt',
-          ],
-        },
-      ],
-    }],
-  ],
 }
diff --git a/src/cobalt/browser/debug_console/debug_console.css b/src/cobalt/browser/debug_console/debug_console.css
index 3df005f..afac884 100644
--- a/src/cobalt/browser/debug_console/debug_console.css
+++ b/src/cobalt/browser/debug_console/debug_console.css
@@ -10,7 +10,6 @@
   right: 0;
   background-color: rgba(128, 128, 128, 0.6);
   color: #FFFFFF;
-  display: none;
 }
 
 #hud {
@@ -36,7 +35,6 @@
   background-color: rgba(128, 128, 128, 0.6);
   color: #FFFFFF;
   overflow: hidden;
-  display: none;
 }
 
 #messageContainerFrame {
diff --git a/src/cobalt/browser/debug_console/debug_console.js b/src/cobalt/browser/debug_console/debug_console.js
index 7c2f8a5..58282d5 100644
--- a/src/cobalt/browser/debug_console/debug_console.js
+++ b/src/cobalt/browser/debug_console/debug_console.js
@@ -258,7 +258,6 @@
   createCommandInput();
   createMessageLog();
   createDebuggerClient();
-  showHud(false);
   showConsole(false);
   createConsoleValues();
   initDebugCommands();
diff --git a/src/cobalt/browser/render_tree_combiner.cc b/src/cobalt/browser/render_tree_combiner.cc
index 6a076e1..364158b 100644
--- a/src/cobalt/browser/render_tree_combiner.cc
+++ b/src/cobalt/browser/render_tree_combiner.cc
@@ -45,7 +45,7 @@
 }
 
 void RenderTreeCombiner::UpdateDebugConsoleRenderTree(
-    const base::optional<renderer::Submission>& render_tree_submission) {
+    const renderer::Submission& render_tree_submission) {
   debug_console_render_tree_ = render_tree_submission;
   SubmitToRenderer();
 }
@@ -105,7 +105,7 @@
 }
 
 void RenderTreeCombiner::UpdateDebugConsoleRenderTree(
-    const base::optional<renderer::Submission>& render_tree_submission) {
+    const renderer::Submission& render_tree_submission) {
   UNREFERENCED_PARAMETER(render_tree_submission);
 }
 #endif  // ENABLE_DEBUG_CONSOLE
diff --git a/src/cobalt/browser/render_tree_combiner.h b/src/cobalt/browser/render_tree_combiner.h
index 75bca9b..44f38d6 100644
--- a/src/cobalt/browser/render_tree_combiner.h
+++ b/src/cobalt/browser/render_tree_combiner.h
@@ -40,7 +40,7 @@
 
   // Update the debug console render tree.
   void UpdateDebugConsoleRenderTree(
-      const base::optional<renderer::Submission>& render_tree_submission);
+      const renderer::Submission& render_tree_submission);
 
 #if defined(ENABLE_DEBUG_CONSOLE)
   bool render_debug_console() const { return render_debug_console_; }
diff --git a/src/cobalt/browser/splash_screen.cc b/src/cobalt/browser/splash_screen.cc
index 0ccc88c..a2a3d97 100644
--- a/src/cobalt/browser/splash_screen.cc
+++ b/src/cobalt/browser/splash_screen.cc
@@ -30,17 +30,14 @@
         render_tree_produced_callback,
     network::NetworkModule* network_module, const math::Size& window_dimensions,
     render_tree::ResourceProvider* resource_provider, float layout_refresh_rate,
-    const SplashScreen::Options& options)
-    : render_tree_produced_callback_(render_tree_produced_callback)
-    , is_ready_(true, false) {
+    const SplashScreen::Options& options) {
   WebModule::Options web_module_options;
   web_module_options.name = "SplashScreenWebModule";
 
   web_module_.reset(new WebModule(
-      options.url,
-      base::Bind(&SplashScreen::OnRenderTreeProduced, base::Unretained(this)),
+      options.url, render_tree_produced_callback,
       base::Bind(&SplashScreen::OnError, base::Unretained(this)),
-      base::Bind(&SplashScreen::OnWindowClosed, base::Unretained(this)),
+      base::Closure(), /* window_close_callback */
       &stub_media_module_, network_module, window_dimensions, resource_provider,
       layout_refresh_rate, web_module_options));
 }
@@ -50,19 +47,5 @@
   web_module_->Resume(resource_provider);
 }
 
-void SplashScreen::WaitUntilReady() {
-  is_ready_.Wait();
-}
-
-void SplashScreen::OnRenderTreeProduced(
-    const browser::WebModule::LayoutResults& layout_results) {
-  is_ready_.Signal();
-  render_tree_produced_callback_.Run(layout_results);
-}
-
-void SplashScreen::OnWindowClosed() {
-  is_ready_.Signal();
-}
-
 }  // namespace browser
 }  // namespace cobalt
diff --git a/src/cobalt/browser/splash_screen.h b/src/cobalt/browser/splash_screen.h
index 7888fa8..a105fe4 100644
--- a/src/cobalt/browser/splash_screen.h
+++ b/src/cobalt/browser/splash_screen.h
@@ -21,7 +21,6 @@
 
 #include "base/logging.h"
 #include "base/memory/scoped_ptr.h"
-#include "base/synchronization/waitable_event.h"
 #include "cobalt/browser/web_module.h"
 #include "cobalt/media/media_module_stub.h"
 #include "googleurl/src/gurl.h"
@@ -49,28 +48,13 @@
   void Suspend();
   void Resume(render_tree::ResourceProvider* resource_provider);
 
-  // Block the caller until the splash screen is ready to be rendered.
-  void WaitUntilReady();
-
  private:
-  void OnRenderTreeProduced(
-      const browser::WebModule::LayoutResults& layout_results);
-
   void OnError(const GURL& /* url */, const std::string& error) {
-    is_ready_.Signal();
     LOG(ERROR) << error;
   }
 
-  void OnWindowClosed();
-
   media::MediaModuleStub stub_media_module_;
   scoped_ptr<WebModule> web_module_;
-
-  WebModule::OnRenderTreeProducedCallback render_tree_produced_callback_;
-
-  // Signalled once the splash screen has produced its first render tree or
-  // an error occurred.
-  base::WaitableEvent is_ready_;
 };
 
 }  // namespace browser
diff --git a/src/cobalt/browser/stack_size_constants.h b/src/cobalt/browser/stack_size_constants.h
deleted file mode 100644
index c4e62ea..0000000
--- a/src/cobalt/browser/stack_size_constants.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2016 Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef COBALT_BROWSER_STACK_SIZE_CONSTANTS_H_
-#define COBALT_BROWSER_STACK_SIZE_CONSTANTS_H_
-
-#include "cobalt/base/address_sanitizer.h"
-
-namespace cobalt {
-namespace browser {
-#if defined(COBALT_BUILD_TYPE_DEBUG)
-  // Non-optimized builds require a bigger stack size.
-  const size_t kBaseStackSize = 2 * 1024 * 1024;
-#elif defined(COBALT_BUILD_TYPE_DEVEL)
-  // Devel builds require a slightly bigger stack size.
-  const size_t kBaseStackSize = 448 * 1024;
-#else
-  const size_t kBaseStackSize = 384 * 1024;
-#endif
-  const size_t kWebModuleStackSize =
-      kBaseStackSize + base::kAsanAdditionalStackSize;
-}  // namespace browser
-}  // namespace cobalt
-
-#endif  // COBALT_BROWSER_STACK_SIZE_CONSTANTS_H_
diff --git a/src/cobalt/browser/switches.cc b/src/cobalt/browser/switches.cc
index 91e0e6d..a402253 100644
--- a/src/cobalt/browser/switches.cc
+++ b/src/cobalt/browser/switches.cc
@@ -45,10 +45,6 @@
 // Additional base directory for accessing web files via file://.
 const char kExtraWebFileDir[] = "web_file_path";
 
-// If this flag is set, fake microphone will be used to mock the user voice
-// input.
-const char kFakeMicrophone[] = "fake_microphone";
-
 // Setting this switch causes all certificate errors to be ignored.
 const char kIgnoreCertificateErrors[] = "ignore_certificate_errors";
 
@@ -56,9 +52,6 @@
 // taken from an external input device (like a controller).
 const char kInputFuzzer[] = "input_fuzzer";
 
-// Set the minimum logging level: info|warning|error|fatal.
-const char kMinLogLevel[] = "min_log_level";
-
 // Use the NullAudioStreamer. Audio will be decoded but will not play back. No
 // audio output library will be initialized or used.
 const char kNullAudioStreamer[] = "null_audio_streamer";
@@ -101,13 +94,6 @@
 // Port that the WebDriver server should be listening on.
 const char kWebDriverPort[] = "webdriver_port";
 
-// IP that the WebDriver server should be listening on.
-// (INADDR_ANY if unspecified).
-const char kWebDriverListenIp[] = "webdriver_listen_ip";
-
-// Enables memory tracking by installing the memory tracker on startup.
-const char kMemoryTracker[] = "memory_tracker";
-
 #endif  // ENABLE_DEBUG_COMMAND_LINE_SWITCHES
 
 // Determines the capacity of the image cache which manages image surfaces
@@ -140,13 +126,6 @@
 // setting may affect GPU memory usage.
 const char kSkiaCacheSizeInBytes[] = "skia_cache_size_in_bytes";
 
-// Only relevant if you are using the Blitter API.
-// Determines the capacity of the software surface cache, which is used to
-// cache all surfaces that are rendered via a software rasterizer to avoid
-// re-rendering them.
-const char kSoftwareSurfaceCacheSizeInBytes[] =
-    "software_surface_cache_size_in_bytes";
-
 // Determines the capacity of the surface cache.  The surface cache tracks which
 // render tree nodes are being re-used across frames and stores the nodes that
 // are most CPU-expensive to render into surfaces.  While it depends on the
diff --git a/src/cobalt/browser/switches.h b/src/cobalt/browser/switches.h
index 7ef6a28..7d463d0 100644
--- a/src/cobalt/browser/switches.h
+++ b/src/cobalt/browser/switches.h
@@ -29,10 +29,8 @@
 extern const char kDisableWebmVp9[];
 extern const char kEnableWebDriver[];
 extern const char kExtraWebFileDir[];
-extern const char kFakeMicrophone[];
 extern const char kIgnoreCertificateErrors[];
 extern const char kInputFuzzer[];
-extern const char kMinLogLevel[];
 extern const char kNullAudioStreamer[];
 extern const char kNullSavegame[];
 extern const char kPartialLayout[];
@@ -44,8 +42,6 @@
 extern const char kVideoContainerSizeOverride[];
 extern const char kVideoDecoderStub[];
 extern const char kWebDriverPort[];
-extern const char kWebDriverListenIp[];
-extern const char kMemoryTracker[];
 #endif  // ENABLE_DEBUG_COMMAND_LINE_SWITCHES
 
 extern const char kImageCacheSizeInBytes[];
@@ -53,7 +49,6 @@
 extern const char kRemoteTypefaceCacheSizeInBytes[];
 extern const char kScratchSurfaceCacheSizeInBytes[];
 extern const char kSkiaCacheSizeInBytes[];
-extern const char kSoftwareSurfaceCacheSizeInBytes[];
 extern const char kSurfaceCacheSizeInBytes[];
 extern const char kViewport[];
 
diff --git a/src/cobalt/browser/testdata/mtm-demo/README.txt b/src/cobalt/browser/testdata/mtm-demo/README.txt
deleted file mode 100644
index 5368357..0000000
--- a/src/cobalt/browser/testdata/mtm-demo/README.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-These test whether the presence of the CSS MTM filter affect the path taken in
-rendering the video replaced box. <normal.html> has a video tag without the
-filter, while <mtm.html> has a video with the filter applied to it.
-
-To test locally, all 3 of mtm.html, normal.html and progressive.mp4 have to be
-hosted on a server that supports HTTP RANGE header, which is needed for video to
-be loaded correctly. One such server is the extension to the Python
-SimpleHTTPServer at https://github.com/danvk/RangeHTTPServer (run from this
-directory, "cobalt/src/cobalt/browser/testdata/mtm-demo/"):
-
-  $ sudo apt-get install python-pip
-  $ pip install --user rangehttpserver
-  $ python -m RangeHTTPServer
-
-Test video without the MTM filter (should render normally, run from cobalt/src
-directory):
-
-  $ out/linux-x64x11_debug/cobalt --csp_mode=disable --allow_http --url=http://localhost:8000/normal.html
-
-Test the video with the MTM filter (should NOT render in its bounding box in the
-document, and in the presence of the correct rasterizer, should be rendered onto
-its own texture off the main UI layout):
-
-  $ out/linux-x64x11_debug/cobalt --csp_mode=disable --allow_http --url=http://localhost:8000/mtm.html
-
-There is also the option of using the google cloud utils and the cloud storage
-to publish these files, as is done with the other demos. Care should be taken
-that nothing confidential gets uploaded with these files. "public-read" is
-needed in the ACL because linking and video srcing does not work without it.
-
-A bucket specifically for this demo already exists at "gs://yt-cobalt-mtm-test",
-but uploading to it often might be problematic since buckets are not verison-
-controlled:
-
-  $ gsutil cp -a public-read cobalt/browser/testdata/mtm-demo/normal.html cobalt/browser/testdata/mtm-demo/mtm.html cobalt/browser/testdata/mtm-demo/progressive.mp4 gs://yt-cobalt-mtm-test/
-  $ out/linux-x64x11_debug/cobalt --csp_mode=disable --url=https://storage.googleapis.com/yt-cobalt-mtm-test/mtm.html
-  $ out/linux-x64x11_debug/cobalt --csp_mode=disable --url=https://storage.googleapis.com/yt-cobalt-mtm-test/normal.html
diff --git a/src/cobalt/browser/testdata/mtm-demo/mtm.html b/src/cobalt/browser/testdata/mtm-demo/mtm.html
deleted file mode 100644
index 6877674..0000000
--- a/src/cobalt/browser/testdata/mtm-demo/mtm.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <title>mtm Demo</title>
-  <style>
-    body {
-      background-color: rgb(255, 255, 255);
-      color: #0047ab;
-      font-size: 100px;
-    }
-    .vid {
-      margin: 100px;
-      border: 10px solid blue;
-      width: 960px;
-      height: 540px;
-      filter: -cobalt-mtm(url(projection.msh), 100deg 60deg,
-                              matrix3d(1, 0, 0, 0,
-                                       0, 1, 0, 0,
-                                       0, 0, 1, 0,
-                                       0, 0, 0, 1));
-    }
-  </style>
-</head>
-<body>
-  <div>Mtm Demo!!!</div>
-  <video autoplay loop id="v" class="vid" src="progressive.mp4"></video>
-</body>
-</html>
diff --git a/src/cobalt/browser/testdata/mtm-demo/normal.html b/src/cobalt/browser/testdata/mtm-demo/normal.html
deleted file mode 100644
index 3d516f6..0000000
--- a/src/cobalt/browser/testdata/mtm-demo/normal.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <title>Normal Demo</title>
-  <style>
-    body {
-      background-color: rgb(255, 255, 255);
-      color: #0047ab;
-      font-size: 100px;
-    }
-    .vid {
-      margin: 100px;
-      border: 10px solid blue;
-      width: 960px;
-      height: 540px;
-    }
-  </style>
-</head>
-<body>
-  <div>Normal Demo</div>
-  <video autoplay loop id="v" class="vid" src="progressive.mp4"></video>
-</body>
-</html>
diff --git a/src/cobalt/browser/testdata/mtm-demo/progressive.mp4 b/src/cobalt/browser/testdata/mtm-demo/progressive.mp4
deleted file mode 100644
index 2686a9b..0000000
--- a/src/cobalt/browser/testdata/mtm-demo/progressive.mp4
+++ /dev/null
Binary files differ
diff --git a/src/cobalt/browser/web_module.cc b/src/cobalt/browser/web_module.cc
index defb344..3c26c18 100644
--- a/src/cobalt/browser/web_module.cc
+++ b/src/cobalt/browser/web_module.cc
@@ -23,22 +23,16 @@
 #include "base/message_loop_proxy.h"
 #include "base/optional.h"
 #include "base/stringprintf.h"
+#include "cobalt/base/address_sanitizer.h"
 #include "cobalt/base/c_val.h"
 #include "cobalt/base/poller.h"
 #include "cobalt/base/tokens.h"
-#include "cobalt/browser/stack_size_constants.h"
 #include "cobalt/browser/switches.h"
 #include "cobalt/browser/web_module_stat_tracker.h"
-#include "cobalt/css_parser/parser.h"
 #include "cobalt/debug/debug_server_module.h"
-#include "cobalt/dom/blob.h"
 #include "cobalt/dom/csp_delegate_factory.h"
-#include "cobalt/dom/local_storage_database.h"
 #include "cobalt/dom/storage.h"
-#include "cobalt/dom/url.h"
-#include "cobalt/dom_parser/parser.h"
 #include "cobalt/h5vcc/h5vcc.h"
-#include "cobalt/script/javascript_engine.h"
 #include "cobalt/storage/storage_manager.h"
 
 namespace cobalt {
@@ -46,11 +40,11 @@
 
 namespace {
 
-#if defined(COBALT_BUILD_TYPE_GOLD)
+#if defined(COBALT_RELEASE)
 const int kPollerPeriodMs = 2000;
-#else   // #if defined(COBALT_BUILD_TYPE_GOLD)
+#else   // #if defined(COBALT_RELEASE)
 const int kPollerPeriodMs = 20;
-#endif  // #if defined(COBALT_BUILD_TYPE_GOLD)
+#endif  // #if defined(COBALT_RELEASE)
 
 // The maximum number of element depth in the DOM tree. Elements at a level
 // deeper than this could be discarded, and will not be rendered.
@@ -118,8 +112,7 @@
 #endif  // ENABLE_DEBUG_CONSOLE
 
   // Called to inject a keyboard event into the web module.
-  void InjectKeyboardEvent(scoped_refptr<dom::Element> element,
-                           const dom::KeyboardEvent::Data& event);
+  void InjectKeyboardEvent(const dom::KeyboardEvent::Data& event);
 
   // Called to execute JavaScript in this WebModule. Sets the |result|
   // output parameter and signals |got_result|.
@@ -147,11 +140,7 @@
   void CreateDebugServerIfNull();
 #endif  // ENABLE_DEBUG_CONSOLE
 
-  // Suspension of the WebModule is a two-part process since a message loop
-  // gap is needed in order to give a chance to handle loader callbacks
-  // that were initiated from a loader thread.
-  void SuspendLoaders();
-  void FinishSuspend();
+  void Suspend();
   void Resume(render_tree::ResourceProvider* resource_provider);
 
  private:
@@ -249,9 +238,6 @@
   // Object to register and retrieve MediaSource object with a string key.
   scoped_ptr<dom::MediaSource::Registry> media_source_registry_;
 
-  // Object to register and retrieve Blob objects with a string key.
-  scoped_ptr<dom::Blob::Registry> blob_registry_;
-
   // The Window object wraps all DOM-related components.
   scoped_refptr<dom::Window> window_;
 
@@ -324,11 +310,8 @@
       base::Bind(&WebModule::Impl::OnError, base::Unretained(this))));
   DCHECK(dom_parser_);
 
-  blob_registry_.reset(new dom::Blob::Registry);
-
   fetcher_factory_.reset(new loader::FetcherFactory(
-      data.network_module, data.options.extra_web_file_dir,
-      dom::URL::MakeBlobResolverCallback(blob_registry_.get())));
+      data.network_module, data.options.extra_web_file_dir));
   DCHECK(fetcher_factory_);
 
   loader_factory_.reset(
@@ -406,9 +389,8 @@
 
   environment_settings_.reset(new dom::DOMSettings(
       kDOMMaxElementDepth, fetcher_factory_.get(), data.network_module, window_,
-      media_source_registry_.get(), blob_registry_.get(), data.media_module,
-      javascript_engine_.get(), global_environment_.get(),
-      data.options.dom_settings_options));
+      media_source_registry_.get(), javascript_engine_.get(),
+      global_environment_.get(), data.options.dom_settings_options));
   DCHECK(environment_settings_);
 
   global_environment_->CreateGlobalObject(window_, environment_settings_.get());
@@ -475,7 +457,6 @@
   window_weak_.reset();
   window_ = NULL;
   media_source_registry_.reset();
-  blob_registry_.reset();
   script_runner_.reset();
   execution_state_.reset();
   global_environment_ = NULL;
@@ -491,7 +472,6 @@
 }
 
 void WebModule::Impl::InjectKeyboardEvent(
-    scoped_refptr<dom::Element> element,
     const dom::KeyboardEvent::Data& event) {
   DCHECK(thread_checker_.CalledOnValidThread());
   DCHECK(is_running_);
@@ -506,11 +486,7 @@
   // injected.
   web_module_stat_tracker_->OnInjectEvent(keyboard_event);
 
-  if (element) {
-    element->DispatchEvent(keyboard_event);
-  } else {
-    window_->InjectEvent(keyboard_event);
-  }
+  window_->InjectEvent(keyboard_event);
 }
 
 void WebModule::Impl::ExecuteJavascript(
@@ -587,7 +563,6 @@
   window_driver_out->reset(new webdriver::WindowDriver(
       window_id, window_weak_,
       base::Bind(&WebModule::Impl::global_environment, base::Unretained(this)),
-      base::Bind(&WebModule::Impl::InjectKeyboardEvent, base::Unretained(this)),
       base::MessageLoopProxy::current()));
 }
 #endif  // defined(ENABLE_WEBDRIVER)
@@ -622,20 +597,21 @@
   }
 }
 
-void WebModule::Impl::SuspendLoaders() {
-  TRACE_EVENT0("cobalt::browser", "WebModule::Impl::SuspendLoaders()");
+void WebModule::Impl::Suspend() {
+  TRACE_EVENT0("cobalt::browser", "WebModule::Impl::Suspend()");
+  DCHECK(resource_provider_);
 
   // Stop the generation of render trees.
   layout_manager_->Suspend();
 
+#if defined(ENABLE_DEBUG_CONSOLE)
+  // The debug overlay may be holding onto a render tree, clear that out.
+  debug_overlay_->ClearInput();
+#endif
+
   // Clear out the loader factory's resource provider, possibly aborting any
   // in-progress loads.
   loader_factory_->Suspend();
-}
-
-void WebModule::Impl::FinishSuspend() {
-  TRACE_EVENT0("cobalt::browser", "WebModule::Impl::FinishSuspend()");
-  DCHECK(resource_provider_);
 
   // Ensure the document is not holding onto any more image cached resources so
   // that they are eligible to be purged.
@@ -648,11 +624,6 @@
   image_cache_->Purge();
   remote_typeface_cache_->Purge();
 
-#if defined(ENABLE_DEBUG_CONSOLE)
-  // The debug overlay may be holding onto a render tree, clear that out.
-  debug_overlay_->ClearInput();
-#endif
-
   // Finally mark that we have no resource provider.
   resource_provider_ = NULL;
 }
@@ -705,11 +676,18 @@
       window_close_callback, media_module, network_module, window_dimensions,
       resource_provider, kDOMMaxElementDepth, layout_refresh_rate, options);
 
+#if defined(COBALT_BUILD_TYPE_DEBUG)
+  // Non-optimized builds require a bigger stack size.
+  const size_t kBaseStackSize = 2 * 1024 * 1024;
+#else
+  const size_t kBaseStackSize = 256 * 1024;
+#endif
+
   // Start the dedicated thread and create the internal implementation
   // object on that thread.
+  size_t stack_size = kBaseStackSize + base::kAsanAdditionalStackSize;
   thread_.StartWithOptions(
-      base::Thread::Options(MessageLoop::TYPE_DEFAULT,
-        cobalt::browser::kWebModuleStackSize));
+      base::Thread::Options(MessageLoop::TYPE_DEFAULT, stack_size));
   DCHECK(message_loop());
 
   message_loop()->PostTask(
@@ -781,23 +759,14 @@
 }
 
 void WebModule::InjectKeyboardEvent(const dom::KeyboardEvent::Data& event) {
-  DCHECK(message_loop());
-  DCHECK(impl_);
-  message_loop()->PostTask(FROM_HERE,
-                           base::Bind(&WebModule::Impl::InjectKeyboardEvent,
-                                      base::Unretained(impl_.get()),
-                                      scoped_refptr<dom::Element>(), event));
-}
-
-void WebModule::InjectKeyboardEvent(scoped_refptr<dom::Element> element,
-                                    const dom::KeyboardEvent::Data& event) {
   TRACE_EVENT1("cobalt::browser", "WebModule::InjectKeyboardEvent()", "type",
                event.type);
   DCHECK(message_loop());
   DCHECK(impl_);
-  DCHECK_EQ(MessageLoop::current(), message_loop());
 
-  impl_->InjectKeyboardEvent(element, event);
+  message_loop()->PostTask(FROM_HERE,
+                           base::Bind(&WebModule::Impl::InjectKeyboardEvent,
+                                      base::Unretained(impl_.get()), event));
 }
 
 std::string WebModule::ExecuteJavascript(
@@ -885,43 +854,16 @@
 #endif  // defined(ENABLE_DEBUG_CONSOLE)
 
 void WebModule::Suspend() {
-  TRACE_EVENT0("cobalt::browser", "WebModule::Suspend()");
+  message_loop()->PostTask(
+      FROM_HERE,
+      base::Bind(&WebModule::Impl::Suspend, base::Unretained(impl_.get())));
 
-  // Suspend() must only be called by a thread external from the WebModule
-  // thread.
-  DCHECK_NE(MessageLoop::current(), message_loop());
+  base::WaitableEvent resource_provider_released(true, false);
+  message_loop()->PostTask(
+      FROM_HERE, base::Bind(&base::WaitableEvent::Signal,
+                            base::Unretained(&resource_provider_released)));
 
-  base::WaitableEvent task_finished(false /* automatic reset */,
-                                    false /* initially unsignaled */);
-
-  // Suspension of the WebModule is orchestrated here in two phases.
-  // 1) Send a signal to suspend WebModule loader activity and cancel any
-  //    in-progress loads.  Since loading may occur from any thread, this may
-  //    result in cancel/completion callbacks being posted to message_loop().
-  message_loop()->PostTask(FROM_HERE,
-                           base::Bind(&WebModule::Impl::SuspendLoaders,
-                                      base::Unretained(impl_.get())));
-
-  // Wait for the suspension task to complete before proceeding.
-  message_loop()->PostTask(FROM_HERE,
-                           base::Bind(&base::WaitableEvent::Signal,
-                                      base::Unretained(&task_finished)));
-  task_finished.Wait();
-
-  // 2) Now append to the task queue a task to complete the suspension process.
-  //    Between 1 and 2, tasks may have been registered to handle resource load
-  //    completion events, and so this FinishSuspend task will be executed after
-  //    the load completions are all resolved.
-  message_loop()->PostTask(FROM_HERE,
-                           base::Bind(&WebModule::Impl::FinishSuspend,
-                                      base::Unretained(impl_.get())));
-
-  // Wait for suspension to fully complete on the WebModule thread before
-  // continuing.
-  message_loop()->PostTask(FROM_HERE,
-                           base::Bind(&base::WaitableEvent::Signal,
-                                      base::Unretained(&task_finished)));
-  task_finished.Wait();
+  resource_provider_released.Wait();
 }
 
 void WebModule::Resume(render_tree::ResourceProvider* resource_provider) {
diff --git a/src/cobalt/browser/web_module.h b/src/cobalt/browser/web_module.h
index 34f38b2..8907911 100644
--- a/src/cobalt/browser/web_module.h
+++ b/src/cobalt/browser/web_module.h
@@ -27,7 +27,6 @@
 #include "base/synchronization/waitable_event.h"
 #include "base/threading/thread.h"
 #include "base/threading/thread_checker.h"
-#include "cobalt/base/address_sanitizer.h"
 #include "cobalt/base/console_commands.h"
 #include "cobalt/base/source_location.h"
 #include "cobalt/css_parser/parser.h"
@@ -35,7 +34,6 @@
 #include "cobalt/debug/debug_server.h"
 #include "cobalt/debug/render_overlay.h"
 #endif  // ENABLE_DEBUG_CONSOLE
-#include "cobalt/dom/blob.h"
 #include "cobalt/dom/csp_delegate.h"
 #include "cobalt/dom/dom_settings.h"
 #include "cobalt/dom/keyboard_event.h"
@@ -161,13 +159,6 @@
   ~WebModule();
 
   // Call this to inject a keyboard event into the web module.
-  // Event is directed at a specific element if the element is non-null.
-  // Otherwise, the currently focused element receives the event.
-  // If element is specified, we must be on the WebModule's message loop
-  void InjectKeyboardEvent(scoped_refptr<dom::Element> element,
-                           const dom::KeyboardEvent::Data& event);
-
-  // Call this to inject a keyboard event into the web module.
   void InjectKeyboardEvent(const dom::KeyboardEvent::Data& event);
 
   // Call this to execute Javascript code in this web module.  The calling
diff --git a/src/cobalt/browser/web_module_stat_tracker.cc b/src/cobalt/browser/web_module_stat_tracker.cc
index aa4d634..10bdf94 100644
--- a/src/cobalt/browser/web_module_stat_tracker.cc
+++ b/src/cobalt/browser/web_module_stat_tracker.cc
@@ -28,10 +28,7 @@
     : dom_stat_tracker_(new dom::DomStatTracker(name)),
       layout_stat_tracker_(new layout::LayoutStatTracker(name)),
       should_track_event_stats_(should_track_event_stats),
-      current_event_type_(kEventTypeInvalid),
-      name_(name),
-      event_is_processing_(StringPrintf("Event.%s.IsProcessing", name.c_str()),
-          0, "Nonzero when an event is being processed.") {
+      current_event_type_(kEventTypeInvalid) {
   if (should_track_event_stats_) {
     event_stats_.reserve(kNumEventTypes);
     for (int i = 0; i < kNumEventTypes; ++i) {
@@ -59,8 +56,6 @@
 
   EndCurrentEvent(false);
 
-  event_is_processing_ = 1;
-
   if (event->type() == base::Tokens::keydown()) {
     current_event_type_ = kEventTypeKeyDown;
   } else if (event->type() == base::Tokens::keyup()) {
@@ -157,8 +152,6 @@
     return;
   }
 
-  event_is_processing_ = 0;
-
   stop_watch_durations_[kStopWatchTypeEvent] = base::TimeDelta();
   stop_watches_[kStopWatchTypeEvent].Stop();
   dom_stat_tracker_->DisableStopWatches();
diff --git a/src/cobalt/browser/web_module_stat_tracker.h b/src/cobalt/browser/web_module_stat_tracker.h
index 5b317e7..8e9dbd3 100644
--- a/src/cobalt/browser/web_module_stat_tracker.h
+++ b/src/cobalt/browser/web_module_stat_tracker.h
@@ -115,10 +115,6 @@
   // Stop watch-related
   std::vector<base::StopWatch> stop_watches_;
   std::vector<base::TimeDelta> stop_watch_durations_;
-
-  std::string name_;
-
-  base::CVal<int, base::CValPublic> event_is_processing_;
 };
 
 }  // namespace browser
diff --git a/src/cobalt/build/all.gyp b/src/cobalt/build/all.gyp
index 52a802c..8352629 100644
--- a/src/cobalt/build/all.gyp
+++ b/src/cobalt/build/all.gyp
@@ -59,13 +59,11 @@
         '<(DEPTH)/cobalt/samples/samples.gyp:*',
         '<(DEPTH)/cobalt/script/script.gyp:*',
         '<(DEPTH)/cobalt/script/engine.gyp:all_engines',
-        '<(DEPTH)/cobalt/speech/sandbox/sandbox.gyp:*',
         '<(DEPTH)/cobalt/speech/speech.gyp:*',
         '<(DEPTH)/cobalt/storage/storage.gyp:*',
         '<(DEPTH)/cobalt/trace_event/trace_event.gyp:*',
         '<(DEPTH)/cobalt/web_animations/web_animations.gyp:*',
         '<(DEPTH)/cobalt/webdriver/webdriver.gyp:*',
-        '<(DEPTH)/cobalt/webdriver/webdriver_test.gyp:*',
         '<(DEPTH)/cobalt/xhr/xhr.gyp:*',
         '<(DEPTH)/crypto/crypto.gyp:crypto_unittests',
         '<(DEPTH)/sql/sql.gyp:sql_unittests',
diff --git a/src/cobalt/build/build.id b/src/cobalt/build/build.id
index e0a264e..159bca5 100644
--- a/src/cobalt/build/build.id
+++ b/src/cobalt/build/build.id
@@ -1 +1 @@
-16000
\ No newline at end of file
+15147
\ No newline at end of file
diff --git a/src/cobalt/build/config/base.gypi b/src/cobalt/build/config/base.gypi
index 53cc9b4..7170bcb 100644
--- a/src/cobalt/build/config/base.gypi
+++ b/src/cobalt/build/config/base.gypi
@@ -67,13 +67,6 @@
     # platform.
     'default_renderer_options_dependency%': '<(DEPTH)/cobalt/renderer/default_options_starboard.gyp:default_options',
 
-    # Allow throttling of the frame rate. This is expressed in terms of
-    # milliseconds and can be a floating point number. Keep in mind that
-    # swapping frames may take some additional processing time, so it may be
-    # better to specify a lower delay. For example, '33' instead of '33.33'
-    # for 30 Hz refresh.
-    'cobalt_minimum_frame_time_in_milliseconds%': '0',
-
     # The variables allow changing the target type on platforms where the
     # native code may require an additional packaging step (ex. Android).
     'gtest_target_type%': 'executable',
@@ -102,11 +95,9 @@
     'lbshell_root%': '<(DEPTH)/lbshell',
 
     # The relative path from src/ to the directory containing the
-    # starboard_platform.gyp file.  It is currently set to
-    # 'starboard/<(target_arch)' to make semi-starboard platforms work.
-    # TODO: Set the default value to '' once all semi-starboard platforms are
-    # moved to starboard.
-    'starboard_path%': 'starboard/<(target_arch)',
+    # starboard_platform.gyp file, or the empty string if not an autodiscovered
+    # platform.
+    'starboard_path%': '',
 
     # The source of EGL and GLES headers and libraries.
     # Valid values (case and everything sensitive!):
@@ -137,7 +128,6 @@
     #   - scratch_surface_cache_size_in_bytes
     #   - surface_cache_size_in_bytes
     #   - image_cache_size_in_bytes
-    #   - skia_glyph_atlas_width * skia_glyph_atlas_height
     #
     # The other caches affect CPU memory usage.
 
@@ -169,12 +159,6 @@
     # typefaces downloaded from a web page.
     'remote_typeface_cache_size_in_bytes%': 5 * 1024 * 1024,
 
-    # Only relevant if you are using the Blitter API.
-    # Determines the capacity of the software surface cache, which is used to
-    # cache all surfaces that are rendered via a software rasterizer to avoid
-    # re-rendering them.
-    'software_surface_cache_size_in_bytes%': 10 * 1024 * 1024,
-
     # Modifying this value to be non-1.0f will result in the image cache
     # capacity being cleared and then temporarily reduced for the duration that
     # a video is playing.  This can be useful for some platforms if they are
@@ -184,15 +168,6 @@
     #     image_cache_capacity_multiplier_when_playing_video.
     'image_cache_capacity_multiplier_when_playing_video%': '1.0f',
 
-    # Determines the size in pixels of the glyph atlas where rendered glyphs are
-    # cached. The resulting memory usage is 2 bytes of GPU memory per pixel.
-    # When a value is used that is too small, thrashing may occur that will
-    # result in visible stutter. Such thrashing is more likely to occur when CJK
-    # language glyphs are rendered and when the size of the glyphs in pixels is
-    # larger, such as for higher resolution displays.
-    'skia_glyph_atlas_width%': '2048',
-    'skia_glyph_atlas_height%': '2048',
-
     # Compiler configuration.
 
     # The following variables are used to specify compiler and linker
@@ -251,10 +226,8 @@
     'werror': '',
     # Cobalt doesn't currently support tcmalloc.
     'linux_use_tcmalloc': 0,
-    # The event polling mechanism available on this platform to support libevent.
-    # Platforms may redefine to 'poll' if necessary.
-    # Other mechanisms, e.g. devpoll, kqueue, select, are not yet supported.
-    'sb_libevent_method%': 'epoll',
+
+    'enable_webdriver%': 0,
   },
 
   'target_defaults': {
@@ -295,25 +268,13 @@
     'include_dirs': [ '<(DEPTH)' ],
     'libraries': [ '<@(platform_libraries)' ],
 
+    # TODO: This is needed to support the option to include
+    # posix_emulation.h to all compiled source files. This dependency should
+    # be refactored and removed.
+    'include_dirs_target': [
+      '<(DEPTH)/lbshell/src',
+    ],
     'conditions': [
-      ['final_executable_type=="shared_library"', {
-        'target_conditions': [
-          ['_toolset=="target"', {
-            'defines': [
-              # Rewrite main() functions into StarboardMain. TODO: This is a
-              # hack, it would be better to be more surgical, here.
-              'main=StarboardMain',
-            ],
-            'cflags': [
-              # To link into a shared library on Linux and similar platforms,
-              # the compiler must be told to generate Position Independent Code.
-              # This appears to cause errors when linking the code statically,
-              # however.
-              '-fPIC',
-            ],
-          }],
-        ],
-      }],
       ['posix_emulation_target_type == "shared_library"', {
         'defines': [
           '__LB_BASE_SHARED__=1',
@@ -333,10 +294,6 @@
           '<(DEPTH)/lbshell/src/platform/<(target_arch)/posix_emulation/lb_shell',
           # headers that we don't need, but should exist somewhere in the path:
           '<(DEPTH)/lbshell/src/platform/<(target_arch)/posix_emulation/place_holders',
-          # TODO: This is needed to support the option to include
-          # posix_emulation.h to all compiled source files. This dependency
-          # should be refactored and removed.
-          '<(DEPTH)/lbshell/src',
         ],
       }],  # OS == "lb_shell"
       ['OS == "starboard"', {
@@ -464,13 +421,10 @@
         'cobalt_copy_debug_console': 1,
         'cobalt_copy_test_data': 1,
         'enable_about_scheme': 1,
-        'enable_fake_microphone': 1,
         'enable_file_scheme': 1,
         'enable_network_logging': 1,
         'enable_remote_debugging%': 1,
         'enable_screenshot': 1,
-        'enable_webdriver%': 1,
-        'sb_allows_memory_tracking': 1,
       },
     },
     {
@@ -478,13 +432,10 @@
         'cobalt_copy_debug_console': 0,
         'cobalt_copy_test_data': 0,
         'enable_about_scheme': 0,
-        'enable_fake_microphone': 0,
         'enable_file_scheme': 0,
         'enable_network_logging': 0,
         'enable_remote_debugging%': 0,
         'enable_screenshot': 0,
-        'enable_webdriver': 0,
-        'sb_allows_memory_tracking': 0,
       },
     }],
   ],
diff --git a/src/cobalt/build/config/win.gypi b/src/cobalt/build/config/win.gypi
index 8504e8b..6a8cab4 100644
--- a/src/cobalt/build/config/win.gypi
+++ b/src/cobalt/build/config/win.gypi
@@ -34,9 +34,6 @@
     # there for acceptable values for this variable.
     'javascript_engine': 'javascriptcore',
 
-    # Webdriver won't compile on MSVC because of UTF8 string constant issues
-    'enable_webdriver': 0,
-
     # Compile with "PREfast" on by default.
     'static_analysis%': 'true',
 
diff --git a/src/cobalt/build/gyp_cobalt b/src/cobalt/build/gyp_cobalt
index 9ef3934..0e60bb9 100755
--- a/src/cobalt/build/gyp_cobalt
+++ b/src/cobalt/build/gyp_cobalt
@@ -208,7 +208,7 @@
         'cobalt_fastbuild': os.environ.get('LB_FASTBUILD', 0),
         'cobalt_version': gyp_utils.GetBuildNumber(),
         'host_os': _GetHostOS(),
-        'CC_HOST': os.environ.get('CC_HOST', os.environ.get('CC','')),
+        'CC': os.environ.get('CC', ''),
     }
     if self.platform_config.IsStarboard():
       variables['OS'] = 'starboard'
@@ -218,7 +218,6 @@
         full_starboard_path = platforms[platform]
         assert full_starboard_path[:len(source_tree_dir)] == source_tree_dir
         starboard_path = full_starboard_path[len(source_tree_dir) + 1:]
-        starboard_path.replace(os.sep, '/')
         assert starboard_path[0] not in [ os.sep, os.altsep ]
         variables['starboard_path'] = starboard_path
     _AppendVariables(variables, self.common_args)
diff --git a/src/cobalt/build/save_build_id.py b/src/cobalt/build/save_build_id.py
index 63ab937..1f79d60 100755
--- a/src/cobalt/build/save_build_id.py
+++ b/src/cobalt/build/save_build_id.py
@@ -14,14 +14,13 @@
 # limitations under the License.
 """Calculates the current Build ID and writes it to 'build.id'."""
 
-import argparse
 import logging
 import os
 import sys
-import textwrap
 
 import gyp_utils
 
+
 _SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__))
 _BUILD_ID_PATH = gyp_utils.BUILD_ID_PATH
 
@@ -33,28 +32,12 @@
 def main():
   logging.basicConfig(level=logging.WARNING, format='%(message)s')
 
-  parser = argparse.ArgumentParser(
-      formatter_class=argparse.ArgumentDefaultsHelpFormatter,
-      description=textwrap.dedent(__doc__))
-
-  parser.add_argument(
-      '--delete',
-      '-d',
-      action='store_true',
-      default=False,
-      help='Delete build.id file.')
-
-  options = parser.parse_args()
-
   # Update the build id to the latest, even if one is already set.
   try:
     os.unlink(_BUILD_ID_PATH)
   except OSError:
     pass
 
-  if options.delete:
-    return 0
-
   build_id = gyp_utils.GetBuildNumber()
   if not build_id:
     logging.error('Unable to retrieve build id.')
diff --git a/src/cobalt/content/fonts/10megabytes/fonts.xml b/src/cobalt/content/fonts/10megabytes/fonts.xml
index d066d4a..c0ffb0a 100644
--- a/src/cobalt/content/fonts/10megabytes/fonts.xml
+++ b/src/cobalt/content/fonts/10megabytes/fonts.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
-<familyset version="1">
 <!--
     NOTE: Families with a "fallback" value of "true" are added to the fallback
     list, regardless of whether or not they are named. Fallback fonts are chosen
@@ -14,9 +13,10 @@
     indexed, and each page contains 256 characters, so character 1000 would be
     contained within page 3.
 -->
+<familyset version="1">
     <!-- first font is default -->
     <family name="sans-serif">
-        <font font_name="Roboto Regular" postscript_name="Roboto-Regular" style="normal" weight="400">Roboto-Regular.ttf</font>
+        <font weight="400" style="normal">Roboto-Regular.ttf</font>
     </family>
     <!-- Note that aliases must come after the fonts they reference. -->
     <alias name="arial" to="sans-serif" />
@@ -27,187 +27,187 @@
     <alias name="courier" to="serif-monospace" />
     <alias name="courier new" to="serif-monospace" />
     <family name="sans-serif-smallcaps">
-        <font font_name="Carrois Gothic SC" postscript_name="CarroisGothicSC-Regular" style="normal" weight="400">CarroisGothicSC-Regular.ttf</font>
+        <font weight="400" style="normal">CarroisGothicSC-Regular.ttf</font>
     </family>
     <!-- fallback fonts -->
-    <family fallback="true" name="Noto Naskh Arabic UI" pages="0,6-8,32,37,46,251-254">
-        <font font_name="Noto Naskh Arabic UI" postscript_name="NotoNaskhArabicUI" style="normal" weight="400">NotoNaskhArabicUI-Regular.ttf</font>
+    <family name="Noto Naskh Arabic UI" fallback="true" pages="0,6-8,32,37,46,251-254">
+        <font weight="400" style="normal">NotoNaskhArabicUI-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,18-19,45,171,254">
-        <font font_name="Noto Sans Ethiopic" postscript_name="NotoSansEthiopic" style="normal" weight="400">NotoSansEthiopic-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansEthiopic-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,5,32,37,251,254">
-        <font font_name="Noto Sans Hebrew" postscript_name="NotoSansHebrew" style="normal" weight="400">NotoSansHebrew-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansHebrew-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,2-3,14,32,37,254">
-        <font font_name="Noto Sans Thai UI" postscript_name="NotoSansThaiUI" style="normal" weight="400">NotoSansThaiUI-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansThaiUI-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,5,251,254">
-        <font font_name="Noto Sans Armenian" postscript_name="NotoSansArmenian" style="normal" weight="400">NotoSansArmenian-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansArmenian-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,5,16,45,254">
-        <font font_name="Noto Sans Georgian" postscript_name="NotoSansGeorgian" style="normal" weight="400">NotoSansGeorgian-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansGeorgian-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,2,9,28,32,34,37,168,254">
-        <font font_name="Noto Sans Devanagari UI" postscript_name="NotoSansDevanagariUI" style="normal" weight="400">NotoSansDevanagariUI-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansDevanagariUI-Regular.ttf</font>
     </family>
     <!-- Gujarati should come after Devanagari -->
     <family fallback="true" pages="0,9-10,32,34,37,168,254">
-        <font font_name="Noto Sans Gujarati UI" postscript_name="NotoSansGujaratiUI" style="normal" weight="400">NotoSansGujaratiUI-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansGujaratiUI-Regular.ttf</font>
     </family>
     <!-- Gurmukhi should come after Devanagari -->
     <family fallback="true" pages="0,9-10,32,34,37-38,168,254">
-        <font font_name="Noto Sans Gurmukhi UI" postscript_name="NotoSansGurmukhiUI" style="normal" weight="400">NotoSansGurmukhiUI-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansGurmukhiUI-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,9,11,32,34,37,254">
-        <font font_name="Noto Sans Tamil UI" postscript_name="NotoSansTamilUI" style="normal" weight="400">NotoSansTamilUI-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansTamilUI-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,3,9,13,32,34,37,254">
-        <font font_name="Noto Sans Malayalam UI" postscript_name="NotoSansMalayalamUI" style="normal" weight="400">NotoSansMalayalamUI-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansMalayalamUI-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,9,32,34,37,254">
-        <font font_name="Noto Sans Bengali UI" postscript_name="NotoSansBengaliUI" style="normal" weight="400">NotoSansBengaliUI-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansBengaliUI-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,9,12,32,34,37,254">
-        <font font_name="Noto Sans Telugu UI" postscript_name="NotoSansTeluguUI" style="normal" weight="400">NotoSansTeluguUI-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansTeluguUI-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,9,12,32,34,37,254">
-        <font font_name="Noto Sans Kannada UI" postscript_name="NotoSansKannadaUI" style="normal" weight="400">NotoSansKannadaUI-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansKannadaUI-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,9,11,32,34,37,254">
-        <font font_name="Noto Sans Oriya UI" postscript_name="NotoSansOriyaUI" style="normal" weight="400">NotoSansOriyaUI-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansOriyaUI-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,9,13,32,34,37,254">
-        <font font_name="Noto Sans Sinhala" postscript_name="NotoSansSinhala" style="normal" weight="400">NotoSansSinhala-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansSinhala-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,23,25,32,37">
-        <font font_name="Noto Sans Khmer UI" postscript_name="NotoSansKhmerUI" style="normal" weight="400">NotoSansKhmerUI-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansKhmerUI-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,3,14,32,37">
-        <font font_name="Noto Sans Lao UI" postscript_name="NotoSansLaoUI" style="normal" weight="400">NotoSansLaoUI-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansLaoUI-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,6-7,32,37,253-254">
-        <font font_name="Noto Sans Thaana" postscript_name="NotoSansThaana" style="normal" weight="400">NotoSansThaana-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansThaana-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,3,170">
-        <font font_name="Noto Sans Cham" postscript_name="NotoSansCham" style="normal" weight="400">NotoSansCham-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansCham-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,27,32,37,254">
-        <font font_name="Noto Sans Balinese" postscript_name="NotoSansBalinese" style="normal" weight="400">NotoSansBalinese-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansBalinese-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,166,254,360-362">
-        <font font_name="Noto Sans Bamum" postscript_name="NotoSansBamum" style="normal" weight="400">NotoSansBamum-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansBamum-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,27,254">
-        <font font_name="Noto Sans Batak" postscript_name="NotoSansBatak" style="normal" weight="400">NotoSansBatak-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansBatak-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,26,32,169,254">
-        <font font_name="Noto Sans Buginese" postscript_name="NotoSansBuginese" style="normal" weight="400">NotoSansBuginese-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansBuginese-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,23,254">
-        <font font_name="Noto Sans Buhid" postscript_name="NotoSansBuhid" style="normal" weight="400">NotoSansBuhid-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansBuhid-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0-3,20-22,24,254">
-        <font font_name="Noto Sans Canadian Aboriginal" postscript_name="NotoSansCanadianAboriginal" style="normal" weight="400">NotoSansCanadianAboriginal-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansCanadianAboriginal-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,19,254">
-        <font font_name="Noto Sans Cherokee" postscript_name="NotoSansCherokee" style="normal" weight="400">NotoSansCherokee-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansCherokee-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0-3,29,44,254">
-        <font font_name="Noto Sans Coptic" postscript_name="NotoSansCoptic" style="normal" weight="400">NotoSansCoptic-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansCoptic-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,44,254">
-        <font font_name="Noto Sans Glagolitic" postscript_name="NotoSansGlagolitic" style="normal" weight="400">NotoSansGlagolitic-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansGlagolitic-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,23,254">
-        <font font_name="Noto Sans Hanunoo" postscript_name="NotoSansHanunoo" style="normal" weight="400">NotoSansHanunoo-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansHanunoo-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,32,37,169,254">
-        <font font_name="Noto Sans Javanese" postscript_name="NotoSansJavanese" style="normal" weight="400">NotoSansJavanese-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansJavanese-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,169,254">
-        <font font_name="Noto Sans Kayah Li" postscript_name="NotoSansKayahLi" style="normal" weight="400">NotoSansKayahLi-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansKayahLi-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,28,37,254">
-        <font font_name="Noto Sans Lepcha" postscript_name="NotoSansLepcha" style="normal" weight="400">NotoSansLepcha-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansLepcha-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,9,25,254">
-        <font font_name="Noto Sans Limbu" postscript_name="NotoSansLimbu" style="normal" weight="400">NotoSansLimbu-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansLimbu-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,2,164,254">
-        <font font_name="Noto Sans Lisu" postscript_name="NotoSansLisu" style="normal" weight="400">NotoSansLisu-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansLisu-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,6,8,254">
-        <font font_name="Noto Sans Mandaic" postscript_name="NotoSansMandaic" style="normal" weight="400">NotoSansMandaic-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansMandaic-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,170-171,254">
-        <font font_name="Noto Sans Meetei Mayek" postscript_name="NotoSansMeeteiMayek" style="normal" weight="400">NotoSansMeeteiMayek-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansMeeteiMayek-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,25,254">
-        <font font_name="Noto Sans New Tai Lue" postscript_name="NotoSansNewTaiLue" style="normal" weight="400">NotoSansNewTaiLue-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansNewTaiLue-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,6-7,32,46,253-254">
-        <font font_name="Noto Sans NKo" postscript_name="NotoSansNKo" style="normal" weight="400">NotoSansNKo-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansNKo-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,28,254">
-        <font font_name="Noto Sans Ol Chiki" postscript_name="NotoSansOlChiki" style="normal" weight="400">NotoSansOlChiki-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansOlChiki-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,169,254">
-        <font font_name="Noto Sans Rejang" postscript_name="NotoSansRejang" style="normal" weight="400">NotoSansRejang-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansRejang-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,32,37,168,254">
-        <font font_name="Noto Sans Saurashtra" postscript_name="NotoSansSaurashtra" style="normal" weight="400">NotoSansSaurashtra-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansSaurashtra-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,27-28,254">
-        <font font_name="Noto Sans Sundanese" postscript_name="NotoSansSundanese" style="normal" weight="400">NotoSansSundanese-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansSundanese-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,9,32,37,168,254">
-        <font font_name="Noto Sans Syloti Nagri" postscript_name="NotoSansSylotiNagri" style="normal" weight="400">NotoSansSylotiNagri-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansSylotiNagri-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,3,6-7,32,34,37-38,254">
-        <font font_name="Noto Sans Syriac Estrangela" postscript_name="NotoSansSyriacEstrangela" style="normal" weight="400">NotoSansSyriacEstrangela-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansSyriacEstrangela-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,23,254">
-        <font font_name="Noto Sans Tagbanwa" postscript_name="NotoSansTagbanwa" style="normal" weight="400">NotoSansTagbanwa-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansTagbanwa-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,26,32,34,37,254">
-        <font font_name="Noto Sans Tai Tham" postscript_name="NotoSansTaiTham" style="normal" weight="400">NotoSansTaiTham-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansTaiTham-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,32,37,167,170,254">
-        <font font_name="Noto Sans Tai Viet" postscript_name="NotoSansTaiViet" style="normal" weight="400">NotoSansTaiViet-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansTaiViet-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,15,32,37,254">
-        <font font_name="Noto Sans Tibetan" postscript_name="NotoSansTibetan" style="normal" weight="400">NotoSansTibetan-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansTibetan-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,3,32,45,254">
-        <font font_name="Noto Sans Tifinagh" postscript_name="NotoSansTifinagh" style="normal" weight="400">NotoSansTifinagh-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansTifinagh-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,165-166,254">
-        <font font_name="Noto Sans Vai" postscript_name="NotoSansVai" style="normal" weight="400">NotoSansVai-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansVai-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,160-164,254">
-        <font font_name="Noto Sans Yi" postscript_name="NotoSansYi" style="normal" weight="400">NotoSansYi-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansYi-Regular.ttf</font>
     </family>
     <family fallback="true" pages="32-43">
-        <font font_name="Noto Sans Symbols" postscript_name="NotoSansSymbols" style="normal" weight="400">NotoSansSymbols-Regular-Subsetted.ttf</font>
+        <font weight="400" style="normal">NotoSansSymbols-Regular-Subsetted.ttf</font>
     </family>
     <family fallback="true" lang="ja" pages="0,32,34-35,46-159,249-250,254-255,498,512-523,525-527,530-538,540-543,545-547,550,552,554-559,561,563-568,570,572-573,575-579,582-584,586-594,596-608,610-612,614-618,620,622-625,627-628,630-631,633-638,640,642-646,649-655,658,660-664,666,669-678,681,695-696,760-761">
-        <font font_name="Noto Sans JP Regular" postscript_name="NotoSansJP-Regular" style="normal" weight="400">NotoSansJP-Regular.otf</font>
+        <font weight="400" style="normal">NotoSansJP-Regular.otf</font>
     </family>
     <family fallback="true" pages="0,32-33,35-39,41,43,48,50,224,254-255,496-502,4068">
-        <font font_name="Noto Emoji" postscript_name="NotoEmoji" style="normal" weight="400">NotoEmoji-Regular.ttf</font>
+        <font weight="400" style="normal">NotoEmoji-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,14,17,32,48-51,77-159,172-215,249-250,254-255,260">
-        <font font_name="Droid Sans Fallback" postscript_name="DroidSansFallback" style="normal" weight="400">DroidSansFallback.ttf</font>
+        <font weight="400" style="normal">DroidSansFallback.ttf</font>
     </family>
     <!--
         Tai Le and Mongolian are intentionally kept last, to make sure they don't override
         the East Asian punctuation for Chinese.
     -->
     <family fallback="true" pages="0,16,25,48,254">
-        <font font_name="Noto Sans Tai Le" postscript_name="NotoSansTaiLe" style="normal" weight="400">NotoSansTaiLe-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansTaiLe-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,24,32,36-37,48,254">
-        <font font_name="Noto Sans Mongolian" postscript_name="NotoSansMongolian" style="normal" weight="400">NotoSansMongolian-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansMongolian-Regular.ttf</font>
     </family>
 </familyset>
diff --git a/src/cobalt/content/fonts/minimal/fonts.xml b/src/cobalt/content/fonts/minimal/fonts.xml
index bd40ee3..1381b81 100644
--- a/src/cobalt/content/fonts/minimal/fonts.xml
+++ b/src/cobalt/content/fonts/minimal/fonts.xml
@@ -1,25 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
 <familyset version="1">
-<!--
-    NOTE: Families with a "fallback" value of "true" are added to the fallback
-    list, regardless of whether or not they are named. Fallback fonts are chosen
-    based on a match: full BCP-47 language tag including script, then just
-    language, and finally order (the first font containing the glyph). Order of
-    appearance is also the tiebreaker for weight matching.
-
-    The pages attribute indicates which character pages are contained within
-    the font. It is used with character fallback to allow the system to quickly
-    determine that a character cannot appear in a font without requiring the
-    full character map to be loaded into memory. Character pages are zero
-    indexed, and each page contains 256 characters, so character 1000 would be
-    contained within page 3.
--->
     <!-- Ideally, this font should only be used if there are no other fonts in
          our final image. -->
     <family name="Minimal Roboto">
-        <font font_name="Minimal Roboto" postscript_name="Minimal Roboto" style="normal" weight="400">MinimalRoboto.ttf</font>
+        <font weight="400" style="normal">MinimalRoboto.ttf</font>
     </family>
     <family name="sans-serif-smallcaps">
-        <font font_name="Carrois Gothic SC" postscript_name="CarroisGothicSC-Regular" style="normal" weight="400">CarroisGothicSC-Regular.ttf</font>
+        <font weight="400" style="normal">CarroisGothicSC-Regular.ttf</font>
     </family>
 </familyset>
diff --git a/src/cobalt/content/fonts/unlimited/fonts.xml b/src/cobalt/content/fonts/unlimited/fonts.xml
index 25426c3..3e1ec53 100644
--- a/src/cobalt/content/fonts/unlimited/fonts.xml
+++ b/src/cobalt/content/fonts/unlimited/fonts.xml
@@ -1,4 +1,4 @@
-<familyset version="1">
+<?xml version="1.0" encoding="utf-8"?>
 <!--
     NOTE: Families with a "fallback" value of "true" are added to the fallback
     list, regardless of whether or not they are named. Fallback fonts are chosen
@@ -13,12 +13,13 @@
     indexed, and each page contains 256 characters, so character 1000 would be
     contained within page 3.
 -->
+<familyset version="1">
     <!-- first font is default -->
     <family name="sans-serif">
-        <font font_name="Roboto Regular" postscript_name="Roboto-Regular" style="normal" weight="400">Roboto-Regular.ttf</font>
-        <font font_name="Roboto Italic" postscript_name="Roboto-Italic" style="italic" weight="400">Roboto-Italic.ttf</font>
-        <font font_name="Roboto Bold" postscript_name="Roboto-Bold" style="normal" weight="700">Roboto-Bold.ttf</font>
-        <font font_name="Roboto Bold Italic" postscript_name="Roboto-BoldItalic" style="italic" weight="700">Roboto-BoldItalic.ttf</font>
+        <font weight="400" style="normal">Roboto-Regular.ttf</font>
+        <font weight="400" style="italic">Roboto-Italic.ttf</font>
+        <font weight="700" style="normal">Roboto-Bold.ttf</font>
+        <font weight="700" style="italic">Roboto-BoldItalic.ttf</font>
     </family>
     <!-- Note that aliases must come after the fonts they reference. -->
     <alias name="arial" to="sans-serif" />
@@ -29,13 +30,13 @@
     <!-- Ideally, this font should only be used if there are no other fonts in
          our final image. -->
     <family name="Minimal Roboto">
-        <font font_name="Minimal Roboto" postscript_name="Minimal Roboto" style="normal" weight="400">MinimalRoboto.ttf</font>
+        <font weight="400" style="normal">MinimalRoboto.ttf</font>
     </family>
     <family name="serif">
-        <font font_name="Noto Serif" postscript_name="NotoSerif" style="normal" weight="400">NotoSerif-Regular.ttf</font>
-        <font font_name="Noto Serif Italic" postscript_name="NotoSerif-Italic" style="italic" weight="400">NotoSerif-Italic.ttf</font>
-        <font font_name="Noto Serif Bold" postscript_name="NotoSerif-Bold" style="normal" weight="700">NotoSerif-Bold.ttf</font>
-        <font font_name="Noto Serif Bold Italic" postscript_name="NotoSerif-BoldItalic" style="italic" weight="700">NotoSerif-BoldItalic.ttf</font>
+        <font weight="400" style="normal">NotoSerif-Regular.ttf</font>
+        <font weight="400" style="italic">NotoSerif-Italic.ttf</font>
+        <font weight="700" style="normal">NotoSerif-Bold.ttf</font>
+        <font weight="700" style="italic">NotoSerif-BoldItalic.ttf</font>
     </family>
     <alias name="times" to="serif" />
     <alias name="times new roman" to="serif" />
@@ -46,243 +47,243 @@
     <alias name="fantasy" to="serif" />
     <alias name="ITC Stone Serif" to="serif" />
     <family name="monospace">
-        <font font_name="Droid Sans Mono" postscript_name="DroidSansMono" style="normal" weight="400">DroidSansMono.ttf</font>
+        <font weight="400" style="normal">DroidSansMono.ttf</font>
     </family>
     <alias name="sans-serif-monospace" to="monospace" />
     <alias name="monaco" to="monospace" />
     <family name="serif-monospace">
-        <font font_name="Cutive Mono" postscript_name="CutiveMono-Regular" style="normal" weight="400">CutiveMono.ttf</font>
+        <font weight="400" style="normal">CutiveMono.ttf</font>
     </family>
     <alias name="courier" to="serif-monospace" />
     <alias name="courier new" to="serif-monospace" />
     <family name="casual">
-        <font font_name="Coming Soon" postscript_name="ComingSoon" style="normal" weight="400">ComingSoon.ttf</font>
+        <font weight="400" style="normal">ComingSoon.ttf</font>
     </family>
     <family name="cursive">
-        <font font_name="Dancing Script" postscript_name="DancingScript" style="normal" weight="400">DancingScript-Regular.ttf</font>
-        <font font_name="Dancing Script Bold" postscript_name="DancingScript-Bold" style="normal" weight="700">DancingScript-Bold.ttf</font>
+        <font weight="400" style="normal">DancingScript-Regular.ttf</font>
+        <font weight="700" style="normal">DancingScript-Bold.ttf</font>
     </family>
     <family name="sans-serif-smallcaps">
-        <font font_name="Carrois Gothic SC" postscript_name="CarroisGothicSC-Regular" style="normal" weight="400">CarroisGothicSC-Regular.ttf</font>
+        <font weight="400" style="normal">CarroisGothicSC-Regular.ttf</font>
     </family>
     <!-- fallback fonts -->
-    <family fallback="true" name="Noto Naskh Arabic UI" pages="0,6-8,32,37,46,251-254">
-        <font font_name="Noto Naskh Arabic UI" postscript_name="NotoNaskhArabicUI" style="normal" weight="400">NotoNaskhArabicUI-Regular.ttf</font>
-        <font font_name="Noto Naskh Arabic UI Bold" postscript_name="NotoNaskhArabicUI-Bold" style="normal" weight="700">NotoNaskhArabicUI-Bold.ttf</font>
+    <family name="Noto Naskh Arabic UI" fallback="true" pages="0,6-8,32,37,46,251-254">
+        <font weight="400" style="normal">NotoNaskhArabicUI-Regular.ttf</font>
+        <font weight="700" style="normal">NotoNaskhArabicUI-Bold.ttf</font>
     </family>
     <family fallback="true" pages="0,18-19,45,171,254">
-        <font font_name="Noto Sans Ethiopic" postscript_name="NotoSansEthiopic" style="normal" weight="400">NotoSansEthiopic-Regular.ttf</font>
-        <font font_name="Noto Sans Ethiopic Bold" postscript_name="NotoSansEthiopic-Bold" style="normal" weight="700">NotoSansEthiopic-Bold.ttf</font>
+        <font weight="400" style="normal">NotoSansEthiopic-Regular.ttf</font>
+        <font weight="700" style="normal">NotoSansEthiopic-Bold.ttf</font>
     </family>
     <family fallback="true" pages="0,5,32,37,251,254">
-        <font font_name="Noto Sans Hebrew" postscript_name="NotoSansHebrew" style="normal" weight="400">NotoSansHebrew-Regular.ttf</font>
-        <font font_name="Noto Sans Hebrew Bold" postscript_name="NotoSansHebrew-Bold" style="normal" weight="700">NotoSansHebrew-Bold.ttf</font>
+        <font weight="400" style="normal">NotoSansHebrew-Regular.ttf</font>
+        <font weight="700" style="normal">NotoSansHebrew-Bold.ttf</font>
     </family>
     <family fallback="true" pages="0,2-3,14,32,37,254">
-        <font font_name="Noto Sans Thai UI" postscript_name="NotoSansThaiUI" style="normal" weight="400">NotoSansThaiUI-Regular.ttf</font>
-        <font font_name="Noto Sans Thai UI Bold" postscript_name="NotoSansThaiUI-Bold" style="normal" weight="700">NotoSansThaiUI-Bold.ttf</font>
+        <font weight="400" style="normal">NotoSansThaiUI-Regular.ttf</font>
+        <font weight="700" style="normal">NotoSansThaiUI-Bold.ttf</font>
     </family>
     <family fallback="true" pages="0,5,251,254">
-        <font font_name="Noto Sans Armenian" postscript_name="NotoSansArmenian" style="normal" weight="400">NotoSansArmenian-Regular.ttf</font>
-        <font font_name="Noto Sans Armenian Bold" postscript_name="NotoSansArmenian-Bold" style="normal" weight="700">NotoSansArmenian-Bold.ttf</font>
+        <font weight="400" style="normal">NotoSansArmenian-Regular.ttf</font>
+        <font weight="700" style="normal">NotoSansArmenian-Bold.ttf</font>
     </family>
     <family fallback="true" pages="0,5,16,45,254">
-        <font font_name="Noto Sans Georgian" postscript_name="NotoSansGeorgian" style="normal" weight="400">NotoSansGeorgian-Regular.ttf</font>
-        <font font_name="Noto Sans Georgian Bold" postscript_name="NotoSansGeorgian-Bold" style="normal" weight="700">NotoSansGeorgian-Bold.ttf</font>
+        <font weight="400" style="normal">NotoSansGeorgian-Regular.ttf</font>
+        <font weight="700" style="normal">NotoSansGeorgian-Bold.ttf</font>
     </family>
     <family fallback="true" pages="0,2,9,28,32,34,37,168,254">
-        <font font_name="Noto Sans Devanagari UI" postscript_name="NotoSansDevanagariUI" style="normal" weight="400">NotoSansDevanagariUI-Regular.ttf</font>
-        <font font_name="Noto Sans Devanagari UI Bold" postscript_name="NotoSansDevanagariUI-Bold" style="normal" weight="700">NotoSansDevanagariUI-Bold.ttf</font>
+        <font weight="400" style="normal">NotoSansDevanagariUI-Regular.ttf</font>
+        <font weight="700" style="normal">NotoSansDevanagariUI-Bold.ttf</font>
     </family>
     <!-- Gujarati should come after Devanagari -->
     <family fallback="true" pages="0,9-10,32,34,37,168,254">
-        <font font_name="Noto Sans Gujarati UI" postscript_name="NotoSansGujaratiUI" style="normal" weight="400">NotoSansGujaratiUI-Regular.ttf</font>
-        <font font_name="Noto Sans Gujarati UI Bold" postscript_name="NotoSansGujaratiUI-Bold" style="normal" weight="700">NotoSansGujaratiUI-Bold.ttf</font>
+        <font weight="400" style="normal">NotoSansGujaratiUI-Regular.ttf</font>
+        <font weight="700" style="normal">NotoSansGujaratiUI-Bold.ttf</font>
     </family>
     <!-- Gurmukhi should come after Devanagari -->
     <family fallback="true" pages="0,9-10,32,34,37-38,168,254">
-        <font font_name="Noto Sans Gurmukhi UI" postscript_name="NotoSansGurmukhiUI" style="normal" weight="400">NotoSansGurmukhiUI-Regular.ttf</font>
-        <font font_name="Noto Sans Gurmukhi UI Bold" postscript_name="NotoSansGurmukhiUI-Bold" style="normal" weight="700">NotoSansGurmukhiUI-Bold.ttf</font>
+        <font weight="400" style="normal">NotoSansGurmukhiUI-Regular.ttf</font>
+        <font weight="700" style="normal">NotoSansGurmukhiUI-Bold.ttf</font>
     </family>
     <family fallback="true" pages="0,9,11,32,34,37,254">
-        <font font_name="Noto Sans Tamil UI" postscript_name="NotoSansTamilUI" style="normal" weight="400">NotoSansTamilUI-Regular.ttf</font>
-        <font font_name="Noto Sans Tamil UI Bold" postscript_name="NotoSansTamilUI-Bold" style="normal" weight="700">NotoSansTamilUI-Bold.ttf</font>
+        <font weight="400" style="normal">NotoSansTamilUI-Regular.ttf</font>
+        <font weight="700" style="normal">NotoSansTamilUI-Bold.ttf</font>
     </family>
     <family fallback="true" pages="0,3,9,13,32,34,37,254">
-        <font font_name="Noto Sans Malayalam UI" postscript_name="NotoSansMalayalamUI" style="normal" weight="400">NotoSansMalayalamUI-Regular.ttf</font>
-        <font font_name="Noto Sans Malayalam UI Bold" postscript_name="NotoSansMalayalamUI-Bold" style="normal" weight="700">NotoSansMalayalamUI-Bold.ttf</font>
+        <font weight="400" style="normal">NotoSansMalayalamUI-Regular.ttf</font>
+        <font weight="700" style="normal">NotoSansMalayalamUI-Bold.ttf</font>
     </family>
     <family fallback="true" pages="0,9,32,34,37,254">
-        <font font_name="Noto Sans Bengali UI" postscript_name="NotoSansBengaliUI" style="normal" weight="400">NotoSansBengaliUI-Regular.ttf</font>
-        <font font_name="Noto Sans Bengali UI Bold" postscript_name="NotoSansBengaliUI-Bold" style="normal" weight="700">NotoSansBengaliUI-Bold.ttf</font>
+        <font weight="400" style="normal">NotoSansBengaliUI-Regular.ttf</font>
+        <font weight="700" style="normal">NotoSansBengaliUI-Bold.ttf</font>
     </family>
     <family fallback="true" pages="0,9,12,32,34,37,254">
-        <font font_name="Noto Sans Telugu UI" postscript_name="NotoSansTeluguUI" style="normal" weight="400">NotoSansTeluguUI-Regular.ttf</font>
-        <font font_name="Noto Sans Telugu UI Bold" postscript_name="NotoSansTeluguUI-Bold" style="normal" weight="700">NotoSansTeluguUI-Bold.ttf</font>
+        <font weight="400" style="normal">NotoSansTeluguUI-Regular.ttf</font>
+        <font weight="700" style="normal">NotoSansTeluguUI-Bold.ttf</font>
     </family>
     <family fallback="true" pages="0,9,12,32,34,37,254">
-        <font font_name="Noto Sans Kannada UI" postscript_name="NotoSansKannadaUI" style="normal" weight="400">NotoSansKannadaUI-Regular.ttf</font>
-        <font font_name="Noto Sans Kannada UI Bold" postscript_name="NotoSansKannadaUI-Bold" style="normal" weight="700">NotoSansKannadaUI-Bold.ttf</font>
+        <font weight="400" style="normal">NotoSansKannadaUI-Regular.ttf</font>
+        <font weight="700" style="normal">NotoSansKannadaUI-Bold.ttf</font>
     </family>
     <family fallback="true" pages="0,9,11,32,34,37,254">
-        <font font_name="Noto Sans Oriya UI" postscript_name="NotoSansOriyaUI" style="normal" weight="400">NotoSansOriyaUI-Regular.ttf</font>
-        <font font_name="Noto Sans Oriya UI Bold" postscript_name="NotoSansOriyaUI-Bold" style="normal" weight="700">NotoSansOriyaUI-Bold.ttf</font>
+        <font weight="400" style="normal">NotoSansOriyaUI-Regular.ttf</font>
+        <font weight="700" style="normal">NotoSansOriyaUI-Bold.ttf</font>
     </family>
     <family fallback="true" pages="0,9,13,32,34,37,254">
-        <font font_name="Noto Sans Sinhala" postscript_name="NotoSansSinhala" style="normal" weight="400">NotoSansSinhala-Regular.ttf</font>
-        <font font_name="Noto Sans Sinhala Bold" postscript_name="NotoSansSinhala-Bold" style="normal" weight="700">NotoSansSinhala-Bold.ttf</font>
+        <font weight="400" style="normal">NotoSansSinhala-Regular.ttf</font>
+        <font weight="700" style="normal">NotoSansSinhala-Bold.ttf</font>
     </family>
     <family fallback="true" pages="0,23,25,32,37">
-        <font font_name="Noto Sans Khmer UI" postscript_name="NotoSansKhmerUI" style="normal" weight="400">NotoSansKhmerUI-Regular.ttf</font>
-        <font font_name="Noto Sans Khmer UI Bold" postscript_name="NotoSansKhmerUI-Bold" style="normal" weight="700">NotoSansKhmerUI-Bold.ttf</font>
+        <font weight="400" style="normal">NotoSansKhmerUI-Regular.ttf</font>
+        <font weight="700" style="normal">NotoSansKhmerUI-Bold.ttf</font>
     </family>
     <family fallback="true" pages="0,3,14,32,37">
-        <font font_name="Noto Sans Lao UI" postscript_name="NotoSansLaoUI" style="normal" weight="400">NotoSansLaoUI-Regular.ttf</font>
-        <font font_name="Noto Sans Lao UI Bold" postscript_name="NotoSansLaoUI-Bold" style="normal" weight="700">NotoSansLaoUI-Bold.ttf</font>
+        <font weight="400" style="normal">NotoSansLaoUI-Regular.ttf</font>
+        <font weight="700" style="normal">NotoSansLaoUI-Bold.ttf</font>
     </family>
     <family fallback="true" pages="0,16,32,37,169-170,254">
-        <font font_name="Noto Sans Myanmar UI" postscript_name="NotoSansMyanmarUI" style="normal" weight="400">NotoSansMyanmarUI-Regular.ttf</font>
-        <font font_name="Noto Sans Myanmar UI Bold" postscript_name="NotoSansMyanmarUI-Bold" style="normal" weight="700">NotoSansMyanmarUI-Bold.ttf</font>
+        <font weight="400" style="normal">NotoSansMyanmarUI-Regular.ttf</font>
+        <font weight="700" style="normal">NotoSansMyanmarUI-Bold.ttf</font>
     </family>
     <family fallback="true" pages="0,6-7,32,37,253-254">
-        <font font_name="Noto Sans Thaana" postscript_name="NotoSansThaana" style="normal" weight="400">NotoSansThaana-Regular.ttf</font>
-        <font font_name="Noto Sans Thaana Bold" postscript_name="NotoSansThaana-Bold" style="normal" weight="700">NotoSansThaana-Bold.ttf</font>
+        <font weight="400" style="normal">NotoSansThaana-Regular.ttf</font>
+        <font weight="700" style="normal">NotoSansThaana-Bold.ttf</font>
     </family>
     <family fallback="true" pages="0,3,170">
-        <font font_name="Noto Sans Cham" postscript_name="NotoSansCham" style="normal" weight="400">NotoSansCham-Regular.ttf</font>
-        <font font_name="Noto Sans Cham Bold" postscript_name="NotoSansCham-Bold" style="normal" weight="700">NotoSansCham-Bold.ttf</font>
+        <font weight="400" style="normal">NotoSansCham-Regular.ttf</font>
+        <font weight="700" style="normal">NotoSansCham-Bold.ttf</font>
     </family>
     <family fallback="true" pages="0,27,32,37,254">
-        <font font_name="Noto Sans Balinese" postscript_name="NotoSansBalinese" style="normal" weight="400">NotoSansBalinese-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansBalinese-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,166,254,360-362">
-        <font font_name="Noto Sans Bamum" postscript_name="NotoSansBamum" style="normal" weight="400">NotoSansBamum-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansBamum-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,27,254">
-        <font font_name="Noto Sans Batak" postscript_name="NotoSansBatak" style="normal" weight="400">NotoSansBatak-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansBatak-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,26,32,169,254">
-        <font font_name="Noto Sans Buginese" postscript_name="NotoSansBuginese" style="normal" weight="400">NotoSansBuginese-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansBuginese-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,23,254">
-        <font font_name="Noto Sans Buhid" postscript_name="NotoSansBuhid" style="normal" weight="400">NotoSansBuhid-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansBuhid-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0-3,20-22,24,254">
-        <font font_name="Noto Sans Canadian Aboriginal" postscript_name="NotoSansCanadianAboriginal" style="normal" weight="400">NotoSansCanadianAboriginal-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansCanadianAboriginal-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,19,254">
-        <font font_name="Noto Sans Cherokee" postscript_name="NotoSansCherokee" style="normal" weight="400">NotoSansCherokee-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansCherokee-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0-3,29,44,254">
-        <font font_name="Noto Sans Coptic" postscript_name="NotoSansCoptic" style="normal" weight="400">NotoSansCoptic-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansCoptic-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,44,254">
-        <font font_name="Noto Sans Glagolitic" postscript_name="NotoSansGlagolitic" style="normal" weight="400">NotoSansGlagolitic-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansGlagolitic-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,23,254">
-        <font font_name="Noto Sans Hanunoo" postscript_name="NotoSansHanunoo" style="normal" weight="400">NotoSansHanunoo-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansHanunoo-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,32,37,169,254">
-        <font font_name="Noto Sans Javanese" postscript_name="NotoSansJavanese" style="normal" weight="400">NotoSansJavanese-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansJavanese-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,169,254">
-        <font font_name="Noto Sans Kayah Li" postscript_name="NotoSansKayahLi" style="normal" weight="400">NotoSansKayahLi-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansKayahLi-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,28,37,254">
-        <font font_name="Noto Sans Lepcha" postscript_name="NotoSansLepcha" style="normal" weight="400">NotoSansLepcha-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansLepcha-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,9,25,254">
-        <font font_name="Noto Sans Limbu" postscript_name="NotoSansLimbu" style="normal" weight="400">NotoSansLimbu-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansLimbu-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,2,164,254">
-        <font font_name="Noto Sans Lisu" postscript_name="NotoSansLisu" style="normal" weight="400">NotoSansLisu-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansLisu-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,6,8,254">
-        <font font_name="Noto Sans Mandaic" postscript_name="NotoSansMandaic" style="normal" weight="400">NotoSansMandaic-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansMandaic-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,170-171,254">
-        <font font_name="Noto Sans Meetei Mayek" postscript_name="NotoSansMeeteiMayek" style="normal" weight="400">NotoSansMeeteiMayek-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansMeeteiMayek-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,25,254">
-        <font font_name="Noto Sans New Tai Lue" postscript_name="NotoSansNewTaiLue" style="normal" weight="400">NotoSansNewTaiLue-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansNewTaiLue-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,6-7,32,46,253-254">
-        <font font_name="Noto Sans NKo" postscript_name="NotoSansNKo" style="normal" weight="400">NotoSansNKo-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansNKo-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,28,254">
-        <font font_name="Noto Sans Ol Chiki" postscript_name="NotoSansOlChiki" style="normal" weight="400">NotoSansOlChiki-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansOlChiki-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,169,254">
-        <font font_name="Noto Sans Rejang" postscript_name="NotoSansRejang" style="normal" weight="400">NotoSansRejang-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansRejang-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,32,37,168,254">
-        <font font_name="Noto Sans Saurashtra" postscript_name="NotoSansSaurashtra" style="normal" weight="400">NotoSansSaurashtra-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansSaurashtra-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,27-28,254">
-        <font font_name="Noto Sans Sundanese" postscript_name="NotoSansSundanese" style="normal" weight="400">NotoSansSundanese-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansSundanese-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,9,32,37,168,254">
-        <font font_name="Noto Sans Syloti Nagri" postscript_name="NotoSansSylotiNagri" style="normal" weight="400">NotoSansSylotiNagri-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansSylotiNagri-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,3,6-7,32,34,37-38,254">
-        <font font_name="Noto Sans Syriac Estrangela" postscript_name="NotoSansSyriacEstrangela" style="normal" weight="400">NotoSansSyriacEstrangela-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansSyriacEstrangela-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,23,254">
-        <font font_name="Noto Sans Tagbanwa" postscript_name="NotoSansTagbanwa" style="normal" weight="400">NotoSansTagbanwa-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansTagbanwa-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,26,32,34,37,254">
-        <font font_name="Noto Sans Tai Tham" postscript_name="NotoSansTaiTham" style="normal" weight="400">NotoSansTaiTham-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansTaiTham-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,32,37,167,170,254">
-        <font font_name="Noto Sans Tai Viet" postscript_name="NotoSansTaiViet" style="normal" weight="400">NotoSansTaiViet-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansTaiViet-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,15,32,37,254">
-        <font font_name="Noto Sans Tibetan" postscript_name="NotoSansTibetan" style="normal" weight="400">NotoSansTibetan-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansTibetan-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,3,32,45,254">
-        <font font_name="Noto Sans Tifinagh" postscript_name="NotoSansTifinagh" style="normal" weight="400">NotoSansTifinagh-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansTifinagh-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,165-166,254">
-        <font font_name="Noto Sans Vai" postscript_name="NotoSansVai" style="normal" weight="400">NotoSansVai-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansVai-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,160-164,254">
-        <font font_name="Noto Sans Yi" postscript_name="NotoSansYi" style="normal" weight="400">NotoSansYi-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansYi-Regular.ttf</font>
     </family>
     <family fallback="true" pages="32-43">
-        <font font_name="Noto Sans Symbols" postscript_name="NotoSansSymbols" style="normal" weight="400">NotoSansSymbols-Regular-Subsetted.ttf</font>
+        <font weight="400" style="normal">NotoSansSymbols-Regular-Subsetted.ttf</font>
     </family>
     <family fallback="true" lang="zh-Hans" pages="0,2,32-39,41,43,46-159,249-250,254-255,497-498,512-513,518,524,531-533,553,565,572,574,577,584-586,597,602,606,610,612,614-615,617,619-620,632,639,644,646-647,651-652,654,662,664,671,679-682,687,689,691-696,698-702,704-718">
-        <font font_name="Noto Sans SC Regular" postscript_name="NotoSansSC-Regular" style="normal" weight="400">NotoSansSC-Regular.otf</font>
+        <font weight="400" style="normal">NotoSansSC-Regular.otf</font>
     </family>
     <family fallback="true" lang="zh-Hant" pages="0,32,34,46-48,50,52-159,249-250,254-255,498,512-657,660-661,663-678,685,760-761">
-        <font font_name="Noto Sans TC Regular" postscript_name="NotoSansTC-Regular" style="normal" weight="400">NotoSansTC-Regular.otf</font>
+        <font weight="400" style="normal">NotoSansTC-Regular.otf</font>
     </family>
     <family fallback="true" lang="ja" pages="0,32,34-35,46-159,249-250,254-255,498,512-523,525-527,530-538,540-543,545-547,550,552,554-559,561,563-568,570,572-573,575-579,582-584,586-594,596-608,610-612,614-618,620,622-625,627-628,630-631,633-638,640,642-646,649-655,658,660-664,666,669-678,681,695-696,760-761">
-        <font font_name="Noto Sans JP Regular" postscript_name="NotoSansJP-Regular" style="normal" weight="400">NotoSansJP-Regular.otf</font>
+        <font weight="400" style="normal">NotoSansJP-Regular.otf</font>
     </family>
     <family fallback="true" lang="ko" pages="0,17,32,48-50,169,172-215,255">
-        <font font_name="Noto Sans KR Regular" postscript_name="NotoSansKR-Regular" style="normal" weight="400">NotoSansKR-Regular.otf</font>
+        <font weight="400" style="normal">NotoSansKR-Regular.otf</font>
     </family>
     <family fallback="true" pages="0,17,32,49-50,172-215">
-        <font font_name="NanumGothic" postscript_name="NanumGothic" style="normal" weight="400">NanumGothic.ttf</font>
+        <font weight="400" style="normal">NanumGothic.ttf</font>
     </family>
     <family fallback="true" pages="0,32-33,35-39,41,43,48,50,224,254-255,496-502,4068">
-        <font font_name="Noto Emoji" postscript_name="NotoEmoji" style="normal" weight="400">NotoEmoji-Regular.ttf</font>
+        <font weight="400" style="normal">NotoEmoji-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,14,17,32,48-51,77-159,172-215,249-250,254-255,260">
-        <font font_name="Droid Sans Fallback" postscript_name="DroidSansFallback" style="normal" weight="400">DroidSansFallback.ttf</font>
+        <font weight="400" style="normal">DroidSansFallback.ttf</font>
     </family>
     <family fallback="true" lang="ja" pages="0,2-4,32-38,48,50-51,78-159,249-250,255">
-        <font font_name="MotoyaLMaru W3 mono" postscript_name="MotoyaLMaru-W3-90ms-RKSJ-H" style="normal" weight="400">MTLmr3m.ttf</font>
+        <font weight="400" style="normal">MTLmr3m.ttf</font>
     </family>
     <!--
         Tai Le and Mongolian are intentionally kept last, to make sure they don't override
         the East Asian punctuation for Chinese.
     -->
     <family fallback="true" pages="0,16,25,48,254">
-        <font font_name="Noto Sans Tai Le" postscript_name="NotoSansTaiLe" style="normal" weight="400">NotoSansTaiLe-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansTaiLe-Regular.ttf</font>
     </family>
     <family fallback="true" pages="0,24,32,36-37,48,254">
-        <font font_name="Noto Sans Mongolian" postscript_name="NotoSansMongolian" style="normal" weight="400">NotoSansMongolian-Regular.ttf</font>
+        <font weight="400" style="normal">NotoSansMongolian-Regular.ttf</font>
     </family>
 </familyset>
diff --git a/src/cobalt/content/ssl/certs/0a775a30.0 b/src/cobalt/content/ssl/certs/0a775a30.0
deleted file mode 100644
index 7d540a4..0000000
--- a/src/cobalt/content/ssl/certs/0a775a30.0
+++ /dev/null
@@ -1,13 +0,0 @@
------BEGIN CERTIFICATE-----
-MIICDDCCAZGgAwIBAgIQbkepx2ypcyRAiQ8DVd2NHTAKBggqhkjOPQQDAzBHMQsw
-CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU
-MBIGA1UEAxMLR1RTIFJvb3QgUjMwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAw
-MDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp
-Y2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcqhkjOPQIBBgUrgQQA
-IgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUURout
-736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2A
-DDL24CejQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud
-DgQWBBTB8Sa6oC2uhYHP0/EqEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEAgFuk
-fCPAlaUs3L6JbyO5o91lAFJekazInXJ0glMLfalAvWhgxeG4VDvBNhcl2MG9AjEA
-njWSdIUlUfUk7GRSJFClH9voy8l27OyCbvWFGFPouOOaKaqW04MjyaR7YbPMAuhd
------END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/1001acf7.0 b/src/cobalt/content/ssl/certs/1001acf7.0
deleted file mode 100644
index 5496703..0000000
--- a/src/cobalt/content/ssl/certs/1001acf7.0
+++ /dev/null
@@ -1,31 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIFWjCCA0KgAwIBAgIQbkepxUtHDA3sM9CJuRz04TANBgkqhkiG9w0BAQwFADBH
-MQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExM
-QzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIy
-MDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNl
-cnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIiMA0GCSqGSIb3DQEB
-AQUAA4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx9vaM
-f/vo27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vX
-mX7wCl7raKb0xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7
-zUjwTcLCeoiKu7rPWRnWr4+wB7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0P
-fyblqAj+lug8aJRT7oM6iCsVlgmy4HqMLnXWnOunVmSPlk9orj2XwoSPwLxAwAtc
-vfaHszVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly4cpk9+aCEI3oncKKiPo4
-Zor8Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr06zqkUsp
-zBmkMiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOO
-Rc92wO1AK/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYW
-k70paDPvOmbsB4om3xPXV2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+
-DVrNVjzRlwW5y0vtOUucxD/SVRNuJLDWcfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgF
-lQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV
-HQ4EFgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEMBQADggIBADiW
-Cu49tJYeX++dnAsznyvgyv3SjgofQXSlfKqE1OXyHuY3UjKcC9FhHb8owbZEKTV1
-d5iyfNm9dKyKaOOpMQkpAWBz40d8U6iQSifvS9efk+eCNs6aaAyC58/UEBZvXw6Z
-XPYfcX3v73svfuo21pdwCxXu11xWajOl40k4DLh9+42FpLFZXvRq4d2h9mREruZR
-gyFmxhE+885H7pwoHyXa/6xmld01D1zvICxi/ZG6qcz8WpyTgYMpl0p8WnK0OdC3
-d8t5/Wk6kjftbjhlRn7pYL15iJdfOBL07q9bgsiG1eGZbYwE8na6SfZu6W0eX6Dv
-J4J2QPim01hcDyxC2kLGe4g0x8HYRZvBPsVhHdljUEn2NIVq4BjFbkerQUIpm/Zg
-DdIx02OYI5NaAIFItO/Nis3Jz5nu2Z6qNuFoS3FJFDYoOj0dzpqPJeaAcWErtXvM
-+SUWgeExX6GjfhaknBZqlxi9dnKlC54dNuYvoS++cJEPqOba+MSSQGwlfnuzCdyy
-F62ARPBopY+Udf90WuioAnwMCeKpSwughQtiue+hMZL77/ZRBIls6Kl0obsXs7X9
-SQ98POyDGCBDTtWTurQ0sR8WNh8M5mQ5Fkzc4P4dyKliPUDqysU0ArSuiYgzNdws
-E3PYJ/HQcu51OyLemGhmW/HGY0dVHLqlCFF1pkgl
------END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/626dceaf.0 b/src/cobalt/content/ssl/certs/626dceaf.0
deleted file mode 100644
index 984f1d1..0000000
--- a/src/cobalt/content/ssl/certs/626dceaf.0
+++ /dev/null
@@ -1,31 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIFWjCCA0KgAwIBAgIQbkepxlqz5yDFMJo/aFLybzANBgkqhkiG9w0BAQwFADBH
-MQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExM
-QzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIy
-MDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNl
-cnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEB
-AQUAA4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTukk3Lv
-CvptnfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3Kg
-GjSY6Dlo7JUle3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9Bu
-XvAuMC6C/Pq8tBcKSOWIm8Wba96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOd
-re7kRXuJVfeKH2JShBKzwkCX44ofR5GmdFrS+LFjKBC4swm4VndAoiaYecb+3yXu
-PuWgf9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbuak7MkogwTZq9TwtImoS1
-mKPV+3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscszcTJGr61K
-8YzodDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqj
-x5RWIr9qS34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsR
-nTKaG73VululycslaVNVJ1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0
-kzCqgc7dGtxRcw1PcOnlthYhGXmy5okLdWTK1au8CcEYof/UVKGFPP0UJAOyh9Ok
-twIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV
-HQ4EFgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEMBQADggIBALZp
-8KZ3/p7uC4Gt4cCpx/k1HUCCq+YEtN/L9x0Pg/B+E02NjO7jMyLDOfxA325BS0JT
-vhaI8dI4XsRomRyYUpOM52jtG2pzegVATX9lO9ZY8c6DR2Dj/5epnGB3GFW1fgiT
-z9D2PGcDFWEJ+YF59exTpJ/JjwGLc8R3dtyDovUMSRqodt6Sm2T4syzFJ9MHwAiA
-pJiS4wGWAqoC7o87xdFtCjMwc3i5T1QWvwsHoaRc5svJXISPD+AVdyx+Jn7axEvb
-pxZ3B7DNdehyQtaVhJ2Gg/LkkM0JR9SLA3DaWsYDQvTtN6LwG1BUSw7YhN4ZKJmB
-R64JGz9I0cNv4rBgF/XuIwKl2gBbbZCr7qLpGzvpx0QnRY5rn/WkhLx3+WuXrD5R
-RaIRpsyF7gpo8j5QOHokYh4XIDdtak23CZvJ/KRY9bb7nE4Yu5UC56GtmwfuNmsk
-0jmGwZODUNKBRqhfYlcsu2xkiAhu7xNUX90txGdj08+JN7+dIPT7eoOboB6BAFDC
-5AwiWVIQ7UNWhwD4FFKnHYuTjKJNRn8nxnGbJN7k2oaLDX5rIMHAnuFl2GqjpuiF
-izoHCBy69Y9Vmhh1fuXsgWbRIXOhNUQLgD1bnF5vKheW0YMjiGZt5obicDIvUiLn
-yOd/xCxgXS/Dr55FBcOEArf9LAhST4Ldo/DUhgkC
------END CERTIFICATE-----
diff --git a/src/cobalt/content/ssl/certs/a3418fda.0 b/src/cobalt/content/ssl/certs/a3418fda.0
deleted file mode 100644
index 07372d3..0000000
--- a/src/cobalt/content/ssl/certs/a3418fda.0
+++ /dev/null
@@ -1,13 +0,0 @@
------BEGIN CERTIFICATE-----
-MIICCjCCAZGgAwIBAgIQbkepyIuUtui7OyrYorLBmTAKBggqhkjOPQQDAzBHMQsw
-CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU
-MBIGA1UEAxMLR1RTIFJvb3QgUjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAw
-MDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp
-Y2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcqhkjOPQIBBgUrgQQA
-IgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa6zzu
-hXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/l
-xKvRHYqjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud
-DgQWBBSATNbrdP9JNqPV2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNnADBkAjBqUFJ0
-CMRw3J5QdCHojXohw0+WbhXRIjVhLfoIN+4Zba3bssx9BzT1YBkstTTZbyACMANx
-sbqjYAuG7ZoIapVon+Kz4ZNkfF6Tpt95LY2F45TPI11xzPKwTdb+mciUqXWi4w==
------END CERTIFICATE-----
diff --git a/src/cobalt/css_parser/css_parser.gyp b/src/cobalt/css_parser/css_parser.gyp
index 32f9c0d..185ee0b 100644
--- a/src/cobalt/css_parser/css_parser.gyp
+++ b/src/cobalt/css_parser/css_parser.gyp
@@ -111,7 +111,6 @@
       'dependencies': [
         '<(DEPTH)/cobalt/base/base.gyp:base',
         '<(DEPTH)/cobalt/cssom/cssom.gyp:cssom',
-        '<(DEPTH)/nb/nb.gyp:nb',
         '<(DEPTH)/third_party/icu/icu.gyp:icuuc',
         'css_grammar',
       ],
diff --git a/src/cobalt/css_parser/grammar.h b/src/cobalt/css_parser/grammar.h
index 2e21c88..7168cb1 100644
--- a/src/cobalt/css_parser/grammar.h
+++ b/src/cobalt/css_parser/grammar.h
@@ -55,8 +55,6 @@
 #include "cobalt/cssom/css_style_declaration.h"
 #include "cobalt/cssom/css_style_rule.h"
 #include "cobalt/cssom/css_style_sheet.h"
-#include "cobalt/cssom/filter_function.h"
-#include "cobalt/cssom/filter_function_list_value.h"
 #include "cobalt/cssom/integer_value.h"
 #include "cobalt/cssom/keyword_value.h"
 #include "cobalt/cssom/length_value.h"
@@ -66,7 +64,6 @@
 #include "cobalt/cssom/media_feature_keyword_value.h"
 #include "cobalt/cssom/media_list.h"
 #include "cobalt/cssom/media_query.h"
-#include "cobalt/cssom/mtm_function.h"
 #include "cobalt/cssom/number_value.h"
 #include "cobalt/cssom/percentage_value.h"
 #include "cobalt/cssom/property_key_list_value.h"
@@ -81,8 +78,6 @@
 #include "cobalt/cssom/transform_function.h"
 #include "cobalt/cssom/transform_function_list_value.h"
 #include "cobalt/cssom/url_src_value.h"
-#include "third_party/glm/glm/gtc/type_ptr.hpp"
-#include "third_party/glm/glm/mat4x4.hpp"
 
 namespace cobalt {
 namespace css_parser {
@@ -105,7 +100,7 @@
 
 #if defined(OS_STARBOARD)
 #include "starboard/memory.h"
-#define YYFREE SbMemoryDeallocate
+#define YYFREE SbMemoryFree
 #define YYMALLOC SbMemoryAllocate
 #endif
 
diff --git a/src/cobalt/css_parser/grammar.y b/src/cobalt/css_parser/grammar.y
index e4bb9a1..34a7143 100644
--- a/src/cobalt/css_parser/grammar.y
+++ b/src/cobalt/css_parser/grammar.y
@@ -114,7 +114,6 @@
 %token kColorToken                            // color
 %token kContentToken                          // content
 %token kDisplayToken                          // display
-%token kFilterToken                           // filter
 %token kFontToken                             // font
 %token kFontFamilyToken                       // font-family
 %token kFontSizeToken                         // font-size
@@ -221,7 +220,6 @@
 // %token kLeftToken                    // left - also property name token
 %token kMaroonToken                     // maroon
 %token kMiddleToken                     // middle
-%token kMonoscopicToken                 // monoscopic
 %token kMonospaceToken                  // monospace
 %token kNavyToken                       // navy
 %token kNoneToken                       // none
@@ -249,8 +247,6 @@
 %token kStaticToken                     // static
 %token kStepEndToken                    // step-end
 %token kStepStartToken                  // step-start
-%token kStereoscopicLeftRightToken      // stereoscopic-left-right
-%token kStereoscopicTopBottomToken      // stereoscopic-top-bottom
 %token kTealToken                       // teal
 %token kToToken                         // to
 // %token kTopToken                     // top - also property name token
@@ -357,7 +353,6 @@
 %token kLinearGradientFunctionToken     // linear-gradient(
 %token kLocalFunctionToken              // local(
 %token kMatrixFunctionToken             // matrix(
-%token kMatrix3dFunctionToken           // matrix3d(
 %token kNotFunctionToken                // not(
 %token kNthChildFunctionToken           // nth-child(
 %token kNthLastChildFunctionToken       // nth-last-child(
@@ -375,7 +370,6 @@
 %token kRadialGradientFunctionToken     // radial-gradient(
 %token kRGBFunctionToken                // rgb(
 %token kRGBAFunctionToken               // rgba(
-%token kCobaltMtmFunctionToken          // -cobalt-mtm(
 
 // Tokens with a string value.
 %token <string> kStringToken            // "...", '...'
@@ -588,17 +582,8 @@
                        white_space_property_value
                        width_property_value
                        z_index_property_value
-                       filter_property_value
 %destructor { SafeRelease($$); } <property_value>
 
-%union { std::vector<float>* number_matrix; }
-%type <number_matrix> number_matrix
-%destructor { delete $$; } <number_matrix>
-
-%union { glm::mat4* matrix4x4; }
-%type <matrix4x4> cobalt_mtm_transform_function
-%destructor { delete $$; } <matrix4x4>
-
 %union { MarginOrPaddingShorthand* margin_or_padding_shorthand; }
 %type <margin_or_padding_shorthand> margin_property_value padding_property_value
 %destructor { delete $$; } <margin_or_padding_shorthand>
@@ -778,29 +763,6 @@
 %type <transform_functions> transform_list
 %destructor { delete $$; } <transform_functions>
 
-%union { cssom::FilterFunction* filter_function; }
-%type <filter_function> cobalt_mtm_filter_function
-%type <filter_function> filter_function
-%destructor { delete $$; } <filter_function>
-
-%union { cssom::FilterFunctionListValue::Builder* cobalt_mtm_filter_functions; }
-%type <cobalt_mtm_filter_functions> filter_function_list
-%destructor { delete $$; } <cobalt_mtm_filter_functions>
-
-%union {
-  cssom::MTMFunction::ResolutionMatchedMeshListBuilder* cobalt_mtm_resolution_matched_meshes; }
-%type <cobalt_mtm_resolution_matched_meshes> cobalt_mtm_resolution_matched_mesh_list
-%destructor { delete $$; } <cobalt_mtm_resolution_matched_meshes>
-
-%union { cssom::MTMFunction::ResolutionMatchedMesh* cobalt_mtm_resolution_matched_mesh; }
-%type <cobalt_mtm_resolution_matched_mesh> cobalt_mtm_resolution_matched_mesh
-%destructor { delete $$; } <cobalt_mtm_resolution_matched_mesh>
-
-%union { cssom::KeywordValue* stereo_mode; }
-%type <stereo_mode> maybe_cobalt_mtm_stereo_mode;
-%type <stereo_mode> cobalt_mtm_stereo_mode;
-%destructor { SafeRelease($$); } <stereo_mode>
-
 %union { cssom::TimeListValue::Builder* time_list; }
 %type <time_list> comma_separated_time_list
 %destructor { delete $$; } <time_list>
@@ -1409,10 +1371,6 @@
     $$ = TrivialStringPiece::FromCString(
             cssom::GetPropertyName(cssom::kDisplayProperty));
   }
-  | kFilterToken {
-    $$ = TrivialStringPiece::FromCString(
-            cssom::GetPropertyName(cssom::kFilterProperty));
-  }
   | kFontToken {
     $$ = TrivialStringPiece::FromCString(
             cssom::GetPropertyName(cssom::kFontProperty));
@@ -1760,9 +1718,6 @@
   | kMiddleToken {
     $$ = TrivialStringPiece::FromCString(cssom::kMiddleKeywordName);
   }
-  | kMonoscopicToken {
-    $$ = TrivialStringPiece::FromCString(cssom::kMonoscopicKeywordName);
-  }
   | kMonospaceToken {
     $$ = TrivialStringPiece::FromCString(cssom::kMonospaceKeywordName);
   }
@@ -1841,14 +1796,6 @@
   | kStepStartToken {
     $$ = TrivialStringPiece::FromCString(cssom::kStepStartKeywordName);
   }
-  | kStereoscopicLeftRightToken {
-    $$ = TrivialStringPiece::FromCString(
-             cssom::kStereoscopicLeftRightKeywordName);
-  }
-  | kStereoscopicTopBottomToken {
-    $$ = TrivialStringPiece::FromCString(
-             cssom::kStereoscopicTopBottomKeywordName);
-  }
   | kTealToken {
     $$ = TrivialStringPiece::FromCString(cssom::kTealKeywordName);
   }
@@ -3437,7 +3384,7 @@
 validated_box_shadow_list:
     box_shadow_list {
     scoped_ptr<ShadowPropertyInfo> shadow_property_info($1);
-    if (!shadow_property_info->IsShadowPropertyValid(kBoxShadow)) {
+    if (!shadow_property_info->IsShadowPropertyValid(ShadowType::kBoxShadow)) {
       parser_impl->LogWarning(@1, "invalid box shadow property.");
       $$ = NULL;
     } else {
@@ -3450,17 +3397,15 @@
 
 comma_separated_box_shadow_list:
     validated_box_shadow_list {
-    scoped_refptr<cssom::PropertyValue> shadow = MakeScopedRefPtrAndRelease($1);
-    if (shadow) {
+    if ($1) {
       $$ = new cssom::PropertyListValue::Builder();
-      $$->push_back(shadow);
+      $$->push_back(MakeScopedRefPtrAndRelease($1));
     }
   }
   | comma_separated_box_shadow_list comma validated_box_shadow_list {
     $$ = $1;
-    scoped_refptr<cssom::PropertyValue> shadow = MakeScopedRefPtrAndRelease($3);
-    if ($$ && shadow) {
-      $$->push_back(shadow);
+    if ($$ && $3) {
+      $$->push_back(MakeScopedRefPtrAndRelease($3));
     }
   }
   ;
@@ -4255,7 +4200,7 @@
 validated_text_shadow_list:
     text_shadow_list {
     scoped_ptr<ShadowPropertyInfo> shadow_property_info($1);
-    if (!shadow_property_info->IsShadowPropertyValid(kTextShadow)) {
+    if (!shadow_property_info->IsShadowPropertyValid(ShadowType::kTextShadow)) {
       parser_impl->LogWarning(@1, "invalid text shadow property.");
       $$ = NULL;
     } else {
@@ -5816,12 +5761,6 @@
                                       MakeScopedRefPtrAndRelease($4), $5)
             : NULL;
   }
-  | kFilterToken maybe_whitespace colon filter_property_value
-      maybe_important {
-    $$ = $4 ? new PropertyDeclaration(cssom::kFilterProperty,
-                                      MakeScopedRefPtrAndRelease($4), $5)
-            : NULL;
-  }
   | kFontToken maybe_whitespace colon font_property_value maybe_important {
     scoped_ptr<FontShorthand> font($4);
     DCHECK(font);
@@ -6467,122 +6406,3 @@
     }
   }
   ;
-
-// Filters that can be applied to the object's rendering.
-//   https://www.w3.org/TR/filter-effects-1/#FilterProperty
-filter_property_value:
-    kNoneToken maybe_whitespace {
-    $$ = AddRef(cssom::KeywordValue::GetNone().get());
-  }
-  | filter_function_list {
-    scoped_ptr<cssom::FilterFunctionListValue::Builder> property_value($1);
-    $$ = AddRef(new cssom::FilterFunctionListValue(property_value->Pass()));
-  }
-  | common_values
-  ;
-
-filter_function_list:
-  // TODO: Parse list of filter_function's. This only parses one-element lists.
-    filter_function {
-    $$ = new cssom::FilterFunctionListValue::Builder();
-    $$->push_back($1);
-  }
-  ;
-
-// The set of allowed filter functions.
-//   https://www.w3.org/TR/filter-effects-1/
-filter_function:
-    cobalt_mtm_filter_function {
-    $$ = $1;
-  }
-  ;
-
-cobalt_mtm_filter_function:
-  // Encodes an mtm filter. Currently the only type of filter function supported.
-    kCobaltMtmFunctionToken maybe_whitespace url
-        cobalt_mtm_resolution_matched_mesh_list comma angle angle comma
-        cobalt_mtm_transform_function maybe_cobalt_mtm_stereo_mode
-        ')' maybe_whitespace {
-    scoped_ptr<cssom::MTMFunction::ResolutionMatchedMeshListBuilder>
-        resolution_matched_mesh_urls($4);
-    scoped_ptr<glm::mat4> transform($9);
-
-    $$ = new cssom::MTMFunction(
-        MakeScopedRefPtrAndRelease($3),
-        resolution_matched_mesh_urls->Pass(),
-        $6,
-        $7,
-        *transform,
-        MakeScopedRefPtrAndRelease($10));
-  }
-  ;
-
-cobalt_mtm_resolution_matched_mesh_list:
-    /* empty */ {
-    $$ = new cssom::MTMFunction::ResolutionMatchedMeshListBuilder();
-  }
-  // Specifies a different mesh for a particular image resolution.
-  | cobalt_mtm_resolution_matched_mesh_list cobalt_mtm_resolution_matched_mesh {
-    $$ = $1;
-    $$->push_back($2);
-  }
-  ;
-
-cobalt_mtm_resolution_matched_mesh:
-    non_negative_integer non_negative_integer url {
-    $$ = new cssom::MTMFunction::ResolutionMatchedMesh($1, $2,
-      MakeScopedRefPtrAndRelease($3));
-  }
-  ;
-
-// The set of transform functions allowed in MTM filters, currently a separate
-// production hierarchy from the main <transform_function> and represented as a
-// glm::mat4.
-//   https://www.w3.org/TR/css-transforms-1/#three-d-transform-functions
-cobalt_mtm_transform_function:
-  // Specifies an arbitrary affine 3D transformation, currently the only
-  // supported transform in MTM.
-    kMatrix3dFunctionToken maybe_whitespace number_matrix ')' maybe_whitespace {
-    scoped_ptr<std::vector<float> > matrix($3);
-    if (matrix == NULL || matrix->size() !=  16) {
-      parser_impl->LogError(
-          @3,
-          "matrix3d function expects 16 floating-point numbers as arguments");
-      YYERROR;
-    } else {
-      // GLM and the W3 spec both use column-major order.
-      $$ = new glm::mat4(glm::make_mat4(&(*matrix)[0]));
-    }
-  }
-  ;
-
-number_matrix:
-    number {
-    $$ = new std::vector<float>(1, $1);
-  }
-  | number_matrix comma number {
-    $$ = $1;
-    $$->push_back($3);
-  }
-  ;
-
-maybe_cobalt_mtm_stereo_mode:
-    /* empty */ {
-    $$ = AddRef(cssom::KeywordValue::GetMonoscopic().get());
-  }
-  | comma cobalt_mtm_stereo_mode {
-    $$ = $2;
-  }
-  ;
-
-cobalt_mtm_stereo_mode:
-    kMonoscopicToken maybe_whitespace {
-    $$ = AddRef(cssom::KeywordValue::GetMonoscopic().get());
-  }
-  | kStereoscopicLeftRightToken maybe_whitespace {
-    $$ = AddRef(cssom::KeywordValue::GetStereoscopicLeftRight().get());
-  }
-  | kStereoscopicTopBottomToken maybe_whitespace {
-    $$ = AddRef(cssom::KeywordValue::GetStereoscopicTopBottom().get());
-  }
-  ;
diff --git a/src/cobalt/css_parser/parser.cc b/src/cobalt/css_parser/parser.cc
index cb4fb84..d289e3c 100644
--- a/src/cobalt/css_parser/parser.cc
+++ b/src/cobalt/css_parser/parser.cc
@@ -24,7 +24,6 @@
 #include <string>
 
 #include "base/bind.h"
-#include "base/debug/trace_event.h"
 #include "base/hash_tables.h"
 #include "base/lazy_instance.h"
 #include "base/optional.h"
@@ -67,7 +66,6 @@
 #include "cobalt/cssom/matrix_function.h"
 #include "cobalt/cssom/media_list.h"
 #include "cobalt/cssom/media_query.h"
-#include "cobalt/cssom/mtm_function.h"
 #include "cobalt/cssom/next_sibling_combinator.h"
 #include "cobalt/cssom/not_pseudo_class.h"
 #include "cobalt/cssom/number_value.h"
@@ -85,7 +83,6 @@
 #include "cobalt/cssom/unicode_range_value.h"
 #include "cobalt/cssom/universal_selector.h"
 #include "cobalt/cssom/url_value.h"
-#include "nb/memory_scope.h"
 
 namespace cobalt {
 namespace css_parser {
@@ -255,21 +252,18 @@
       into_declaration_data_(NULL) {}
 
 scoped_refptr<cssom::CSSStyleSheet> ParserImpl::ParseStyleSheet() {
-  TRACK_MEMORY_SCOPE("CSS");
   scanner_.PrependToken(kStyleSheetEntryPointToken);
   return Parse() ? style_sheet_
                  : make_scoped_refptr(new cssom::CSSStyleSheet(css_parser_));
 }
 
 scoped_refptr<cssom::CSSRule> ParserImpl::ParseRule() {
-  TRACK_MEMORY_SCOPE("CSS");
   scanner_.PrependToken(kRuleEntryPointToken);
   return Parse() ? rule_ : NULL;
 }
 
 scoped_refptr<cssom::CSSDeclaredStyleData>
 ParserImpl::ParseStyleDeclarationList() {
-  TRACK_MEMORY_SCOPE("CSS");
   scanner_.PrependToken(kStyleDeclarationListEntryPointToken);
   return Parse() ? style_declaration_data_
                  : make_scoped_refptr(new cssom::CSSDeclaredStyleData());
@@ -277,7 +271,6 @@
 
 scoped_refptr<cssom::CSSFontFaceDeclarationData>
 ParserImpl::ParseFontFaceDeclarationList() {
-  TRACK_MEMORY_SCOPE("CSS");
   scanner_.PrependToken(kFontFaceDeclarationListEntryPointToken);
   return Parse() ? font_face_declaration_data_
                  : make_scoped_refptr(new cssom::CSSFontFaceDeclarationData());
@@ -295,7 +288,6 @@
 
 scoped_refptr<cssom::PropertyValue> ParserImpl::ParsePropertyValue(
     const std::string& property_name) {
-  TRACK_MEMORY_SCOPE("CSS");
   Token property_name_token;
   bool is_property_name_known =
       scanner_.DetectPropertyNameToken(property_name, &property_name_token);
@@ -318,7 +310,6 @@
 void ParserImpl::ParsePropertyIntoDeclarationData(
     const std::string& property_name,
     cssom::CSSDeclarationData* declaration_data) {
-  TRACK_MEMORY_SCOPE("CSS");
   Token property_name_token;
   bool is_property_name_known =
       scanner_.DetectPropertyNameToken(property_name, &property_name_token);
@@ -347,13 +338,11 @@
 }
 
 scoped_refptr<cssom::MediaList> ParserImpl::ParseMediaList() {
-  TRACK_MEMORY_SCOPE("CSS");
   scanner_.PrependToken(kMediaListEntryPointToken);
   return Parse() ? media_list_ : make_scoped_refptr(new cssom::MediaList());
 }
 
 scoped_refptr<cssom::MediaQuery> ParserImpl::ParseMediaQuery() {
-  TRACK_MEMORY_SCOPE("CSS");
   scanner_.PrependToken(kMediaQueryEntryPointToken);
   return Parse() ? media_query_ : make_scoped_refptr(new cssom::MediaQuery());
 }
@@ -373,10 +362,8 @@
 }
 
 bool ParserImpl::Parse() {
-  TRACK_MEMORY_SCOPE("CSS");
   // For more information on error codes
   // see http://www.gnu.org/software/bison/manual/html_node/Parser-Function.html
-  TRACE_EVENT0("cobalt::css_parser", "ParseImpl::Parse");
   last_syntax_error_location_ = base::nullopt;
   int error_code(yyparse(this));
   switch (error_code) {
diff --git a/src/cobalt/css_parser/parser_test.cc b/src/cobalt/css_parser/parser_test.cc
index 2de5da7..0aaf421 100644
--- a/src/cobalt/css_parser/parser_test.cc
+++ b/src/cobalt/css_parser/parser_test.cc
@@ -38,7 +38,6 @@
 #include "cobalt/cssom/css_style_sheet.h"
 #include "cobalt/cssom/descendant_combinator.h"
 #include "cobalt/cssom/empty_pseudo_class.h"
-#include "cobalt/cssom/filter_function_list_value.h"
 #include "cobalt/cssom/focus_pseudo_class.h"
 #include "cobalt/cssom/following_sibling_combinator.h"
 #include "cobalt/cssom/font_style_value.h"
@@ -53,7 +52,6 @@
 #include "cobalt/cssom/matrix_function.h"
 #include "cobalt/cssom/media_list.h"
 #include "cobalt/cssom/media_query.h"
-#include "cobalt/cssom/mtm_function.h"
 #include "cobalt/cssom/next_sibling_combinator.h"
 #include "cobalt/cssom/not_pseudo_class.h"
 #include "cobalt/cssom/number_value.h"
@@ -7975,7 +7973,7 @@
 
 TEST_F(ParserTest, ParsesFontFaceSrcLocalString) {
   scoped_refptr<cssom::CSSFontFaceDeclarationData> font_face =
-      parser_.ParseFontFaceDeclarationList("src: local('Roboto Regular');",
+      parser_.ParseFontFaceDeclarationList("src: local('Roboto');",
                                            source_location_);
 
   scoped_refptr<cssom::PropertyListValue> src_list =
@@ -7987,12 +7985,12 @@
       dynamic_cast<cssom::LocalSrcValue*>(
           src_list->get_item_modulo_size(0).get());
   ASSERT_TRUE(local_src);
-  EXPECT_EQ("Roboto Regular", local_src->value());
+  EXPECT_EQ("Roboto", local_src->value());
 }
 
 TEST_F(ParserTest, ParsesFontFaceSrcLocalIdentifier) {
   scoped_refptr<cssom::CSSFontFaceDeclarationData> font_face =
-      parser_.ParseFontFaceDeclarationList("src: local(Roboto Regular);",
+      parser_.ParseFontFaceDeclarationList("src: local(Roboto);",
                                            source_location_);
 
   scoped_refptr<cssom::PropertyListValue> src_list =
@@ -8004,7 +8002,7 @@
       dynamic_cast<cssom::LocalSrcValue*>(
           src_list->get_item_modulo_size(0).get());
   ASSERT_TRUE(local_src);
-  EXPECT_EQ("Roboto Regular", local_src->value());
+  EXPECT_EQ("Roboto", local_src->value());
 }
 
 TEST_F(ParserTest, ParsesFontFaceSrcUrlWithoutFormat) {
@@ -8264,240 +8262,5 @@
   EXPECT_TRUE(media_list->EvaluateConditionValue(size));
 }
 
-TEST_F(ParserTest, ParsesNoneFilter) {
-  scoped_refptr<cssom::CSSDeclaredStyleData> style =
-      parser_.ParseStyleDeclarationList("filter: none;", source_location_);
-
-  EXPECT_EQ(cssom::KeywordValue::GetNone(),
-            style->GetPropertyValue(cssom::kFilterProperty));
-}
-
-TEST_F(ParserTest, ParsesFilterWithKeywordInitial) {
-  scoped_refptr<cssom::CSSDeclaredStyleData> style =
-      parser_.ParseStyleDeclarationList("filter: initial;", source_location_);
-
-  EXPECT_EQ(cssom::KeywordValue::GetInitial(),
-            style->GetPropertyValue(cssom::kFilterProperty));
-}
-
-TEST_F(ParserTest, ParsesFilterWithKeywordInherit) {
-  scoped_refptr<cssom::CSSDeclaredStyleData> style =
-      parser_.ParseStyleDeclarationList("filter: inherit;", source_location_);
-
-  EXPECT_EQ(cssom::KeywordValue::GetInherit(),
-            style->GetPropertyValue(cssom::kFilterProperty));
-}
-
-TEST_F(ParserTest, ParsesMtmSingleUrlFilter) {
-  scoped_refptr<cssom::CSSDeclaredStyleData> style =
-      parser_.ParseStyleDeclarationList(
-          "filter: -cobalt-mtm(url(projection.msh),"
-          "                        180deg 1.5rad,"
-          "                        matrix3d(1, 0, 0, 0,"
-          "                                 0, 1, 0, 0,"
-          "                                 0, 0, 1, 0,"
-          "                                 0, 0, 0, 1));",
-          source_location_);
-  scoped_refptr<cssom::FilterFunctionListValue> filter_list =
-      dynamic_cast<cssom::FilterFunctionListValue*>(
-          style->GetPropertyValue(cssom::kFilterProperty).get());
-
-  ASSERT_TRUE(filter_list);
-  ASSERT_EQ(1, filter_list->value().size());
-
-  const cssom::MTMFunction* mtm_function =
-      dynamic_cast<const cssom::MTMFunction*>(filter_list->value()[0]);
-  ASSERT_TRUE(mtm_function);
-
-  EXPECT_EQ(static_cast<float>(M_PI), mtm_function->horizontal_fov());
-  EXPECT_EQ(1.5f, mtm_function->vertical_fov());
-
-  EXPECT_EQ(mtm_function->stereo_mode()->value(),
-            cssom::KeywordValue::Value::kMonoscopic);
-}
-
-TEST_F(ParserTest, ParsesMtmResolutionMatchedUrlsFilter) {
-  scoped_refptr<cssom::CSSDeclaredStyleData> style =
-      parser_.ParseStyleDeclarationList(
-          "filter: -cobalt-mtm(url(projection.msh)"
-          "                     640 480 url(p2.msh)"
-          "                     1920 1080 url(yeehaw.msh)"
-          "                     33 22 url(yoda.msh),"
-          "                    100deg 60deg,"
-          "                    matrix3d(1, 0, 0, 5,"
-          "                             0, 2, 0, 0,"
-          "                             6, 0, 3, 0,"
-          "                             0, 7, 0, 4));",
-          source_location_);
-
-  scoped_refptr<cssom::FilterFunctionListValue> filter_list =
-      dynamic_cast<cssom::FilterFunctionListValue*>(
-          style->GetPropertyValue(cssom::kFilterProperty).get());
-
-  ASSERT_TRUE(filter_list);
-  const cssom::MTMFunction* mtm_function =
-      dynamic_cast<const cssom::MTMFunction*>(filter_list->value()[0]);
-
-  const cssom::MTMFunction::ResolutionMatchedMeshListBuilder& meshes =
-      mtm_function->resolution_matched_meshes();
-
-  ASSERT_EQ(3, meshes.size());
-  EXPECT_EQ(640, meshes[0]->width_match());
-  EXPECT_EQ(22, meshes[2]->height_match());
-
-  EXPECT_EQ(
-      "yeehaw.msh",
-      dynamic_cast<cssom::URLValue*>(meshes[1]->mesh_url().get())->value());
-
-  EXPECT_EQ(mtm_function->stereo_mode()->value(),
-            cssom::KeywordValue::Value::kMonoscopic);
-}
-
-TEST_F(ParserTest, ParsesMtmTransformMatrixFilter) {
-  scoped_refptr<cssom::CSSDeclaredStyleData> style =
-      parser_.ParseStyleDeclarationList(
-          "filter: -cobalt-mtm(url(p.msh),"
-          "                    100deg 60deg,"
-          "                    matrix3d(1, 0, 0, 5,"
-          "                             0, 2, 0, 0,"
-          "                             6, 0, 3, 0,"
-          "                             0, 7, 0, 4));",
-          source_location_);
-
-  scoped_refptr<cssom::FilterFunctionListValue> filter_list =
-      dynamic_cast<cssom::FilterFunctionListValue*>(
-          style->GetPropertyValue(cssom::kFilterProperty).get());
-
-  ASSERT_TRUE(filter_list);
-  const cssom::MTMFunction* mtm_function =
-      dynamic_cast<const cssom::MTMFunction*>(filter_list->value()[0]);
-
-  const glm::mat4& actual = mtm_function->transform();
-  EXPECT_TRUE(
-      glm::all(glm::equal(glm::vec4(1.0f, 0.0f, 0.0f, 5.0f), actual[0])));
-  EXPECT_TRUE(
-      glm::all(glm::equal(glm::vec4(6.0f, 0.0f, 3.0f, 0.0f), actual[2])));
-  EXPECT_EQ(7.0f, actual[3][1]);
-  EXPECT_EQ(2.0f, actual[1][1]);
-  EXPECT_EQ(0.0f, actual[2][3]);
-  EXPECT_EQ(4.0f, actual[3][3]);
-
-  EXPECT_EQ(mtm_function->stereo_mode()->value(),
-            cssom::KeywordValue::Value::kMonoscopic);
-}
-
-TEST_F(ParserTest, ParsesMtmMonoscopicStereoModeFilter) {
-  scoped_refptr<cssom::CSSDeclaredStyleData> style =
-      parser_.ParseStyleDeclarationList(
-          "filter: -cobalt-mtm(url(p.msh),"
-          "                    100deg 60deg,"
-          "                    matrix3d(1, 0, 0, 5,"
-          "                             0, 2, 0, 0,"
-          "                             6, 0, 3, 0,"
-          "                             0, 7, 0, 4),"
-          "                    monoscopic);",
-          source_location_);
-  scoped_refptr<cssom::FilterFunctionListValue> filter_list =
-      dynamic_cast<cssom::FilterFunctionListValue*>(
-          style->GetPropertyValue(cssom::kFilterProperty).get());
-
-  ASSERT_TRUE(filter_list);
-  ASSERT_EQ(1, filter_list->value().size());
-
-  const cssom::MTMFunction* mtm_function =
-      dynamic_cast<const cssom::MTMFunction*>(filter_list->value()[0]);
-  ASSERT_TRUE(mtm_function);
-
-  EXPECT_EQ(mtm_function->stereo_mode()->value(),
-            cssom::KeywordValue::Value::kMonoscopic);
-}
-
-TEST_F(ParserTest, ParsesMtmStereoscopicLeftRightStereoModeFilter) {
-  scoped_refptr<cssom::CSSDeclaredStyleData> style =
-      parser_.ParseStyleDeclarationList(
-          "filter: -cobalt-mtm(url(p.msh),"
-          "                    100deg 60deg,"
-          "                    matrix3d(1, 0, 0, 5,"
-          "                             0, 2, 0, 0,"
-          "                             6, 0, 3, 0,"
-          "                             0, 7, 0, 4),"
-          "                    stereoscopic-left-right);",
-          source_location_);
-  scoped_refptr<cssom::FilterFunctionListValue> filter_list =
-      dynamic_cast<cssom::FilterFunctionListValue*>(
-          style->GetPropertyValue(cssom::kFilterProperty).get());
-
-  ASSERT_TRUE(filter_list);
-  ASSERT_EQ(1, filter_list->value().size());
-
-  const cssom::MTMFunction* mtm_function =
-      dynamic_cast<const cssom::MTMFunction*>(filter_list->value()[0]);
-  ASSERT_TRUE(mtm_function);
-
-  EXPECT_EQ(mtm_function->stereo_mode()->value(),
-            cssom::KeywordValue::Value::kStereoscopicLeftRight);
-}
-
-TEST_F(ParserTest, ParsesMtmStereoscopicTopBottomStereoModeFilter) {
-  scoped_refptr<cssom::CSSDeclaredStyleData> style =
-      parser_.ParseStyleDeclarationList(
-          "filter: -cobalt-mtm(url(p.msh),"
-          "                    100deg 60deg,"
-          "                    matrix3d(1, 0, 0, 5,"
-          "                             0, 2, 0, 0,"
-          "                             6, 0, 3, 0,"
-          "                             0, 7, 0, 4),"
-          "                    stereoscopic-top-bottom);",
-          source_location_);
-  scoped_refptr<cssom::FilterFunctionListValue> filter_list =
-      dynamic_cast<cssom::FilterFunctionListValue*>(
-          style->GetPropertyValue(cssom::kFilterProperty).get());
-
-  ASSERT_TRUE(filter_list);
-  ASSERT_EQ(1, filter_list->value().size());
-
-  const cssom::MTMFunction* mtm_function =
-      dynamic_cast<const cssom::MTMFunction*>(filter_list->value()[0]);
-  ASSERT_TRUE(mtm_function);
-
-  EXPECT_EQ(mtm_function->stereo_mode()->value(),
-            cssom::KeywordValue::Value::kStereoscopicTopBottom);
-}
-
-TEST_F(ParserTest, HandlesInvalidMtmStereoMode) {
-  EXPECT_CALL(parser_observer_,
-              OnWarning("[object ParserTest]:1:9: warning: unsupported value"));
-
-  scoped_refptr<cssom::CSSDeclaredStyleData> style =
-      parser_.ParseStyleDeclarationList(
-          "filter: -cobalt-mtm(url(p.msh),"
-          "                    100deg 60deg,"
-          "                    matrix3d(1, 0, 0, 5,"
-          "                             0, 2, 0, 0,"
-          "                             6, 0, 3, 0,"
-          "                             0, 7, 0, 4),"
-          "                    invalid-stereo-mode);",
-          source_location_);
-  scoped_refptr<cssom::FilterFunctionListValue> filter_list =
-      dynamic_cast<cssom::FilterFunctionListValue*>(
-          style->GetPropertyValue(cssom::kFilterProperty).get());
-
-  ASSERT_FALSE(filter_list);
-}
-
-TEST_F(ParserTest, EmptyPropertyValueRemovesProperty) {
-  // Test that parsing an empty property value removes the previously declared
-  // property value.
-  scoped_refptr<cssom::CSSDeclaredStyleData> style_data =
-      parser_.ParseStyleDeclarationList("display: inline;", source_location_);
-
-  scoped_refptr<cssom::CSSDeclaredStyleDeclaration> style =
-      new cssom::CSSDeclaredStyleDeclaration(style_data, &parser_);
-
-  style->SetPropertyValue(std::string("display"), std::string(), NULL);
-  EXPECT_EQ(style->GetPropertyValue("display"), "");
-  EXPECT_FALSE(style_data->GetPropertyValue(cssom::kDisplayProperty));
-}
-
 }  // namespace css_parser
 }  // namespace cobalt
diff --git a/src/cobalt/css_parser/position_parse_structures.cc b/src/cobalt/css_parser/position_parse_structures.cc
index 50c13f3..a3f3422 100644
--- a/src/cobalt/css_parser/position_parse_structures.cc
+++ b/src/cobalt/css_parser/position_parse_structures.cc
@@ -119,7 +119,7 @@
           break;
         }
         default:
-          // Position value couldn't take more than 4 elements.
+          NOTREACHED();
           return false;
       }
       break;
diff --git a/src/cobalt/css_parser/scanner.cc b/src/cobalt/css_parser/scanner.cc
index a19db4d..fadfebb 100644
--- a/src/cobalt/css_parser/scanner.cc
+++ b/src/cobalt/css_parser/scanner.cc
@@ -312,8 +312,7 @@
     // The input must be part of an identifier if "actual" or "expected"
     // contains '-'. Otherwise ToAsciiLowerUnchecked('\r') would be equal
     // to '-'.
-    DCHECK((*expected >= 'a' && *expected <= 'z') ||
-           (*expected >= '0' && *expected <= '9') || *expected == '-');
+    DCHECK((*expected >= 'a' && *expected <= 'z') || *expected == '-');
     DCHECK(*expected != '-' || IsCssLetter(*actual));
     if (ToAsciiLowerUnchecked(*actual++) != (*expected++)) {
       return false;
@@ -773,15 +772,6 @@
       // Cache the open brace.
       open_braces_.push('(');
 
-      if (!has_escape) {
-        Token function_token;
-        if (DetectKnownFunctionTokenAndMaybeChangeParsingMode(
-                name, &function_token)) {
-          ++input_iterator_;
-          return function_token;
-        }
-      }
-
       ++input_iterator_;
       token_value->string = name;
       return kInvalidFunctionToken;
@@ -1336,11 +1326,6 @@
         return true;
       }
       if (IsEqualToCssIdentifier(
-              name.begin, cssom::GetPropertyName(cssom::kFilterProperty))) {
-        *property_name_token = kFilterToken;
-        return true;
-      }
-      if (IsEqualToCssIdentifier(
               name.begin, cssom::GetPropertyName(cssom::kHeightProperty))) {
         *property_name_token = kHeightToken;
         return true;
@@ -2204,10 +2189,6 @@
         *property_value_token = kStepStartToken;
         return true;
       }
-      if (IsEqualToCssIdentifier(name.begin, cssom::kMonoscopicKeywordName)) {
-        *property_value_token = kMonoscopicToken;
-        return true;
-      }
       return false;
 
     case 11:
@@ -2266,19 +2247,6 @@
         return true;
       }
       return false;
-
-    case 23:
-      if (IsEqualToCssIdentifier(name.begin,
-                                 cssom::kStereoscopicLeftRightKeywordName)) {
-        *property_value_token = kStereoscopicLeftRightToken;
-        return true;
-      }
-      if (IsEqualToCssIdentifier(name.begin,
-                                 cssom::kStereoscopicTopBottomKeywordName)) {
-        *property_value_token = kStereoscopicTopBottomToken;
-        return true;
-      }
-      return false;
   }
 
   return false;
@@ -2449,13 +2417,6 @@
       }
       return false;
 
-    case 8:
-      if (IsEqualToCssIdentifier(name.begin, "matrix3d")) {
-        *known_function_token = kMatrix3dFunctionToken;
-        return true;
-      }
-      return false;
-
     case 9:
       if (IsEqualToCssIdentifier(name.begin, "translate")) {
         *known_function_token = kTranslateFunctionToken;
@@ -2489,10 +2450,6 @@
         *known_function_token = kNthOfTypeFunctionToken;
         return true;
       }
-      if (IsEqualToCssIdentifier(name.begin, "-cobalt-mtm")) {
-        *known_function_token = kCobaltMtmFunctionToken;
-        return true;
-      }
       return false;
 
     case 12:
diff --git a/src/cobalt/css_parser/scanner_test.cc b/src/cobalt/css_parser/scanner_test.cc
index 16b24f7..c1afabf 100644
--- a/src/cobalt/css_parser/scanner_test.cc
+++ b/src/cobalt/css_parser/scanner_test.cc
@@ -172,17 +172,6 @@
   ASSERT_EQ(kEndOfFileToken, yylex(&token_value_, &token_location_, &scanner));
 }
 
-TEST_F(ScannerTest, ScansInvalidFunctionWithNumber) {
-  Scanner scanner("sample-matrix4d()", &string_pool_);
-
-  ASSERT_EQ(kInvalidFunctionToken,
-            yylex(&token_value_, &token_location_, &scanner));
-  ASSERT_EQ("sample-matrix4d", token_value_.string);
-
-  ASSERT_EQ(')', yylex(&token_value_, &token_location_, &scanner));
-  ASSERT_EQ(kEndOfFileToken, yylex(&token_value_, &token_location_, &scanner));
-}
-
 TEST_F(ScannerTest, ScansFunctionLikeMediaAnd) {
   Scanner scanner("@media tv and(monochrome)", &string_pool_);
 
@@ -280,15 +269,6 @@
   ASSERT_EQ(kEndOfFileToken, yylex(&token_value_, &token_location_, &scanner));
 }
 
-TEST_F(ScannerTest, ScansIdentifierWithNumber) {
-  Scanner scanner("matrix3d5s7wss-47", &string_pool_);
-
-  ASSERT_EQ(kIdentifierToken, yylex(&token_value_, &token_location_, &scanner));
-  ASSERT_EQ("matrix3d5s7wss-47", token_value_.string);
-
-  ASSERT_EQ(kEndOfFileToken, yylex(&token_value_, &token_location_, &scanner));
-}
-
 TEST_F(ScannerTest, ScansDot) {
   Scanner scanner(".", &string_pool_);
 
@@ -434,17 +414,6 @@
   ASSERT_EQ(kEndOfFileToken, yylex(&token_value_, &token_location_, &scanner));
 }
 
-TEST_F(ScannerTest, ScansUnknownDashFunctionWithNumber) {
-  Scanner scanner("-cobalt-ma5555gic()", &string_pool_);
-
-  ASSERT_EQ(kInvalidFunctionToken,
-            yylex(&token_value_, &token_location_, &scanner));
-  ASSERT_EQ("-cobalt-ma5555gic", token_value_.string);
-
-  ASSERT_EQ(')', yylex(&token_value_, &token_location_, &scanner));
-  ASSERT_EQ(kEndOfFileToken, yylex(&token_value_, &token_location_, &scanner));
-}
-
 TEST_F(ScannerTest, ScansUnknownDashFunctionWithoutClosingAtEnd) {
   Scanner scanner("-cobalt-magic(", &string_pool_);
 
@@ -456,26 +425,6 @@
   ASSERT_EQ(kEndOfFileToken, yylex(&token_value_, &token_location_, &scanner));
 }
 
-TEST_F(ScannerTest, ScansKnownDashFunction) {
-  Scanner scanner("-cobalt-mtm()", &string_pool_);
-
-  ASSERT_EQ(kCobaltMtmFunctionToken,
-            yylex(&token_value_, &token_location_, &scanner));
-
-  ASSERT_EQ(')', yylex(&token_value_, &token_location_, &scanner));
-  ASSERT_EQ(kEndOfFileToken, yylex(&token_value_, &token_location_, &scanner));
-}
-
-TEST_F(ScannerTest, ScansKnownDashFunctionWithoutClosingAtEnd) {
-  Scanner scanner("-cobalt-mtm(", &string_pool_);
-
-  ASSERT_EQ(kCobaltMtmFunctionToken,
-            yylex(&token_value_, &token_location_, &scanner));
-
-  ASSERT_EQ(')', yylex(&token_value_, &token_location_, &scanner));
-  ASSERT_EQ(kEndOfFileToken, yylex(&token_value_, &token_location_, &scanner));
-}
-
 TEST_F(ScannerTest, ScansMinusNPlusConstant) {
   Scanner scanner("nth-child(-n+2)", &string_pool_);
 
@@ -994,15 +943,6 @@
   ASSERT_EQ(kEndOfFileToken, yylex(&token_value_, &token_location_, &scanner));
 }
 
-TEST_F(ScannerTest, ScansMatrix3dFunction) {
-  Scanner scanner("matrix3d()", &string_pool_);
-
-  ASSERT_EQ(kMatrix3dFunctionToken,
-            yylex(&token_value_, &token_location_, &scanner));
-  ASSERT_EQ(')', yylex(&token_value_, &token_location_, &scanner));
-  ASSERT_EQ(kEndOfFileToken, yylex(&token_value_, &token_location_, &scanner));
-}
-
 TEST_F(ScannerTest, ScansNthOfTypeFunction) {
   Scanner scanner("nth-of-type()", &string_pool_);
 
diff --git a/src/cobalt/cssom/CSSStyleDeclaration.idl b/src/cobalt/cssom/CSSStyleDeclaration.idl
index 12793bf..fc13d7a 100644
--- a/src/cobalt/cssom/CSSStyleDeclaration.idl
+++ b/src/cobalt/cssom/CSSStyleDeclaration.idl
@@ -111,11 +111,6 @@
   readonly attribute unsigned long length;
   getter DOMString? item(unsigned long index);
   DOMString getPropertyValue(DOMString property);
-  [RaisesException] void setProperty(
-      DOMString property, [TreatNullAs=EmptyString] DOMString value,
-      [TreatNullAs=EmptyString] optional DOMString priority);
-  [RaisesException] void setPropertyValue(
-      DOMString property, [TreatNullAs=EmptyString] DOMString value);
-  [RaisesException] DOMString removeProperty(DOMString property);
+  [RaisesException] void setPropertyValue(DOMString property, DOMString value);
   readonly attribute CSSRule? parentRule;
 };
diff --git a/src/cobalt/cssom/complex_selector.cc b/src/cobalt/cssom/complex_selector.cc
index b164c77..5eb9047 100644
--- a/src/cobalt/cssom/complex_selector.cc
+++ b/src/cobalt/cssom/complex_selector.cc
@@ -16,7 +16,6 @@
 
 #include "cobalt/cssom/complex_selector.h"
 
-#include "base/logging.h"
 #include "cobalt/cssom/combinator.h"
 #include "cobalt/cssom/compound_selector.h"
 #include "cobalt/cssom/selector_visitor.h"
@@ -24,8 +23,6 @@
 namespace cobalt {
 namespace cssom {
 
-const int ComplexSelector::kCombinatorLimit = 32;
-
 void ComplexSelector::Accept(SelectorVisitor* visitor) {
   visitor->VisitComplexSelector(this);
 }
@@ -42,18 +39,6 @@
     scoped_ptr<Combinator> combinator,
     scoped_ptr<CompoundSelector> compound_selector) {
   DCHECK(first_selector_);
-  DCHECK(last_selector_);
-
-  if (combinator_count_ >= kCombinatorLimit) {
-    if (!combinator_limit_exceeded_) {
-      LOG(WARNING)
-          << "Maximum number of calls to AppendCombinatorAndSelector exceeded."
-             "  Ignoring additional selectors.";
-      combinator_limit_exceeded_ = true;
-    }
-    return;
-  }
-
   specificity_.AddFrom(compound_selector->GetSpecificity());
 
   combinator->set_left_selector(last_selector_);
@@ -63,8 +48,6 @@
   last_selector_->set_right_combinator(combinator.Pass());
 
   last_selector_ = last_selector_->right_combinator()->right_selector();
-
-  combinator_count_++;
 }
 
 }  // namespace cssom
diff --git a/src/cobalt/cssom/complex_selector.h b/src/cobalt/cssom/complex_selector.h
index e20ef8a..d8d2cae 100644
--- a/src/cobalt/cssom/complex_selector.h
+++ b/src/cobalt/cssom/complex_selector.h
@@ -35,12 +35,7 @@
 //   https://www.w3.org/TR/selectors4/#complex
 class ComplexSelector : public Selector {
  public:
-  static const int kCombinatorLimit;
-
-  ComplexSelector()
-      : last_selector_(NULL),
-        combinator_count_(0),
-        combinator_limit_exceeded_(false) {}
+  ComplexSelector() : last_selector_(NULL) {}
   ~ComplexSelector() OVERRIDE {}
 
   // From Selector.
@@ -53,10 +48,6 @@
   CompoundSelector* first_selector() { return first_selector_.get(); }
   CompoundSelector* last_selector() { return last_selector_; }
 
-  int combinator_count() {
-    return combinator_count_;
-  }
-
   // For a chain of compound selectors separated by combinators, AppendSelector
   // should be first called with the left most compound selector, then
   // AppendCombinatorAndSelector should be called with each (combinator,
@@ -72,9 +63,6 @@
   scoped_ptr<CompoundSelector> first_selector_;
   Specificity specificity_;
 
-  int combinator_count_;
-  bool combinator_limit_exceeded_;
-
   DISALLOW_COPY_AND_ASSIGN(ComplexSelector);
 };
 
diff --git a/src/cobalt/cssom/computed_style.cc b/src/cobalt/cssom/computed_style.cc
index 5fa9201..9d5d0c9 100644
--- a/src/cobalt/cssom/computed_style.cc
+++ b/src/cobalt/cssom/computed_style.cc
@@ -363,7 +363,6 @@
     case KeywordValue::kLeft:
     case KeywordValue::kLineThrough:
     case KeywordValue::kMiddle:
-    case KeywordValue::kMonoscopic:
     case KeywordValue::kMonospace:
     case KeywordValue::kNone:
     case KeywordValue::kNoRepeat:
@@ -380,8 +379,6 @@
     case KeywordValue::kSolid:
     case KeywordValue::kStart:
     case KeywordValue::kStatic:
-    case KeywordValue::kStereoscopicLeftRight:
-    case KeywordValue::kStereoscopicTopBottom:
     case KeywordValue::kTop:
     case KeywordValue::kUppercase:
     case KeywordValue::kVisible:
@@ -461,7 +458,6 @@
     case KeywordValue::kLeft:
     case KeywordValue::kLineThrough:
     case KeywordValue::kMiddle:
-    case KeywordValue::kMonoscopic:
     case KeywordValue::kMonospace:
     case KeywordValue::kNoRepeat:
     case KeywordValue::kNone:
@@ -479,8 +475,6 @@
     case KeywordValue::kSolid:
     case KeywordValue::kStart:
     case KeywordValue::kStatic:
-    case KeywordValue::kStereoscopicLeftRight:
-    case KeywordValue::kStereoscopicTopBottom:
     case KeywordValue::kTop:
     case KeywordValue::kUppercase:
     case KeywordValue::kVisible:
@@ -567,7 +561,6 @@
     case KeywordValue::kLeft:
     case KeywordValue::kLineThrough:
     case KeywordValue::kMiddle:
-    case KeywordValue::kMonoscopic:
     case KeywordValue::kMonospace:
     case KeywordValue::kNone:
     case KeywordValue::kNoRepeat:
@@ -585,8 +578,6 @@
     case KeywordValue::kSolid:
     case KeywordValue::kStart:
     case KeywordValue::kStatic:
-    case KeywordValue::kStereoscopicLeftRight:
-    case KeywordValue::kStereoscopicTopBottom:
     case KeywordValue::kTop:
     case KeywordValue::kUppercase:
     case KeywordValue::kVisible:
@@ -689,7 +680,6 @@
     case KeywordValue::kLineThrough:
     case KeywordValue::kMiddle:
     case KeywordValue::kMonospace:
-    case KeywordValue::kMonoscopic:
     case KeywordValue::kNone:
     case KeywordValue::kNoRepeat:
     case KeywordValue::kNormal:
@@ -706,8 +696,6 @@
     case KeywordValue::kSolid:
     case KeywordValue::kStart:
     case KeywordValue::kStatic:
-    case KeywordValue::kStereoscopicLeftRight:
-    case KeywordValue::kStereoscopicTopBottom:
     case KeywordValue::kTop:
     case KeywordValue::kUppercase:
     case KeywordValue::kVisible:
@@ -810,7 +798,6 @@
     case KeywordValue::kLeft:
     case KeywordValue::kLineThrough:
     case KeywordValue::kMiddle:
-    case KeywordValue::kMonoscopic:
     case KeywordValue::kMonospace:
     case KeywordValue::kNoRepeat:
     case KeywordValue::kNormal:
@@ -827,8 +814,6 @@
     case KeywordValue::kSolid:
     case KeywordValue::kStart:
     case KeywordValue::kStatic:
-    case KeywordValue::kStereoscopicLeftRight:
-    case KeywordValue::kStereoscopicTopBottom:
     case KeywordValue::kTop:
     case KeywordValue::kUppercase:
     case KeywordValue::kVisible:
@@ -931,7 +916,6 @@
     case KeywordValue::kLeft:
     case KeywordValue::kLineThrough:
     case KeywordValue::kMiddle:
-    case KeywordValue::kMonoscopic:
     case KeywordValue::kMonospace:
     case KeywordValue::kNone:
     case KeywordValue::kNoRepeat:
@@ -949,8 +933,6 @@
     case KeywordValue::kSolid:
     case KeywordValue::kStart:
     case KeywordValue::kStatic:
-    case KeywordValue::kStereoscopicLeftRight:
-    case KeywordValue::kStereoscopicTopBottom:
     case KeywordValue::kTop:
     case KeywordValue::kUppercase:
     case KeywordValue::kVisible:
@@ -1047,7 +1029,6 @@
     case KeywordValue::kLeft:
     case KeywordValue::kLineThrough:
     case KeywordValue::kMiddle:
-    case KeywordValue::kMonoscopic:
     case KeywordValue::kMonospace:
     case KeywordValue::kNone:
     case KeywordValue::kNoRepeat:
@@ -1065,8 +1046,6 @@
     case KeywordValue::kSolid:
     case KeywordValue::kStart:
     case KeywordValue::kStatic:
-    case KeywordValue::kStereoscopicLeftRight:
-    case KeywordValue::kStereoscopicTopBottom:
     case KeywordValue::kTop:
     case KeywordValue::kUppercase:
     case KeywordValue::kVisible:
@@ -1159,7 +1138,6 @@
     case KeywordValue::kLineThrough:
     case KeywordValue::kMiddle:
     case KeywordValue::kMonospace:
-    case KeywordValue::kMonoscopic:
     case KeywordValue::kNoRepeat:
     case KeywordValue::kNormal:
     case KeywordValue::kNoWrap:
@@ -1175,8 +1153,6 @@
     case KeywordValue::kSolid:
     case KeywordValue::kStart:
     case KeywordValue::kStatic:
-    case KeywordValue::kStereoscopicLeftRight:
-    case KeywordValue::kStereoscopicTopBottom:
     case KeywordValue::kTop:
     case KeywordValue::kUppercase:
     case KeywordValue::kVisible:
@@ -1575,7 +1551,6 @@
     case KeywordValue::kLeft:
     case KeywordValue::kLineThrough:
     case KeywordValue::kMiddle:
-    case KeywordValue::kMonoscopic:
     case KeywordValue::kMonospace:
     case KeywordValue::kNoRepeat:
     case KeywordValue::kNormal:
@@ -1592,8 +1567,6 @@
     case KeywordValue::kSolid:
     case KeywordValue::kStart:
     case KeywordValue::kStatic:
-    case KeywordValue::kStereoscopicLeftRight:
-    case KeywordValue::kStereoscopicTopBottom:
     case KeywordValue::kTop:
     case KeywordValue::kUppercase:
     case KeywordValue::kVisible:
@@ -1715,13 +1688,6 @@
     absolute_url = url_value->Resolve(base_url_);
   }
 
-  if (!absolute_url.is_valid()) {
-    DLOG(WARNING) << "Invalid url: " << absolute_url.spec();
-    // No further process is needed if the url is invalid.
-    computed_background_image_ = KeywordValue::GetNone();
-    return;
-  }
-
   computed_background_image_ = new AbsoluteURLValue(absolute_url);
 }
 
@@ -1851,7 +1817,6 @@
     case KeywordValue::kLeft:
     case KeywordValue::kLineThrough:
     case KeywordValue::kMiddle:
-    case KeywordValue::kMonoscopic:
     case KeywordValue::kMonospace:
     case KeywordValue::kNone:
     case KeywordValue::kNoRepeat:
@@ -1869,8 +1834,6 @@
     case KeywordValue::kSolid:
     case KeywordValue::kStart:
     case KeywordValue::kStatic:
-    case KeywordValue::kStereoscopicLeftRight:
-    case KeywordValue::kStereoscopicTopBottom:
     case KeywordValue::kTop:
     case KeywordValue::kUppercase:
     case KeywordValue::kVisible:
@@ -2101,7 +2064,6 @@
     case KeywordValue::kLeft:
     case KeywordValue::kLineThrough:
     case KeywordValue::kMiddle:
-    case KeywordValue::kMonoscopic:
     case KeywordValue::kMonospace:
     case KeywordValue::kNormal:
     case KeywordValue::kNoRepeat:
@@ -2118,8 +2080,6 @@
     case KeywordValue::kSolid:
     case KeywordValue::kStart:
     case KeywordValue::kStatic:
-    case KeywordValue::kStereoscopicLeftRight:
-    case KeywordValue::kStereoscopicTopBottom:
     case KeywordValue::kTop:
     case KeywordValue::kUppercase:
     case KeywordValue::kVisible:
@@ -2488,7 +2448,6 @@
     case KeywordValue::kLeft:
     case KeywordValue::kLineThrough:
     case KeywordValue::kMiddle:
-    case KeywordValue::kMonoscopic:
     case KeywordValue::kMonospace:
     case KeywordValue::kNoRepeat:
     case KeywordValue::kNormal:
@@ -2505,8 +2464,6 @@
     case KeywordValue::kSolid:
     case KeywordValue::kStart:
     case KeywordValue::kStatic:
-    case KeywordValue::kStereoscopicLeftRight:
-    case KeywordValue::kStereoscopicTopBottom:
     case KeywordValue::kTop:
     case KeywordValue::kUppercase:
     case KeywordValue::kVisible:
@@ -2955,7 +2912,6 @@
     case kBorderTopStyleProperty:
     case kColorProperty:
     case kContentProperty:
-    case kFilterProperty:
     case kFontFamilyProperty:
     case kFontStyleProperty:
     case kOpacityProperty:
@@ -3063,7 +3019,6 @@
     case kBoxShadowProperty:
     case kContentProperty:
     case kDisplayProperty:
-    case kFilterProperty:
     case kFontFamilyProperty:
     case kFontProperty:
     case kFontStyleProperty:
diff --git a/src/cobalt/cssom/css_computed_style_data.cc b/src/cobalt/cssom/css_computed_style_data.cc
index 509a9b3..a5e2fcd 100644
--- a/src/cobalt/cssom/css_computed_style_data.cc
+++ b/src/cobalt/cssom/css_computed_style_data.cc
@@ -67,6 +67,16 @@
 
 CSSComputedStyleData::~CSSComputedStyleData() {}
 
+unsigned int CSSComputedStyleData::length() const {
+  // Computed style declarations have all known longhand properties.
+  return kMaxLonghandPropertyKey + 1;
+}
+
+const char* CSSComputedStyleData::Item(unsigned int index) const {
+  if (index >= length()) return NULL;
+  return GetPropertyName(GetLexicographicalLonghandPropertyKey(index));
+}
+
 const scoped_refptr<PropertyValue>&
 CSSComputedStyleData::GetPropertyValueReference(PropertyKey key) const {
   DCHECK_GT(key, kNoneProperty);
@@ -185,7 +195,6 @@
     case kColorProperty:
     case kContentProperty:
     case kFontFamilyProperty:
-    case kFilterProperty:
     case kFontProperty:
     case kFontStyleProperty:
     case kFontWeightProperty:
diff --git a/src/cobalt/cssom/css_computed_style_data.h b/src/cobalt/cssom/css_computed_style_data.h
index fb12f37..e303868 100644
--- a/src/cobalt/cssom/css_computed_style_data.h
+++ b/src/cobalt/cssom/css_computed_style_data.h
@@ -62,6 +62,16 @@
   CSSComputedStyleData();
   ~CSSComputedStyleData();
 
+  // The length attribute must return the number of CSS declarations in the
+  // declarations.
+  //   https://www.w3.org/TR/cssom/#dom-cssstyledeclaration-length
+  unsigned int length() const;
+
+  // The item(index) method must return the property name of the CSS declaration
+  // at position index.
+  //  https://www.w3.org/TR/cssom/#dom-cssstyledeclaration-item
+  const char* Item(unsigned int index) const;
+
   void SetPropertyValue(const PropertyKey key,
                         const scoped_refptr<PropertyValue>& value);
 
@@ -319,13 +329,6 @@
     SetPropertyValue(kDisplayProperty, display);
   }
 
-  const scoped_refptr<PropertyValue>& filter() const {
-    return GetPropertyValueReference(kFilterProperty);
-  }
-  void set_filter(const scoped_refptr<PropertyValue>& filter) {
-    SetPropertyValue(kFilterProperty, filter);
-  }
-
   const scoped_refptr<PropertyValue>& font_family() const {
     return GetPropertyValueReference(kFontFamilyProperty);
   }
diff --git a/src/cobalt/cssom/css_computed_style_data_test.cc b/src/cobalt/cssom/css_computed_style_data_test.cc
index 4aede0c..2fcb1ea 100644
--- a/src/cobalt/cssom/css_computed_style_data_test.cc
+++ b/src/cobalt/cssom/css_computed_style_data_test.cc
@@ -1191,22 +1191,5 @@
   ASSERT_TRUE(style2->DoDeclaredPropertiesMatch(style1));
 }
 
-TEST(CSSComputedStyleDataTest, FilterSettersAndGettersAreConsistent) {
-  scoped_refptr<CSSComputedStyleData> style = new CSSComputedStyleData();
-
-  EXPECT_EQ(GetPropertyInitialValue(kFilterProperty), style->filter());
-  EXPECT_EQ(style->filter(), style->GetPropertyValue(kFilterProperty));
-
-  style->set_filter(KeywordValue::GetInitial());
-  EXPECT_EQ(KeywordValue::GetInitial(), style->filter());
-  EXPECT_EQ(KeywordValue::GetInitial(),
-            style->GetPropertyValue(kFilterProperty));
-
-  style->SetPropertyValue(kFilterProperty, KeywordValue::GetInherit());
-  EXPECT_EQ(KeywordValue::GetInherit(), style->filter());
-  EXPECT_EQ(KeywordValue::GetInherit(),
-            style->GetPropertyValue(kFilterProperty));
-}
-
 }  // namespace cssom
 }  // namespace cobalt
diff --git a/src/cobalt/cssom/css_computed_style_declaration.cc b/src/cobalt/cssom/css_computed_style_declaration.cc
index 1ca1566..ed4b4c8 100644
--- a/src/cobalt/cssom/css_computed_style_declaration.cc
+++ b/src/cobalt/cssom/css_computed_style_declaration.cc
@@ -42,8 +42,7 @@
 // declarations.
 //   https://www.w3.org/TR/cssom/#dom-cssstyledeclaration-length
 unsigned int CSSComputedStyleDeclaration::length() const {
-  // Computed style declarations have all known longhand properties.
-  return kMaxLonghandPropertyKey + 1;
+  return data_ ? data_->length() : 0;
 }
 
 // The item(index) method must return the property name of the CSS declaration
@@ -51,9 +50,8 @@
 //   https://www.w3.org/TR/cssom/#dom-cssstyledeclaration-item
 base::optional<std::string> CSSComputedStyleDeclaration::Item(
     unsigned int index) const {
-  if (index >= length()) return base::nullopt;
-  return base::optional<std::string>(
-      GetPropertyName(GetLexicographicalLonghandPropertyKey(index)));
+  const char* item = data_ ? data_->Item(index) : NULL;
+  return item ? base::optional<std::string>(item) : base::nullopt;
 }
 
 std::string CSSComputedStyleDeclaration::GetDeclaredPropertyValueStringByKey(
@@ -74,13 +72,6 @@
                            exception_state);
 }
 
-void CSSComputedStyleDeclaration::SetProperty(
-    const std::string& /*property_name*/, const std::string& /*property_value*/,
-    const std::string& /*priority*/, script::ExceptionState* exception_state) {
-  dom::DOMException::Raise(dom::DOMException::kInvalidAccessErr,
-                           exception_state);
-}
-
 void CSSComputedStyleDeclaration::SetData(
     const scoped_refptr<const CSSComputedStyleData>& data) {
   data_ = data;
diff --git a/src/cobalt/cssom/css_computed_style_declaration.h b/src/cobalt/cssom/css_computed_style_declaration.h
index 1735690..e166979 100644
--- a/src/cobalt/cssom/css_computed_style_declaration.h
+++ b/src/cobalt/cssom/css_computed_style_declaration.h
@@ -38,8 +38,6 @@
 // for computed styles.
 class CSSComputedStyleDeclaration : public CSSStyleDeclaration {
  public:
-  using CSSStyleDeclaration::SetProperty;
-
   CSSComputedStyleDeclaration() {}
   // From CSSStyleDeclaration.
 
@@ -55,11 +53,6 @@
                         const std::string& property_value,
                         script::ExceptionState* exception_state) OVERRIDE;
 
-  void SetProperty(const std::string& property_name,
-                   const std::string& property_value,
-                   const std::string& priority,
-                   script::ExceptionState* exception_state) OVERRIDE;
-
   // Custom.
 
   const scoped_refptr<const CSSComputedStyleData>& data() const {
diff --git a/src/cobalt/cssom/css_computed_style_declaration_test.cc b/src/cobalt/cssom/css_computed_style_declaration_test.cc
deleted file mode 100644
index d5abd5a..0000000
--- a/src/cobalt/cssom/css_computed_style_declaration_test.cc
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * Copyright 2016 Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "cobalt/cssom/css_computed_style_data.h"
-#include "cobalt/cssom/css_computed_style_declaration.h"
-#include "cobalt/cssom/keyword_value.h"
-#include "cobalt/cssom/length_value.h"
-#include "cobalt/cssom/property_definitions.h"
-#include "cobalt/dom/dom_exception.h"
-#include "cobalt/script/exception_state.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace cobalt {
-namespace cssom {
-
-using ::testing::_;
-using ::testing::Return;
-
-namespace {
-class FakeExceptionState : public script::ExceptionState {
- public:
-  void SetException(
-      const scoped_refptr<script::ScriptException>& exception) OVERRIDE {
-    dom_exception_ = make_scoped_refptr(
-        base::polymorphic_downcast<dom::DOMException*>(exception.get()));
-  }
-  void SetSimpleException(script::MessageType /*message_type*/, ...) OVERRIDE {
-    // no-op
-  }
-  dom::DOMException::ExceptionCode GetExceptionCode() {
-    return dom_exception_ ? static_cast<dom::DOMException::ExceptionCode>(
-                                dom_exception_->code())
-                          : dom::DOMException::kNone;
-  }
-
- private:
-  scoped_refptr<dom::DOMException> dom_exception_;
-};
-}  // namespace
-
-TEST(CSSComputedStyleDeclarationTest, CSSTextSetterRaisesException) {
-  scoped_refptr<CSSComputedStyleDeclaration> style =
-      new CSSComputedStyleDeclaration();
-  FakeExceptionState exception_state;
-
-  const std::string css_text = "font-size: 100px; color: #0047ab;";
-  style->set_css_text(css_text, &exception_state);
-  EXPECT_EQ(dom::DOMException::kInvalidAccessErr,
-            exception_state.GetExceptionCode());
-}
-
-TEST(CSSComputedStyleDeclarationTest, DISABLED_CSSTextGetter) {
-  scoped_refptr<LengthValue> background_size =
-      new LengthValue(100, kPixelsUnit);
-  scoped_refptr<LengthValue> bottom = new LengthValue(16, kPixelsUnit);
-
-  scoped_refptr<CSSComputedStyleData> style_data = new CSSComputedStyleData();
-  style_data->SetPropertyValue(kBackgroundSizeProperty, background_size);
-  style_data->SetPropertyValue(kBottomProperty, bottom);
-
-  scoped_refptr<CSSComputedStyleDeclaration> style =
-      new CSSComputedStyleDeclaration();
-  style->SetData(style_data);
-  EXPECT_EQ(style->css_text(NULL), "background-size: 100px; bottom: 16px;");
-}
-
-TEST(CSSComputedStyleDeclarationTest, PropertyValueSetterRaisesException) {
-  scoped_refptr<CSSComputedStyleDeclaration> style =
-      new CSSComputedStyleDeclaration();
-  const std::string background = "rgba(0, 0, 0, .8)";
-  FakeExceptionState exception_state;
-
-  style->SetPropertyValue(GetPropertyName(kBackgroundProperty), background,
-                          &exception_state);
-  EXPECT_EQ(dom::DOMException::kInvalidAccessErr,
-            exception_state.GetExceptionCode());
-}
-
-TEST(CSSComputedStyleDeclarationTest,
-     PropertySetterWithTwoValuesRaisesException) {
-  scoped_refptr<CSSComputedStyleDeclaration> style =
-      new CSSComputedStyleDeclaration();
-  const std::string background = "rgba(0, 0, 0, .8)";
-  FakeExceptionState exception_state;
-
-  style->SetProperty(GetPropertyName(kBackgroundProperty), background,
-                     &exception_state);
-  EXPECT_EQ(dom::DOMException::kInvalidAccessErr,
-            exception_state.GetExceptionCode());
-}
-
-TEST(CSSComputedStyleDeclarationTest,
-     PropertySetterWithThreeValuesRaisesException) {
-  scoped_refptr<CSSComputedStyleDeclaration> style =
-      new CSSComputedStyleDeclaration();
-  const std::string background = "rgba(0, 0, 0, .8)";
-  FakeExceptionState exception_state;
-
-  style->SetProperty(GetPropertyName(kBackgroundProperty), background,
-                     std::string(), &exception_state);
-  EXPECT_EQ(dom::DOMException::kInvalidAccessErr,
-            exception_state.GetExceptionCode());
-}
-
-TEST(CSSComputedStyleDeclarationTest, RemovePropertyRaisesException) {
-  scoped_refptr<CSSComputedStyleData> initial_style =
-      new CSSComputedStyleData();
-  initial_style->SetPropertyValue(kDisplayProperty, KeywordValue::GetInline());
-  scoped_refptr<CSSComputedStyleDeclaration> style =
-      new CSSComputedStyleDeclaration();
-  style->SetData(initial_style);
-
-  const std::string background = "rgba(0, 0, 0, .8)";
-  FakeExceptionState exception_state;
-
-  style->RemoveProperty(GetPropertyName(kDisplayProperty), &exception_state);
-  EXPECT_EQ(dom::DOMException::kInvalidAccessErr,
-            exception_state.GetExceptionCode());
-}
-
-TEST(CSSComputedStyleDeclarationTest, PropertyValueGetter) {
-  scoped_refptr<CSSComputedStyleData> initial_style =
-      new CSSComputedStyleData();
-  initial_style->SetPropertyValue(kTextAlignProperty,
-                                  KeywordValue::GetCenter());
-  scoped_refptr<CSSComputedStyleDeclaration> style =
-      new CSSComputedStyleDeclaration();
-  style->SetData(initial_style);
-
-  EXPECT_EQ(style->GetPropertyValue(GetPropertyName(kTextAlignProperty)),
-            "center");
-}
-
-TEST(CSSComputedStyleDeclarationTest,
-     UnknownDeclaredStylePropertyValueShouldBeEmpty) {
-  scoped_refptr<CSSComputedStyleData> initial_style =
-      new CSSComputedStyleData();
-  scoped_refptr<CSSComputedStyleDeclaration> style =
-      new CSSComputedStyleDeclaration();
-  style->SetData(initial_style);
-
-  EXPECT_EQ(style->GetPropertyValue("cobalt_cobalt_cobalt"), "");
-}
-
-TEST(CSSComputedStyleDeclarationTest, LengthAttributeGetterEmpty) {
-  scoped_refptr<CSSComputedStyleDeclaration> style =
-      new CSSComputedStyleDeclaration();
-
-  EXPECT_EQ(style->length(), kMaxLonghandPropertyKey + 1);
-}
-
-TEST(CSSComputedStyleDeclarationTest, LengthAttributeGetterNotEmpty) {
-  scoped_refptr<CSSComputedStyleData> initial_style =
-      new CSSComputedStyleData();
-  initial_style->SetPropertyValue(kDisplayProperty, KeywordValue::GetInline());
-  initial_style->SetPropertyValue(kTextAlignProperty,
-                                  KeywordValue::GetCenter());
-  scoped_refptr<CSSComputedStyleDeclaration> style =
-      new CSSComputedStyleDeclaration();
-  style->SetData(initial_style);
-
-  EXPECT_EQ(style->length(), kMaxLonghandPropertyKey + 1);
-}
-
-TEST(CSSComputedStyleDeclarationTest, ItemGetterEmpty) {
-  scoped_refptr<CSSComputedStyleDeclaration> style =
-      new CSSComputedStyleDeclaration();
-
-  // Computed styles are never actually empty.
-  EXPECT_TRUE(style->Item(0));
-}
-
-TEST(CSSComputedStyleDeclarationTest, ItemGetterNotEmpty) {
-  scoped_refptr<CSSComputedStyleData> initial_style =
-      new CSSComputedStyleData();
-  initial_style->SetPropertyValue(kDisplayProperty, KeywordValue::GetInline());
-  initial_style->SetPropertyValue(kTextAlignProperty,
-                                  KeywordValue::GetCenter());
-  scoped_refptr<CSSComputedStyleDeclaration> style =
-      new CSSComputedStyleDeclaration();
-  style->SetData(initial_style);
-
-  int property_count = 0;
-  for (unsigned int key = 0; key <= kMaxLonghandPropertyKey; ++key) {
-    // The order is not important, as long as all properties are represented.
-    EXPECT_TRUE(style->Item(key));
-    if (style->Item(key).value() == GetPropertyName(kDisplayProperty)) {
-      ++property_count;
-    }
-    if (style->Item(key).value() == GetPropertyName(kTextAlignProperty)) {
-      ++property_count;
-    }
-  }
-  EXPECT_EQ(property_count, 2);
-}
-
-}  // namespace cssom
-}  // namespace cobalt
diff --git a/src/cobalt/cssom/css_declared_style_data.cc b/src/cobalt/cssom/css_declared_style_data.cc
index 80a05df..6768e50 100644
--- a/src/cobalt/cssom/css_declared_style_data.cc
+++ b/src/cobalt/cssom/css_declared_style_data.cc
@@ -65,14 +65,7 @@
         ExpandShorthandProperty(key);
     for (LonghandPropertySet::const_iterator iter = longhand_properties.begin();
          iter != longhand_properties.end(); ++iter) {
-      PropertyKey longhand_key = *iter;
-      if (IsShorthandProperty(longhand_key)) {
-        // If the property is another shorthand property, then recurse to clear
-        // it's registered longhand properties.
-        ClearPropertyValueAndImportance(longhand_key);
-      } else {
-        ClearPropertyValueAndImportanceForLonghandProperty(longhand_key);
-      }
+      ClearPropertyValueAndImportanceForLonghandProperty(*iter);
     }
   } else {
     ClearPropertyValueAndImportanceForLonghandProperty(key);
diff --git a/src/cobalt/cssom/css_declared_style_data_test.cc b/src/cobalt/cssom/css_declared_style_data_test.cc
index 0761c8d..31388a8 100644
--- a/src/cobalt/cssom/css_declared_style_data_test.cc
+++ b/src/cobalt/cssom/css_declared_style_data_test.cc
@@ -696,36 +696,5 @@
   EXPECT_EQ(*style1 == *style2, false);
 }
 
-TEST(CSSDeclaredStyleDataTest, CanClearLongHandPropertyValueAndImportance) {
-  scoped_refptr<CSSDeclaredStyleData> style = new CSSDeclaredStyleData();
-  style->SetPropertyValueAndImportance(kBorderLeftWidthProperty,
-                                       KeywordValue::GetInherit(), true);
-  style->ClearPropertyValueAndImportance(kBorderLeftWidthProperty);
-
-  scoped_refptr<CSSDeclaredStyleData> empty_style = new CSSDeclaredStyleData();
-  EXPECT_EQ(*style, *empty_style);
-}
-
-TEST(CSSDeclaredStyleDataTest, CanClearPropertyValueAndImportance) {
-  scoped_refptr<CSSDeclaredStyleData> style = new CSSDeclaredStyleData();
-  style->SetPropertyValueAndImportance(kBorderLeftWidthProperty,
-                                       KeywordValue::GetInherit(), true);
-  style->ClearPropertyValueAndImportance(kBorderWidthProperty);
-
-  scoped_refptr<CSSDeclaredStyleData> empty_style = new CSSDeclaredStyleData();
-  EXPECT_EQ(*style, *empty_style);
-}
-
-TEST(CSSDeclaredStyleDataTest,
-     CanClearPropertyValueAndImportanceWithRecursion) {
-  scoped_refptr<CSSDeclaredStyleData> style = new CSSDeclaredStyleData();
-  style->SetPropertyValueAndImportance(kBorderLeftWidthProperty,
-                                       KeywordValue::GetInherit(), true);
-  style->ClearPropertyValueAndImportance(kBorderProperty);
-
-  scoped_refptr<CSSDeclaredStyleData> empty_style = new CSSDeclaredStyleData();
-  EXPECT_EQ(*style, *empty_style);
-}
-
 }  // namespace cssom
 }  // namespace cobalt
diff --git a/src/cobalt/cssom/css_declared_style_declaration.cc b/src/cobalt/cssom/css_declared_style_declaration.cc
index 2e9b046..c1d455c 100644
--- a/src/cobalt/cssom/css_declared_style_declaration.cc
+++ b/src/cobalt/cssom/css_declared_style_declaration.cc
@@ -16,7 +16,6 @@
 
 #include "cobalt/cssom/css_declared_style_declaration.h"
 
-#include "base/debug/trace_event.h"
 #include "base/lazy_instance.h"
 #include "cobalt/cssom/css_declared_style_data.h"
 #include "cobalt/cssom/css_parser.h"
@@ -64,7 +63,6 @@
 
 void CSSDeclaredStyleDeclaration::set_css_text(
     const std::string& css_text, script::ExceptionState* /*exception_state*/) {
-  TRACE_EVENT0("cobalt::cssom", "CSSDeclaredStyleDeclaration::set_css_text");
   DCHECK(css_parser_);
   scoped_refptr<CSSDeclaredStyleData> declaration =
       css_parser_->ParseStyleDeclarationList(
@@ -125,22 +123,6 @@
   RecordMutation();
 }
 
-void CSSDeclaredStyleDeclaration::SetProperty(
-    const std::string& property_name, const std::string& property_value,
-    const std::string& priority, script::ExceptionState* /*exception_state*/) {
-  DLOG(INFO) << "CSSDeclaredStyleDeclaration::SetProperty(" << property_name
-             << "," << property_value << "," << priority << ")";
-  DCHECK(css_parser_);
-  if (!data_) {
-    data_ = new CSSDeclaredStyleData();
-  }
-  css_parser_->ParsePropertyIntoDeclarationData(
-      property_name, property_value, non_trivial_static_fields.Get().location,
-      data_.get());
-
-  RecordMutation();
-}
-
 void CSSDeclaredStyleDeclaration::RecordMutation() {
   if (mutation_observer_) {
     // Trigger layout update.
diff --git a/src/cobalt/cssom/css_declared_style_declaration.h b/src/cobalt/cssom/css_declared_style_declaration.h
index 9466df9..344513d 100644
--- a/src/cobalt/cssom/css_declared_style_declaration.h
+++ b/src/cobalt/cssom/css_declared_style_declaration.h
@@ -39,8 +39,6 @@
 // for declared styles, such as css style rules and inline styles.
 class CSSDeclaredStyleDeclaration : public CSSStyleDeclaration {
  public:
-  using CSSStyleDeclaration::SetProperty;
-
   explicit CSSDeclaredStyleDeclaration(CSSParser* css_parser);
 
   CSSDeclaredStyleDeclaration(const scoped_refptr<CSSDeclaredStyleData>& data,
@@ -60,11 +58,6 @@
                         const std::string& property_value,
                         script::ExceptionState* exception_state) OVERRIDE;
 
-  void SetProperty(const std::string& property_name,
-                   const std::string& property_value,
-                   const std::string& priority,
-                   script::ExceptionState* exception_state) OVERRIDE;
-
   // Custom.
 
   const scoped_refptr<CSSDeclaredStyleData>& data() const { return data_; }
diff --git a/src/cobalt/cssom/css_declared_style_declaration_test.cc b/src/cobalt/cssom/css_declared_style_declaration_test.cc
deleted file mode 100644
index fb8d97d..0000000
--- a/src/cobalt/cssom/css_declared_style_declaration_test.cc
+++ /dev/null
@@ -1,1525 +0,0 @@
-/*
- * Copyright 2016 Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "cobalt/cssom/css_declared_style_data.h"
-#include "cobalt/cssom/css_declared_style_declaration.h"
-#include "cobalt/cssom/css_parser.h"
-#include "cobalt/cssom/css_style_rule.h"
-#include "cobalt/cssom/css_style_sheet.h"
-#include "cobalt/cssom/keyword_value.h"
-#include "cobalt/cssom/length_value.h"
-#include "cobalt/cssom/mutation_observer.h"
-#include "cobalt/cssom/percentage_value.h"
-#include "cobalt/cssom/property_definitions.h"
-#include "cobalt/cssom/testing/mock_css_parser.h"
-#include "cobalt/script/exception_state.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace cobalt {
-namespace cssom {
-
-using ::testing::_;
-using ::testing::Return;
-
-namespace {
-class MockMutationObserver : public MutationObserver {
- public:
-  MOCK_METHOD0(OnCSSMutation, void());
-};
-}  // namespace
-
-TEST(CSSDeclaredStyleDeclarationTest, BackgroundSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string background = "rgba(0, 0, 0, .8)";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kBackgroundProperty), background, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_background(background, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, BackgroundColorSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string background_color = "#fff";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kBackgroundColorProperty),
-                              background_color, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_background_color(background_color, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, BackgroundImageSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string background_image = "url('images/sample.png')";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kBackgroundImageProperty),
-                              background_image, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_background_image(background_image, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, BackgroundPositionSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string background_position = "50% 50%";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kBackgroundPositionProperty),
-                              background_position, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_background_position(background_position, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, BackgroundRepeatSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string background_repeat = "no-repeat";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kBackgroundRepeatProperty),
-                              background_repeat, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_background_repeat(background_repeat, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, BackgroundSizeSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string background_size = "cover";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kBackgroundSizeProperty),
-                              background_size, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_background_size(background_size, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, BorderSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string border = "100px";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kBorderProperty), border, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_border(border, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, BorderBottomSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string border_bottom = "100px";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kBorderBottomProperty), border_bottom, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_border_bottom(border_bottom, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, BorderBottomColorSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string border_bottom_color = "#010203";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kBorderBottomColorProperty),
-                              border_bottom_color, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_border_bottom_color(border_bottom_color, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, BorderBottomStyleSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string border_bottom_style = "solid";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kBorderBottomStyleProperty),
-                              border_bottom_style, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_border_bottom_style(border_bottom_style, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, BorderBottomWidthSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> width =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string border_bottom_width = "10px";
-  MockMutationObserver observer;
-  width->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kBorderBottomWidthProperty),
-                              border_bottom_width, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  width->set_border_bottom_width(border_bottom_width, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, BorderColorSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string border_color = "#010203";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kBorderColorProperty), border_color, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_border_color(border_color, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, BorderLeftSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string border_left = "100px";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kBorderLeftProperty), border_left, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_border_left(border_left, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, BorderLeftColorSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string border_left_color = "#010203";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kBorderLeftColorProperty),
-                              border_left_color, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_border_left_color(border_left_color, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, BorderLeftStyleSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string border_left_style = "solid";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kBorderLeftStyleProperty),
-                              border_left_style, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_border_left_style(border_left_style, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, BorderLeftWidthSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> width =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string border_left_width = "10px";
-  MockMutationObserver observer;
-  width->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kBorderLeftWidthProperty),
-                              border_left_width, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  width->set_border_left_width(border_left_width, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, BorderRadiusSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string border_radius = "0.2em";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kBorderRadiusProperty), border_radius, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_border_radius(border_radius, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, BorderRightSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string border_right = "100px";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kBorderRightProperty), border_right, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_border_right(border_right, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, BorderRightColorSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string border_right_color = "#010203";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kBorderRightColorProperty),
-                              border_right_color, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_border_right_color(border_right_color, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, BorderRightStyleSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string border_right_style = "solid";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kBorderRightStyleProperty),
-                              border_right_style, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_border_right_style(border_right_style, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, BorderRightWidthSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> width =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string border_right_width = "10px";
-  MockMutationObserver observer;
-  width->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kBorderRightWidthProperty),
-                              border_right_width, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  width->set_border_right_width(border_right_width, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, BorderStyleSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string border_style = "solid";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kBorderStyleProperty), border_style, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_border_style(border_style, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, BorderTopSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string border_top = "100px";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kBorderTopProperty), border_top, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_border_top(border_top, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, BorderTopColorSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string border_top_color = "#010203";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kBorderTopColorProperty),
-                              border_top_color, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_border_top_color(border_top_color, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, BorderTopStyleSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string border_top_style = "solid";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kBorderTopStyleProperty),
-                              border_top_style, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_border_top_style(border_top_style, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, BorderTopWidthSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> width =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string border_top_width = "10px";
-  MockMutationObserver observer;
-  width->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kBorderTopWidthProperty),
-                              border_top_width, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  width->set_border_top_width(border_top_width, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, BottomSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string bottom = "100px";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kBottomProperty), bottom, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_bottom(bottom, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, BoxShadowSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string box_shadow = "none";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kBoxShadowProperty), box_shadow, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_box_shadow(box_shadow, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, ColorSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string color = "rgba(0, 0, 0, .8)";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kColorProperty), color, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_color(color, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, ContentSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string content = "url(foo.png)";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kContentProperty), content, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_content(content, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, DisplaySetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string display = "inline-block";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kDisplayProperty), display, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_display(display, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, FontSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string font = "inherit";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kFontProperty), font, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_font(font, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, FontFamilySetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string font_family = "Roboto";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kFontFamilyProperty), font_family, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_font_family(font_family, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, FontSizeSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string font_size = "100px";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kFontSizeProperty), font_size, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_font_size(font_size, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, FontStyleSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string font_style = "italic";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kFontStyleProperty), font_style, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_font_style(font_style, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, FontWeightSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string font_weight = "normal";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kFontWeightProperty), font_weight, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_font_weight(font_weight, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, HeightSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string height = "100px";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kHeightProperty), height, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_height(height, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, LeftSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string left = "100px";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kLeftProperty), left, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_left(left, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, LineHeightSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string line_height = "1.5em";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kLineHeightProperty), line_height, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_line_height(line_height, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, MarginSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string margin = "100px";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kMarginProperty), margin, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_margin(margin, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, MarginBottomSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string margin_bottom = "100px";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kMarginBottomProperty), margin_bottom, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_margin_bottom(margin_bottom, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, MarginLeftSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string margin_left = "100px";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kMarginLeftProperty), margin_left, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_margin_left(margin_left, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, MarginRightSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string margin_right = "100px";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kMarginRightProperty), margin_right, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_margin_right(margin_right, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, MarginTopSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string margin_top = "100px";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kMarginTopProperty), margin_top, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_margin_top(margin_top, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, MaxHeightSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string max_height = "100px";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kMaxHeightProperty), max_height, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_max_height(max_height, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, MaxWidthSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string max_width = "100px";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kMaxWidthProperty), max_width, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_max_width(max_width, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, MinHeightSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string min_height = "100px";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kMinHeightProperty), min_height, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_min_height(min_height, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, MinWidthSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string min_width = "100px";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kMinWidthProperty), min_width, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_min_width(min_width, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, OpacitySetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string opacity = "0.5";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kOpacityProperty), opacity, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_opacity(opacity, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, OverflowSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string overflow = "visible";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kOverflowProperty), overflow, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_overflow(overflow, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, OverflowWrapSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string overflow_wrap = "break-word";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kOverflowWrapProperty), overflow_wrap, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-
-  style->set_overflow_wrap(overflow_wrap, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, PaddingSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string padding = "100px";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kPaddingProperty), padding, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_padding(padding, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, PaddingBottomSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string padding_bottom = "100px";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kPaddingBottomProperty),
-                              padding_bottom, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_padding_bottom(padding_bottom, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, PaddingLeftSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string padding_left = "100px";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kPaddingLeftProperty), padding_left, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_padding_left(padding_left, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, PaddingRightSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string padding_right = "100px";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kPaddingRightProperty), padding_right, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_padding_right(padding_right, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, PaddingTopSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string padding_top = "100px";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kPaddingTopProperty), padding_top, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_padding_top(padding_top, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, PositionSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string position = "static";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kPositionProperty), position, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_position(position, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, RightSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string right = "100px";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kRightProperty), right, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_right(right, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, TextAlignSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string text_align = "center";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kTextAlignProperty), text_align, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_text_align(text_align, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, TextDecorationColorSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string text_decoration_color = "rgba(0, 0, 0, .8)";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kTextDecorationColorProperty),
-                              text_decoration_color, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-
-  style->set_text_decoration_color(text_decoration_color, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, TextDecorationLineSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string text_decoration_line = "line-through";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kTextDecorationLineProperty),
-                              text_decoration_line, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-
-  style->set_text_decoration_line(text_decoration_line, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, TextIndentSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string text_indent = "4em";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kTextIndentProperty), text_indent, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-
-  style->set_text_indent(text_indent, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, TextOverflowSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string text_overflow = "ellipsis";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kTextOverflowProperty), text_overflow, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-
-  style->set_text_overflow(text_overflow, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, TextShadowSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string text_shadow = "inherit";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kTextShadowProperty), text_shadow, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-
-  style->set_text_shadow(text_shadow, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, TextTransformSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string text_transform = "uppercase";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kTextTransformProperty),
-                              text_transform, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-
-  style->set_text_transform(text_transform, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, TopSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string top = "100px";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kTopProperty), top, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_top(top, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, TransformSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string transform = "scale(1.5)";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kTransformProperty), transform, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_transform(transform, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, TransformOriginSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string transform_origin = "20% 40%";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kTransformOriginProperty),
-                              transform_origin, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_transform_origin(transform_origin, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, TransitionSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string transition = "inherit";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kTransitionProperty), transition, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_transition(transition, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, TransitionDelaySetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string transition_delay = "2s";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kTransitionDelayProperty),
-                              transition_delay, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_transition_delay(transition_delay, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, TransitionDurationSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string transition_duration = "2s";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kTransitionDurationProperty),
-                              transition_duration, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_transition_duration(transition_duration, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, TransitionPropertySetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string transition_property = "width";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kTransitionPropertyProperty),
-                              transition_property, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_transition_property(transition_property, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, TransitionTimingFunctionSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string transition_timing_function = "linear";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kTransitionTimingFunctionProperty),
-                  transition_timing_function, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_transition_timing_function(transition_timing_function, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, VerticalAlignSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string vertical_align = "middle";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kVerticalAlignProperty),
-                              vertical_align, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_vertical_align(vertical_align, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, VisibilitySetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string visibility = "hidden";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kVisibilityProperty), visibility, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_visibility(visibility, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, WhiteSpaceSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string white_space = "pre";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kWhiteSpaceProperty), white_space, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-
-  style->set_white_space(white_space, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, WidthSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string width = "100px";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kWidthProperty), width, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_width(width, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, WordWrapSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string word_wrap = "break-word";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kWordWrapProperty), word_wrap, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-
-  style->set_word_wrap(word_wrap, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, ZIndexSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string z_index = "-1";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
-                              GetPropertyName(kZIndexProperty), z_index, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-
-  style->set_z_index(z_index, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, CSSTextSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string css_text = "font-size: 100px; color: #0047ab;";
-
-  EXPECT_CALL(css_parser, ParseStyleDeclarationList(css_text, _))
-      .WillOnce(Return(scoped_refptr<CSSDeclaredStyleData>()));
-  style->set_css_text(css_text, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, CSSTextSetterEmptyString) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleData> initial_style =
-      new CSSDeclaredStyleData();
-  initial_style->SetPropertyValueAndImportance(
-      kDisplayProperty, KeywordValue::GetInline(), false);
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(initial_style, &css_parser);
-
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  const std::string css_text = "";
-
-  EXPECT_CALL(css_parser, ParseStyleDeclarationList(css_text, _))
-      .WillOnce(Return(scoped_refptr<CSSDeclaredStyleData>()));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->set_css_text(css_text, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, CSSTextGetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<PercentageValue> background_size = new PercentageValue(0.50f);
-  scoped_refptr<LengthValue> bottom = new LengthValue(16, kPixelsUnit);
-
-  scoped_refptr<CSSDeclaredStyleData> style_data = new CSSDeclaredStyleData();
-  style_data->SetPropertyValueAndImportance(kBackgroundSizeProperty,
-                                            background_size, false);
-  style_data->SetPropertyValueAndImportance(kBottomProperty, bottom, true);
-
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(style_data, &css_parser);
-  EXPECT_EQ(style->css_text(NULL),
-            "background-size: 50%; bottom: 16px !important;");
-}
-
-// TODO: Add GetPropertyValue tests, property getter tests and tests
-// that checking if the attributes' setter and the getter are consistent when
-// fully support converting PropertyValue to std::string.
-TEST(CSSDeclaredStyleDeclarationTest, PropertyValueSetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string background = "rgba(0, 0, 0, .8)";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kBackgroundProperty), background, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->SetPropertyValue(GetPropertyName(kBackgroundProperty), background,
-                          NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, PropertyValueSetterTwice) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string background = "rgba(0, 0, 0, .8)";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kBackgroundProperty), background, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->SetPropertyValue(GetPropertyName(kBackgroundProperty), background,
-                          NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, PropertySetterWithTwoValues) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string background = "rgba(0, 0, 0, .8)";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kBackgroundProperty), background, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->SetProperty(GetPropertyName(kBackgroundProperty), background, NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, PropertySetterWithThreeValues) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  const std::string background = "rgba(0, 0, 0, .8)";
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kBackgroundProperty), background, _, _));
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  style->SetProperty(GetPropertyName(kBackgroundProperty), background,
-                     std::string(), NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, PropertyValueGetter) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleData> initial_style =
-      new CSSDeclaredStyleData();
-  initial_style->SetPropertyValueAndImportance(
-      kTextAlignProperty, KeywordValue::GetCenter(), false);
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(initial_style, &css_parser);
-
-  EXPECT_EQ(style->GetPropertyValue(GetPropertyName(kTextAlignProperty)),
-            "center");
-}
-
-TEST(CSSDeclaredStyleDeclarationTest,
-     UnknownDeclaredStylePropertyValueShouldBeEmpty) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleData> initial_style =
-      new CSSDeclaredStyleData();
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(initial_style, &css_parser);
-
-  EXPECT_EQ(style->GetPropertyValue("cobalt_cobalt_cobalt"), "");
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, RemoveProperty) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleData> initial_style =
-      new CSSDeclaredStyleData();
-  initial_style->SetPropertyValueAndImportance(
-      kDisplayProperty, KeywordValue::GetInline(), false);
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(initial_style, &css_parser);
-
-  MockMutationObserver observer;
-  style->set_mutation_observer(&observer);
-
-  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
-  EXPECT_CALL(css_parser,
-              ParsePropertyIntoDeclarationData(
-                  GetPropertyName(kDisplayProperty), std::string(""), _, _));
-  style->RemoveProperty(GetPropertyName(kDisplayProperty), NULL);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, LengthAttributeGetterEmpty) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  EXPECT_EQ(style->length(), 0);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, LengthAttributeGetterNotEmpty) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleData> initial_style =
-      new CSSDeclaredStyleData();
-  initial_style->SetPropertyValueAndImportance(
-      kDisplayProperty, KeywordValue::GetInline(), false);
-  initial_style->SetPropertyValueAndImportance(
-      kTextAlignProperty, KeywordValue::GetCenter(), false);
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(initial_style, &css_parser);
-
-  EXPECT_EQ(style->length(), 2);
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, ItemGetterEmpty) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(&css_parser);
-
-  EXPECT_FALSE(style->Item(0));
-}
-
-TEST(CSSDeclaredStyleDeclarationTest, ItemGetterNotEmpty) {
-  testing::MockCSSParser css_parser;
-  scoped_refptr<CSSDeclaredStyleData> initial_style =
-      new CSSDeclaredStyleData();
-  initial_style->SetPropertyValueAndImportance(
-      kDisplayProperty, KeywordValue::GetInline(), false);
-  initial_style->SetPropertyValueAndImportance(
-      kTextAlignProperty, KeywordValue::GetCenter(), false);
-  scoped_refptr<CSSDeclaredStyleDeclaration> style =
-      new CSSDeclaredStyleDeclaration(initial_style, &css_parser);
-
-  EXPECT_TRUE(style->Item(0));
-  EXPECT_TRUE(style->Item(1));
-  EXPECT_FALSE(style->Item(2));
-
-  // The order is not important, as long as declared properties are represented.
-  if (style->Item(0).value() == GetPropertyName(kDisplayProperty)) {
-    EXPECT_EQ(style->Item(1).value(), GetPropertyName(kTextAlignProperty));
-  } else {
-    EXPECT_EQ(style->Item(0).value(), GetPropertyName(kTextAlignProperty));
-    EXPECT_EQ(style->Item(1).value(), GetPropertyName(kDisplayProperty));
-  }
-}
-
-}  // namespace cssom
-}  // namespace cobalt
diff --git a/src/cobalt/cssom/css_style_declaration.h b/src/cobalt/cssom/css_style_declaration.h
index dc542d2..6bfcd8b 100644
--- a/src/cobalt/cssom/css_style_declaration.h
+++ b/src/cobalt/cssom/css_style_declaration.h
@@ -427,26 +427,6 @@
                                 const std::string& property_value,
                                 script::ExceptionState* exception_state) = 0;
 
-  virtual void SetProperty(const std::string& property_name,
-                           const std::string& property_value,
-                           const std::string& priority,
-                           script::ExceptionState* exception_state) = 0;
-
-  void SetProperty(const std::string& property_name,
-                   const std::string& property_value,
-                   script::ExceptionState* exception_state) {
-    SetPropertyValue(property_name, property_value, exception_state);
-  }
-
-  std::string RemoveProperty(const std::string& property_name,
-                             script::ExceptionState* exception_state) {
-    std::string retval = GetPropertyValue(property_name);
-    if (!retval.empty()) {
-      SetPropertyValue(property_name, "", exception_state);
-    }
-    return retval;
-  }
-
   // The parent rule is the CSS rule that the CSS declaration block is
   // associated with, if any, or null otherwise.
   //   https://www.w3.org/TR/2013/WD-cssom-20131205/#css-declaration-block
diff --git a/src/cobalt/cssom/css_style_declaration_test.cc b/src/cobalt/cssom/css_style_declaration_test.cc
new file mode 100644
index 0000000..0e71d24
--- /dev/null
+++ b/src/cobalt/cssom/css_style_declaration_test.cc
@@ -0,0 +1,1455 @@
+/*
+ * Copyright 2014 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "cobalt/cssom/css_style_declaration.h"
+
+#include "cobalt/cssom/css_declared_style_data.h"
+#include "cobalt/cssom/css_declared_style_declaration.h"
+#include "cobalt/cssom/css_parser.h"
+#include "cobalt/cssom/css_style_rule.h"
+#include "cobalt/cssom/css_style_sheet.h"
+#include "cobalt/cssom/keyword_value.h"
+#include "cobalt/cssom/length_value.h"
+#include "cobalt/cssom/mutation_observer.h"
+#include "cobalt/cssom/percentage_value.h"
+#include "cobalt/cssom/property_definitions.h"
+#include "cobalt/cssom/testing/mock_css_parser.h"
+#include "cobalt/script/exception_state.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace cobalt {
+namespace cssom {
+
+using ::testing::_;
+using ::testing::Return;
+
+class MockMutationObserver : public MutationObserver {
+ public:
+  MOCK_METHOD0(OnCSSMutation, void());
+};
+
+TEST(CSSStyleDeclarationTest, BackgroundSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string background = "rgba(0, 0, 0, .8)";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kBackgroundProperty), background, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_background(background, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, BackgroundColorSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string background_color = "#fff";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kBackgroundColorProperty),
+                              background_color, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_background_color(background_color, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, BackgroundImageSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string background_image = "url('images/sample.png')";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kBackgroundImageProperty),
+                              background_image, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_background_image(background_image, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, BackgroundPositionSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string background_position = "50% 50%";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kBackgroundPositionProperty),
+                              background_position, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_background_position(background_position, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, BackgroundRepeatSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string background_repeat = "no-repeat";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kBackgroundRepeatProperty),
+                              background_repeat, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_background_repeat(background_repeat, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, BackgroundSizeSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string background_size = "cover";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kBackgroundSizeProperty),
+                              background_size, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_background_size(background_size, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, BorderSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string border = "100px";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kBorderProperty), border, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_border(border, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, BorderBottomSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string border_bottom = "100px";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kBorderBottomProperty), border_bottom, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_border_bottom(border_bottom, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, BorderBottomColorSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string border_bottom_color = "#010203";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kBorderBottomColorProperty),
+                              border_bottom_color, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_border_bottom_color(border_bottom_color, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, BorderBottomStyleSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string border_bottom_style = "solid";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kBorderBottomStyleProperty),
+                              border_bottom_style, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_border_bottom_style(border_bottom_style, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, BorderBottomWidthSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> width =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string border_bottom_width = "10px";
+  MockMutationObserver observer;
+  width->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kBorderBottomWidthProperty),
+                              border_bottom_width, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  width->set_border_bottom_width(border_bottom_width, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, BorderColorSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string border_color = "#010203";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kBorderColorProperty), border_color, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_border_color(border_color, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, BorderLeftSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string border_left = "100px";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kBorderLeftProperty), border_left, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_border_left(border_left, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, BorderLeftColorSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string border_left_color = "#010203";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kBorderLeftColorProperty),
+                              border_left_color, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_border_left_color(border_left_color, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, BorderLeftStyleSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string border_left_style = "solid";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kBorderLeftStyleProperty),
+                              border_left_style, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_border_left_style(border_left_style, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, BorderLeftWidthSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> width =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string border_left_width = "10px";
+  MockMutationObserver observer;
+  width->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kBorderLeftWidthProperty),
+                              border_left_width, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  width->set_border_left_width(border_left_width, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, BorderRadiusSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string border_radius = "0.2em";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kBorderRadiusProperty), border_radius, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_border_radius(border_radius, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, BorderRightSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string border_right = "100px";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kBorderRightProperty), border_right, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_border_right(border_right, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, BorderRightColorSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string border_right_color = "#010203";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kBorderRightColorProperty),
+                              border_right_color, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_border_right_color(border_right_color, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, BorderRightStyleSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string border_right_style = "solid";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kBorderRightStyleProperty),
+                              border_right_style, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_border_right_style(border_right_style, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, BorderRightWidthSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> width =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string border_right_width = "10px";
+  MockMutationObserver observer;
+  width->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kBorderRightWidthProperty),
+                              border_right_width, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  width->set_border_right_width(border_right_width, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, BorderStyleSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string border_style = "solid";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kBorderStyleProperty), border_style, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_border_style(border_style, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, BorderTopSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string border_top = "100px";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kBorderTopProperty), border_top, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_border_top(border_top, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, BorderTopColorSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string border_top_color = "#010203";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kBorderTopColorProperty),
+                              border_top_color, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_border_top_color(border_top_color, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, BorderTopStyleSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string border_top_style = "solid";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kBorderTopStyleProperty),
+                              border_top_style, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_border_top_style(border_top_style, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, BorderTopWidthSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> width =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string border_top_width = "10px";
+  MockMutationObserver observer;
+  width->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kBorderTopWidthProperty),
+                              border_top_width, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  width->set_border_top_width(border_top_width, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, BottomSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string bottom = "100px";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kBottomProperty), bottom, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_bottom(bottom, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, BoxShadowSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string box_shadow = "none";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kBoxShadowProperty), box_shadow, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_box_shadow(box_shadow, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, ColorSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string color = "rgba(0, 0, 0, .8)";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kColorProperty), color, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_color(color, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, ContentSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string content = "url(foo.png)";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kContentProperty), content, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_content(content, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, DisplaySetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string display = "inline-block";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kDisplayProperty), display, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_display(display, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, FontSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string font = "inherit";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kFontProperty), font, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_font(font, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, FontFamilySetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string font_family = "Roboto";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kFontFamilyProperty), font_family, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_font_family(font_family, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, FontSizeSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string font_size = "100px";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kFontSizeProperty), font_size, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_font_size(font_size, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, FontStyleSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string font_style = "italic";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kFontStyleProperty), font_style, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_font_style(font_style, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, FontWeightSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string font_weight = "normal";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kFontWeightProperty), font_weight, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_font_weight(font_weight, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, HeightSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string height = "100px";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kHeightProperty), height, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_height(height, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, LeftSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string left = "100px";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kLeftProperty), left, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_left(left, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, LineHeightSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string line_height = "1.5em";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kLineHeightProperty), line_height, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_line_height(line_height, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, MarginSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string margin = "100px";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kMarginProperty), margin, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_margin(margin, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, MarginBottomSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string margin_bottom = "100px";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kMarginBottomProperty), margin_bottom, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_margin_bottom(margin_bottom, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, MarginLeftSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string margin_left = "100px";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kMarginLeftProperty), margin_left, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_margin_left(margin_left, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, MarginRightSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string margin_right = "100px";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kMarginRightProperty), margin_right, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_margin_right(margin_right, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, MarginTopSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string margin_top = "100px";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kMarginTopProperty), margin_top, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_margin_top(margin_top, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, MaxHeightSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string max_height = "100px";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kMaxHeightProperty), max_height, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_max_height(max_height, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, MaxWidthSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string max_width = "100px";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kMaxWidthProperty), max_width, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_max_width(max_width, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, MinHeightSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string min_height = "100px";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kMinHeightProperty), min_height, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_min_height(min_height, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, MinWidthSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string min_width = "100px";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kMinWidthProperty), min_width, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_min_width(min_width, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, OpacitySetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string opacity = "0.5";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kOpacityProperty), opacity, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_opacity(opacity, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, OverflowSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string overflow = "visible";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kOverflowProperty), overflow, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_overflow(overflow, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, OverflowWrapSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string overflow_wrap = "break-word";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kOverflowWrapProperty), overflow_wrap, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+
+  style->set_overflow_wrap(overflow_wrap, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, PaddingSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string padding = "100px";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kPaddingProperty), padding, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_padding(padding, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, PaddingBottomSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string padding_bottom = "100px";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kPaddingBottomProperty),
+                              padding_bottom, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_padding_bottom(padding_bottom, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, PaddingLeftSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string padding_left = "100px";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kPaddingLeftProperty), padding_left, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_padding_left(padding_left, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, PaddingRightSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string padding_right = "100px";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kPaddingRightProperty), padding_right, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_padding_right(padding_right, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, PaddingTopSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string padding_top = "100px";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kPaddingTopProperty), padding_top, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_padding_top(padding_top, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, PositionSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string position = "static";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kPositionProperty), position, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_position(position, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, RightSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string right = "100px";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kRightProperty), right, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_right(right, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, TextAlignSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string text_align = "center";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kTextAlignProperty), text_align, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_text_align(text_align, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, TextDecorationColorSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string text_decoration_color = "rgba(0, 0, 0, .8)";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kTextDecorationColorProperty),
+                              text_decoration_color, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+
+  style->set_text_decoration_color(text_decoration_color, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, TextDecorationLineSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string text_decoration_line = "line-through";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kTextDecorationLineProperty),
+                              text_decoration_line, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+
+  style->set_text_decoration_line(text_decoration_line, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, TextIndentSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string text_indent = "4em";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kTextIndentProperty), text_indent, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+
+  style->set_text_indent(text_indent, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, TextOverflowSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string text_overflow = "ellipsis";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kTextOverflowProperty), text_overflow, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+
+  style->set_text_overflow(text_overflow, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, TextShadowSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string text_shadow = "inherit";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kTextShadowProperty), text_shadow, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+
+  style->set_text_shadow(text_shadow, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, TextTransformSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string text_transform = "uppercase";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kTextTransformProperty),
+                              text_transform, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+
+  style->set_text_transform(text_transform, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, TopSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string top = "100px";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kTopProperty), top, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_top(top, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, TransformSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string transform = "scale(1.5)";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser,
+              ParsePropertyIntoDeclarationData(
+                  GetPropertyName(kTransformProperty), transform, _, _));
+  EXPECT_CALL(observer, OnCSSMutation()).Times(1);
+  style->set_transform(transform, NULL);
+}
+
+TEST(CSSStyleDeclarationTest, TransformOriginSetter) {
+  testing::MockCSSParser css_parser;
+  scoped_refptr<CSSDeclaredStyleDeclaration> style =
+      new CSSDeclaredStyleDeclaration(&css_parser);
+
+  const std::string transform_origin = "20% 40%";
+  MockMutationObserver observer;
+  style->set_mutation_observer(&observer);
+
+  EXPECT_CALL(css_parser, ParsePropertyIntoDeclarationData(
+                              GetPropertyName(kTransformOriginProperty),
+                              transform_origin, _,