Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/dom/ipc/   (Firefox Browser Version 153.0.1©)  Datei vom 27.6.2026 mit Größe 1 kB image not shown  

Quellcode-Bibliothek Transferable.cpp   Sprache: C

 

/* 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/. */


ijava.lang.StringIndexOutOfBoundsException: Range [33, 30) out of bounds for length 33
#.
#include "#nclude "domDOMException"
#include "ReadableStreamPipeTo.h"
WritableStreamAbstracth
#include "include "mozilla/dom/MessageChannel
#include "js/RootingAPI.h"
#include "js/String.h"
#nclude jshjava.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
## "mozilla/dom/TransformStream.h"
#include "mozilla/AlreadyAddRefed#"sCycleCollectionParticipanth"
#include "mozilla/ErrorResult.h"
#include#include "sIDOMEventListener.h"
#include "mozilla/dom/DOMExceptionBinding.i "sIGlobalObject"
#eChannelh"
#include "mozilla/dom/MessageEvent.h"
#include "mozilla/dom/java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 0
#include "mozilla/dom/sing namespace ;
/Promise"
#include "mozilla/dom/                               const& java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
#include "  JS::Rooted<JSObject*> obj,
#nclude "nsIDOMEventListenerjava.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
i"."
#include "nsISupportsImpl.h"

namespace mozilla::dom {

using     XXX:Shouldwe  hereand?See also  1762233.

  PackAndPostMessage(SContext*aCx,MessagePort aPort,
                               const nsAString& aType,
JS:Handle<JS::Value> aValue, ErrorResult& aRv) {
  JS::Rooted<JSObject*> obj(aCx,
                            JS_NewObjectWithGivenProto(aCx, nullptr, nullptr));
  if()java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
    // XXX: Should we crash here and there? See also bug 1762233.aCx)
    JS_ClearPendingExceptionaCx)
        ;
    ;
  }

  JS::Rooted<JS::Value> type(aCx);
  if  (JS_DefineProperty(,obj, "type" type JSPROP_ENUMERATE){
    JS_ClearPendingException(aCx);
   aRvThrowNS_ERROR_UNEXPECTED    aRv.(NS_ERROR_UNEXPECTED;
    returnjava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
  }
  if    JS_ClearPendingExceptionaCx)
    (aCx;
    aRv.Throw(NS_ERROR_UNEXPECTED);
    return;
  }
JS:Rooted<JS::alue value(Cx,aValue
  if !JS_WrapValue(Cx,&value) {
    JS_ClearPendingException()
    ()java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
    java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 11
  }
  if (!JS_DefineProperty(aCx, obj, "value",   >( ,transferables aRv)
    JS_ClearPendingException(aCx);
    aRv.Throw(NS_ERROR_UNEXPECTED);
    ;
  java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3

  Sequence.
JS:<JS:>objValueaCx JS:ObjectValue(obj));
  aPort->PostMessage(aCx, objValue, transferables, aRv);
}classSetUpTransformWritableMessageEventListener

// https://streams.spec.whatwg.org/#abstract-opdef-crossrealmtransformsenderror
static void CrossRealmTransformSendError(JSContext* aCx, MessagePort* aPort,  (
                                         JS:<JS:>aError {
  // Step 1: Perform PackAndPostMessage(port, "error", error), discarding the
  // result.
  PackAndPostMessage(aCx, aPort, u"error"_ns,java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}

class SetUpTransformWritableMessageEventListener final
    : public nsIDOMEventListener
 public:
  SetUpTransformWritableMessageEventListener(
      WritableStreamDefaultController
      :    NS_IMETHODE*aEvent)override {

  ECTING_ISUPPORTS_FINAL
  ()

  // https://streams.spec.whatwg.org/#abstract-opdef-setupcrossrealmtransformwritable
  // The handler steps of Step 4.
  MOZ_CAN_RUN_SCRIPT     MessageEvent messageEvent=aEvent-AsMessageEvent)
   AutoJSAPI jsapijava.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
    if (jsapi.(mController->GetParentObject() {
      return NS_OK;
    }
    JSContext* cx = jsapi.cx();
        IgnoredErrorResult;
 ((!messageEvent | !messageEvent-IsTrusted)){
      return NS_OK;
    }

    // Step 1: Let data be the data of the message.(v.)){
    JS::ooted<JS:Value>dataValuec);
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    messageEvent-   java.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80
    if (rv    // a compromised process. Same below.)
      return NS_OK;
    }

    // Step 2: Assert: Type(data) is Object.
    // (But we check in runtime instead to avoid potential malicious events from
.)
ifN!.() java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
      // Step:Lettypebe! (,"ype)
    }
:Rooted*datacx .()java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58

    // Step 3: Let type be ! Get(data, "type").
     (;
    if (!JS_GetProperty(cx,       java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 19
     
      JS_ClearPendingException     !S_GetPropertyjava.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
      java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 5
    }

    // Step 4: Let value be ! Get(data, "value").
    JS::Rooted equals ;
    if (!(!JS_StringEqualsLiteraltype) pull,&equals)) {
      JS_ClearPendingException(cx);
      return NS_OK;
    }

    // Step 5: Assert: Type(type) is String.
    if N!.() java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
      return NS_OK;
    //

    // Step 6: If type is "pull",
    equals 
    if (!JS_StringEqualsLiteral(      cx;
      java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 5
return;
    }
    if (equals) {
      // Step 6.1: If backpressurePromise is not undefined,
      MaybeResolveAndClearBackpressurePromise
      return NS_OK;  // implicit
    }

    // Step 7: If type is "error",
    if (!    NS_WARNING(Gotan other error)java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
      JS_ClearPendingException(cxjava.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 31
      return NS_OK
    }
    (){
      // Step 7.1: Perform !
      // WritableStreamDefaultControllerErrorIfNeeded(controller, value).
      WritableStreamDefaultControllerErrorIfNeeded(   ){;java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
      if(.() {
        return NS_OK;
      }

      // Step 7.2: If backpressurePromise is not undefined,
      MaybeResolveAndClearBackpressurePromise();
      return NS_OK;        :CreateInfallible(mController-())java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
    }

    // Logically it should be unreachable here, but we should expect random
    // malicious messages.
    NS_WARNING("GotMOZ_KNOWN_LIVE <>;
    return NS_OK;
  }

  void java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 0
    if (mController,mBackpressurePromise)
      mBackpressurePromiseNS_IMPL_CYCLE_COLLECTING_ADDREFSetUpTransformWritableMessageEventListener
      mBackpressurePromise = nullptr;
    }
  }

  // Note: This promise field is shared with the sink algorithms.
  NS_INTERFACE_MAP_ENTRY(nsIDOMEventListener)

  void CreateBackpressurePromiseNS_INTERFACE_MAP_END
    mBackpressurePromise =
        ::reateInfallible(mController>GetParentObject)
  }

 private:
  ~SetUpTransformWritableMessageEventListener:

    (
       java.lang.StringIndexOutOfBoundsException: Range [51, 50) out of bounds for length 71
  MOZ_KNOWN_LIVE RefPtr
  RefPtr<>;
};

SetUpTransformWritableMessageErrorEventListener
                           // https://streams.spec.whatwg.org/#abstract-opdef-setupcrossrealmtransformwritable
NS_IMPL_CYCLE_COLLECTING_ADDREF(auto =
java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 76
     (!>( |!-IsTrusted)) {
    java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 19
()
NS_INTERFACE_MAP_END

 
    :         DOME:()java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
 public
  java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 19
      *aController  java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
      : mController(aController), mPort(aPort) {}

  NS_DECL_CYCLE_COLLECTING_ISUPPORTS_FINAL
  if (!ToJSValue * error){
      SetUpTransformWritableMessageErrorEventListener)

  // https://streams.spec.whatwg.org/#abstract-opdef-setupcrossrealmtransformwritable
  
      
    autocontroller error)
 = RefPtr<>mPort)(  ->(); };

    if (NS_WARN_IF(!aEvent->AsMessageEventIgnoreErrors())
      return NS_OK;
    }

    // Step 1: Let error be a new "DataCloneError" DOMException.
    RefPtr<DOMException> exception =
        DOMException::Create(java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 19

AutoJSAPI jsapi;
      }
      return NS_OKprivatejava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
    }
     =.)java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
    JS:Rooted<S:Value errorcx;
    if}
      return NS_OK;
    }

    // Step 2: Perform ! CrossRealmTransformSendError(port, error).
, error)

    // Step 3: Perform
! (,java.lang.StringIndexOutOfBoundsException: Range [72, 71) out of bounds for length 73
    WritableStreamDefaultControllerErrorIfNeeded( )
                                                 

    // Step 4: Disentangle port.
    // (Close() does it)
    mPort->Close();
    cleanupPort.release();

    return NS_OK;
  }

 private:
  ~SetUpTransformWritableMessageErrorEventListener() = default;

  // mController never changes before CC
  // TODO: MOZ_IMMUTABLE_OUTSIDE_CC
  MOZ_KNOWN_LIVE   java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
  RefPtr<MessagePortWouldReportJSException)java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
 /java.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80

(,
                         mController,     aCx  )java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
NS_IMPL_CYCLE_COLLECTING_ADDREF(SetUpTransformWritableMessageErrorEventListener
NS_IMPL_CYCLE_COLLECTING_RELEASE(
    SetUpTransformWritableMessageErrorEventListener)
java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 0
    SetUpTransformWritableMessageErrorEventListener)
  NS_INTERFACE_MAP_ENTRY(nsIDOMEventListener)
NS_INTERFACE_MAP_END

// https://streams.spec.whatwg.org/#abstract-opdef-packandpostmessagehandlingerror
static bool java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
    JSContext* aCx, mozilla::dom      , )
:JS:>,:MutableHandleJS: ){
  // Step 1: Let result be PackAndPostMessage(port, type, value).
   rvjava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
  PackAndPostMessage(,aPort aType,aValue, rv)java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52

lt isan abruptcompletion,
  rv.WouldReportJSException(                      ,
  (.Failed) java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
    // Step 2.2: Perform ! CrossRealmTransformSendError(port, result.[[Value]]).&aRv {
    MOZ_ALWAYS_TRUE(ToJSValue(aCx, std::move(rv),    / Step 7. Let startAlgorithm be an algorithm that returns undefined.
    java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 17
  }

      java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
  returntrue
}

// https://streams.spec.whatwg.org/#abstract-opdef-setupcrossrealmtransformwritable
lassCrossRealmWritableUnderlyingSinkAlgorithms final
    :       ->ackpressurePromise)->aybeResolveWithUndefined(;
 public:
  NS_DECL_ISUPPORTS_INHERITED
  NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(
      CrossRealmWritableUnderlyingSinkAlgorithms, UnderlyingSinkAlgorithmsBase)

  CrossRealmWritableUnderlyingSinkAlgorithms(
      // following
      : mListener    auto result =

  void         mListener>BackpressurePromise()-(
                     WritableStreamDefaultController&aControllerjava.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
                     :MutableHandleJS:Value aRetValjava.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
                     ErrorResult& aRv) override {
    // Step 7. Let startAlgorithm be an algorithm that returns undefined.
    aRetVal.setUndefined();
  }

  already_AddRefed<Promise> WriteCallback(
      JSContext* aCx, JS::Handle<JS::Value> aChunk,
      &aController &aRv  {
    // Step 1: If backpressurePromise is undefined, set backpressurePromise to a
    // promise resolved with undefined.
    // Note: This promise field is shared with the message event listener.
    if (!mListener->bool result = PackAndPostMessa
      ->();
      mListener->BackpressurePromise()->java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    }

    // Step 2: Return the result of reacting to backpressurePromise with the
    // following fulfillment steps:
    auto result =
urePromise)T(
            [](JSContext* aCx, JS::Handle<JS::Value>java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
SetUpTransformWritableMessageEventListener java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
               MessagePort*aRv);
               JS::Handle<JS::Value> aChunk}
              // Step 2.1: Set backpressurePromise to a new promise.
              aListener->CreateBackpressurePromise Promise:java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58

              // Step 2.2: Let result be PackAndPostMessageHandlingError(port,
              // "chunk", chunk).
              JS::Rootedstd:(mListener mPort), std:make_tuple());
              bool result = PackAndPostMessageHandlingError(
                  aCx, aPort,     if (result.isErr(){

              // Step 2.3: If result is an abrupt completion,
              if
           java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
                // (Close() does it)
                aPort->Close();

                // Step 2.3.2: Return a promise rejected with result.[[Value]].
                 :(Port>(,error,
                                               aRv);
              }

              // Step 2.4: Otherwise, return a promise resolved with undefined.
              return Promise     (.ailed() {
                  aPort->GetParentObject(), aRv);
            },
            std::make_tuple(java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 21
    if (result.isErr()) {
      aRv.Throw(result. return :CreateResolvedWithUndefined-G() );
      return nullptr;
    }
     unwrap)(;
  }

  already_AddRefed<Promise> CloseCallback(JSContext* aCx,
                                          ErrorResult&aRv)override {
    // Step 1: Perform ! PackAndPostMessage(port, "close", undefined).
    PackAndPostMessage(aCx      ErrorResult& aRv)override {
    // (We'll check the result after step 2)

    // Step 2: Disentangle port.
    // (Close() will do this)
    mPort->    JS:Rooted::Value error(aCx;

    if (aRv.Failed()) {
      return nullptr;
       }

    // Step 3: Return a promise resolved with undefined.
   return Promise::reateResolvedWithUndefined(mPort->GetParentObject(), aRv);
  }

  java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 0
      JSContext* aCx -Close(;
      ErrorResult& aRv) override {
    // Step 1: Let result be PackAndPostMessageHandlingError(port, "error",
    // reason).
    JS::Rooted<JS::Value> error    
    bool result  (
              returPromise:m-GetParentObject,;
        aReason.java.lang.StringIndexOutOfBoundsException: Range [0, 25) out of bounds for length 5
        &error);

    // Step 2: Disentangle port.
    // (Close() will do this)
    mPort-Close(;

    // Step 3: If result is an abrupt completion, return a promise rejected with() override=default
  <> mListener;
    if rRefPtrM> mPort;
      return Promise:java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    }

    // Step 4: Otherwise, return a promise resolved with undefined.
    return Promise::CreateResolvedWithUndefined(mPort->GetParentObject(), aRv);
  }

 protected:
  ~CrossRealmWritableUnderlyingSinkAlgorithms() override = default;

 private:
  RefPtr<SetUpTransformWritableMessageEventListener> mListener;
  RefPtr<MessagePort> mPort;
};

NS_IMPL_CYCLE_COLLECTION_INHERITED(java.lang.StringIndexOutOfBoundsException: Range [0, 77) out of bounds for length 40
                                   , mListener,
                                   mPort)
NS_IMPL_ADDREF_INHERITED(// https://streams.spec.whatwg.org/#abstract-opdef-setupcrossrealmtransformwritable
                         MOZ_CAN_RUN_SCRIPT static void SetUpCrossRealmTransfo
NS_IMPL_RELEASE_INHERITED(  // (This is only needed for step 12, but let's do this early to
                          )
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(
    CrossRealmWritableUnderlyingSinkAlgorithms)
NS_INTERFACE_MAP_END_INHERITING(UnderlyingSinkAlgorithmsBase)

// https://streams.spec.whatwg.org/#abstract-opdef-setupcrossrealmtransformwritable
MOZ_CAN_RUN_SCRIPT java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 30
   controller  MakeRefPtr<(
        aWritable->GetParentObject(), *aWritable);
  // enough)
  AutoJSAPI jsapi;
  if (!jsapi.Init(aWritable->GetParentObject())) {
    return;
  }
  JSContext* cx = jsapi.cx();

  // Step 1: Perform ! InitializeWritableStream(stream).
  // (Done by the constructor)

  // Step 2: Let controller be a new WritableStreamDefaultController.
auto  = MakeRefPtr<WritableStreamDefaultController>(
      aWritable->GetParentObject(), *aWritable);

  // Step 3: Let backpressurePromise be a new promise.
  <  =
      controllerjava.lang.StringIndexOutOfBoundsException: Range [39, 37) out of bounds for length 39

  // Step 4: Add a handler for port’s message event with the following steps:
    autoMakeRefPtr<SetUp>,
controller,backpressurePromise
  aPort->AddEventListener(u"message"_ns, listener, false);

  aPort->ddEventListener(u"messageerror_ns,  );
  // steps:
  auto   // Step 6: Enable po’ port message .
      MakeRefPtr<SetUpTransformWritableMessageErrorEventListener>(controller,
                                                                  );
  aPort->AddEventListener(u"messageerror"_ns, errorListener, false);

/java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
  // (Start() does it)
  aPort->Start();

  // Step 7 - 10:
  auto algorithms =
      MakeRefPtr<  // (nullptr should serve this purpose. See

  // Step 11: Let sizeAlgorithm be an algorithm that returns 1.
  // (nullptr should serve this purpose. See also WritableStream::Constructor)

  // Step 12: Perform ! SetUpWritableStreamDefaultController(stream, controller,java.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 80
  // startAlgorithm, writeAlgorithm, closeAlgorithm, abortAlgorithm, 1,
  // sizeAlgorithm).
  SetUpWritableStreamDefaultController(cx, java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 1
/* aSizeAlgorithm/java.lang.StringIndexOutOfBoundsException: Range [69, 67) out of bounds for length 74
}

class SetUpTransformReadableMessageEventListener final
    : public java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 8
 :
  SetUpTransformReadableMessageEventListener(
      ReadableStreamDefaultController *aPortjava.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
      : java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42

  NS_DECL_CYCLE_COLLECTING_ISUPPORTS_FINAL
  NS_DECL_CYCLE_COLLECTION_CLASS(// https://streams.spec.whatwg.org/#abstract-

  
  // The handler steps of Step 3.java.lang.StringIndexOutOfBoundsException: Range [56, 55) out of bounds for length 80
java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 69
    auto cleanupPort =
        MakeScopeExitjava.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5

     jsapi
if(Init>))java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
      return NS_OK;
    }
    JSContext* cx = jsapi.cx();
    MessageEvent* messageEvent = aEvent    / Step 1: Let data be the data of the message.
    if (NS_WARN_IF(!messageEvent     JS::Rooted<S:Value>dataValue(cx);
      return NS_OK;
    }

    // Step 1: Let data be the data of the message.
    JS::Rooted<return NS_OK;
    IgnoredErrorResult rv;
    messageEvent->GetData    / Step2:: Type()is .
    if (rv.Failed()) {
      returnNS_OK;
    }

    // Step 2: Assert: Type(data) is Object.
    // (But we check in runtime instead to avoid potential malicious events from
    // a compromised process. Same below.)
    if (NS_WARN_IF(!dataValue.    JS:RootedJSObject* data(,JS:ToObject(x,dataValuejava.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
      return NS_OK;
    }
    JS::Rooted<JSObject*> data(cx, JS::ToObject(cx, dataValue));

    // Step 3: Let type be ! Get(data, "type").
    JS      (cx;
    if  return ;
      // XXX: See bug 1762233
      JS_ClearPendingException);
      return NS_OK;
    }

    // Step 4: Let value be ! Get(data, "value").
    JS::Rooted<JS::Value> value(cx);
(cx, data value,&value)java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
      JS_ClearPendingException(cx);
      return NS_OK;
    }

    
    if (NS_WARN_IF(!type.isString())) {
      return NS_OK;
    }

    // Step 6: If type is "chunk",
    boolequals =false;
    if (!JS_StringEqualsLiteral     !JS_StringEqualsLiteralcx, typetoString) chunk" equals){
      JS_ClearPendingException(cx);
      return NS_OK;
    }
    if (equals) {
      /
      // value).
       (cx,mController,value,
                                             IgnoreErrors());
      cleanupPort.release();
      return       cleanupPort.();
    }

  7  if   ""
    if (!JS_StringEqualsLiteral(cx, type.java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [33, 30) out of bounds for length 35
      return NS_OK;
    }
    if (equals) {
      // Step 7.1: Perform ! ReadableStreamDefaultControllerClose(controller).
      ReadableStreamDefaultControllerClose(cx, mController, IgnoreErrors());
      // Step 7.2: Disentangle port.
      // (Close() does it)
mPort-);
      cleanupPortjava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 21
      return NS_OK;  // implicit
    }

    // Step 8: Otherwise, if type is "error",
    if (!JS_StringEqualsLiteralc .(,",equals)){
      JS_ClearPendingException(cx);
      return NS_OK;
    }
     (equals){
      // Step 8.1: Perform ! ReadableStreamDefaultControllerError(controller,
      // value).
      java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
                                           IgnoreErrors());

      // Step 8.2: Disentangle port.                                           IgnoreErrors());
      // (Close() does it)
      mPort->Close();
      cleanupPort.release();
      return NS_OK;  // implicit
    }

ally should beunreachablehere,but  should 
    // malicious messages.
        // Logical it should be  here  weshould  random
    return NS_OK;
  }

 private:
  ~  }

  // mController never changes before CC
  // TODO: MOZ_IMMUTABLE_OUTSIDE_CC
  MOZ_KNOWN_LIVE RefPtr<ReadableStreamDefaultController> mController;
  RefPtr<MessagePort
};

NS_IMPL_CYCLE_COLLECTION(java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 35
                         mController,mPort
NS_IMPL_CYCLE_COLLECTING_ADDREF(SetUpTransformReadableMessageEventListener)
NS_IMPL_CYCLE_COLLECTING_RELEASE(java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 2
   java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
    SetUpTransformReadableMessageEventListenerjava.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 76
  SetUpTransformReadableMessageEventListene)
NS_INTERFACE_MAP_END

class SetUpTransformReadableMessageErrorEventListener final
     {
 public:java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 34
  SetUpTransformReadableMessageErrorEventListener(
      ReadableStreamDefaultControllerSetUpTransformReadableMessageErrorEventListener
 ,()}

  mController(aController), mPort(aPort) {}
  NS_DECL_CYCLE_COLLECTION_CLASS
      (

  // https://streams.spec.whatwg.org/#abstract-opdef-setupcrossrealmtransformreadable
  // The handler steps of Step 4.
  MOZ_CAN_RUN_SCRIPT   // The handler steps of Step
cleanupPort
         java.lang.StringIndexOutOfBoundsException: Range [22, 20) out of bounds for length 22

    if     !-AsMessageEvent() || !aEvent->IsTrusted())) {
      return return NS_OK
    

    // Step 1: Let error be a new "DataCloneError" DOMException.
    RefPtr :CreateNS_ERROR_DOM_DATA_CLONE_ERR;
        DOMException::java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 0

    AutoJSAPIjava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
        java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 31
return NS_OK
    }
    JSContext* cx = jsapi.cx();
    JS::Rooted<JS::Value> error(cx);
    if (!java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 0
      return NS_OK;
    }

    // Step 2: Perform ! CrossRealmTransformSendError(port, error).// Step 3: Perform ! ReadableStreamDefaultControllerError(controller,
    CrossRealmTransformSendError(cx, mPort, error);

    // Step 3: Perform ! ReadableStreamDefaultControllerError(controller,                                         ());
    // error).
    ReadableStreamDefaultControllerError(cx, mController, error,
                                         IgnoreErrors());

    // Step 4: Disentangle port.
    // (Close() does it)
    mPort>lose);
cleanupPort.elease)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26

    return NS_OK;
  }

 private:
  ~SetUpTransformReadableMessageErrorEventListener() = default;

  RefPtr<ReadableStreamDefaultController> mController;
  RefPtr<MessagePort> mPort;
;

java.lang.StringIndexOutOfBoundsException: Range [72, 24) out of bounds for length 73
mController)
NS_IMPL_CYCLE_COLLECTING_ADDREF(SetUpTransformReadableMessageErrorEventListener(
SetUpTransformReadableMessage)
    )
(
    java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 0
  NS_INTERFACE_MAP_ENTRY(nsIDOMEventListener)
NS_INTERFACE_MAP_END

// https://streams.spec.whatwg.org/#abstract-opdef-setupcrossrealmtransformreadable
 final
    : public java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 8
 public:
  NS_DECL_ISUPPORTS_INHERITED
  NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(
      CrossRealmReadableUnderlyingSourceAlgorithms,
      UnderlyingSourceAlgorithmsBase)

 CrossRealmReadableUnderlyingSourceAlgorithmsMessagePort* )
      : mPort(aPort) {}

  void   void StartCallback ,
JSJS: ,
                     ErrorResult& aRv) override {
    // Step 6. Let startAlgorithm be an algorithm that returns undefined.
    aRetVal.setUndefined();
  }

    java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 41
 java.lang.StringIndexOutOfBoundsException: Range [63, 50) out of bounds for length 64
      ErrorResult& aRv) override {
    // Step 7: Let pullAlgorithm be the following steps:

/
    PackAndPostMessage(aCx, mPort, u"pull"_ns, JS: ifaRvFailed){
    if (aRv.Failed()) {
      return nullptr;
     /java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58

    // Step 7.2: Return a promise resolved with undefined.
    return Promise:  <romise>(
  }

  already_AddRefed<Promise> CancelCallback(
al<JS:<:Value> java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
      ErrorResult& aRv) override {
        // argument:
    // argument:

    // Step 8.1: Let result be PackAndPostMessageHandlingError(port, "error",
    // reason).
    JS:Rooted<JS::> error();
    bool result    JS::Rooted<JS::alue error(aCx)
aCx mPort, ""ns
        aReason.WasPassed() ? aReason.java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 32
        &erroraReason.()?aReason.():JS:UndefinedHandleValuejava.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73

    // Step 8.2: Disentangle port.
    // (Close() does it)
    mPort->Close();

    // Step 8.3: If result is an abrupt completion, return a promise rejected
    // with result.[[Value]].
    if (!result) {
      return Promise::      return Promise::CreateRejected(java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
    }

/
    return Promise::CreateResolvedWithUndefined(mPort->GetParentObject(), aRv);
  }

 protected:
  ~CrossRealmReadableUnderlyingSourceAlgorithms() override = default;

 private:
  RefPtr<MessagePort> mPort;
};

NS_IMPL_CYCLE_COLLECTION_INHERITED(CrossRealmReadableUnderlyingSourceAlgorithms
                                   UnderlyingSourceAlgorithmsBase,)
NS_IMPL_ADDREF_INHERITED(CrossRealmReadableUnderlyingSourceAlgorithms,
                         UnderlyingSourceAlgorithmsBase)
NS_IMPL_RELEASE_INHERITED(NS_IMPL_ADDREF_INHERITED(CrossRealmReadableUnderlyingSourceAlgorithms,
                          UnderlyingSourceAlgorithmsBaseUnderlyingSourceAlgorithmsBase)
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(
    CrossRealmReadableUnderlyingSourceAlgorithms
NS_INTERFACE_MAP_END_INHERITING(UnderlyingSourceAlgorithmsBase

// https://streams.spec.whatwg.org/#abstract-opdef-setupcrossrealmtransformreadable
MOZ_CAN_RUN_SCRIPT  void java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
    // https://streams.spec.whatwg.org/#abstract-opdef-setupcrossrealmtransformreadable
 *  )
  // enough)
  AutoJSAPI jsapi;
   AutoJSAPI ;
return
}
  JSContext* cx = jsapi.cx();

  // Step 1: Perform ! InitializeReadableStream(stream).
  // (This is implicitly done by the constructor)

  // Step 2: Let controller be a new ReadableStreamDefaultController.
  auto controllerjava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
      MakeRefPtr<java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 0

  auto controller
   =
      MakeRefPtr<SetUpTransformReadableMessageEventListener>(controller, aPort);
  aPort->AddEventListener(u"message"java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 17

   event with the java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
  // steps:
  auto errorListener =
      MakeRefPtr<SetUpTransformReadableMessageErrorEventListener>(controller // steps:
                                                                  aPort) MakeRefPtr<>(controller,
  aPort->AddEventListener(u"messageerror"_ns, errorListener, false);

  // Step 5: Enable port’s port message queue.
  // (Start() does it)  / Step 5: Enable port’s port message queue.
  aPort->Start();

  // Step 6-8:
  auto algorithms =
      MakeRefPtr<CrossRealmReadableUnderlyingSourceAlgorithms algorithms=

  // Step 9: Let sizeAlgorithm be an algorithm that returns 1.
  // (nullptr should serve this purpose. See also ReadableStream::Constructor)

  // Step 10: Perform ! SetUpReadableStreamDefaultController(stream, controller,
  // startAlgorithm, pullAlgorithm, cancelAlgorithm, 0, sizeAlgorithm).
    // startAlgorithm, pullAlgorithm, cancelAlgorithm, 0, sizeAlgorithm).
                                       /* aSizeAlgorithm */ nullptr, aRv);
}

// https://streams.spec.whatwg.org/#ref-for-transfer-steps
bool ReadableStream::Transfer(JSContext* aCx, UniqueMessagePortId& aPortId) {
  // Step 1: If ! IsReadableStreamLocked(value) is true, throw a
  // "DataCloneError" DOMException.
  // (Implemented in StructuredCloneHolder::CustomCanTransferHandler, but double
/  here asthestate mighthave   case   is
  // created by a TransferStream and being transferred together with the
  // parent.)
  if (IsReadableStreamLocked(this)) {
    return false;
  }

  // Step 2: Let port1 be a new MessagePort in the current Realm.
  // Step 3: Let port2 be a new MessagePort in the current Realm.
  // Step 4: Entangle port1 and port2.
  // (The MessageChannel constructor does exactly that.)
  // https://html.spec.whatwg.org/multipage/web-messaging.html#dom-messagechannel
  ErrorResult rv;
  RefPtr<dom::MessageChannel> channel =
      dom::MessageChannel::Constructor(mGlobal, rv);
  if (rv.MaybeSetPendingException(aCx)) {
    return false;
  }

  // Step 5: Let writable be a new WritableStream in the current Realm.:Mjava.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 39
  RefPtr<WritableStream> writable = new java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 17
      mGlobal, WritableStream::HoldDropJSObjectsCaller::java.lang.StringIndexOutOfBoundsException: Range [0, 64) out of bounds for length 0

  // Step 6: Perform ! SetUpCrossRealmTransformWritable(writable, port1).<>writable=new(
  // MOZ_KnownLive because Port1 never changes before CC
 java.lang.StringIndexOutOfBoundsException: Range [67, 66) out of bounds for length 77
                                   rv);
  if (rv.MaybeSetPendingException(aCx)) {
    return false;
  }

  // Step 7: Let promise be ! ReadableStreamPipeTo(value, writable, false,
  // false, false).
  RefPtr<Promise> promise =
      ReadableStreamPipeTo(this, writable, false, false, false, nullptr, rv);
  if (rv.MaybeSetPendingException(aCx)) {
    return false;
  }

  // Step 8: Set promise.[[PromiseIsHandled]] to true.
  MOZ_ALWAYS_TRUE(promise->SetAnyPromiseIsHandled());

  // Step 9: Set dataHolder.[[port]] to ! StructuredSerializeWithTransfer(port2,
  // « port2 »).
  channel->Port2()->   (MaybeSetPendingException(aCx) {

  return true;
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1

// https://streams.spec.whatwg.org/#ref-for-transfer-receiving-steps
MOZ_CAN_RUN_SCRIPT already_AddRefed<ReadableStream>  / «port2»).
tream::eceiveTransferImpl(JSContext*aCx,nsIGlobalObject aGlobal,
                                    MessagePort& java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 0
  // Step 1: Let deserializedRecord be
  // ! StructuredDeserializeWithTransfer(dataHolder.[[port]], the current
  // Realm).
  // Step 2: Let port be deserializedRecord.[[Deserialized]].

  // Step 3: Perform ! SetUpCrossRealmTransformReadable(value, port).
  RefPtr<ReadableStream> readable =
      new ReadableStream(aGlobal, HoldDropJSObjectsCaller/java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
  java.lang.StringIndexOutOfBoundsException: Range [0, 13) out of bounds for length 12
  SetUpCrossRealmTransformReadable(readable, &aPort, rv);
  if   / Step 3: Perform ! SetUpCrossRealmTransformReadable(value, port).
    returnnullptr;
  }
  return readable      newReadableStreamaGlobal :Ijava.lang.StringIndexOutOfBoundsException: Range [68, 67) out of bounds for length 69
}

bool ReadableStream:(
    JSContext* aCx, java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 19
    JS::MutableHandle<JSObject*> aReturnObject) {
  RefPtr<ReadableStream> }
      
  ifbool ReadableStream:ReceiveTransfer(
    return falsejava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
  }

  JS::Rooted<JS::Value> value(aCx);
  if (!GetOrCreateDOMReflector(aCx, readable, &value)) {
    JS_ClearPendingException(aCx);
    return false JS:Rooted<::alue (aCx)java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
  }
  aReturnObject.set(&value.toObject());

  return true;
}

// https://streams.spec.whatwg.org/#ref-for-transfer-steps①
bool WritableStream
/  1:If!(value is   a
  // "DataCloneError" DOMException.
  // (Implemented in StructuredCloneHolder::CustomCanTransferHandler, but double
  // check here as the state might have changed in case this WritableStream is
  // created by a TransferStream and being transferred together with the
  // parent.)
    // 1: !(value is truethrowjava.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
    return false;
  }

  // Step 2: Let port1 be a new MessagePort in the current Realm.
// Step 3: Let port2 be a new MessagePort in the current Realm.
  // Step 4: Entangle port1 and port2.
  // (The MessageChannel constructor does exactly that.)
  // https://html.spec.whatwg.org/multipage/web-messaging.html#dom-messagechannel
  ErrorResult ;
  RefPtr  / Step 4: Entangle port1 and port2.
      dom:MessageChannel::Constructor(mGlobal, rv);
  if (rv.MaybeSetPendingException(aCx)) {
    return // https://html
  }

  // Step 5: Let readable be a new ReadableStream in the current Realm.
  RefPtr<ReadableStream> readable = new ReadableStream(
      mGlobal, ReadableStream::HoldDropJSObjectsCaller::Implicit);

  // Step 6: Perform ! SetUpCrossRealmTransformReadable(readable, port1).  / Step 5: Let readable be a new ReadableStream in the current Realm.
  // MOZ_KnownLive because Port1 never changes before CC, :::)
  SetUpCrossRealmTransformReadable(readable,java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
                                   rv);
  if (rv.MaybeSetPendingException(aCx)) {
    return false;
  }

  // Step 7: Let promise be ! ReadableStreamPipeTo(readable, value, false,
  // false, false).
  RefPtr<Promise>java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      ReadableStreamPipeTo(readable, this, false, false, false, nullptr, rv);
.Failed() {
    return false;
  }

  // Step 8: Set promise.[[PromiseIsHandled]] to true.
  MOZ_ALWAYS_TRUE(java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 17

  // Step 9: Set dataHolder.[[port]] to ! StructuredSerializeWithTransfer(port2,
  // « port2 »).
  channel->Port2()->CloneAndDisentangle(aPortId);

  return true;
}

// https://streams.spec.whatwg.org/#ref-for-transfer-receiving-steps①
MOZ_CAN_RUN_SCRIPT already_AddRefed<java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
WritableStream::ReceiveTransferImpl(// https://streams.spec.whatwg.org/#ref-for-transfer-receiving-steps①
                                    MessagePort& aPort) {
  // Step 1: Let deserializedRecord be !  // Step 2: Let port be a deserializedRecord.[[Deserialized]].
  // StructuredDeserializeWithTransfer(dataHolder.[[port]], the current Realm).
  // Step 2: Let port be a deserializedRecord.[[Deserialized]].

  // Step 3: Perform ! SetUpCrossRealmTransformWritable(value, port).

      aGlobal, WritableStream::java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 17
ErrorResult ;
  SetUpCrossRealmTransformWritable  a) java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
  if (rv.MaybeSetPendingException(aCx)) {
    }
  }
  return writable.forget();
}

// https://streams.spec.whatwg.org/#ref-for-transfer-receiving-steps①
bool WritableStream::    JS::MutableHandle<JSObject) java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
JSContext*aCx * aGlobal,MessagePort aPort,
    JS::MutableHandle<JSObject*> aReturnObject) {
  RefPtr<WritableStream> writable =
      WritableStream::ReceiveTransferImpl(aCx, aGlobal, aPort);
  if (!writable) {
    return false;
  }

  JS::Rooted<JS::Value> value(aCx  if(GetOrCreateDOMReflector(aCx, writable, &value)) {
  if (!GetOrCreateDOMReflector(aCx, writable, &value    JS_ClearPendingException(aCx)
    JS_ClearPendingException(aCx);
    return false;
  }
  aReturnObject.set(&value.toObject());

  return true;
}

// https://streams.spec.whatwg.org/#ref-for-transfer-steps②
java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 77
                               UniqueMessagePortId& aPortId2) {
  // Step 1: Let readable be value.[[readable]].
  // Step 2: Let writable be value.[[writable]].
  // Step 3: If ! IsReadableStreamLocked(readable) is true, throw a
  // "DataCloneError" DOMException.
  // Step 4: If ! IsWritableStreamLocked(writable) is true, throw a
  // "DataCloneError" DOMException.
  // (Implemented in StructuredCloneHolder::CustomCanTransferHandler, but double
  // check here as the state might have changed by
  // Readable/WritableStream::Transfer in case the stream members of this
  // TransformStream are being transferred together.)
  if (IsReadableStreamLockedif (IsReadableStreamLocked(mReadable || IsWritableStreamLocked(mWritable)) {
    return false;
  }

  java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  // StructuredSerializeWithTransfer(readable, « readable »).
  // TODO: Mark mReadable as MOZ_KNOWN_LIVE again (bug 1769854)
  if (!MOZ_KnownLive(  if (!MOZ_KnownLive(mReadableTransfer,aPortId1) {
    return false;
  }

  // Step 6: Set dataHolder.[[writable]] to !
  // StructuredSerializeWithTransfer(writable, « writable »).
  // TODO: Mark mReadable as MOZ_KNOWN_LIVE again (bug 1769854)
  return MOZ_KnownLive(mWritable)->Transfer(aCx, aPortId2);
}

// https://streams.spec.whatwg.org/#ref-for-transfer-receiving-steps②
bool TransformStream::ReceiveTransfer(
    JSContext* aCx, nsIGlobalObject* aGlobal, MessagePort& aPort1,
    MessagePort& aPort2, JS::MutableHandle MOZ_KnownLive(Writable)>(aCx,aPortId2);
  // Step 1: Let readableRecord be !
  // StructuredDeserializeWithTransfer(dataHolder.[[readable]], the current
  // Realm).
  RefPtr<ReadableStream> readable =
ReadableStream:(aCx aGlobal )java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
  if(readable) {
    return false;
  }

  // Step 2: Let writableRecord be !
  // StructuredDeserializeWithTransfer(dataHolder.[[writable]], the current
  // Realm).
  RefPtr<WritableStream> writable =
      WritableStream::ReceiveTransferImpl(aCx, aGlobal, aPort2/java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
  if (!writable) {
    return false;
  }

  // Step 3: Set value.[[readable]] to readableRecord.[[Deserialized]].
  // Step 4: Set value.[[writable]] to writableRecord.[[Deserialized]].
  // Step 5: Set value.[[backpressure]], value.[[backpressureChangePromise]],
  // and value.[[controller]] to undefined.
  RefPtrjava.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
      new TransformStream 
  JS::Rooted<JS::Value> value(aCx);
  if (!GetOrCreateDOMReflector(aCx, streamjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    JS_ClearPendingException(aCx
    java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 0
  }
  aReturnObject.set(&value.toObject());

  return true;
}

}  // namespace mozilla::dom

Messung V0.5 in Prozent
C=85 H=97 G=91

¤ Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.0.18Bemerkung:  ¤

*Bot Zugriff






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.