Merge inbound to m-c. a=merge
authorRyan VanderMeulen <ryanvm@gmail.com>
Sat, 30 Aug 2014 12:25:27 -0400
changeset 224210 983cf2175495d70528e3cc66159fecb3924421be
parent 224123 5fd6428ae179ae317e3633d727e1de4de7a4b1d1 (current diff)
parent 224209 d01744d382162257b5a09e3232b972f75e76762d (diff)
child 224243 82e1c0a8c5898a595d2030a0eb9719ccb4897184
push id3979
push userraliiev@mozilla.com
push dateMon, 13 Oct 2014 16:35:44 +0000
treeherdermozilla-beta@30f2cc610691 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone34.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Merge inbound to m-c. a=merge
gfx/thebes/gfxPoint3D.h
gfx/thebes/gfxPointH3D.h
--- a/b2g/app/b2g.js
+++ b/b2g/app/b2g.js
@@ -973,18 +973,17 @@ pref("apz.enlarge_displayport_when_clipp
 // Use "sticky" axis locking
 pref("apz.axis_lock_mode", 2);
 pref("apz.subframe.enabled", true);
 
 // Overscroll-related settings
 pref("apz.overscroll.enabled", true);
 pref("apz.overscroll.fling_friction", "0.02");
 pref("apz.overscroll.fling_stopped_threshold", "0.4");
-pref("apz.overscroll.clamping", "0.5");
-pref("apz.overscroll.z_effect", "0.5");
+pref("apz.overscroll.stretch_factor", "0.5");
 pref("apz.overscroll.snap_back.spring_stiffness", "0.6");
 pref("apz.overscroll.snap_back.spring_friction", "0.1");
 pref("apz.overscroll.snap_back.mass", "1200");
 
 // This preference allows FirefoxOS apps (and content, I think) to force
 // the use of software (instead of hardware accelerated) 2D canvases by
 // creating a context like this:
 //
--- a/content/base/src/nsContentSink.cpp
+++ b/content/base/src/nsContentSink.cpp
@@ -1172,17 +1172,17 @@ nsContentSink::StartLayout(bool aIgnoreP
     if (NS_FAILED(rv)) {
       return;
     }
   }
 
   // If the document we are loading has a reference or it is a
   // frameset document, disable the scroll bars on the views.
 
-  mDocument->SetScrollToRef(mDocumentURI);
+  mDocument->SetScrollToRef(mDocument->GetDocumentURI());
 }
 
 void
 nsContentSink::NotifyAppend(nsIContent* aContainer, uint32_t aStartIndex)
 {
   if (aContainer->GetCurrentDoc() != mDocument) {
     // aContainer is not actually in our document anymore.... Just bail out of
     // here; notifying on our document for this append would be wrong.
--- a/content/base/src/nsMixedContentBlocker.cpp
+++ b/content/base/src/nsMixedContentBlocker.cpp
@@ -202,16 +202,18 @@ nsMixedContentBlocker::ShouldLoad(uint32
 {
   // Asserting that we are on the main thread here and hence do not have to lock
   // and unlock sBlockMixedScript and sBlockMixedDisplay before reading/writing
   // to them.
   MOZ_ASSERT(NS_IsMainThread());
 
   // Assume active (high risk) content and blocked by default
   MixedContentTypes classification = eMixedScript;
+  // Make decision to block/reject by default
+  *aDecision = REJECT_REQUEST;
 
 
   // Notes on non-obvious decisions:
   //
   // TYPE_DTD: A DTD can contain entity definitions that expand to scripts.
   //
   // TYPE_FONT: The TrueType hinting mechanism is basically a scripting
   // language that gets interpreted by the operating system's font rasterizer.
@@ -334,20 +336,22 @@ nsMixedContentBlocker::ShouldLoad(uint32
   bool schemeLocal = false;
   bool schemeNoReturnData = false;
   bool schemeInherits = false;
   bool schemeSecure = false;
   if (NS_FAILED(NS_URIChainHasFlags(aContentLocation, nsIProtocolHandler::URI_IS_LOCAL_RESOURCE , &schemeLocal))  ||
       NS_FAILED(NS_URIChainHasFlags(aContentLocation, nsIProtocolHandler::URI_DOES_NOT_RETURN_DATA, &schemeNoReturnData)) ||
       NS_FAILED(NS_URIChainHasFlags(aContentLocation, nsIProtocolHandler::URI_INHERITS_SECURITY_CONTEXT, &schemeInherits)) ||
       NS_FAILED(NS_URIChainHasFlags(aContentLocation, nsIProtocolHandler::URI_SAFE_TO_LOAD_IN_SECURE_CONTEXT, &schemeSecure))) {
+    *aDecision = REJECT_REQUEST;
     return NS_ERROR_FAILURE;
   }
 
   if (schemeLocal || schemeNoReturnData || schemeInherits || schemeSecure) {
+    *aDecision = ACCEPT;
      return NS_OK;
   }
 
   // Since there are cases where aRequestingLocation and aRequestPrincipal are
   // definitely not the owning document, we try to ignore them by extracting the
   // requestingLocation in the following order:
   // 1) from the aRequestingContext, either extracting
   //    a) the node's principal, or the
@@ -436,16 +440,17 @@ nsMixedContentBlocker::ShouldLoad(uint32
   // Determine if the rootDoc is https and if the user decided to allow Mixed Content
   nsCOMPtr<nsIDocShell> docShell = NS_CP_GetDocShellFromContext(aRequestingContext);
   NS_ENSURE_TRUE(docShell, NS_OK);
   bool rootHasSecureConnection = false;
   bool allowMixedContent = false;
   bool isRootDocShell = false;
   rv = docShell->GetAllowMixedContentAndConnectionData(&rootHasSecureConnection, &allowMixedContent, &isRootDocShell);
   if (NS_FAILED(rv)) {
+    *aDecision = REJECT_REQUEST;
      return rv;
   }
 
 
   // Get the sameTypeRoot tree item from the docshell
   nsCOMPtr<nsIDocShellTreeItem> sameTypeRoot;
   docShell->GetSameTypeRootTreeItem(getter_AddRefs(sameTypeRoot));
   NS_ASSERTION(sameTypeRoot, "No root tree item from docshell!");
@@ -585,16 +590,17 @@ nsMixedContentBlocker::ShouldLoad(uint32
 
     // Log a message that we are loading mixed content.
     LogMixedContentMessage(classification, aContentLocation, rootDoc, eUserOverride);
 
     // Fire the event from a script runner as it is unsafe to run script
     // from within ShouldLoad
     nsContentUtils::AddScriptRunner(
       new nsMixedContentEvent(aRequestingContext, classification));
+    *aDecision = ACCEPT;
     return NS_OK;
   }
 
   *aDecision = REJECT_REQUEST;
   return NS_OK;
 }
 
 NS_IMETHODIMP
@@ -605,18 +611,20 @@ nsMixedContentBlocker::ShouldProcess(uin
                                      const nsACString& aMimeGuess,
                                      nsISupports* aExtra,
                                      nsIPrincipal* aRequestPrincipal,
                                      int16_t* aDecision)
 {
   if (!aContentLocation) {
     // aContentLocation may be null when a plugin is loading without an associated URI resource
     if (aContentType == TYPE_OBJECT) {
+       *aDecision = ACCEPT;
        return NS_OK;
     } else {
+       *aDecision = REJECT_REQUEST;
        return NS_ERROR_FAILURE;
     }
   }
 
   return ShouldLoad(aContentType, aContentLocation, aRequestingLocation,
                     aRequestingContext, aMimeGuess, aExtra, aRequestPrincipal,
                     aDecision);
 }
--- a/content/media/gmp/GMPProcessParent.cpp
+++ b/content/media/gmp/GMPProcessParent.cpp
@@ -4,16 +4,22 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "GMPProcessParent.h"
 
 #include "base/string_util.h"
 #include "base/process_util.h"
 
+#ifdef XP_WIN
+#include <codecvt>
+#endif
+
+#include <string>
+
 using std::vector;
 using std::string;
 
 using mozilla::gmp::GMPProcessParent;
 using mozilla::ipc::GeckoChildProcessHost;
 using base::ProcessArchitecture;
 
 template<>
@@ -38,16 +44,23 @@ GMPProcessParent::~GMPProcessParent()
   MOZ_COUNT_DTOR(GMPProcessParent);
 }
 
 bool
 GMPProcessParent::Launch(int32_t aTimeoutMs)
 {
   vector<string> args;
   args.push_back(mGMPPath);
+
+#ifdef XP_WIN
+  std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
+  std::wstring wGMPPath = converter.from_bytes(mGMPPath.c_str());
+  mAllowedFilesRead.push_back(wGMPPath + L"\\*");
+#endif
+
   return SyncLaunch(args, aTimeoutMs, base::GetCurrentProcessArchitecture());
 }
 
 void
 GMPProcessParent::Delete()
 {
   MessageLoop* currentLoop = MessageLoop::current();
   MessageLoop* ioLoop = XRE_GetIOMessageLoop();
--- a/content/xul/content/src/nsXULElement.cpp
+++ b/content/xul/content/src/nsXULElement.cpp
@@ -823,16 +823,17 @@ private:
 nsresult
 nsXULElement::BindToTree(nsIDocument* aDocument,
                          nsIContent* aParent,
                          nsIContent* aBindingParent,
                          bool aCompileEventHandlers)
 {
   if (!aBindingParent &&
       aDocument &&
+      !aDocument->IsLoadedAsInteractiveData() &&
       !aDocument->AllowXULXBL() &&
       !aDocument->HasWarnedAbout(nsIDocument::eImportXULIntoContent)) {
     nsContentUtils::AddScriptRunner(new XULInContentErrorReporter(aDocument));
   }
 
   nsresult rv = nsStyledElement::BindToTree(aDocument, aParent,
                                             aBindingParent,
                                             aCompileEventHandlers);
--- a/dom/animation/AnimationPlayer.cpp
+++ b/dom/animation/AnimationPlayer.cpp
@@ -1,58 +1,41 @@
 /* vim: set shiftwidth=2 tabstop=8 autoindent cindent expandtab: */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "AnimationPlayer.h"
+#include "AnimationUtils.h"
 #include "mozilla/dom/AnimationPlayerBinding.h"
 
 namespace mozilla {
 namespace dom {
 
 NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(AnimationPlayer, mTimeline, mSource)
 
 NS_IMPL_CYCLE_COLLECTION_ROOT_NATIVE(AnimationPlayer, AddRef)
 NS_IMPL_CYCLE_COLLECTION_UNROOT_NATIVE(AnimationPlayer, Release)
 
 JSObject*
 AnimationPlayer::WrapObject(JSContext* aCx)
 {
   return dom::AnimationPlayerBinding::Wrap(aCx, this);
 }
 
-double
-AnimationPlayer::StartTime() const
+Nullable<double>
+AnimationPlayer::GetStartTime() const
 {
-  Nullable<double> startTime = mTimeline->ToTimelineTime(mStartTime);
-  return startTime.IsNull() ? 0.0 : startTime.Value();
+  return AnimationUtils::TimeDurationToDouble(mStartTime);
 }
 
-double
-AnimationPlayer::CurrentTime() const
+Nullable<double>
+AnimationPlayer::GetCurrentTime() const
 {
-  Nullable<TimeDuration> currentTime = GetCurrentTimeDuration();
-
-  // The current time is currently only going to be null when don't have a
-  // refresh driver (e.g. because we are in a display:none iframe).
-  //
-  // Web Animations says that in this case we should use a timeline time of
-  // 0 (the "effective timeline time") and calculate the current time from that.
-  // Doing that, however, requires storing the start time as an offset rather
-  // than a timestamp so for now we just return 0.
-  //
-  // FIXME: Store player start time and pause start as offsets rather than
-  // timestamps and return the appropriate current time when the timeline time
-  // is null.
-  if (currentTime.IsNull()) {
-    return 0.0;
-  }
-
-  return currentTime.Value().ToMilliseconds();
+  return AnimationUtils::TimeDurationToDouble(GetCurrentTimeDuration());
 }
 
 void
 AnimationPlayer::SetSource(Animation* aSource)
 {
   if (mSource) {
     mSource->SetParentTime(Nullable<TimeDuration>());
   }
@@ -82,10 +65,25 @@ AnimationPlayer::IsRunning() const
 }
 
 bool
 AnimationPlayer::IsCurrent() const
 {
   return GetSource() && GetSource()->IsCurrent();
 }
 
+Nullable<TimeDuration>
+AnimationPlayer::GetCurrentTimeDuration() const
+{
+  Nullable<TimeDuration> result;
+  if (!mHoldTime.IsNull()) {
+    result = mHoldTime;
+  } else {
+    Nullable<TimeDuration> timelineTime = mTimeline->GetCurrentTimeDuration();
+    if (!timelineTime.IsNull() && !mStartTime.IsNull()) {
+      result.SetValue(timelineTime.Value() - mStartTime.Value());
+    }
+  }
+  return result;
+}
+
 } // namespace dom
 } // namespace mozilla
--- a/dom/animation/AnimationPlayer.h
+++ b/dom/animation/AnimationPlayer.h
@@ -43,18 +43,18 @@ public:
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(AnimationPlayer)
 
   AnimationTimeline* GetParentObject() const { return mTimeline; }
   virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   // AnimationPlayer methods
   Animation* GetSource() const { return mSource; }
   AnimationTimeline* Timeline() const { return mTimeline; }
-  double StartTime() const;
-  double CurrentTime() const;
+  Nullable<double> GetStartTime() const;
+  Nullable<double> GetCurrentTime() const;
   bool IsRunningOnCompositor() const { return mIsRunningOnCompositor; }
 
   void SetSource(Animation* aSource);
   void Tick();
 
   const nsString& Name() const {
     return mSource ? mSource->Name() : EmptyString();
   }
@@ -62,39 +62,22 @@ public:
   bool IsPaused() const {
     return mPlayState == NS_STYLE_ANIMATION_PLAY_STATE_PAUSED;
   }
 
   bool IsRunning() const;
   bool IsCurrent() const;
 
   // Return the duration since the start time of the player, taking into
-  // account the pause state.  May be negative.
-  // Returns a null value if the timeline associated with this object has a
-  // current timestamp that is null or if the start time of this object is
-  // null.
-  Nullable<TimeDuration> GetCurrentTimeDuration() const {
-    const TimeStamp& timelineTime = mTimeline->GetCurrentTimeStamp();
-    // FIXME: In order to support arbitrary timelines we will need to fix
-    // the pause logic to handle the timeline time going backwards.
-    MOZ_ASSERT(timelineTime.IsNull() || !IsPaused() ||
-               timelineTime >= mPauseStart,
-               "if paused, any non-null value of aTime must be at least"
-               " mPauseStart");
-
-    Nullable<TimeDuration> result; // Initializes to null
-    if (!timelineTime.IsNull() && !mStartTime.IsNull()) {
-      result.SetValue((IsPaused() ? mPauseStart : timelineTime) - mStartTime);
-    }
-    return result;
-  }
+  // account the pause state.  May be negative or null.
+  Nullable<TimeDuration> GetCurrentTimeDuration() const;
 
   // The beginning of the delay period.
-  TimeStamp mStartTime;
-  TimeStamp mPauseStart;
+  Nullable<TimeDuration> mStartTime;
+  Nullable<TimeDuration> mHoldTime;
   uint8_t mPlayState;
   bool mIsRunningOnCompositor;
 
   nsRefPtr<AnimationTimeline> mTimeline;
   nsRefPtr<Animation> mSource;
 };
 
 } // namespace dom
--- a/dom/animation/AnimationTimeline.cpp
+++ b/dom/animation/AnimationTimeline.cpp
@@ -1,15 +1,16 @@
 /* vim: set shiftwidth=2 tabstop=8 autoindent cindent expandtab: */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "AnimationTimeline.h"
 #include "mozilla/dom/AnimationTimelineBinding.h"
+#include "AnimationUtils.h"
 #include "nsContentUtils.h"
 #include "nsIPresShell.h"
 #include "nsPresContext.h"
 #include "nsRefreshDriver.h"
 #include "nsDOMNavigationTiming.h"
 
 namespace mozilla {
 namespace dom {
@@ -23,17 +24,17 @@ JSObject*
 AnimationTimeline::WrapObject(JSContext* aCx)
 {
   return AnimationTimelineBinding::Wrap(aCx, this);
 }
 
 Nullable<double>
 AnimationTimeline::GetCurrentTime() const
 {
-  return ToTimelineTime(GetCurrentTimeStamp());
+  return AnimationUtils::TimeDurationToDouble(GetCurrentTimeDuration());
 }
 
 TimeStamp
 AnimationTimeline::GetCurrentTimeStamp() const
 {
   // Always return the same object to benefit from return-value optimization.
   TimeStamp result = mLastCurrentTime;
 
@@ -62,27 +63,46 @@ AnimationTimeline::GetCurrentTimeStamp()
   // FIXME: We would like to assert that:
   //   mLastCurrentTime.IsNull() || result >= mLastCurrentTime
   // but due to bug 1043078 this will not be the case when the refresh driver
   // is restored from test control.
   mLastCurrentTime = result;
   return result;
 }
 
-Nullable<double>
-AnimationTimeline::ToTimelineTime(const mozilla::TimeStamp& aTimeStamp) const
+Nullable<TimeDuration>
+AnimationTimeline::GetCurrentTimeDuration() const
 {
-  Nullable<double> result; // Initializes to null
+  return ToTimelineTime(GetCurrentTimeStamp());
+}
+
+Nullable<TimeDuration>
+AnimationTimeline::ToTimelineTime(const TimeStamp& aTimeStamp) const
+{
+  Nullable<TimeDuration> result; // Initializes to null
   if (aTimeStamp.IsNull()) {
     return result;
   }
 
   nsRefPtr<nsDOMNavigationTiming> timing = mDocument->GetNavigationTiming();
   if (MOZ_UNLIKELY(!timing)) {
     return result;
   }
 
-  result.SetValue(timing->TimeStampToDOMHighRes(aTimeStamp));
+  result.SetValue(aTimeStamp - timing->GetNavigationStartTimeStamp());
+  return result;
+}
+
+TimeStamp
+AnimationTimeline::ToTimeStamp(const TimeDuration& aTimeDuration) const
+{
+  TimeStamp result;
+  nsRefPtr<nsDOMNavigationTiming> timing = mDocument->GetNavigationTiming();
+  if (MOZ_UNLIKELY(!timing)) {
+    return result;
+  }
+
+  result = timing->GetNavigationStartTimeStamp() + aTimeDuration;
   return result;
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/dom/animation/AnimationTimeline.h
+++ b/dom/animation/AnimationTimeline.h
@@ -28,28 +28,33 @@ public:
   }
 
   NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(AnimationTimeline)
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(AnimationTimeline)
 
   nsISupports* GetParentObject() const { return mDocument; }
   virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
+  // WebIDL API
   Nullable<double> GetCurrentTime() const;
-  mozilla::TimeStamp GetCurrentTimeStamp() const;
+
+  Nullable<TimeDuration> GetCurrentTimeDuration() const;
 
-  Nullable<double> ToTimelineTime(const mozilla::TimeStamp& aTimeStamp) const;
+  Nullable<TimeDuration> ToTimelineTime(const TimeStamp& aTimeStamp) const;
+  TimeStamp ToTimeStamp(const TimeDuration& aTimelineTime) const;
 
 protected:
+  TimeStamp GetCurrentTimeStamp() const;
+
   virtual ~AnimationTimeline() { }
 
   nsCOMPtr<nsIDocument> mDocument;
 
   // Store the most recently returned value of current time. This is used
   // in cases where we don't have a refresh driver (e.g. because we are in
   // a display:none iframe).
-  mutable mozilla::TimeStamp mLastCurrentTime;
+  mutable TimeStamp mLastCurrentTime;
 };
 
 } // namespace dom
 } // namespace mozilla
 
 #endif // mozilla_dom_AnimationTimeline_h
new file mode 100644
--- /dev/null
+++ b/dom/animation/AnimationUtils.h
@@ -0,0 +1,29 @@
+/* vim: set shiftwidth=2 tabstop=8 autoindent cindent expandtab: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "mozilla/TimeStamp.h"
+#include "mozilla/dom/Nullable.h"
+
+namespace mozilla {
+namespace dom {
+
+class AnimationUtils
+{
+public:
+  static Nullable<double>
+    TimeDurationToDouble(const Nullable<TimeDuration>& aTime)
+  {
+    Nullable<double> result;
+
+    if (!aTime.IsNull()) {
+      result.SetValue(aTime.Value().ToMilliseconds());
+    }
+
+    return result;
+  }
+};
+
+} // namespace dom
+} // namespace mozilla
--- a/dom/bindings/Bindings.conf
+++ b/dom/bindings/Bindings.conf
@@ -954,20 +954,25 @@ DOMInterfaces = {
 },
 
 'PeerConnectionImpl': {
     'nativeType': 'sipcc::PeerConnectionImpl',
     'headerFile': 'PeerConnectionImpl.h',
     'wrapperCache': False
 },
 
-'Performance': {
+'Performance': [{
     'nativeType': 'nsPerformance',
     'resultNotAddRefed': [ 'timing', 'navigation' ]
 },
+{
+    'nativeType': 'mozilla::dom::workers::Performance',
+    'headerFile': 'mozilla/dom/workers/bindings/Performance.h',
+    'workers': True,
+}],
 
 'PerformanceTiming': {
     'nativeType': 'nsPerformanceTiming',
     'headerFile': 'nsPerformance.h'
 },
 
 'PerformanceNavigation': {
     'nativeType': 'nsPerformanceNavigation',
@@ -1614,17 +1619,22 @@ DOMInterfaces = {
 
 'WorkerGlobalScope': {
     'headerFile': 'mozilla/dom/WorkerScope.h',
     'workers': True,
     'concrete': False,
     'implicitJSContext': [
         'close', 'importScripts',
     ],
-    'binaryNames': { 'console': 'getConsole', },
+    # Rename a few things so we don't have both classes and methods
+    # with the same name
+    'binaryNames': {
+        'console': 'getConsole',
+        'performance': 'getPerformance',
+    },
 },
 
 'WorkerLocation': {
     'headerFile': 'mozilla/dom/workers/bindings/Location.h',
     'workers': True,
 },
 
 'WorkerNavigator': {
--- a/dom/bindings/Codegen.py
+++ b/dom/bindings/Codegen.py
@@ -2150,30 +2150,33 @@ class MethodDefiner(PropertyDefiner):
                 "length": 0,
                 "flags": "JSPROP_ENUMERATE",
                 "condition": MemberCondition(None, None)
             })
 
         if not static:
             stringifier = descriptor.operations['Stringifier']
             if (stringifier and
-                unforgeable == MemberIsUnforgeable(stringifier, descriptor)):
+                unforgeable == MemberIsUnforgeable(stringifier, descriptor) and
+                isMaybeExposedIn(stringifier, descriptor)):
                 toStringDesc = {
                     "name": "toString",
                     "nativeName": stringifier.identifier.name,
                     "length": 0,
                     "flags": "JSPROP_ENUMERATE",
                     "condition": PropertyDefiner.getControllingCondition(stringifier, descriptor)
                 }
                 if isChromeOnly(stringifier):
                     self.chrome.append(toStringDesc)
                 else:
                     self.regular.append(toStringDesc)
             jsonifier = descriptor.operations['Jsonifier']
-            if jsonifier:
+            if (jsonifier and
+                unforgeable == MemberIsUnforgeable(jsonifier, descriptor) and
+                isMaybeExposedIn(jsonifier, descriptor)):
                 toJSONDesc = {
                     "name": "toJSON",
                     "nativeName": jsonifier.identifier.name,
                     "length": 0,
                     "flags": "JSPROP_ENUMERATE",
                     "condition": PropertyDefiner.getControllingCondition(jsonifier, descriptor)
                 }
                 if isChromeOnly(jsonifier):
--- a/dom/bindings/Configuration.py
+++ b/dom/bindings/Configuration.py
@@ -546,22 +546,17 @@ class Descriptor(DescriptorProvider):
                 in self.interface.members))
 
     def hasThreadChecks(self):
         return ((not self.workers and not self.interface.isExposedInWindow()) or
                 (self.interface.isExposedInAnyWorker() and
                  self.interface.isExposedOnlyInSomeWorkers()))
 
     def isExposedConditionally(self):
-        return (self.interface.getExtendedAttribute("Pref") or
-                self.interface.getExtendedAttribute("ChromeOnly") or
-                self.interface.getExtendedAttribute("Func") or
-                self.interface.getExtendedAttribute("AvailableIn") or
-                self.interface.getExtendedAttribute("CheckPermissions") or
-                self.hasThreadChecks())
+        return self.interface.isExposedConditionally() or self.hasThreadChecks()
 
     def needsXrayResolveHooks(self):
         """
         Generally, any interface with NeedNewResolve needs Xray
         resolveOwnProperty and enumerateOwnProperties hooks.  But for
         the special case of plugin-loading elements, we do NOT want
         those, because we don't want to instantiate plug-ins simply
         due to chrome touching them and that's all those hooks do on
--- a/dom/bindings/parser/WebIDL.py
+++ b/dom/bindings/parser/WebIDL.py
@@ -1013,16 +1013,24 @@ class IDLInterface(IDLObjectWithScope):
 
         if (self.getExtendedAttribute("CheckPermissions") and
             self._exposureGlobalNames != set([self.parentScope.primaryGlobalName])):
             raise WebIDLError("[CheckPermissions] used on an interface that is "
                               "not %s-only" %
                               self.parentScope.primaryGlobalName,
                               [self.location])
 
+        # Conditional exposure makes no sense for interfaces with no
+        # interface object, unless they're navigator properties.
+        if (self.isExposedConditionally() and
+            not self.hasInterfaceObject() and
+            not self.getNavigatorProperty()):
+            raise WebIDLError("Interface with no interface object is "
+                              "exposed conditionally",
+                              [self.location])
 
     def isInterface(self):
         return True
 
     def isExternal(self):
         return False
 
     def setIsConsequentialInterfaceOf(self, other):
@@ -1351,16 +1359,23 @@ class IDLInterface(IDLObjectWithScope):
         deps.union(self.implementedInterfaces)
         if self.parent:
             deps.add(self.parent)
         return deps
 
     def hasMembersInSlots(self):
         return self._ownMembersInSlots != 0
 
+    def isExposedConditionally(self):
+        return (self.getExtendedAttribute("Pref") or
+                self.getExtendedAttribute("ChromeOnly") or
+                self.getExtendedAttribute("Func") or
+                self.getExtendedAttribute("AvailableIn") or
+                self.getExtendedAttribute("CheckPermissions"))
+
 class IDLDictionary(IDLObjectWithScope):
     def __init__(self, location, parentScope, name, parent, members):
         assert isinstance(parentScope, IDLScope)
         assert isinstance(name, IDLUnresolvedIdentifier)
         assert not parent or isinstance(parent, IDLIdentifierPlaceholder)
 
         self.parent = parent
         self._finished = False
--- a/dom/canvas/test/webgl-conformance/00_test_list.txt
+++ b/dom/canvas/test/webgl-conformance/00_test_list.txt
@@ -1,6 +1,8 @@
 // files that end in .txt list other tests
 // other lines are assumed to be .html files
 
+always-fail.html
+
 conformance/00_test_list.txt
 conformance/more/00_test_list.txt
 
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_mochitest.ini
@@ -0,0 +1,834 @@
+[DEFAULT]
+skip-if = e10s || os == 'b2g' || ((os == 'linux') && (buildapp == 'b2g'))
+
+support-files = mochi-single.html
+                mochi-wrapper.css
+                always-fail.html
+                conformance/00_readme.txt
+                conformance/00_test_list.txt
+                conformance/LICENSE_CHROMIUM
+                conformance/attribs/00_test_list.txt
+                conformance/attribs/gl-enable-vertex-attrib.html
+                conformance/attribs/gl-vertex-attrib-zero-issues.html
+                conformance/attribs/gl-vertex-attrib.html
+                conformance/attribs/gl-vertexattribpointer-offsets.html
+                conformance/attribs/gl-vertexattribpointer.html
+                conformance/buffers/00_test_list.txt
+                conformance/buffers/buffer-bind-test.html
+                conformance/buffers/buffer-data-array-buffer.html
+                conformance/buffers/index-validation-copies-indices.html
+                conformance/buffers/index-validation-crash-with-buffer-sub-data.html
+                conformance/buffers/index-validation-verifies-too-many-indices.html
+                conformance/buffers/index-validation-with-resized-buffer.html
+                conformance/buffers/index-validation.html
+                conformance/canvas/00_test_list.txt
+                conformance/canvas/buffer-offscreen-test.html
+                conformance/canvas/buffer-preserve-test.html
+                conformance/canvas/canvas-test.html
+                conformance/canvas/canvas-zero-size.html
+                conformance/canvas/drawingbuffer-static-canvas-test.html
+                conformance/canvas/drawingbuffer-test.html
+                conformance/canvas/viewport-unchanged-upon-resize.html
+                conformance/context/00_test_list.txt
+                conformance/context/constants.html
+                conformance/context/context-attribute-preserve-drawing-buffer.html
+                conformance/context/context-attributes-alpha-depth-stencil-antialias.html
+                conformance/context/context-lost-restored.html
+                conformance/context/context-lost.html
+                conformance/context/context-type-test.html
+                conformance/context/incorrect-context-object-behaviour.html
+                conformance/context/methods.html
+                conformance/context/premultiplyalpha-test.html
+                conformance/context/resource-sharing-test.html
+                conformance/extensions/00_test_list.txt
+                conformance/extensions/ext-sRGB.html
+                conformance/extensions/ext-shader-texture-lod.html
+                conformance/extensions/ext-texture-filter-anisotropic.html
+                conformance/extensions/oes-standard-derivatives.html
+                conformance/extensions/oes-texture-float.html
+                conformance/extensions/oes-vertex-array-object.html
+                conformance/extensions/webgl-compressed-texture-etc1.html
+                conformance/extensions/webgl-compressed-texture-s3tc.html
+                conformance/extensions/webgl-debug-renderer-info.html
+                conformance/extensions/webgl-debug-shaders.html
+                conformance/extensions/webgl-depth-texture.html
+                conformance/glsl/00_test_list.txt
+                conformance/glsl/functions/00_test_list.txt
+                conformance/glsl/functions/glsl-function-abs.html
+                conformance/glsl/functions/glsl-function-acos.html
+                conformance/glsl/functions/glsl-function-asin.html
+                conformance/glsl/functions/glsl-function-atan-xy.html
+                conformance/glsl/functions/glsl-function-atan.html
+                conformance/glsl/functions/glsl-function-ceil.html
+                conformance/glsl/functions/glsl-function-clamp-float.html
+                conformance/glsl/functions/glsl-function-clamp-gentype.html
+                conformance/glsl/functions/glsl-function-cos.html
+                conformance/glsl/functions/glsl-function-cross.html
+                conformance/glsl/functions/glsl-function-distance.html
+                conformance/glsl/functions/glsl-function-dot.html
+                conformance/glsl/functions/glsl-function-faceforward.html
+                conformance/glsl/functions/glsl-function-floor.html
+                conformance/glsl/functions/glsl-function-fract.html
+                conformance/glsl/functions/glsl-function-length.html
+                conformance/glsl/functions/glsl-function-lessThan.html
+                conformance/glsl/functions/glsl-function-max-float.html
+                conformance/glsl/functions/glsl-function-max-gentype.html
+                conformance/glsl/functions/glsl-function-min-float.html
+                conformance/glsl/functions/glsl-function-min-gentype.html
+                conformance/glsl/functions/glsl-function-mix-float.html
+                conformance/glsl/functions/glsl-function-mix-gentype.html
+                conformance/glsl/functions/glsl-function-mod-float.html
+                conformance/glsl/functions/glsl-function-mod-gentype.html
+                conformance/glsl/functions/glsl-function-normalize.html
+                conformance/glsl/functions/glsl-function-reflect.html
+                conformance/glsl/functions/glsl-function-refract.html
+                conformance/glsl/functions/glsl-function-sign.html
+                conformance/glsl/functions/glsl-function-sin.html
+                conformance/glsl/functions/glsl-function-smoothstep-float.html
+                conformance/glsl/functions/glsl-function-smoothstep-gentype.html
+                conformance/glsl/functions/glsl-function-step-float.html
+                conformance/glsl/functions/glsl-function-step-gentype.html
+                conformance/glsl/functions/glsl-function.html
+                conformance/glsl/implicit/00_test_list.txt
+                conformance/glsl/implicit/add_int_float.vert.html
+                conformance/glsl/implicit/add_int_mat2.vert.html
+                conformance/glsl/implicit/add_int_mat3.vert.html
+                conformance/glsl/implicit/add_int_mat4.vert.html
+                conformance/glsl/implicit/add_int_vec2.vert.html
+                conformance/glsl/implicit/add_int_vec3.vert.html
+                conformance/glsl/implicit/add_int_vec4.vert.html
+                conformance/glsl/implicit/add_ivec2_vec2.vert.html
+                conformance/glsl/implicit/add_ivec3_vec3.vert.html
+                conformance/glsl/implicit/add_ivec4_vec4.vert.html
+                conformance/glsl/implicit/assign_int_to_float.vert.html
+                conformance/glsl/implicit/assign_ivec2_to_vec2.vert.html
+                conformance/glsl/implicit/assign_ivec3_to_vec3.vert.html
+                conformance/glsl/implicit/assign_ivec4_to_vec4.vert.html
+                conformance/glsl/implicit/construct_struct.vert.html
+                conformance/glsl/implicit/divide_int_float.vert.html
+                conformance/glsl/implicit/divide_int_mat2.vert.html
+                conformance/glsl/implicit/divide_int_mat3.vert.html
+                conformance/glsl/implicit/divide_int_mat4.vert.html
+                conformance/glsl/implicit/divide_int_vec2.vert.html
+                conformance/glsl/implicit/divide_int_vec3.vert.html
+                conformance/glsl/implicit/divide_int_vec4.vert.html
+                conformance/glsl/implicit/divide_ivec2_vec2.vert.html
+                conformance/glsl/implicit/divide_ivec3_vec3.vert.html
+                conformance/glsl/implicit/divide_ivec4_vec4.vert.html
+                conformance/glsl/implicit/equal_int_float.vert.html
+                conformance/glsl/implicit/equal_ivec2_vec2.vert.html
+                conformance/glsl/implicit/equal_ivec3_vec3.vert.html
+                conformance/glsl/implicit/equal_ivec4_vec4.vert.html
+                conformance/glsl/implicit/function_int_float.vert.html
+                conformance/glsl/implicit/function_ivec2_vec2.vert.html
+                conformance/glsl/implicit/function_ivec3_vec3.vert.html
+                conformance/glsl/implicit/function_ivec4_vec4.vert.html
+                conformance/glsl/implicit/greater_than.vert.html
+                conformance/glsl/implicit/greater_than_equal.vert.html
+                conformance/glsl/implicit/less_than.vert.html
+                conformance/glsl/implicit/less_than_equal.vert.html
+                conformance/glsl/implicit/multiply_int_float.vert.html
+                conformance/glsl/implicit/multiply_int_mat2.vert.html
+                conformance/glsl/implicit/multiply_int_mat3.vert.html
+                conformance/glsl/implicit/multiply_int_mat4.vert.html
+                conformance/glsl/implicit/multiply_int_vec2.vert.html
+                conformance/glsl/implicit/multiply_int_vec3.vert.html
+                conformance/glsl/implicit/multiply_int_vec4.vert.html
+                conformance/glsl/implicit/multiply_ivec2_vec2.vert.html
+                conformance/glsl/implicit/multiply_ivec3_vec3.vert.html
+                conformance/glsl/implicit/multiply_ivec4_vec4.vert.html
+                conformance/glsl/implicit/not_equal_int_float.vert.html
+                conformance/glsl/implicit/not_equal_ivec2_vec2.vert.html
+                conformance/glsl/implicit/not_equal_ivec3_vec3.vert.html
+                conformance/glsl/implicit/not_equal_ivec4_vec4.vert.html
+                conformance/glsl/implicit/subtract_int_float.vert.html
+                conformance/glsl/implicit/subtract_int_mat2.vert.html
+                conformance/glsl/implicit/subtract_int_mat3.vert.html
+                conformance/glsl/implicit/subtract_int_mat4.vert.html
+                conformance/glsl/implicit/subtract_int_vec2.vert.html
+                conformance/glsl/implicit/subtract_int_vec3.vert.html
+                conformance/glsl/implicit/subtract_int_vec4.vert.html
+                conformance/glsl/implicit/subtract_ivec2_vec2.vert.html
+                conformance/glsl/implicit/subtract_ivec3_vec3.vert.html
+                conformance/glsl/implicit/subtract_ivec4_vec4.vert.html
+                conformance/glsl/implicit/ternary_int_float.vert.html
+                conformance/glsl/implicit/ternary_ivec2_vec2.vert.html
+                conformance/glsl/implicit/ternary_ivec3_vec3.vert.html
+                conformance/glsl/implicit/ternary_ivec4_vec4.vert.html
+                conformance/glsl/matrices/00_test_list.txt
+                conformance/glsl/matrices/glsl-mat4-to-mat3.html
+                conformance/glsl/misc/00_test_list.txt
+                conformance/glsl/misc/attrib-location-length-limits.html
+                conformance/glsl/misc/embedded-struct-definitions-forbidden.html
+                conformance/glsl/misc/glsl-2types-of-textures-on-same-unit.html
+                conformance/glsl/misc/glsl-function-nodes.html
+                conformance/glsl/misc/glsl-long-variable-names.html
+                conformance/glsl/misc/glsl-vertex-branch.html
+                conformance/glsl/misc/include.vs
+                conformance/glsl/misc/non-ascii-comments.vert.html
+                conformance/glsl/misc/non-ascii.vert.html
+                conformance/glsl/misc/re-compile-re-link.html
+                conformance/glsl/misc/shader-with-256-character-identifier.frag.html
+                conformance/glsl/misc/shader-with-257-character-identifier.frag.html
+                conformance/glsl/misc/shader-with-_webgl-identifier.vert.html
+                conformance/glsl/misc/shader-with-arbitrary-indexing.frag.html
+                conformance/glsl/misc/shader-with-arbitrary-indexing.vert.html
+                conformance/glsl/misc/shader-with-attrib-array.vert.html
+                conformance/glsl/misc/shader-with-attrib-struct.vert.html
+                conformance/glsl/misc/shader-with-clipvertex.vert.html
+                conformance/glsl/misc/shader-with-comma-assignment.html
+                conformance/glsl/misc/shader-with-comma-conditional-assignment.html
+                conformance/glsl/misc/shader-with-conditional-scoping.html
+                conformance/glsl/misc/shader-with-default-precision.frag.html
+                conformance/glsl/misc/shader-with-default-precision.vert.html
+                conformance/glsl/misc/shader-with-define-line-continuation.frag.html
+                conformance/glsl/misc/shader-with-dfdx-no-ext.frag.html
+                conformance/glsl/misc/shader-with-dfdx.frag.html
+                conformance/glsl/misc/shader-with-do-scoping.html
+                conformance/glsl/misc/shader-with-error-directive.html
+                conformance/glsl/misc/shader-with-explicit-int-cast.vert.html
+                conformance/glsl/misc/shader-with-float-return-value.frag.html
+                conformance/glsl/misc/shader-with-for-loop.html
+                conformance/glsl/misc/shader-with-for-scoping.html
+                conformance/glsl/misc/shader-with-frag-depth.frag.html
+                conformance/glsl/misc/shader-with-function-recursion.frag.html
+                conformance/glsl/misc/shader-with-function-scoped-struct.html
+                conformance/glsl/misc/shader-with-functional-scoping.html
+                conformance/glsl/misc/shader-with-glcolor.vert.html
+                conformance/glsl/misc/shader-with-gles-1.frag.html
+                conformance/glsl/misc/shader-with-gles-symbol.frag.html
+                conformance/glsl/misc/shader-with-glprojectionmatrix.vert.html
+                conformance/glsl/misc/shader-with-hex-int-constant-macro.html
+                conformance/glsl/misc/shader-with-implicit-vec3-to-vec4-cast.vert.html
+                conformance/glsl/misc/shader-with-include.vert.html
+                conformance/glsl/misc/shader-with-int-return-value.frag.html
+                conformance/glsl/misc/shader-with-invalid-identifier.frag.html
+                conformance/glsl/misc/shader-with-ivec2-return-value.frag.html
+                conformance/glsl/misc/shader-with-ivec3-return-value.frag.html
+                conformance/glsl/misc/shader-with-ivec4-return-value.frag.html
+                conformance/glsl/misc/shader-with-limited-indexing.frag.html
+                conformance/glsl/misc/shader-with-line-directive.html
+                conformance/glsl/misc/shader-with-long-line.html
+                conformance/glsl/misc/shader-with-non-ascii-error.frag.html
+                conformance/glsl/misc/shader-with-precision.frag.html
+                conformance/glsl/misc/shader-with-quoted-error.frag.html
+                conformance/glsl/misc/shader-with-undefined-preprocessor-symbol.frag.html
+                conformance/glsl/misc/shader-with-uniform-in-loop-condition.vert.html
+                conformance/glsl/misc/shader-with-vec2-return-value.frag.html
+                conformance/glsl/misc/shader-with-vec3-return-value.frag.html
+                conformance/glsl/misc/shader-with-vec4-return-value.frag.html
+                conformance/glsl/misc/shader-with-vec4-vec3-vec4-conditional.html
+                conformance/glsl/misc/shader-with-version-100.frag.html
+                conformance/glsl/misc/shader-with-version-100.vert.html
+                conformance/glsl/misc/shader-with-version-120.vert.html
+                conformance/glsl/misc/shader-with-version-130.vert.html
+                conformance/glsl/misc/shader-with-webgl-identifier.vert.html
+                conformance/glsl/misc/shader-without-precision.frag.html
+                conformance/glsl/misc/shared.html
+                conformance/glsl/misc/struct-nesting-exceeds-maximum.html
+                conformance/glsl/misc/struct-nesting-under-maximum.html
+                conformance/glsl/misc/uniform-location-length-limits.html
+                conformance/glsl/reserved/00_test_list.txt
+                conformance/glsl/reserved/_webgl_field.vert.html
+                conformance/glsl/reserved/_webgl_function.vert.html
+                conformance/glsl/reserved/_webgl_struct.vert.html
+                conformance/glsl/reserved/_webgl_variable.vert.html
+                conformance/glsl/reserved/webgl_field.vert.html
+                conformance/glsl/reserved/webgl_function.vert.html
+                conformance/glsl/reserved/webgl_struct.vert.html
+                conformance/glsl/reserved/webgl_variable.vert.html
+                conformance/glsl/samplers/00_test_list.txt
+                conformance/glsl/samplers/glsl-function-texture2d-bias.html
+                conformance/glsl/samplers/glsl-function-texture2dlod.html
+                conformance/glsl/samplers/glsl-function-texture2dproj.html
+                conformance/glsl/variables/00_test_list.txt
+                conformance/glsl/variables/gl-fragcoord.html
+                conformance/glsl/variables/gl-frontfacing.html
+                conformance/glsl/variables/gl-pointcoord.html
+                conformance/limits/00_test_list.txt
+                conformance/limits/gl-max-texture-dimensions.html
+                conformance/limits/gl-min-attribs.html
+                conformance/limits/gl-min-textures.html
+                conformance/limits/gl-min-uniforms.html
+                conformance/misc/00_test_list.txt
+                conformance/misc/bad-arguments-test.html
+                conformance/misc/delayed-drawing.html
+                conformance/misc/error-reporting.html
+                conformance/misc/functions-returning-strings.html
+                conformance/misc/instanceof-test.html
+                conformance/misc/invalid-passed-params.html
+                conformance/misc/is-object.html
+                conformance/misc/null-object-behaviour.html
+                conformance/misc/object-deletion-behaviour.html
+                conformance/misc/shader-precision-format.html
+                conformance/misc/type-conversion-test.html
+                conformance/misc/uninitialized-test.html
+                conformance/misc/webgl-specific.html
+                conformance/more/00_test_list.txt
+                conformance/more/README.md
+                conformance/more/all_tests.html
+                conformance/more/all_tests_linkonly.html
+                conformance/more/all_tests_sequential.html
+                conformance/more/conformance/argGenerators-A.js
+                conformance/more/conformance/argGenerators-B1.js
+                conformance/more/conformance/argGenerators-B2.js
+                conformance/more/conformance/argGenerators-B3.js
+                conformance/more/conformance/argGenerators-B4.js
+                conformance/more/conformance/argGenerators-C.js
+                conformance/more/conformance/argGenerators-D_G.js
+                conformance/more/conformance/argGenerators-G_I.js
+                conformance/more/conformance/argGenerators-L_S.js
+                conformance/more/conformance/argGenerators-S_V.js
+                conformance/more/conformance/badArgsArityLessThanArgc.html
+                conformance/more/conformance/constants.html
+                conformance/more/conformance/fuzzTheAPI.html
+                conformance/more/conformance/getContext.html
+                conformance/more/conformance/methods.html
+                conformance/more/conformance/quickCheckAPI-A.html
+                conformance/more/conformance/quickCheckAPI-B1.html
+                conformance/more/conformance/quickCheckAPI-B2.html
+                conformance/more/conformance/quickCheckAPI-B3.html
+                conformance/more/conformance/quickCheckAPI-B4.html
+                conformance/more/conformance/quickCheckAPI-C.html
+                conformance/more/conformance/quickCheckAPI-D_G.html
+                conformance/more/conformance/quickCheckAPI-G_I.html
+                conformance/more/conformance/quickCheckAPI-L_S.html
+                conformance/more/conformance/quickCheckAPI-S_V.html
+                conformance/more/conformance/quickCheckAPI.js
+                conformance/more/conformance/quickCheckAPIBadArgs.html
+                conformance/more/conformance/webGLArrays.html
+                conformance/more/demos/opengl_web.html
+                conformance/more/demos/video.html
+                conformance/more/functions/bindBuffer.html
+                conformance/more/functions/bindBufferBadArgs.html
+                conformance/more/functions/bindFramebufferLeaveNonZero.html
+                conformance/more/functions/bufferData.html
+                conformance/more/functions/bufferDataBadArgs.html
+                conformance/more/functions/bufferSubData.html
+                conformance/more/functions/bufferSubDataBadArgs.html
+                conformance/more/functions/copyTexImage2D.html
+                conformance/more/functions/copyTexImage2DBadArgs.html
+                conformance/more/functions/copyTexSubImage2D.html
+                conformance/more/functions/copyTexSubImage2DBadArgs.html
+                conformance/more/functions/deleteBufferBadArgs.html
+                conformance/more/functions/drawArrays.html
+                conformance/more/functions/drawArraysOutOfBounds.html
+                conformance/more/functions/drawElements.html
+                conformance/more/functions/drawElementsBadArgs.html
+                conformance/more/functions/isTests.html
+                conformance/more/functions/readPixels.html
+                conformance/more/functions/readPixelsBadArgs.html
+                conformance/more/functions/texImage2D.html
+                conformance/more/functions/texImage2DBadArgs.html
+                conformance/more/functions/texImage2DHTML.html
+                conformance/more/functions/texImage2DHTMLBadArgs.html
+                conformance/more/functions/texSubImage2D.html
+                conformance/more/functions/texSubImage2DBadArgs.html
+                conformance/more/functions/texSubImage2DHTML.html
+                conformance/more/functions/texSubImage2DHTMLBadArgs.html
+                conformance/more/functions/uniformMatrix.html
+                conformance/more/functions/uniformMatrixBadArgs.html
+                conformance/more/functions/uniformf.html
+                conformance/more/functions/uniformfArrayLen1.html
+                conformance/more/functions/uniformfBadArgs.html
+                conformance/more/functions/uniformi.html
+                conformance/more/functions/uniformiBadArgs.html
+                conformance/more/functions/vertexAttrib.html
+                conformance/more/functions/vertexAttribBadArgs.html
+                conformance/more/functions/vertexAttribPointer.html
+                conformance/more/functions/vertexAttribPointerBadArgs.html
+                conformance/more/glsl/arrayOutOfBounds.html
+                conformance/more/glsl/longLoops.html
+                conformance/more/glsl/uniformOutOfBounds.html
+                conformance/more/glsl/unusedAttribsUniforms.html
+                conformance/more/index.html
+                conformance/more/performance/CPUvsGPU.html
+                conformance/more/performance/bandwidth.html
+                conformance/more/performance/jsGCPause.html
+                conformance/more/performance/jsMatrixMult.html
+                conformance/more/performance/jsToGLOverhead.html
+                conformance/more/unit.css
+                conformance/more/unit.js
+                conformance/more/util.js
+                conformance/programs/00_test_list.txt
+                conformance/programs/get-active-test.html
+                conformance/programs/gl-bind-attrib-location-test.html
+                conformance/programs/gl-get-active-attribute.html
+                conformance/programs/gl-get-active-uniform.html
+                conformance/programs/gl-getshadersource.html
+                conformance/programs/gl-shader-test.html
+                conformance/programs/invalid-UTF-16.html
+                conformance/programs/program-test.html
+                conformance/reading/00_test_list.txt
+                conformance/reading/read-pixels-pack-alignment.html
+                conformance/reading/read-pixels-test.html
+                conformance/renderbuffers/00_test_list.txt
+                conformance/renderbuffers/framebuffer-object-attachment.html
+                conformance/renderbuffers/framebuffer-test.html
+                conformance/renderbuffers/renderbuffer-initialization.html
+                conformance/rendering/00_test_list.txt
+                conformance/rendering/draw-arrays-out-of-bounds.html
+                conformance/rendering/draw-elements-out-of-bounds.html
+                conformance/rendering/gl-clear.html
+                conformance/rendering/gl-drawelements.html
+                conformance/rendering/gl-scissor-test.html
+                conformance/rendering/line-loop-tri-fan.html
+                conformance/rendering/more-than-65536-indices.html
+                conformance/rendering/point-size.html
+                conformance/rendering/triangle.html
+                conformance/resources/3x3.png
+                conformance/resources/blue-1x1.jpg
+                conformance/resources/boolUniformShader.vert
+                conformance/resources/bug-32888-texture.png
+                conformance/resources/floatUniformShader.vert
+                conformance/resources/fragmentShader.frag
+                conformance/resources/glsl-conformance-test.js
+                conformance/resources/glsl-feature-tests.css
+                conformance/resources/glsl-generator.js
+                conformance/resources/gray-ramp-256-with-128-alpha.png
+                conformance/resources/gray-ramp-256.png
+                conformance/resources/gray-ramp-default-gamma.png
+                conformance/resources/gray-ramp-gamma0.1.png
+                conformance/resources/gray-ramp-gamma1.0.png
+                conformance/resources/gray-ramp-gamma2.0.png
+                conformance/resources/gray-ramp-gamma4.0.png
+                conformance/resources/gray-ramp-gamma9.0.png
+                conformance/resources/gray-ramp.png
+                conformance/resources/green-2x2-16bit.png
+                conformance/resources/intArrayUniformShader.vert
+                conformance/resources/intUniformShader.vert
+                conformance/resources/matUniformShader.vert
+                conformance/resources/noopUniformShader.frag
+                conformance/resources/noopUniformShader.vert
+                conformance/resources/npot-video.mp4
+                conformance/resources/npot-video.theora.ogv
+                conformance/resources/npot-video.webmvp8.webm
+                conformance/resources/pnglib.js
+                conformance/resources/red-green.mp4
+                conformance/resources/red-green.png
+                conformance/resources/red-green.theora.ogv
+                conformance/resources/red-green.webmvp8.webm
+                conformance/resources/red-indexed.png
+                conformance/resources/samplerUniformShader.frag
+                conformance/resources/small-square-with-cie-rgb-profile.png
+                conformance/resources/small-square-with-colormatch-profile.png
+                conformance/resources/small-square-with-colorspin-profile.jpg
+                conformance/resources/small-square-with-colorspin-profile.png
+                conformance/resources/small-square-with-e-srgb-profile.png
+                conformance/resources/small-square-with-smpte-c-profile.png
+                conformance/resources/small-square-with-srgb-iec61966-2.1-profile.png
+                conformance/resources/structUniformShader.vert
+                conformance/resources/vertexShader.vert
+                conformance/resources/webgl-test-utils.js
+                conformance/resources/webgl-test.js
+                conformance/resources/zero-alpha.png
+                conformance/state/00_test_list.txt
+                conformance/state/gl-enable-enum-test.html
+                conformance/state/gl-enum-tests.html
+                conformance/state/gl-get-calls.html
+                conformance/state/gl-geterror.html
+                conformance/state/gl-getstring.html
+                conformance/state/gl-object-get-calls.html
+                conformance/textures/00_test_list.txt
+                conformance/textures/compressed-tex-image.html
+                conformance/textures/copy-tex-image-and-sub-image-2d.html
+                conformance/textures/gl-pixelstorei.html
+                conformance/textures/gl-teximage.html
+                conformance/textures/origin-clean-conformance.html
+                conformance/textures/tex-image-and-sub-image-2d-with-array-buffer-view.html
+                conformance/textures/tex-image-and-sub-image-2d-with-canvas.html
+                conformance/textures/tex-image-and-sub-image-2d-with-image-data.html
+                conformance/textures/tex-image-and-sub-image-2d-with-image.html
+                conformance/textures/tex-image-and-sub-image-2d-with-video.html
+                conformance/textures/tex-image-and-uniform-binding-bugs.html
+                conformance/textures/tex-image-with-format-and-type.html
+                conformance/textures/tex-image-with-invalid-data.html
+                conformance/textures/tex-input-validation.html
+                conformance/textures/tex-sub-image-2d-bad-args.html
+                conformance/textures/tex-sub-image-2d.html
+                conformance/textures/texparameter-test.html
+                conformance/textures/texture-active-bind-2.html
+                conformance/textures/texture-active-bind.html
+                conformance/textures/texture-clear.html
+                conformance/textures/texture-complete.html
+                conformance/textures/texture-formats-test.html
+                conformance/textures/texture-mips.html
+                conformance/textures/texture-npot-video.html
+                conformance/textures/texture-npot.html
+                conformance/textures/texture-size-cube-maps.html
+                conformance/textures/texture-size.html
+                conformance/textures/texture-transparent-pixels-initialized.html
+                conformance/typedarrays/00_test_list.txt
+                conformance/typedarrays/array-buffer-crash.html
+                conformance/typedarrays/array-buffer-view-crash.html
+                conformance/typedarrays/array-unit-tests.html
+                conformance/uniforms/00_test_list.txt
+                conformance/uniforms/gl-uniform-arrays.html
+                conformance/uniforms/gl-uniform-bool.html
+                conformance/uniforms/gl-uniformmatrix4fv.html
+                conformance/uniforms/gl-unknown-uniform.html
+                conformance/uniforms/null-uniform-location.html
+                conformance/uniforms/uniform-location.html
+                conformance/uniforms/uniform-samplers-test.html
+                resources/cors-util.js
+                resources/desktop-gl-constants.js
+                resources/js-test-pre.js
+                resources/js-test-style.css
+                resources/opengl_logo.jpg
+                resources/thunderbird-logo-64x64.png
+                resources/webgl-logo.png
+                resources/webgl-test-harness.js
+
+[_wrappers/test_always-fail.html]
+[_wrappers/test_conformance__attribs__gl-enable-vertex-attrib.html]
+[_wrappers/test_conformance__attribs__gl-vertex-attrib-zero-issues.html]
+[_wrappers/test_conformance__attribs__gl-vertex-attrib.html]
+[_wrappers/test_conformance__attribs__gl-vertexattribpointer-offsets.html]
+[_wrappers/test_conformance__attribs__gl-vertexattribpointer.html]
+[_wrappers/test_conformance__buffers__buffer-bind-test.html]
+[_wrappers/test_conformance__buffers__buffer-data-array-buffer.html]
+[_wrappers/test_conformance__buffers__index-validation-copies-indices.html]
+[_wrappers/test_conformance__buffers__index-validation-crash-with-buffer-sub-data.html]
+[_wrappers/test_conformance__buffers__index-validation-verifies-too-many-indices.html]
+[_wrappers/test_conformance__buffers__index-validation-with-resized-buffer.html]
+[_wrappers/test_conformance__buffers__index-validation.html]
+[_wrappers/test_conformance__canvas__buffer-offscreen-test.html]
+[_wrappers/test_conformance__canvas__buffer-preserve-test.html]
+[_wrappers/test_conformance__canvas__canvas-test.html]
+[_wrappers/test_conformance__canvas__canvas-zero-size.html]
+[_wrappers/test_conformance__canvas__drawingbuffer-static-canvas-test.html]
+skip-if = os == 'mac'
+[_wrappers/test_conformance__canvas__drawingbuffer-test.html]
+[_wrappers/test_conformance__canvas__viewport-unchanged-upon-resize.html]
+[_wrappers/test_conformance__context__constants.html]
+[_wrappers/test_conformance__context__context-attributes-alpha-depth-stencil-antialias.html]
+skip-if = (os == 'b2g')
+[_wrappers/test_conformance__context__context-lost-restored.html]
+[_wrappers/test_conformance__context__context-lost.html]
+[_wrappers/test_conformance__context__context-type-test.html]
+[_wrappers/test_conformance__context__incorrect-context-object-behaviour.html]
+[_wrappers/test_conformance__context__methods.html]
+[_wrappers/test_conformance__context__premultiplyalpha-test.html]
+[_wrappers/test_conformance__context__resource-sharing-test.html]
+[_wrappers/test_conformance__extensions__oes-standard-derivatives.html]
+[_wrappers/test_conformance__extensions__ext-texture-filter-anisotropic.html]
+[_wrappers/test_conformance__extensions__oes-texture-float.html]
+[_wrappers/test_conformance__extensions__oes-vertex-array-object.html]
+[_wrappers/test_conformance__extensions__webgl-debug-renderer-info.html]
+[_wrappers/test_conformance__extensions__webgl-debug-shaders.html]
+[_wrappers/test_conformance__extensions__webgl-compressed-texture-etc1.html]
+[_wrappers/test_conformance__extensions__webgl-compressed-texture-s3tc.html]
+[_wrappers/test_conformance__extensions__ext-sRGB.html]
+[_wrappers/test_conformance__extensions__ext-shader-texture-lod.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-abs.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-acos.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-asin.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-atan.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-atan-xy.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-ceil.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-clamp-float.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-clamp-gentype.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-cos.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-cross.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-distance.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-dot.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-faceforward.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-floor.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-fract.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-length.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-max-float.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-max-gentype.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-min-float.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-min-gentype.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-mix-float.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-mix-gentype.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-mod-float.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-mod-gentype.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-normalize.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-reflect.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-sign.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-sin.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-step-float.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-step-gentype.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-smoothstep-float.html]
+[_wrappers/test_conformance__glsl__functions__glsl-function-smoothstep-gentype.html]
+[_wrappers/test_conformance__glsl__implicit__add_int_float.vert.html]
+[_wrappers/test_conformance__glsl__implicit__add_int_mat2.vert.html]
+[_wrappers/test_conformance__glsl__implicit__add_int_mat3.vert.html]
+[_wrappers/test_conformance__glsl__implicit__add_int_mat4.vert.html]
+[_wrappers/test_conformance__glsl__implicit__add_int_vec2.vert.html]
+[_wrappers/test_conformance__glsl__implicit__add_int_vec3.vert.html]
+[_wrappers/test_conformance__glsl__implicit__add_int_vec4.vert.html]
+[_wrappers/test_conformance__glsl__implicit__add_ivec2_vec2.vert.html]
+[_wrappers/test_conformance__glsl__implicit__add_ivec3_vec3.vert.html]
+[_wrappers/test_conformance__glsl__implicit__add_ivec4_vec4.vert.html]
+[_wrappers/test_conformance__glsl__implicit__assign_int_to_float.vert.html]
+[_wrappers/test_conformance__glsl__implicit__assign_ivec2_to_vec2.vert.html]
+[_wrappers/test_conformance__glsl__implicit__assign_ivec3_to_vec3.vert.html]
+[_wrappers/test_conformance__glsl__implicit__assign_ivec4_to_vec4.vert.html]
+[_wrappers/test_conformance__glsl__implicit__construct_struct.vert.html]
+[_wrappers/test_conformance__glsl__implicit__divide_int_float.vert.html]
+[_wrappers/test_conformance__glsl__implicit__divide_int_mat2.vert.html]
+[_wrappers/test_conformance__glsl__implicit__divide_int_mat3.vert.html]
+[_wrappers/test_conformance__glsl__implicit__divide_int_mat4.vert.html]
+[_wrappers/test_conformance__glsl__implicit__divide_int_vec2.vert.html]
+[_wrappers/test_conformance__glsl__implicit__divide_int_vec3.vert.html]
+[_wrappers/test_conformance__glsl__implicit__divide_int_vec4.vert.html]
+[_wrappers/test_conformance__glsl__implicit__divide_ivec2_vec2.vert.html]
+[_wrappers/test_conformance__glsl__implicit__divide_ivec3_vec3.vert.html]
+[_wrappers/test_conformance__glsl__implicit__divide_ivec4_vec4.vert.html]
+[_wrappers/test_conformance__glsl__implicit__equal_int_float.vert.html]
+[_wrappers/test_conformance__glsl__implicit__equal_ivec2_vec2.vert.html]
+[_wrappers/test_conformance__glsl__implicit__equal_ivec3_vec3.vert.html]
+[_wrappers/test_conformance__glsl__implicit__equal_ivec4_vec4.vert.html]
+[_wrappers/test_conformance__glsl__implicit__function_int_float.vert.html]
+[_wrappers/test_conformance__glsl__implicit__function_ivec2_vec2.vert.html]
+[_wrappers/test_conformance__glsl__implicit__function_ivec3_vec3.vert.html]
+[_wrappers/test_conformance__glsl__implicit__function_ivec4_vec4.vert.html]
+[_wrappers/test_conformance__glsl__implicit__greater_than.vert.html]
+[_wrappers/test_conformance__glsl__implicit__greater_than_equal.vert.html]
+[_wrappers/test_conformance__glsl__implicit__less_than.vert.html]
+[_wrappers/test_conformance__glsl__implicit__less_than_equal.vert.html]
+[_wrappers/test_conformance__glsl__implicit__multiply_int_float.vert.html]
+[_wrappers/test_conformance__glsl__implicit__multiply_int_mat2.vert.html]
+[_wrappers/test_conformance__glsl__implicit__multiply_int_mat3.vert.html]
+[_wrappers/test_conformance__glsl__implicit__multiply_int_mat4.vert.html]
+[_wrappers/test_conformance__glsl__implicit__multiply_int_vec2.vert.html]
+[_wrappers/test_conformance__glsl__implicit__multiply_int_vec3.vert.html]
+[_wrappers/test_conformance__glsl__implicit__multiply_int_vec4.vert.html]
+[_wrappers/test_conformance__glsl__implicit__multiply_ivec2_vec2.vert.html]
+[_wrappers/test_conformance__glsl__implicit__multiply_ivec3_vec3.vert.html]
+[_wrappers/test_conformance__glsl__implicit__multiply_ivec4_vec4.vert.html]
+[_wrappers/test_conformance__glsl__implicit__not_equal_int_float.vert.html]
+[_wrappers/test_conformance__glsl__implicit__not_equal_ivec2_vec2.vert.html]
+[_wrappers/test_conformance__glsl__implicit__not_equal_ivec3_vec3.vert.html]
+[_wrappers/test_conformance__glsl__implicit__not_equal_ivec4_vec4.vert.html]
+[_wrappers/test_conformance__glsl__implicit__subtract_int_float.vert.html]
+[_wrappers/test_conformance__glsl__implicit__subtract_int_mat2.vert.html]
+[_wrappers/test_conformance__glsl__implicit__subtract_int_mat3.vert.html]
+[_wrappers/test_conformance__glsl__implicit__subtract_int_mat4.vert.html]
+[_wrappers/test_conformance__glsl__implicit__subtract_int_vec2.vert.html]
+[_wrappers/test_conformance__glsl__implicit__subtract_int_vec3.vert.html]
+[_wrappers/test_conformance__glsl__implicit__subtract_int_vec4.vert.html]
+[_wrappers/test_conformance__glsl__implicit__subtract_ivec2_vec2.vert.html]
+[_wrappers/test_conformance__glsl__implicit__subtract_ivec3_vec3.vert.html]
+[_wrappers/test_conformance__glsl__implicit__subtract_ivec4_vec4.vert.html]
+[_wrappers/test_conformance__glsl__implicit__ternary_int_float.vert.html]
+[_wrappers/test_conformance__glsl__implicit__ternary_ivec2_vec2.vert.html]
+[_wrappers/test_conformance__glsl__implicit__ternary_ivec3_vec3.vert.html]
+[_wrappers/test_conformance__glsl__implicit__ternary_ivec4_vec4.vert.html]
+[_wrappers/test_conformance__glsl__misc__attrib-location-length-limits.html]
+[_wrappers/test_conformance__glsl__misc__embedded-struct-definitions-forbidden.html]
+[_wrappers/test_conformance__glsl__misc__glsl-function-nodes.html]
+[_wrappers/test_conformance__glsl__misc__glsl-long-variable-names.html]
+[_wrappers/test_conformance__glsl__misc__non-ascii-comments.vert.html]
+[_wrappers/test_conformance__glsl__misc__non-ascii.vert.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-256-character-identifier.frag.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-257-character-identifier.frag.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-_webgl-identifier.vert.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-arbitrary-indexing.frag.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-arbitrary-indexing.vert.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-attrib-array.vert.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-attrib-struct.vert.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-clipvertex.vert.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-default-precision.frag.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-default-precision.vert.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-define-line-continuation.frag.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-dfdx-no-ext.frag.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-dfdx.frag.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-error-directive.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-explicit-int-cast.vert.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-float-return-value.frag.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-frag-depth.frag.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-function-recursion.frag.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-glcolor.vert.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-gles-1.frag.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-gles-symbol.frag.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-glprojectionmatrix.vert.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-implicit-vec3-to-vec4-cast.vert.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-include.vert.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-int-return-value.frag.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-invalid-identifier.frag.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-ivec2-return-value.frag.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-ivec3-return-value.frag.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-ivec4-return-value.frag.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-limited-indexing.frag.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-long-line.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-non-ascii-error.frag.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-precision.frag.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-quoted-error.frag.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-undefined-preprocessor-symbol.frag.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-uniform-in-loop-condition.vert.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-vec2-return-value.frag.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-vec3-return-value.frag.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-vec4-return-value.frag.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-version-100.frag.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-version-100.vert.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-version-120.vert.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-version-130.vert.html]
+[_wrappers/test_conformance__glsl__misc__shader-with-webgl-identifier.vert.html]
+[_wrappers/test_conformance__glsl__misc__shader-without-precision.frag.html]
+[_wrappers/test_conformance__glsl__misc__shared.html]
+[_wrappers/test_conformance__glsl__misc__struct-nesting-exceeds-maximum.html]
+[_wrappers/test_conformance__glsl__misc__struct-nesting-under-maximum.html]
+[_wrappers/test_conformance__glsl__misc__uniform-location-length-limits.html]
+[_wrappers/test_conformance__glsl__reserved___webgl_field.vert.html]
+[_wrappers/test_conformance__glsl__reserved___webgl_function.vert.html]
+[_wrappers/test_conformance__glsl__reserved___webgl_struct.vert.html]
+[_wrappers/test_conformance__glsl__reserved___webgl_variable.vert.html]
+[_wrappers/test_conformance__glsl__reserved__webgl_field.vert.html]
+[_wrappers/test_conformance__glsl__reserved__webgl_function.vert.html]
+[_wrappers/test_conformance__glsl__reserved__webgl_struct.vert.html]
+[_wrappers/test_conformance__glsl__reserved__webgl_variable.vert.html]
+[_wrappers/test_conformance__glsl__variables__gl-fragcoord.html]
+[_wrappers/test_conformance__glsl__variables__gl-frontfacing.html]
+[_wrappers/test_conformance__glsl__variables__gl-pointcoord.html]
+[_wrappers/test_conformance__limits__gl-min-attribs.html]
+[_wrappers/test_conformance__limits__gl-max-texture-dimensions.html]
+[_wrappers/test_conformance__limits__gl-min-textures.html]
+[_wrappers/test_conformance__limits__gl-min-uniforms.html]
+[_wrappers/test_conformance__misc__bad-arguments-test.html]
+[_wrappers/test_conformance__misc__error-reporting.html]
+[_wrappers/test_conformance__misc__instanceof-test.html]
+[_wrappers/test_conformance__misc__invalid-passed-params.html]
+skip-if = (os == 'android') || (os == 'b2g') || (os == 'linux')
+[_wrappers/test_conformance__misc__is-object.html]
+[_wrappers/test_conformance__misc__null-object-behaviour.html]
+[_wrappers/test_conformance__misc__functions-returning-strings.html]
+[_wrappers/test_conformance__misc__object-deletion-behaviour.html]
+[_wrappers/test_conformance__misc__shader-precision-format.html]
+[_wrappers/test_conformance__misc__type-conversion-test.html]
+skip-if = (os == 'android') || (os == 'b2g') || (os == 'linux')
+[_wrappers/test_conformance__misc__uninitialized-test.html]
+skip-if = os == 'android'
+[_wrappers/test_conformance__misc__webgl-specific.html]
+[_wrappers/test_conformance__programs__get-active-test.html]
+[_wrappers/test_conformance__programs__gl-bind-attrib-location-test.html]
+[_wrappers/test_conformance__programs__gl-get-active-attribute.html]
+[_wrappers/test_conformance__programs__gl-get-active-uniform.html]
+[_wrappers/test_conformance__programs__gl-getshadersource.html]
+[_wrappers/test_conformance__programs__gl-shader-test.html]
+[_wrappers/test_conformance__programs__invalid-UTF-16.html]
+[_wrappers/test_conformance__programs__program-test.html]
+[_wrappers/test_conformance__reading__read-pixels-pack-alignment.html]
+[_wrappers/test_conformance__reading__read-pixels-test.html]
+skip-if = (os == 'android') || (os == 'b2g') || (os == 'linux')
+[_wrappers/test_conformance__renderbuffers__framebuffer-object-attachment.html]
+skip-if = os == 'android'
+[_wrappers/test_conformance__renderbuffers__framebuffer-test.html]
+[_wrappers/test_conformance__renderbuffers__renderbuffer-initialization.html]
+[_wrappers/test_conformance__rendering__draw-arrays-out-of-bounds.html]
+[_wrappers/test_conformance__rendering__draw-elements-out-of-bounds.html]
+[_wrappers/test_conformance__rendering__gl-clear.html]
+[_wrappers/test_conformance__rendering__gl-drawelements.html]
+[_wrappers/test_conformance__rendering__gl-scissor-test.html]
+[_wrappers/test_conformance__rendering__more-than-65536-indices.html]
+[_wrappers/test_conformance__rendering__point-size.html]
+[_wrappers/test_conformance__rendering__triangle.html]
+[_wrappers/test_conformance__rendering__line-loop-tri-fan.html]
+[_wrappers/test_conformance__state__gl-enable-enum-test.html]
+[_wrappers/test_conformance__state__gl-enum-tests.html]
+[_wrappers/test_conformance__state__gl-get-calls.html]
+[_wrappers/test_conformance__state__gl-geterror.html]
+[_wrappers/test_conformance__state__gl-getstring.html]
+[_wrappers/test_conformance__state__gl-object-get-calls.html]
+[_wrappers/test_conformance__textures__compressed-tex-image.html]
+[_wrappers/test_conformance__textures__copy-tex-image-and-sub-image-2d.html]
+[_wrappers/test_conformance__textures__gl-pixelstorei.html]
+[_wrappers/test_conformance__textures__gl-teximage.html]
+skip-if = (os == 'android') || (os == 'b2g') || (os == 'linux')
+[_wrappers/test_conformance__textures__origin-clean-conformance.html]
+[_wrappers/test_conformance__textures__tex-image-and-sub-image-2d-with-array-buffer-view.html]
+[_wrappers/test_conformance__textures__tex-image-and-sub-image-2d-with-canvas.html]
+[_wrappers/test_conformance__textures__tex-image-and-sub-image-2d-with-image-data.html]
+[_wrappers/test_conformance__textures__tex-image-and-sub-image-2d-with-image.html]
+[_wrappers/test_conformance__textures__tex-image-and-sub-image-2d-with-video.html]
+skip-if = (os == 'android') || (os == 'b2g') || (os == 'linux') || (os == 'win')
+[_wrappers/test_conformance__textures__tex-image-and-uniform-binding-bugs.html]
+skip-if = (os == 'b2g')
+[_wrappers/test_conformance__textures__tex-image-with-format-and-type.html]
+skip-if = (os == 'android') || (os == 'b2g') || (os == 'linux')
+[_wrappers/test_conformance__textures__tex-image-with-invalid-data.html]
+[_wrappers/test_conformance__textures__tex-input-validation.html]
+skip-if = (os == 'android') || (os == 'b2g') || (os == 'linux')
+[_wrappers/test_conformance__textures__tex-sub-image-2d-bad-args.html]
+[_wrappers/test_conformance__textures__tex-sub-image-2d.html]
+[_wrappers/test_conformance__textures__texparameter-test.html]
+[_wrappers/test_conformance__textures__texture-active-bind-2.html]
+[_wrappers/test_conformance__textures__texture-active-bind.html]
+[_wrappers/test_conformance__textures__texture-complete.html]
+[_wrappers/test_conformance__textures__texture-formats-test.html]
+[_wrappers/test_conformance__textures__texture-mips.html]
+[_wrappers/test_conformance__textures__texture-npot-video.html]
+skip-if = os == 'win'
+[_wrappers/test_conformance__textures__texture-npot.html]
+[_wrappers/test_conformance__textures__texture-size.html]
+skip-if = os == 'android'
+[_wrappers/test_conformance__textures__texture-size-cube-maps.html]
+skip-if = os == 'android'
+[_wrappers/test_conformance__textures__texture-transparent-pixels-initialized.html]
+[_wrappers/test_conformance__typedarrays__array-buffer-crash.html]
+[_wrappers/test_conformance__typedarrays__array-buffer-view-crash.html]
+[_wrappers/test_conformance__typedarrays__array-unit-tests.html]
+[_wrappers/test_conformance__uniforms__gl-uniform-arrays.html]
+[_wrappers/test_conformance__uniforms__gl-uniform-bool.html]
+[_wrappers/test_conformance__uniforms__gl-uniformmatrix4fv.html]
+[_wrappers/test_conformance__uniforms__gl-unknown-uniform.html]
+[_wrappers/test_conformance__uniforms__null-uniform-location.html]
+[_wrappers/test_conformance__uniforms__uniform-location.html]
+[_wrappers/test_conformance__uniforms__uniform-samplers-test.html]
+[_wrappers/test_conformance__more__conformance__constants.html]
+[_wrappers/test_conformance__more__conformance__getContext.html]
+[_wrappers/test_conformance__more__conformance__methods.html]
+[_wrappers/test_conformance__more__conformance__quickCheckAPI-A.html]
+[_wrappers/test_conformance__more__conformance__quickCheckAPI-B1.html]
+[_wrappers/test_conformance__more__conformance__quickCheckAPI-B2.html]
+[_wrappers/test_conformance__more__conformance__quickCheckAPI-B3.html]
+[_wrappers/test_conformance__more__conformance__quickCheckAPI-B4.html]
+[_wrappers/test_conformance__more__conformance__quickCheckAPI-C.html]
+[_wrappers/test_conformance__more__conformance__quickCheckAPI-D_G.html]
+[_wrappers/test_conformance__more__conformance__quickCheckAPI-G_I.html]
+[_wrappers/test_conformance__more__conformance__quickCheckAPI-L_S.html]
+[_wrappers/test_conformance__more__conformance__quickCheckAPI-S_V.html]
+[_wrappers/test_conformance__more__conformance__webGLArrays.html]
+[_wrappers/test_conformance__more__functions__bindBuffer.html]
+[_wrappers/test_conformance__more__functions__bindBufferBadArgs.html]
+[_wrappers/test_conformance__more__functions__bindFramebufferLeaveNonZero.html]
+[_wrappers/test_conformance__more__functions__bufferData.html]
+[_wrappers/test_conformance__more__functions__bufferDataBadArgs.html]
+[_wrappers/test_conformance__more__functions__bufferSubData.html]
+[_wrappers/test_conformance__more__functions__bufferSubDataBadArgs.html]
+[_wrappers/test_conformance__more__functions__copyTexImage2D.html]
+[_wrappers/test_conformance__more__functions__copyTexImage2DBadArgs.html]
+[_wrappers/test_conformance__more__functions__copyTexSubImage2D.html]
+[_wrappers/test_conformance__more__functions__copyTexSubImage2DBadArgs.html]
+[_wrappers/test_conformance__more__functions__deleteBufferBadArgs.html]
+[_wrappers/test_conformance__more__functions__drawArrays.html]
+[_wrappers/test_conformance__more__functions__drawArraysOutOfBounds.html]
+[_wrappers/test_conformance__more__functions__drawElements.html]
+[_wrappers/test_conformance__more__functions__drawElementsBadArgs.html]
+[_wrappers/test_conformance__more__functions__isTests.html]
+[_wrappers/test_conformance__more__functions__readPixels.html]
+[_wrappers/test_conformance__more__functions__readPixelsBadArgs.html]
+[_wrappers/test_conformance__more__functions__texImage2D.html]
+[_wrappers/test_conformance__more__functions__texImage2DBadArgs.html]
+[_wrappers/test_conformance__more__functions__texImage2DHTML.html]
+[_wrappers/test_conformance__more__functions__texImage2DHTMLBadArgs.html]
+[_wrappers/test_conformance__more__functions__texSubImage2D.html]
+[_wrappers/test_conformance__more__functions__texSubImage2DBadArgs.html]
+[_wrappers/test_conformance__more__functions__texSubImage2DHTML.html]
+[_wrappers/test_conformance__more__functions__texSubImage2DHTMLBadArgs.html]
+[_wrappers/test_conformance__more__functions__uniformf.html]
+[_wrappers/test_conformance__more__functions__uniformfBadArgs.html]
+[_wrappers/test_conformance__more__functions__uniformfArrayLen1.html]
+[_wrappers/test_conformance__more__functions__uniformi.html]
+[_wrappers/test_conformance__more__functions__uniformiBadArgs.html]
+[_wrappers/test_conformance__more__functions__uniformMatrix.html]
+[_wrappers/test_conformance__more__functions__uniformMatrixBadArgs.html]
+[_wrappers/test_conformance__more__functions__vertexAttrib.html]
+[_wrappers/test_conformance__more__functions__vertexAttribBadArgs.html]
+[_wrappers/test_conformance__more__functions__vertexAttribPointer.html]
+[_wrappers/test_conformance__more__functions__vertexAttribPointerBadArgs.html]
+[_wrappers/test_conformance__more__glsl__arrayOutOfBounds.html]
+[_wrappers/test_conformance__more__glsl__uniformOutOfBounds.html]
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_always-fail.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?always-fail.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__attribs__gl-enable-vertex-attrib.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/attribs/gl-enable-vertex-attrib.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__attribs__gl-vertex-attrib-zero-issues.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/attribs/gl-vertex-attrib-zero-issues.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__attribs__gl-vertex-attrib.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/attribs/gl-vertex-attrib.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__attribs__gl-vertexattribpointer-offsets.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/attribs/gl-vertexattribpointer-offsets.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__attribs__gl-vertexattribpointer.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/attribs/gl-vertexattribpointer.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__buffers__buffer-bind-test.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/buffers/buffer-bind-test.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__buffers__buffer-data-array-buffer.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/buffers/buffer-data-array-buffer.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__buffers__index-validation-copies-indices.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/buffers/index-validation-copies-indices.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__buffers__index-validation-crash-with-buffer-sub-data.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/buffers/index-validation-crash-with-buffer-sub-data.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__buffers__index-validation-verifies-too-many-indices.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/buffers/index-validation-verifies-too-many-indices.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__buffers__index-validation-with-resized-buffer.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/buffers/index-validation-with-resized-buffer.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__buffers__index-validation.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/buffers/index-validation.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__canvas__buffer-offscreen-test.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/canvas/buffer-offscreen-test.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__canvas__buffer-preserve-test.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/canvas/buffer-preserve-test.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__canvas__canvas-test.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/canvas/canvas-test.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__canvas__canvas-zero-size.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/canvas/canvas-zero-size.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__canvas__drawingbuffer-static-canvas-test.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/canvas/drawingbuffer-static-canvas-test.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__canvas__drawingbuffer-test.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/canvas/drawingbuffer-test.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__canvas__viewport-unchanged-upon-resize.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/canvas/viewport-unchanged-upon-resize.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__context__constants.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/context/constants.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__context__context-attributes-alpha-depth-stencil-antialias.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/context/context-attributes-alpha-depth-stencil-antialias.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__context__context-lost-restored.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/context/context-lost-restored.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__context__context-lost.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/context/context-lost.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__context__context-type-test.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/context/context-type-test.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__context__incorrect-context-object-behaviour.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/context/incorrect-context-object-behaviour.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__context__methods.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/context/methods.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__context__premultiplyalpha-test.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/context/premultiplyalpha-test.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__context__resource-sharing-test.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/context/resource-sharing-test.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__extensions__ext-sRGB.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/extensions/ext-sRGB.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__extensions__ext-shader-texture-lod.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/extensions/ext-shader-texture-lod.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__extensions__ext-texture-filter-anisotropic.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/extensions/ext-texture-filter-anisotropic.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__extensions__oes-standard-derivatives.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/extensions/oes-standard-derivatives.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__extensions__oes-texture-float.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/extensions/oes-texture-float.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__extensions__oes-vertex-array-object.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/extensions/oes-vertex-array-object.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__extensions__webgl-compressed-texture-etc1.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/extensions/webgl-compressed-texture-etc1.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__extensions__webgl-compressed-texture-s3tc.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/extensions/webgl-compressed-texture-s3tc.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__extensions__webgl-debug-renderer-info.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/extensions/webgl-debug-renderer-info.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__extensions__webgl-debug-shaders.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/extensions/webgl-debug-shaders.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-abs.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-abs.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-acos.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-acos.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-asin.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-asin.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-atan-xy.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-atan-xy.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-atan.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-atan.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-ceil.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-ceil.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-clamp-float.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-clamp-float.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-clamp-gentype.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-clamp-gentype.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-cos.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-cos.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-cross.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-cross.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-distance.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-distance.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-dot.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-dot.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-faceforward.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-faceforward.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-floor.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-floor.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-fract.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-fract.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-length.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-length.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-max-float.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-max-float.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-max-gentype.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-max-gentype.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-min-float.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-min-float.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-min-gentype.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-min-gentype.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-mix-float.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-mix-float.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-mix-gentype.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-mix-gentype.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-mod-float.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-mod-float.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-mod-gentype.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-mod-gentype.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-normalize.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-normalize.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-reflect.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-reflect.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-sign.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-sign.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-sin.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-sin.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-smoothstep-float.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-smoothstep-float.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-smoothstep-gentype.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-smoothstep-gentype.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-step-float.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-step-float.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function-step-gentype.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function-step-gentype.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__functions__glsl-function.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/functions/glsl-function.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__add_int_float.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/add_int_float.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__add_int_mat2.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/add_int_mat2.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__add_int_mat3.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/add_int_mat3.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__add_int_mat4.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/add_int_mat4.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__add_int_vec2.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/add_int_vec2.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__add_int_vec3.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/add_int_vec3.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__add_int_vec4.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/add_int_vec4.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__add_ivec2_vec2.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/add_ivec2_vec2.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__add_ivec3_vec3.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/add_ivec3_vec3.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__add_ivec4_vec4.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/add_ivec4_vec4.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__assign_int_to_float.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/assign_int_to_float.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__assign_ivec2_to_vec2.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/assign_ivec2_to_vec2.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__assign_ivec3_to_vec3.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/assign_ivec3_to_vec3.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__assign_ivec4_to_vec4.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/assign_ivec4_to_vec4.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__construct_struct.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/construct_struct.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__divide_int_float.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/divide_int_float.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__divide_int_mat2.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/divide_int_mat2.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__divide_int_mat3.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/divide_int_mat3.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__divide_int_mat4.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/divide_int_mat4.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__divide_int_vec2.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/divide_int_vec2.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__divide_int_vec3.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/divide_int_vec3.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__divide_int_vec4.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/divide_int_vec4.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__divide_ivec2_vec2.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/divide_ivec2_vec2.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__divide_ivec3_vec3.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/divide_ivec3_vec3.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__divide_ivec4_vec4.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/divide_ivec4_vec4.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__equal_int_float.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/equal_int_float.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__equal_ivec2_vec2.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/equal_ivec2_vec2.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__equal_ivec3_vec3.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/equal_ivec3_vec3.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__equal_ivec4_vec4.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/equal_ivec4_vec4.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__function_int_float.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/function_int_float.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__function_ivec2_vec2.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/function_ivec2_vec2.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__function_ivec3_vec3.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/function_ivec3_vec3.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__function_ivec4_vec4.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/function_ivec4_vec4.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__greater_than.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/greater_than.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__greater_than_equal.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/greater_than_equal.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__less_than.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/less_than.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__less_than_equal.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/less_than_equal.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__multiply_int_float.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/multiply_int_float.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__multiply_int_mat2.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/multiply_int_mat2.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__multiply_int_mat3.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/multiply_int_mat3.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__multiply_int_mat4.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/multiply_int_mat4.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__multiply_int_vec2.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/multiply_int_vec2.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__multiply_int_vec3.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/multiply_int_vec3.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__multiply_int_vec4.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/multiply_int_vec4.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__multiply_ivec2_vec2.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/multiply_ivec2_vec2.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__multiply_ivec3_vec3.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/multiply_ivec3_vec3.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__multiply_ivec4_vec4.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/multiply_ivec4_vec4.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__not_equal_int_float.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/not_equal_int_float.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__not_equal_ivec2_vec2.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/not_equal_ivec2_vec2.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__not_equal_ivec3_vec3.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/not_equal_ivec3_vec3.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__not_equal_ivec4_vec4.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/not_equal_ivec4_vec4.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__subtract_int_float.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/subtract_int_float.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__subtract_int_mat2.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/subtract_int_mat2.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__subtract_int_mat3.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/subtract_int_mat3.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__subtract_int_mat4.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/subtract_int_mat4.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__subtract_int_vec2.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/subtract_int_vec2.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__subtract_int_vec3.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/subtract_int_vec3.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__subtract_int_vec4.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/subtract_int_vec4.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__subtract_ivec2_vec2.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/subtract_ivec2_vec2.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__subtract_ivec3_vec3.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/subtract_ivec3_vec3.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__subtract_ivec4_vec4.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/subtract_ivec4_vec4.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__ternary_int_float.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/ternary_int_float.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__ternary_ivec2_vec2.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/ternary_ivec2_vec2.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__ternary_ivec3_vec3.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/ternary_ivec3_vec3.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__implicit__ternary_ivec4_vec4.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/implicit/ternary_ivec4_vec4.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__attrib-location-length-limits.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/attrib-location-length-limits.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__embedded-struct-definitions-forbidden.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/embedded-struct-definitions-forbidden.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__glsl-function-nodes.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/glsl-function-nodes.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__glsl-long-variable-names.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/glsl-long-variable-names.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__non-ascii-comments.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/non-ascii-comments.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__non-ascii.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/non-ascii.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-256-character-identifier.frag.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-256-character-identifier.frag.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-257-character-identifier.frag.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-257-character-identifier.frag.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-_webgl-identifier.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-_webgl-identifier.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-arbitrary-indexing.frag.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-arbitrary-indexing.frag.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-arbitrary-indexing.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-arbitrary-indexing.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-attrib-array.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-attrib-array.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-attrib-struct.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-attrib-struct.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-clipvertex.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-clipvertex.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-default-precision.frag.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-default-precision.frag.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-default-precision.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-default-precision.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-define-line-continuation.frag.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-define-line-continuation.frag.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-dfdx-no-ext.frag.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-dfdx-no-ext.frag.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-dfdx.frag.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-dfdx.frag.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-error-directive.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-error-directive.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-explicit-int-cast.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-explicit-int-cast.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-float-return-value.frag.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-float-return-value.frag.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-frag-depth.frag.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-frag-depth.frag.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-function-recursion.frag.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-function-recursion.frag.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-glcolor.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-glcolor.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-gles-1.frag.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-gles-1.frag.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-gles-symbol.frag.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-gles-symbol.frag.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-glprojectionmatrix.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-glprojectionmatrix.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-implicit-vec3-to-vec4-cast.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-implicit-vec3-to-vec4-cast.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-include.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-include.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-int-return-value.frag.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-int-return-value.frag.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-invalid-identifier.frag.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-invalid-identifier.frag.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-ivec2-return-value.frag.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-ivec2-return-value.frag.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-ivec3-return-value.frag.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-ivec3-return-value.frag.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-ivec4-return-value.frag.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-ivec4-return-value.frag.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-limited-indexing.frag.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-limited-indexing.frag.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-long-line.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-long-line.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-non-ascii-error.frag.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-non-ascii-error.frag.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-precision.frag.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-precision.frag.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-quoted-error.frag.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-quoted-error.frag.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-undefined-preprocessor-symbol.frag.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-undefined-preprocessor-symbol.frag.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-uniform-in-loop-condition.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-uniform-in-loop-condition.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-vec2-return-value.frag.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-vec2-return-value.frag.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-vec3-return-value.frag.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-vec3-return-value.frag.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-vec4-return-value.frag.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-vec4-return-value.frag.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-version-100.frag.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-version-100.frag.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-version-100.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-version-100.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-version-120.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-version-120.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-version-130.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-version-130.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-with-webgl-identifier.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-with-webgl-identifier.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shader-without-precision.frag.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shader-without-precision.frag.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__shared.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/shared.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__struct-nesting-exceeds-maximum.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/struct-nesting-exceeds-maximum.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__struct-nesting-under-maximum.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/struct-nesting-under-maximum.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__misc__uniform-location-length-limits.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/misc/uniform-location-length-limits.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__reserved___webgl_field.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/reserved/_webgl_field.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__reserved___webgl_function.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/reserved/_webgl_function.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__reserved___webgl_struct.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/reserved/_webgl_struct.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__reserved___webgl_variable.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/reserved/_webgl_variable.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__reserved__webgl_field.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/reserved/webgl_field.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__reserved__webgl_function.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/reserved/webgl_function.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__reserved__webgl_struct.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/reserved/webgl_struct.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__reserved__webgl_variable.vert.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/reserved/webgl_variable.vert.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__variables__gl-fragcoord.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/variables/gl-fragcoord.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__variables__gl-frontfacing.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/variables/gl-frontfacing.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__glsl__variables__gl-pointcoord.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/glsl/variables/gl-pointcoord.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__limits__gl-max-texture-dimensions.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/limits/gl-max-texture-dimensions.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__limits__gl-min-attribs.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/limits/gl-min-attribs.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__limits__gl-min-textures.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/limits/gl-min-textures.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__limits__gl-min-uniforms.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/limits/gl-min-uniforms.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__misc__bad-arguments-test.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/misc/bad-arguments-test.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__misc__error-reporting.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/misc/error-reporting.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__misc__functions-returning-strings.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/misc/functions-returning-strings.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__misc__instanceof-test.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/misc/instanceof-test.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__misc__invalid-passed-params.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/misc/invalid-passed-params.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__misc__is-object.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/misc/is-object.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__misc__null-object-behaviour.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/misc/null-object-behaviour.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__misc__object-deletion-behaviour.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/misc/object-deletion-behaviour.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__misc__shader-precision-format.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/misc/shader-precision-format.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__misc__type-conversion-test.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/misc/type-conversion-test.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__misc__uninitialized-test.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/misc/uninitialized-test.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__misc__webgl-specific.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/misc/webgl-specific.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__conformance__constants.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/conformance/constants.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__conformance__getContext.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/conformance/getContext.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__conformance__methods.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/conformance/methods.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__conformance__quickCheckAPI-A.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/conformance/quickCheckAPI-A.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__conformance__quickCheckAPI-B1.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/conformance/quickCheckAPI-B1.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__conformance__quickCheckAPI-B2.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/conformance/quickCheckAPI-B2.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__conformance__quickCheckAPI-B3.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/conformance/quickCheckAPI-B3.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__conformance__quickCheckAPI-B4.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/conformance/quickCheckAPI-B4.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__conformance__quickCheckAPI-C.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/conformance/quickCheckAPI-C.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__conformance__quickCheckAPI-D_G.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/conformance/quickCheckAPI-D_G.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__conformance__quickCheckAPI-G_I.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/conformance/quickCheckAPI-G_I.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__conformance__quickCheckAPI-L_S.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/conformance/quickCheckAPI-L_S.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__conformance__quickCheckAPI-S_V.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/conformance/quickCheckAPI-S_V.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__conformance__webGLArrays.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/conformance/webGLArrays.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__bindBuffer.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/bindBuffer.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__bindBufferBadArgs.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/bindBufferBadArgs.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__bindFramebufferLeaveNonZero.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/bindFramebufferLeaveNonZero.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__bufferData.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/bufferData.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__bufferDataBadArgs.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/bufferDataBadArgs.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__bufferSubData.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/bufferSubData.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__bufferSubDataBadArgs.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/bufferSubDataBadArgs.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__copyTexImage2D.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/copyTexImage2D.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__copyTexImage2DBadArgs.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/copyTexImage2DBadArgs.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__copyTexSubImage2D.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/copyTexSubImage2D.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__copyTexSubImage2DBadArgs.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/copyTexSubImage2DBadArgs.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__deleteBufferBadArgs.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/deleteBufferBadArgs.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__drawArrays.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/drawArrays.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__drawArraysOutOfBounds.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/drawArraysOutOfBounds.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__drawElements.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/drawElements.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__drawElementsBadArgs.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/drawElementsBadArgs.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__isTests.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/isTests.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__readPixels.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/readPixels.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__readPixelsBadArgs.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/readPixelsBadArgs.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__texImage2D.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/texImage2D.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__texImage2DBadArgs.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/texImage2DBadArgs.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__texImage2DHTML.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/texImage2DHTML.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__texImage2DHTMLBadArgs.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/texImage2DHTMLBadArgs.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__texSubImage2D.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/texSubImage2D.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__texSubImage2DBadArgs.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/texSubImage2DBadArgs.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__texSubImage2DHTML.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/texSubImage2DHTML.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__texSubImage2DHTMLBadArgs.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/texSubImage2DHTMLBadArgs.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__uniformMatrix.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/uniformMatrix.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__uniformMatrixBadArgs.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/uniformMatrixBadArgs.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__uniformf.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/uniformf.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__uniformfArrayLen1.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/uniformfArrayLen1.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__uniformfBadArgs.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/uniformfBadArgs.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__uniformi.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/uniformi.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__uniformiBadArgs.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/uniformiBadArgs.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__vertexAttrib.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/vertexAttrib.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__vertexAttribBadArgs.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/vertexAttribBadArgs.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__vertexAttribPointer.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/vertexAttribPointer.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__functions__vertexAttribPointerBadArgs.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/functions/vertexAttribPointerBadArgs.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__glsl__arrayOutOfBounds.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/glsl/arrayOutOfBounds.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__more__glsl__uniformOutOfBounds.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/more/glsl/uniformOutOfBounds.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__programs__get-active-test.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/programs/get-active-test.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__programs__gl-bind-attrib-location-test.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/programs/gl-bind-attrib-location-test.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__programs__gl-get-active-attribute.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/programs/gl-get-active-attribute.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__programs__gl-get-active-uniform.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/programs/gl-get-active-uniform.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__programs__gl-getshadersource.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/programs/gl-getshadersource.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__programs__gl-shader-test.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/programs/gl-shader-test.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__programs__invalid-UTF-16.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/programs/invalid-UTF-16.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__programs__program-test.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/programs/program-test.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__reading__read-pixels-pack-alignment.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/reading/read-pixels-pack-alignment.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__reading__read-pixels-test.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/reading/read-pixels-test.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__renderbuffers__framebuffer-object-attachment.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/renderbuffers/framebuffer-object-attachment.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__renderbuffers__framebuffer-test.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/renderbuffers/framebuffer-test.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__renderbuffers__renderbuffer-initialization.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/renderbuffers/renderbuffer-initialization.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__rendering__draw-arrays-out-of-bounds.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/rendering/draw-arrays-out-of-bounds.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__rendering__draw-elements-out-of-bounds.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/rendering/draw-elements-out-of-bounds.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__rendering__gl-clear.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/rendering/gl-clear.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__rendering__gl-drawelements.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/rendering/gl-drawelements.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__rendering__gl-scissor-test.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/rendering/gl-scissor-test.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__rendering__line-loop-tri-fan.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/rendering/line-loop-tri-fan.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__rendering__more-than-65536-indices.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/rendering/more-than-65536-indices.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__rendering__point-size.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/rendering/point-size.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__rendering__triangle.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/rendering/triangle.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__state__gl-enable-enum-test.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/state/gl-enable-enum-test.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__state__gl-enum-tests.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/state/gl-enum-tests.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__state__gl-get-calls.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/state/gl-get-calls.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__state__gl-geterror.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/state/gl-geterror.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__state__gl-getstring.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/state/gl-getstring.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__state__gl-object-get-calls.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/state/gl-object-get-calls.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__textures__compressed-tex-image.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/textures/compressed-tex-image.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__textures__copy-tex-image-and-sub-image-2d.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/textures/copy-tex-image-and-sub-image-2d.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__textures__gl-pixelstorei.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/textures/gl-pixelstorei.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__textures__gl-teximage.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/textures/gl-teximage.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__textures__origin-clean-conformance.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/textures/origin-clean-conformance.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__textures__tex-image-and-sub-image-2d-with-array-buffer-view.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/textures/tex-image-and-sub-image-2d-with-array-buffer-view.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__textures__tex-image-and-sub-image-2d-with-canvas.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/textures/tex-image-and-sub-image-2d-with-canvas.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__textures__tex-image-and-sub-image-2d-with-image-data.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/textures/tex-image-and-sub-image-2d-with-image-data.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__textures__tex-image-and-sub-image-2d-with-image.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/textures/tex-image-and-sub-image-2d-with-image.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__textures__tex-image-and-sub-image-2d-with-video.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/textures/tex-image-and-sub-image-2d-with-video.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__textures__tex-image-and-uniform-binding-bugs.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/textures/tex-image-and-uniform-binding-bugs.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__textures__tex-image-with-format-and-type.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/textures/tex-image-with-format-and-type.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__textures__tex-image-with-invalid-data.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/textures/tex-image-with-invalid-data.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__textures__tex-input-validation.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/textures/tex-input-validation.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__textures__tex-sub-image-2d-bad-args.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/textures/tex-sub-image-2d-bad-args.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__textures__tex-sub-image-2d.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/textures/tex-sub-image-2d.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__textures__texparameter-test.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/textures/texparameter-test.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__textures__texture-active-bind-2.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/textures/texture-active-bind-2.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__textures__texture-active-bind.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/textures/texture-active-bind.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__textures__texture-complete.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/textures/texture-complete.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__textures__texture-formats-test.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/textures/texture-formats-test.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__textures__texture-mips.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/textures/texture-mips.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__textures__texture-npot-video.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/textures/texture-npot-video.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__textures__texture-npot.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/textures/texture-npot.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__textures__texture-size-cube-maps.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/textures/texture-size-cube-maps.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__textures__texture-size.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/textures/texture-size.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__textures__texture-transparent-pixels-initialized.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/textures/texture-transparent-pixels-initialized.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__typedarrays__array-buffer-crash.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/typedarrays/array-buffer-crash.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__typedarrays__array-buffer-view-crash.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/typedarrays/array-buffer-view-crash.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__typedarrays__array-unit-tests.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/typedarrays/array-unit-tests.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__uniforms__gl-uniform-arrays.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/uniforms/gl-uniform-arrays.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__uniforms__gl-uniform-bool.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/uniforms/gl-uniform-bool.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__uniforms__gl-uniformmatrix4fv.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/uniforms/gl-uniformmatrix4fv.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__uniforms__gl-unknown-uniform.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/uniforms/gl-unknown-uniform.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__uniforms__null-uniform-location.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/uniforms/null-uniform-location.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__uniforms__uniform-location.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/uniforms/uniform-location.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/_wrappers/test_conformance__uniforms__uniform-samplers-test.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?conformance/uniforms/uniform-samplers-test.html'>
+</iframe>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/always-fail.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+  <head>
+<meta charset="utf-8">
+    <title>Always fail test</title>
+    <link rel="stylesheet" href="resources/js-test-style.css"/>
+    <script src="resources/js-test-pre.js"></script>
+</head>
+<body>
+<canvas id="example" width="50" height="50">
+</canvas>
+<div id="description"></div>
+<div id="console"></div>
+
+<script>
+description("Deliberately fail so as to test our harness.");
+
+testFailed("The harness should expect and handle this failure.");
+
+finishTest();
+</script>
+
+</body>
+</html>
+
--- a/dom/canvas/test/webgl-conformance/conformance/textures/texture-npot-video.html
+++ b/dom/canvas/test/webgl-conformance/conformance/textures/texture-npot-video.html
@@ -119,18 +119,23 @@ function runOneIteration(videoElement, u
     wtu.checkCanvasRect(gl, 4, 4, 2, 2, bottomColor,
                         "shouldBe " + bottomColor);
     debug("Checking upper left corner");
     wtu.checkCanvasRect(gl, 4, gl.canvas.height - 8, 2, 2, topColor,
                         "shouldBe " + topColor);
     debug("");
 }
 
+alreadyDone = false;
 function runTest(videoElement)
 {
+    if (alreadyDone)
+        return;
+    alreadyDone = true;
+
     var red = [255, 0, 0];
     var green = [0, 255, 0];
     var black = [0, 0, 0];
     runOneIteration(videoElement, false, true, black, black, true, true, true);
     runOneIteration(videoElement, false, true, black, black, true, false, false);
     runOneIteration(videoElement, false, true, black, black, false, true, false);
     runOneIteration(videoElement, false, true, black, black, true, true, false);
     runOneIteration(videoElement, false, true, green, red, false, false, false);
--- a/dom/canvas/test/webgl-conformance/failing_tests_windows_msbasicrender.txt
+++ b/dom/canvas/test/webgl-conformance/failing_tests_windows_msbasicrender.txt
@@ -1,4 +1,3 @@
-conformance/context/context-attributes-alpha-depth-stencil-antialias.html
 conformance/renderbuffers/framebuffer-object-attachment.html
 conformance/state/gl-object-get-calls.html
 conformance/more/functions/isTests.html
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/generate-wrappers-and-manifest.py
@@ -0,0 +1,352 @@
+#!/usr/bin/env python
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# Write a Mochitest manifest for WebGL conformance test files.
+
+import os
+import re
+
+########################################################################
+# GetTestList
+
+def GetTestList():
+    testList = []
+    AccumTests('', BASE_TEST_LIST_FILENAME, testList)
+    return testList
+
+##############################
+# Internals
+
+BASE_TEST_LIST_FILENAME = '00_test_list.txt'
+
+def AccumTests(path, listFile, out_testList):
+    listFilePath = os.path.join(path, listFile)
+    assert os.path.exists(listFilePath), 'Bad `listFilePath`: ' + listFilePath
+
+    with open(listFilePath) as fIn:
+        for line in fIn:
+            line = line.rstrip()
+            if not line:
+                continue
+
+            strippedLine = line.lstrip()
+            if strippedLine.startswith('//'):
+                continue
+            if strippedLine.startswith('#'):
+                continue
+            if strippedLine.startswith('--'):
+                continue
+
+            split = line.rsplit('.', 1)
+            assert len(split) == 2, 'Bad split for `line`: ' + line
+            (name, ext) = split
+
+            if ext == 'html':
+                newTestFilePath = os.path.join(path, line)
+                out_testList.append(newTestFilePath)
+                continue
+
+            assert ext == 'txt', 'Bad `ext` on `line`: ' + line
+
+            split = line.rsplit('/', 1)
+            nextListFile = split[-1]
+            nextPath = ''
+            if len(split) != 1:
+                nextPath = split[0]
+
+            nextPath = os.path.join(path, nextPath)
+            AccumTests(nextPath, nextListFile, out_testList)
+            continue
+
+    return
+
+########################################################################
+# Templates
+
+def FillTemplate(inFilePath, templateDict, outFilePath):
+    templateShell = ImportTemplate(inFilePath)
+    OutputFilledTemplate(templateShell, templateDict, outFilePath)
+    return
+
+
+def ImportTemplate(inFilePath):
+    with open(inFilePath, 'r') as f:
+        return TemplateShell(f)
+
+
+def OutputFilledTemplate(templateShell, templateDict, outFilePath):
+    spanStrList = templateShell.Fill(templateDict)
+
+    with open(outFilePath, 'w') as f:
+        f.writelines(spanStrList)
+    return
+
+##############################
+# Internals
+
+def WrapWithIndent(lines, indentLen):
+  split = lines.split('\n')
+  if len(split) == 1:
+      return lines
+
+  ret = [split[0]]
+  indentSpaces = ' ' * indentLen
+  for line in split[1:]:
+      ret.append(indentSpaces + line)
+
+  return '\n'.join(ret)
+
+
+templateRE = re.compile('(%%.*?%%)')
+assert templateRE.split('  foo = %%BAR%%;') == ['  foo = ', '%%BAR%%', ';']
+
+
+class TemplateShellSpan:
+    def __init__(self, span):
+        self.span = span
+
+        self.isLiteralSpan = True
+        if self.span.startswith('%%') and self.span.endswith('%%'):
+            self.isLiteralSpan = False
+            self.span = self.span[2:-2]
+
+        return
+
+
+    def Fill(self, templateDict, indentLen):
+        if self.isLiteralSpan:
+            return self.span
+
+        assert (self.span in templateDict,
+                '\'' + self.span + '\' not in dict!')
+
+        filling = templateDict[self.span]
+
+        return WrapWithIndent(filling, indentLen)
+
+
+class TemplateShell:
+    def __init__(self, iterableLines):
+        spanList = []
+        curLiteralSpan = []
+        for line in iterableLines:
+            split = templateRE.split(line)
+
+            for cur in split:
+                isTemplateSpan = cur.startswith('%%') and cur.endswith('%%')
+                if not isTemplateSpan:
+                    curLiteralSpan.append(cur)
+                    continue
+
+                if curLiteralSpan:
+                    span = ''.join(curLiteralSpan)
+                    span = TemplateShellSpan(span)
+                    spanList.append(span)
+                    curLiteralSpan = []
+
+                assert len(cur) >= 4
+
+                span = TemplateShellSpan(cur)
+                spanList.append(span)
+                continue
+            continue
+
+        if curLiteralSpan:
+            span = ''.join(curLiteralSpan)
+            span = TemplateShellSpan(span)
+            spanList.append(span)
+
+        self.spanList = spanList
+        return
+
+
+    # Returns spanStrList.
+    def Fill(self, templateDict):
+        indentLen = 0
+        ret = []
+        for span in self.spanList:
+            span = span.Fill(templateDict, indentLen)
+            ret.append(span)
+
+            # Get next `indentLen`.
+            try:
+                lineStartPos = span.rindex('\n') + 1
+
+                # let span = 'foo\nbar'
+                # len(span) is 7
+                # lineStartPos is 4
+                indentLen = len(span) - lineStartPos
+            except ValueError:
+                indentLen += len(span)
+            continue
+
+        return ret
+
+########################################################################
+# Output
+
+def WriteWrappers(testFilePathList):
+    templateShell = ImportTemplate(WRAPPER_TEMPLATE_FILEPATH)
+
+    if not os.path.exists(WRAPPERS_DIR):
+        os.mkdir(WRAPPERS_DIR)
+    assert os.path.isdir(WRAPPERS_DIR)
+
+    wrapperFilePathList = []
+    for testFilePath in testFilePathList:
+        # Mochitests must start with 'test_' or similar, or the test
+        # runner will ignore our tests.
+        # The error text is "is not a valid test".
+        wrapperFilePath = 'test_' + testFilePath.replace(os.sep, '__')
+        wrapperFilePath = os.path.join(WRAPPERS_DIR, wrapperFilePath)
+
+        testFilePath = testFilePath.replace(os.sep, '/')
+
+        templateDict = {
+            'TEST_PATH': testFilePath,
+        }
+
+        print('Writing \'' + wrapperFilePath + '\'')
+        OutputFilledTemplate(templateShell, templateDict,
+                             wrapperFilePath)
+
+        wrapperFilePathList.append(wrapperFilePath)
+        continue
+
+    return wrapperFilePathList
+
+
+def WriteManifest(wrapperFilePathList, supportFilePathList):
+    errataMap = LoadErrata()
+
+    # DEFAULT_ERRATA
+    defaultHeader = '[DEFAULT]'
+    defaultErrataStr = ''
+    if defaultHeader in errataMap:
+        defaultErrataStr = '\n'.join(errataMap[defaultHeader])
+        del errataMap[defaultHeader]
+
+    # SUPPORT_FILES
+    supportFilePathList = sorted(supportFilePathList)
+    supportFilesStr = '\n'.join(supportFilePathList)
+
+    # MANIFEST_TESTS
+    headerList = ['[' + x + ']' for x in wrapperFilePathList]
+
+    manifestTestLineList = []
+    for header in headerList:
+        manifestTestLineList.append(header)
+
+        if not header in errataMap:
+            continue
+
+        errataLineList = errataMap[header]
+        del errataMap[header]
+        manifestTestLineList += errataLineList
+        continue
+
+    assert not errataMap, 'Errata left in map: {}'.format(str(errataMap))
+
+    manifestTestsStr = '\n'.join(manifestTestLineList)
+
+    # Fill the template.
+    templateDict = {
+        'DEFAULT_ERRATA': defaultErrataStr,
+        'SUPPORT_FILES': supportFilesStr,
+        'MANIFEST_TESTS': manifestTestsStr,
+    }
+
+    FillTemplate(MANIFEST_TEMPLATE_FILEPATH, templateDict,
+                 MANIFEST_OUTPUT_FILEPATH)
+    return
+
+##############################
+# Internals
+
+WRAPPER_TEMPLATE_FILEPATH = 'mochi-wrapper.html.template'
+WRAPPERS_DIR = '_wrappers'
+MANIFEST_TEMPLATE_FILEPATH = 'mochitest.ini.template'
+MANIFEST_OUTPUT_FILEPATH = '_mochitest.ini'
+ERRATA_FILEPATH = 'mochitest-errata.ini'
+kManifestHeaderRegex = re.compile(r'\[[^\]]*?\]')
+
+
+def LoadErrata():
+    nodeMap = {}
+
+    nodeHeader = None
+    nodeLineList = []
+    with open(ERRATA_FILEPATH, 'r') as f:
+        for line in f:
+            line = line.rstrip()
+            cur = line.lstrip()
+            if cur.startswith('#'):
+                continue
+
+            if not cur:
+                continue
+
+            if not cur.startswith('['):
+                nodeLineList.append(line)
+                continue
+
+            match = kManifestHeaderRegex.search(cur)
+            assert match, line
+
+            nodeHeader = match.group()
+            assert not nodeHeader in nodeMap, 'Duplicate header: ' + nodeHeader
+            nodeLineList = []
+            nodeMap[nodeHeader] = nodeLineList
+            continue
+
+    return nodeMap
+
+########################################################################
+
+SUPPORT_DIRS = [
+    'conformance',
+    'resources',
+]
+
+EXTRA_SUPPORT_FILES = [
+    'always-fail.html',
+]
+
+
+def GetSupportFileList():
+    ret = []
+    for supportDir in SUPPORT_DIRS:
+        ret += GetFilePathListForDir(supportDir)
+
+    ret += EXTRA_SUPPORT_FILES
+
+    return ret
+
+
+def GetFilePathListForDir(baseDir):
+    ret = []
+    for root, folders, files in os.walk(baseDir):
+        for f in files:
+            filePath = os.path.join(root, f)
+            ret.append(filePath)
+
+    return ret
+
+
+if __name__ == '__main__':
+    fileDir = os.path.dirname(__file__)
+    assert not fileDir, 'Run this file from its directory, not ' + fileDir
+
+    testFilePathList = GetTestList()
+
+    wrapperFilePathList = WriteWrappers(testFilePathList)
+
+    supportFilePathList = GetSupportFileList()
+    WriteManifest(wrapperFilePathList, supportFilePathList)
+
+    print('Done!')
+
+
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/mochi-single.html
@@ -0,0 +1,261 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+WebGL Conformance Test Suite Single Test Wrapper
+</title>
+<!-- Uncomment this to use this without mochi-wrapper.html files.
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+-->
+<script src="../webgl-mochitest/driver-info.js"></script>
+</head>
+<body>
+<div>Status: <span id='status'>Initializing</span></div>
+<div>Path: <span id='path'>-</span></div>
+<div>Failures: <span id='results'>-</span></div>
+<iframe id='test-frame' width='100%' scrolling='no'></iframe>
+<script>
+'use strict';
+
+var IFRAME_BODY_MARGIN = 8;
+var IFRAME_SIZE_UPDATE_INTERVAL = 100; // ms
+
+var statusElem = document.getElementById('status');
+var pathElem = document.getElementById('path');
+var resultsElem = document.getElementById('results');
+var frameElem = document.getElementById('test-frame');
+
+////////////////////////////////////////////////////////////////////////
+// Forward SimpleTest functions and replace if missing.
+
+if (!window.ok) {
+  window.ok = parent.ok;
+}
+if (!window.todo) {
+  window.todo = parent.todo;
+}
+if (!window.SimpleTest) {
+  window.SimpleTest = parent.SimpleTest;
+}
+
+if (!window.ok) {
+  window.ok = function(status, message) {
+    console.log('ok(' + status + ', "' + message + '")');
+  }
+}
+if (!window.todo) {
+  window.todo = function(status, message) {
+    console.log('todo(' + status + ', "' + message + '")');
+  }
+}
+if (!window.SimpleTest) {
+  window.SimpleTest = {
+    waitForExplicitFinish: function(){},
+    finish: function(){},
+  };
+}
+
+////////////////////////////////////////////////////////////////////////
+// Implement our own version of `fail-if` expected failure handling.
+// `fail-if` in mochitest.ini doesn't work yet. (bug 987849)
+
+var OS_VERSION_WIN7 = 6.1;
+var OS_VERSION_OSX_10_6 = 10.6;
+var OS_VERSION_OSX_10_8 = 10.8;
+
+// ICS 4.0-4.0.2 was 14, 4.0.3+ was 15.
+var OS_VERSION_ANDROID_ICS = 14;
+
+var ALWAYS_FAIL_TEST_FILEPATH = 'always-fail.html';
+
+function GetExpectedTestFailSet() {
+  var failSet = {};
+
+  failSet[ALWAYS_FAIL_TEST_FILEPATH] = true;
+
+  switch (DriverInfo.getOS()) {
+    case DriverInfo.OS.WINDOWS:
+      if (DriverInfo.getOSVersion() >= OS_VERSION_WIN7) {
+        // Win7 and Win8 slaves.
+        failSet['conformance/textures/tex-image-and-sub-image-2d-with-video.html'] = true;
+        failSet['conformance/textures/texture-npot-video.html'] = true;
+      }
+      break;
+
+    case DriverInfo.OS.MAC:
+      if (DriverInfo.getOSVersion() == OS_VERSION_OSX_10_8) {
+        failSet['conformance/glsl/functions/glsl-function-smoothstep-gentype.html'] = true;
+        failSet['conformance/glsl/variables/gl-pointcoord.html'] = true;
+        failSet['conformance/limits/gl-max-texture-dimensions.html'] = true;
+        failSet['conformance/textures/texture-size.html'] = true;
+      } else if (DriverInfo.getOSVersion() == OS_VERSION_OSX_10_6) {
+        failSet['conformance/glsl/misc/glsl-function-nodes.html'] = true;
+      }
+      break;
+
+    case DriverInfo.OS.LINUX:
+      failSet['conformance/extensions/oes-texture-float.html'] = true;
+      failSet['conformance/glsl/functions/glsl-function-sin.html'] = true;
+      failSet['conformance/misc/type-conversion-test.html'] = true;
+      failSet['conformance/textures/texture-mips.html'] = true;
+      failSet['conformance/textures/texture-size-cube-maps.html'] = true;
+      break;
+
+    case DriverInfo.OS.ANDROID:
+      failSet['conformance/extensions/oes-texture-float.html'] = true;
+
+      if (DriverInfo.getOSVersion() >= OS_VERSION_ANDROID_ICS) {
+        // Android 4.0 slaves.
+        failSet['conformance/extensions/oes-vertex-array-object.html'] = true;
+        failSet['conformance/glsl/functions/glsl-function-abs.html'] = true;
+        failSet['conformance/glsl/functions/glsl-function-faceforward.html'] = true;
+        failSet['conformance/glsl/functions/glsl-function-sign.html'] = true;
+        failSet['conformance/glsl/functions/glsl-function-smoothstep-float.html'] = true;
+        failSet['conformance/glsl/functions/glsl-function-step-float.html'] = true;
+        failSet['conformance/glsl/functions/glsl-function-step-gentype.html'] = true;
+        failSet['conformance/limits/gl-max-texture-dimensions.html'] = true;
+        failSet['conformance/limits/gl-min-textures.html'] = true;
+        failSet['conformance/rendering/draw-elements-out-of-bounds.html'] = true;
+        failSet['conformance/state/gl-get-calls.html'] = true;
+        failSet['conformance/textures/tex-image-with-format-and-type.html'] = true;
+        failSet['conformance/textures/tex-sub-image-2d.html'] = true;
+        failSet['conformance/textures/texture-mips.html'] = true;
+        failSet['conformance/textures/texture-npot.html'] = true;
+        failSet['conformance/textures/texture-size-cube-maps.html'] = true;
+      } else {
+        // Android 2.3 slaves.
+        failSet['conformance/glsl/functions/glsl-function-sin.html'] = true;
+        failSet['conformance/misc/error-reporting.html'] = true;
+        failSet['conformance/misc/object-deletion-behaviour.html'] = true;
+        failSet['conformance/programs/get-active-test.html'] = true;
+        failSet['conformance/textures/tex-image-and-sub-image-2d-with-video.html'] = true;
+        failSet['conformance/textures/texture-mips.html'] = true;
+        failSet['conformance/textures/texture-npot.html'] = true;
+      }
+      break;
+
+    case DriverInfo.OS.B2G:
+      failSet['conformance/context/context-attributes-alpha-depth-stencil-antialias.html'] = true;
+      failSet['conformance/extensions/oes-texture-float.html'] = true;
+      failSet['conformance/glsl/functions/glsl-function-sin.html'] = true;
+      failSet['conformance/glsl/reserved/_webgl_function.vert.html'] = true;
+      failSet['conformance/glsl/reserved/webgl_function.vert.html'] = true;
+      failSet['conformance/misc/error-reporting.html'] = true;
+      failSet['conformance/misc/object-deletion-behaviour.html'] = true;
+      failSet['conformance/programs/get-active-test.html'] = true;
+      failSet['conformance/textures/tex-input-validation.html'] = true;
+      failSet['conformance/textures/texture-mips.html'] = true;
+      failSet['conformance/textures/texture-npot.html'] = true;
+      failSet['conformance/textures/texture-size-cube-maps.html'] = true;
+      failSet['conformance/textures/texture-size.html'] = true;
+      break;
+  }
+
+  return failSet;
+}
+
+////////////////////////////////////////////////////////////////////////
+// Test running and harness.
+
+var gTestPath = null;
+
+function RunTest(testPath) {
+  console.log('testPath: ' + testPath);
+
+  if (testPath == ALWAYS_FAIL_TEST_FILEPATH) {
+    // Make it easier to respond to new test failures.
+    console.log('OS: ' + DriverInfo.getOS());
+    console.log('OS version: ' + DriverInfo.getOSVersion());
+    console.log('Driver: ' + DriverInfo.getDriver());
+  }
+
+  pathElem.innerHTML = testPath;
+  gTestPath = testPath;
+
+  // Auto-update to grow the size of the doc.
+  function UpdateFrameSize() {
+    var frameBody = frameElem.contentWindow.document.body;
+
+    if (frameBody) {
+      var scrollHeight = frameBody.scrollHeight;
+      frameElem.height = scrollHeight + 2*IFRAME_BODY_MARGIN;
+    }
+
+    setTimeout(UpdateFrameSize, IFRAME_SIZE_UPDATE_INTERVAL);
+  }
+  UpdateFrameSize();
+
+  // Load the iframe.
+  statusElem.innerHTML = 'Loading';
+
+  frameElem.onloadstart = function() {
+    statusElem.innerHTML = 'Running';
+  };
+  frameElem.src = testPath;
+}
+
+var failureCount = 0;
+var resultCount = 0;
+window.webglTestHarness = {
+  reportResults: function(success, message) {
+    resultCount++;
+    if (!success) {
+      failureCount++;
+    }
+
+    var color = failureCount ? 'red' : 'green';
+
+    resultsElem.innerHTML = [
+      '<font color="' + color + '">',
+      '' + failureCount + '/' + resultCount,
+      '</font>',
+    ].join('\n');
+  },
+
+  notifyFinished: function(testPath) {
+    OnTestComplete();
+  },
+};
+
+function OnTestComplete() {
+  statusElem.innerHTML = 'Complete';
+
+  var passed = failureCount == 0;
+
+  var passExpected = true;
+  if (gTestPath in GetExpectedTestFailSet())
+    passExpected = false;
+
+  var expectedStatus = passExpected ? 'pass' : 'fail';
+  var text = 'Should ' + expectedStatus + ': ' + gTestPath;
+
+  ok(passed == passExpected, text);
+  SimpleTest.finish();
+}
+
+////////////////////////////////////////////////////////////////////////
+// Begin execution
+
+SimpleTest.waitForExplicitFinish();
+
+do {
+  var arg = location.search.substr(1);
+  if (arg == 'dump') {
+    statusElem.innerHTML = 'Dumping';
+
+    ok(true, 'OS:' + DriverInfo.getOS());
+    ok(true, 'OS version:' + DriverInfo.getOSVersion());
+    ok(true, 'Driver:' + DriverInfo.getDriver());
+
+    statusElem.innerHTML = 'Complete';
+    break;
+  }
+
+  RunTest(arg);
+} while (false);
+
+</script>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/mochi-wrapper.css
@@ -0,0 +1,8 @@
+iframe {
+  position:fixed;
+  top:0px; left:0px; bottom:0px; right:0px;
+  width:100%; height:100%;
+  border:none; margin:0; padding:0;
+  overflow:hidden;
+  z-index:999999;
+}
new file mode 100644
--- /dev/null
+++ b/dom/canvas/test/webgl-conformance/mochi-wrapper.html.template
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<html>
+<head>
+<title>
+Mochitest wrapper for WebGL Conformance Test Suite tests
+</title>
+<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+<link rel="stylesheet" type="text/css" href="../mochi-wrapper.css"/>
+</head>
+<body>
+<iframe src='../mochi-single.html?%%TEST_PATH%%'>
+</iframe>