From 1f68394d204dc7c7fece80403898f441036c108f Mon Sep 17 00:00:00 2001 From: Domenic Denicola Date: Thu, 2 Jun 2016 23:46:46 -0400 Subject: [PATCH] Fix incumbent settings object handling This is the counterpart to https://github.com/whatwg/html/pull/1189, and properly calls in to HTML's new hooks to handle tracking the incumbent settings object using Web IDL's callback context mechanisms. --- index.html | 86 ++++++++++++++++++++++++++------------------- index.xml | 101 +++++++++++++++++++++++++++++++++++------------------ 2 files changed, 117 insertions(+), 70 deletions(-) diff --git a/index.html b/index.html index f7860a56..9a7e38f3 100644 --- a/index.html +++ b/index.html @@ -19,7 +19,7 @@ -
W3C

Web IDL (Second Edition)

W3C Editor’s Draft 19 May 2016

This Version:
http://heycam.github.io/webidl/
Latest Version:
http://www.w3.org/TR/WebIDL/
Previous Versions:
http://www.w3.org/TR/2012/CR-WebIDL-20120419/
http://www.w3.org/TR/2012/WD-WebIDL-20120207/
http://www.w3.org/TR/2011/WD-WebIDL-20110927/
http://www.w3.org/TR/2011/WD-WebIDL-20110712/
http://www.w3.org/TR/2010/WD-WebIDL-20101021/
http://www.w3.org/TR/2008/WD-WebIDL-20081219/
http://www.w3.org/TR/2008/WD-WebIDL-20080829/
http://www.w3.org/TR/2008/WD-DOM-Bindings-20080410/
http://www.w3.org/TR/2007/WD-DOM-Bindings-20071017/
Participate:
+
@@ -72,7 +72,7 @@

Status of This Document

report can be found in the W3C technical reports index at http://www.w3.org/TR/.

- This document is the 19 May 2016 Editor’s Draft of the + This document is the 2 June 2016 Editor’s Draft of the Web IDL (Second Edition) specification. Please send comments about this document to @@ -5611,12 +5611,9 @@

3.10.19. Interface types

the time the language binding specific object reference is converted to an IDL value.

Note
-

For ECMAScript objects, the callback context is used - to hold a reference to the - incumbent script - [HTML] at the time the Object value - is converted to an IDL callback interface type value. See - section 4.2.20 below.

+

For ECMAScript objects, the callback + context is used to hold a reference to the incumbent settings object [HTML] at the time the Object value + is converted to an IDL callback interface type value. See section 4.2.20 below.

There is no way to represent a constant object reference value for @@ -5687,12 +5684,10 @@

3.10.22. Callback function types

reference and a callback context.

Note
-

As with callback interface types, the callback context is used - to hold a reference to the - incumbent script - [HTML] at the time an ECMAScript Object value - is converted to an IDL callback function type value. See - section 4.2.23 below.

+

As with callback interface types, the callback context is used to hold a + reference to the incumbent settings object [HTML] at + the time an ECMAScript Object value is converted to an IDL + callback function type value. See section 4.2.23 below.

There is no way to represent a constant callback function @@ -7397,11 +7392,8 @@

4.2.20. Interface types

  • If Type(V) is not Object, then throw a TypeError.
  • If V is a platform object that implements I, then return the IDL interface type value that represents a reference to that platform object.
  • If V is a user object - that is considered to implement I according to the rules in - section 4.9, - then return the IDL interface type value that represents a reference to that user object, - with the incumbent script - as the callback context. [HTML]
  • + that is considered to implement I according to the rules in section 4.9, then return the IDL interface type value that represents a reference to that + user object, with the incumbent settings object as the callback context. [HTML]
  • Throw a TypeError.
  • @@ -7560,11 +7552,9 @@

    4.2.23. Callback function types

    callback function that is annotated with [TreatNonObjectAsNull], then throw a TypeError. -
  • Return the IDL callback - function type value that represents a reference to the same - object that V represents, - with the incumbent script - as the callback context. [HTML].
  • +
  • Return the IDL callback function type value + that represents a reference to the same object that V represents, with the + incumbent settings object as the callback context. [HTML].
  • The result of converting @@ -14060,10 +14050,14 @@

    4.9. User objects implementing callback interfaces

  • Let realm be O's associated Realm.
  • -
  • Let settings be realm's settings +
  • Let relevant settings be realm's settings object.
  • -
  • Prepare to run script with settings.
  • +
  • Let stored settings be value's callback context.
  • + +
  • Prepare to run script with relevant settings.
  • + +
  • Prepare to run a callback with stored settings.
  • Determine the implementation of the operation, X: @@ -14148,7 +14142,9 @@

    4.9. User objects implementing callback interfaces

    point completion will be set to an ECMAScript completion value.
      -
    1. Clean up after running script with settings.
    2. +
    3. Clean up after running a callback with stored settings.
    4. + +
    5. Clean up after running script with relevant settings.
    6. If completion is a normal completion, return completion.
    7. @@ -14180,10 +14176,14 @@

      4.9. User objects implementing callback interfaces

    8. Let realm be O's associated Realm.
    9. -
    10. Let settings be realm's settings +
    11. Let relevant settings be realm's settings object.
    12. -
    13. Prepare to run script with settings.
    14. +
    15. Let stored settings be object's callback context.
    16. + +
    17. Prepare to run script with relevant settings.
    18. + +
    19. Prepare to run a callback with stored settings.
    20. Let getResult be Get(O, attributeName).
    21. @@ -14199,7 +14199,9 @@

      4.9. User objects implementing callback interfaces

      point completion will be set to an ECMAScript completion value.
        -
      1. Clean up after running script with settings.
      2. +
      3. Clean up after running a callback with stored settings.
      4. + +
      5. Clean up after running script with relevant settings.
      6. If completion is a normal completion, return completion.
      7. @@ -14234,10 +14236,14 @@

        4.9. User objects implementing callback interfaces

      8. Let realm be O's associated Realm.
      9. -
      10. Let settings be realm's settings +
      11. Let relevant settings be realm's settings object.
      12. -
      13. Prepare to run script with settings.
      14. +
      15. Let stored settings be object's callback context.
      16. + +
      17. Prepare to run script with relevant settings.
      18. + +
      19. Prepare to run a callback with stored settings.
      20. Let convertResult be the result of converting value to an ECMAScript value.
      21. @@ -14254,7 +14260,9 @@

        4.9. User objects implementing callback interfaces

        either an abrupt completion or a normal completion for the value true (as returned by Set).
          -
        1. Clean up after running script with settings.
        2. +
        3. Clean up after running a callback with stored settings.
        4. + +
        5. Clean up after running script with relevant settings.
        6. If completion is an abrupt completion, return completion.
        7. @@ -14312,10 +14320,14 @@

          4.10. Invoking callback functions

        8. Let realm be F's associated Realm.
        9. -
        10. Let settings be realm's settings +
        11. Let relevant settings be realm's settings object.
        12. -
        13. Prepare to run script with settings.
        14. +
        15. Let stored settings be callable's callback context.
        16. + +
        17. Prepare to run script with relevant settings.
        18. + +
        19. Prepare to run a callback with stored settings.
        20. Let esArgs be an empty List of ECMAScript values.
        21. @@ -14367,7 +14379,9 @@

          4.10. Invoking callback functions

          point completion will be set to an ECMAScript completion value.
            -
          1. Clean up after running script with settings.
          2. +
          3. Clean up after running a callback with stored settings.
          4. + +
          5. Clean up after running script with relevant settings.
          6. If completion is a normal completion, return completion.
          7. diff --git a/index.xml b/index.xml index aefa238f..7f72c730 100644 --- a/index.xml +++ b/index.xml @@ -163,6 +163,12 @@ href='https://html.spec.whatwg.org/multipage/webappapis.html#prepare-to-run-script'/> + + + @@ -5571,12 +5577,11 @@ interface Person { the time the language binding specific object reference is converted to an IDL value.

            -

            For ECMAScript objects, the callback context is used - to hold a reference to the - incumbent script - [HTML] at the time the Object value - is converted to an IDL callback interface type value. See - section .

            +

            For ECMAScript objects, the callback + context is used to hold a reference to the incumbent settings object [HTML] at the time the Object value + is converted to an IDL callback interface type value. See section .

            There is no way to represent a constant object reference value for @@ -5647,12 +5652,12 @@ interface Person { reference and a callback context.

            -

            As with callback interface types, the callback context is used - to hold a reference to the - incumbent script - [HTML] at the time an ECMAScript Object value - is converted to an IDL callback function type value. See - section .

            +

            As with callback interface types, the callback context is used to hold a + reference to the incumbent settings object [HTML] at + the time an ECMAScript Object value is converted to an IDL + callback function type value. See section .

            There is no way to represent a constant callback function @@ -7273,11 +7278,11 @@ iframe.appendChild instanceof w.Function; // Evaluates to

          8. If Type(V) is not Object, then throw a TypeError.
          9. If V is a platform object that implements I, then return the IDL interface type value that represents a reference to that platform object.
          10. If V is a user object - that is considered to implement I according to the rules in - section , - then return the IDL interface type value that represents a reference to that user object, - with the incumbent script - as the callback context. [HTML]
          11. + that is considered to implement I according to the rules in section , then return the IDL interface type value that represents a reference to that + user object, with the incumbent settings object as the callback context. [HTML]
          12. Throw a TypeError.

          @@ -7439,11 +7444,11 @@ iframe.appendChild instanceof w.Function; // Evaluates to callback function that is annotated with [TreatNonObjectAsNull], then throw a TypeError. -

        22. Return the IDL callback - function type value that represents a reference to the same - object that V represents, - with the incumbent script - as the callback context. [HTML].
        23. +
        24. Return the IDL callback function type value + that represents a reference to the same object that V represents, with the + incumbent settings object as the callback context. [HTML].

        The result of converting @@ -13967,11 +13972,16 @@ C implements A;

      22. Let realm be O's associated Realm.
      23. -
      24. Let settings be realm's Let relevant settings be realm's settings object.
      25. -
      26. Prepare to run script with settings.
      27. +
      28. Let stored settings be value's callback context.
      29. + +
      30. Prepare to run script with relevant settings.
      31. + +
      32. Prepare to run a callback with stored settings.
      33. Determine the implementation of the operation, X: @@ -14063,7 +14073,9 @@ C implements A; point completion will be set to an ECMAScript completion value.
          -
        1. Clean up after running script with settings.
        2. +
        3. Clean up after running a callback with stored settings.
        4. + +
        5. Clean up after running script with relevant settings.
        6. If completion is a normal completion, return completion.
        7. @@ -14100,11 +14112,16 @@ C implements A;
        8. Let realm be O's associated Realm.
        9. -
        10. Let settings be realm's Let relevant settings be realm's settings object.
        11. -
        12. Prepare to run script with settings.
        13. +
        14. Let stored settings be object's callback context.
        15. + +
        16. Prepare to run script with relevant settings.
        17. + +
        18. Prepare to run a callback with stored settings.
        19. Let getResult be Get(O, attributeName).
        20. @@ -14122,7 +14139,9 @@ C implements A; point completion will be set to an ECMAScript completion value.
            -
          1. Clean up after running script with settings.
          2. +
          3. Clean up after running a callback with stored settings.
          4. + +
          5. Clean up after running script with relevant settings.
          6. If completion is a normal completion, return completion.
          7. @@ -14160,11 +14179,16 @@ C implements A;
          8. Let realm be O's associated Realm.
          9. -
          10. Let settings be realm's Let relevant settings be realm's settings object.
          11. -
          12. Prepare to run script with settings.
          13. +
          14. Let stored settings be object's callback context.
          15. + +
          16. Prepare to run script with relevant settings.
          17. + +
          18. Prepare to run a callback with stored settings.
          19. Let convertResult be the result of converting value to an @@ -14184,7 +14208,9 @@ C implements A; class='esvalue'>true (as returned by Set).
              -
            1. Clean up after running script with settings.
            2. +
            3. Clean up after running a callback with stored settings.
            4. + +
            5. Clean up after running script with relevant settings.
            6. If completion is an abrupt completion, return completion.
            7. @@ -14248,11 +14274,16 @@ C implements A;
            8. Let realm be F's associated Realm.
            9. -
            10. Let settings be realm's Let relevant settings be realm's settings object.
            11. -
            12. Prepare to run script with settings.
            13. +
            14. Let stored settings be callable's callback context.
            15. + +
            16. Prepare to run script with relevant settings.
            17. + +
            18. Prepare to run a callback with stored settings.
            19. Let esArgs be an empty List of ECMAScript values.
            20. @@ -14308,7 +14339,9 @@ C implements A; point completion will be set to an ECMAScript completion value.
                -
              1. Clean up after running script with settings.
              2. +
              3. Clean up after running a callback with stored settings.
              4. + +
              5. Clean up after running script with relevant settings.
              6. If completion is a normal completion, return completion.