Change in dart/sdk[main]: [io/http] Add a HTTP Client parameter on WebSocket.connect to allow a...

41 views
Skip to first unread message

Copybara Prod (Gerrit)

unread,
Sep 9, 2021, 1:02:25 PM9/9/21
to rev...@dartlang.org

Copybara Prod uploaded patch set #9 to this change.

View Change

[io/http] Add a HTTP Client parameter on WebSocket.connect to allow a custom HTTP Client for web socket connections.

The WebSocket abstract class was changed to allow an optional parameter called customClient that takes in a HTTPClient and passes it to the WebSocket Implementation.
The WebSocket implementation takes the customClient, checks if its null, if its not null, it uses the customClient in place of the static HTTPClient that the WebSocket Implementation offers.
This custom client does not override the static HTTPClient, so all previous functionality remains the same when the customClient is not present.

TEST=testStaticClientUserAgentStaysTheSame() in web_socket_test.dart in standalone_2/standalone
Test=new SecurityConfiguration(secure: true).runTests(); in web_socket_error_test.dart and web_socket_test.dart in standalone_2/standalone

Bug: https://github.com/dart-lang/sdk/issues/34284

Closes https://github.com/dart-lang/sdk/pull/46040
https://github.com/dart-lang/sdk/pull/46040

GitOrigin-RevId: cafe58e3c0c4c5f8a48bfc10f1b1aade29246893
Change-Id: I042b1e3fa7a4effed076c0deeec1f86af0dfe26d
---
M sdk/lib/_http/websocket.dart
M sdk/lib/_http/websocket_impl.dart
M tests/standalone/io/web_socket_error_test.dart
M tests/standalone/io/web_socket_test.dart
M tests/standalone_2/io/web_socket_test.dart
5 files changed, 64 insertions(+), 20 deletions(-)

To view, visit change 200262. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: sdk
Gerrit-Branch: main
Gerrit-Change-Id: I042b1e3fa7a4effed076c0deeec1f86af0dfe26d
Gerrit-Change-Number: 200262
Gerrit-PatchSet: 9
Gerrit-Owner: Copybara Prod <copybara-wor...@google.com>
Gerrit-Reviewer: Alexander Aprelev <a...@google.com>
Gerrit-Reviewer: Siva Annamalai <as...@google.com>
Gerrit-CC: Dart Reviews <rev...@dartlang.org>
Gerrit-CC: Liam Appelbe <li...@google.com>
Gerrit-CC: Michael Thomsen <m...@google.com>
Gerrit-MessageType: newpatchset

Copybara Prod (Gerrit)

unread,
Sep 9, 2021, 1:42:02 PM9/9/21
to rev...@dartlang.org

Copybara Prod uploaded patch set #10 to this change.

View Change

[io/http] Add a HTTP Client parameter on WebSocket.connect to allow a custom HTTP Client for web socket connections.

The WebSocket abstract class was changed to allow an optional parameter called customClient that takes in a HTTPClient and passes it to the WebSocket Implementation.
The WebSocket implementation takes the customClient, checks if its null, if its not null, it uses the customClient in place of the static HTTPClient that the WebSocket Implementation offers.
This custom client does not override the static HTTPClient, so all previous functionality remains the same when the customClient is not present.

TEST=testStaticClientUserAgentStaysTheSame() in web_socket_test.dart in standalone_2/standalone
Test=new SecurityConfiguration(secure: true).runTests(); in web_socket_error_test.dart and web_socket_test.dart in standalone_2/standalone

Bug: https://github.com/dart-lang/sdk/issues/34284

Closes https://github.com/dart-lang/sdk/pull/46040
https://github.com/dart-lang/sdk/pull/46040

GitOrigin-RevId: f022c87243efd999faca9060469b691fdb23217f

Change-Id: I042b1e3fa7a4effed076c0deeec1f86af0dfe26d
---
M sdk/lib/_http/websocket.dart
M sdk/lib/_http/websocket_impl.dart
M tests/standalone/io/web_socket_error_test.dart
M tests/standalone/io/web_socket_test.dart
M tests/standalone_2/io/web_socket_test.dart
5 files changed, 58 insertions(+), 19 deletions(-)

To view, visit change 200262. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: sdk
Gerrit-Branch: main
Gerrit-Change-Id: I042b1e3fa7a4effed076c0deeec1f86af0dfe26d
Gerrit-Change-Number: 200262
Gerrit-PatchSet: 10

Dart CI (Gerrit)

unread,
Sep 9, 2021, 2:10:11 PM9/9/21
to Copybara Prod, rev...@dartlang.org, Alexander Aprelev, commi...@chromium.org, Siva Annamalai, Liam Appelbe, Michael Thomsen

go/dart-cbuild result: SUCCESS

Details: https://goto.google.com/dart-cbuild/find/d2ddb5df77ee80712beb127b9ccff944edbfca9c

View Change

    To view, visit change 200262. To unsubscribe, or for help writing mail filters, visit settings.

    Gerrit-Project: sdk
    Gerrit-Branch: main
    Gerrit-Change-Id: I042b1e3fa7a4effed076c0deeec1f86af0dfe26d
    Gerrit-Change-Number: 200262
    Gerrit-PatchSet: 10
    Gerrit-Owner: Copybara Prod <copybara-wor...@google.com>
    Gerrit-Reviewer: Alexander Aprelev <a...@google.com>
    Gerrit-Reviewer: Siva Annamalai <as...@google.com>
    Gerrit-CC: Dart Reviews <rev...@dartlang.org>
    Gerrit-CC: Liam Appelbe <li...@google.com>
    Gerrit-CC: Michael Thomsen <m...@google.com>
    Gerrit-Comment-Date: Thu, 09 Sep 2021 18:10:07 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: No
    Gerrit-MessageType: comment

    Dart CI (Gerrit)

    unread,
    Sep 9, 2021, 2:42:59 PM9/9/21
    to Copybara Prod, rev...@dartlang.org, Alexander Aprelev, commi...@chromium.org, Siva Annamalai, Liam Appelbe, Michael Thomsen

    go/dart-cbuild result: SUCCESS

    Details: https://goto.google.com/dart-cbuild/find/32cc13eee6bfcc09abc16dbc19bf3de4011bab6a

    View Change

      To view, visit change 200262. To unsubscribe, or for help writing mail filters, visit settings.

      Gerrit-Project: sdk
      Gerrit-Branch: main
      Gerrit-Change-Id: I042b1e3fa7a4effed076c0deeec1f86af0dfe26d
      Gerrit-Change-Number: 200262
      Gerrit-PatchSet: 10
      Gerrit-Owner: Copybara Prod <copybara-wor...@google.com>
      Gerrit-Reviewer: Alexander Aprelev <a...@google.com>
      Gerrit-Reviewer: Siva Annamalai <as...@google.com>
      Gerrit-CC: Dart Reviews <rev...@dartlang.org>
      Gerrit-CC: Liam Appelbe <li...@google.com>
      Gerrit-CC: Michael Thomsen <m...@google.com>
      Gerrit-Comment-Date: Thu, 09 Sep 2021 18:42:54 +0000

      Dart CI (Gerrit)

      unread,
      Sep 9, 2021, 2:43:07 PM9/9/21
      to Copybara Prod, rev...@dartlang.org, Alexander Aprelev, commi...@chromium.org, Siva Annamalai, Liam Appelbe, Michael Thomsen

      go/dart-cbuild result: SUCCESS

      Details: https://goto.google.com/dart-cbuild/find/779bd4d7632037a0fa694cef55b552daf2434d6e

      View Change

        To view, visit change 200262. To unsubscribe, or for help writing mail filters, visit settings.

        Gerrit-Project: sdk
        Gerrit-Branch: main
        Gerrit-Change-Id: I042b1e3fa7a4effed076c0deeec1f86af0dfe26d
        Gerrit-Change-Number: 200262
        Gerrit-PatchSet: 10
        Gerrit-Owner: Copybara Prod <copybara-wor...@google.com>
        Gerrit-Reviewer: Alexander Aprelev <a...@google.com>
        Gerrit-Reviewer: Siva Annamalai <as...@google.com>
        Gerrit-CC: Dart Reviews <rev...@dartlang.org>
        Gerrit-CC: Liam Appelbe <li...@google.com>
        Gerrit-CC: Michael Thomsen <m...@google.com>
        Gerrit-Comment-Date: Thu, 09 Sep 2021 18:43:03 +0000

        Copybara Prod (Gerrit)

        unread,
        Sep 9, 2021, 2:51:05 PM9/9/21
        to rev...@dartlang.org

        Copybara Prod uploaded patch set #11 to this change.

        View Change

        [io/http] Add a HTTP Client parameter on WebSocket.connect to allow a custom HTTP Client for web socket connections.

        The WebSocket abstract class was changed to allow an optional parameter called customClient that takes in a HTTPClient and passes it to the WebSocket Implementation.
        The WebSocket implementation takes the customClient, checks if its null, if its not null, it uses the customClient in place of the static HTTPClient that the WebSocket Implementation offers.
        This custom client does not override the static HTTPClient, so all previous functionality remains the same when the customClient is not present.

        TEST=testStaticClientUserAgentStaysTheSame() in web_socket_test.dart in standalone_2/standalone
        TEST=new SecurityConfiguration(secure: true).runTests(); in web_socket_error_test.dart and web_socket_test.dart in standalone_2/standalone
        GitOrigin-RevId: f4df7dd921393b0a45cf5319f1e436e38e046424

        Change-Id: I042b1e3fa7a4effed076c0deeec1f86af0dfe26d
        ---
        M sdk/lib/_http/websocket.dart
        M sdk/lib/_http/websocket_impl.dart
        M tests/standalone/io/web_socket_error_test.dart
        M tests/standalone/io/web_socket_test.dart
        M tests/standalone_2/io/web_socket_test.dart
        5 files changed, 58 insertions(+), 19 deletions(-)

        To view, visit change 200262. To unsubscribe, or for help writing mail filters, visit settings.

        Gerrit-Project: sdk
        Gerrit-Branch: main
        Gerrit-Change-Id: I042b1e3fa7a4effed076c0deeec1f86af0dfe26d
        Gerrit-Change-Number: 200262
        Gerrit-PatchSet: 11
        Gerrit-Owner: Copybara Prod <copybara-wor...@google.com>
        Gerrit-Reviewer: Alexander Aprelev <a...@google.com>
        Gerrit-Reviewer: Siva Annamalai <as...@google.com>
        Gerrit-CC: Dart Reviews <rev...@dartlang.org>
        Gerrit-CC: Liam Appelbe <li...@google.com>
        Gerrit-CC: Michael Thomsen <m...@google.com>
        Gerrit-MessageType: newpatchset

        Copybara Prod (Gerrit)

        unread,
        Sep 9, 2021, 6:29:53 PM9/9/21
        to rev...@dartlang.org

        Copybara Prod uploaded patch set #12 to this change.

        View Change

        [io/http] Add a HTTP Client parameter on WebSocket.connect to allow a custom HTTP Client for web socket connections.

        The WebSocket abstract class was changed to allow an optional parameter called customClient that takes in a HTTPClient and passes it to the WebSocket Implementation.
        The WebSocket implementation takes the customClient, checks if its null, if its not null, it uses the customClient in place of the static HTTPClient that the WebSocket Implementation offers.
        This custom client does not override the static HTTPClient, so all previous functionality remains the same when the customClient is not present.

        TEST=testStaticClientUserAgentStaysTheSame() in web_socket_test.dart in standalone_2/standalone
        TEST=new SecurityConfiguration(secure: true).runTests(); in web_socket_error_test.dart and web_socket_test.dart in standalone_2/standalone

        Bug: https://github.com/dart-lang/sdk/issues/34284

        Closes https://github.com/dart-lang/sdk/pull/46040
        https://github.com/dart-lang/sdk/pull/46040

        GitOrigin-RevId: e697216ae4bfa7753857ff8954f07731229bb2a2

        Change-Id: I042b1e3fa7a4effed076c0deeec1f86af0dfe26d
        ---
        M sdk/lib/_http/websocket.dart
        M sdk/lib/_http/websocket_impl.dart
        M tests/standalone/io/web_socket_error_test.dart
        M tests/standalone/io/web_socket_test.dart
        M tests/standalone_2/io/web_socket_test.dart
        5 files changed, 58 insertions(+), 19 deletions(-)

        To view, visit change 200262. To unsubscribe, or for help writing mail filters, visit settings.

        Gerrit-Project: sdk
        Gerrit-Branch: main
        Gerrit-Change-Id: I042b1e3fa7a4effed076c0deeec1f86af0dfe26d
        Gerrit-Change-Number: 200262
        Gerrit-PatchSet: 12

        Dart CI (Gerrit)

        unread,
        Sep 9, 2021, 7:25:47 PM9/9/21
        to Copybara Prod, rev...@dartlang.org, Alexander Aprelev, commi...@chromium.org, Siva Annamalai, Liam Appelbe, Michael Thomsen

        go/dart-cbuild result: SUCCESS

        Details: https://goto.google.com/dart-cbuild/find/a0207244522e5f1f7170af7d7d106b651e47732e

        View Change

          To view, visit change 200262. To unsubscribe, or for help writing mail filters, visit settings.

          Gerrit-Project: sdk
          Gerrit-Branch: main
          Gerrit-Change-Id: I042b1e3fa7a4effed076c0deeec1f86af0dfe26d
          Gerrit-Change-Number: 200262
          Gerrit-PatchSet: 12
          Gerrit-Owner: Copybara Prod <copybara-wor...@google.com>
          Gerrit-Reviewer: Alexander Aprelev <a...@google.com>
          Gerrit-Reviewer: Siva Annamalai <as...@google.com>
          Gerrit-CC: Dart Reviews <rev...@dartlang.org>
          Gerrit-CC: Liam Appelbe <li...@google.com>
          Gerrit-CC: Michael Thomsen <m...@google.com>
          Gerrit-Comment-Date: Thu, 09 Sep 2021 23:25:44 +0000

          Copybara Prod (Gerrit)

          unread,
          Sep 14, 2021, 7:18:31 PM9/14/21
          to rev...@dartlang.org

          Copybara Prod uploaded patch set #13 to this change.

          View Change

          [io/http] Add a HTTP Client parameter on WebSocket.connect to allow a custom HTTP Client for web socket connections.

          The WebSocket abstract class was changed to allow an optional parameter called customClient that takes in a HTTPClient and passes it to the WebSocket Implementation.
          The WebSocket implementation takes the customClient, checks if its null, if its not null, it uses the customClient in place of the static HTTPClient that the WebSocket Implementation offers.
          This custom client does not override the static HTTPClient, so all previous functionality remains the same when the customClient is not present.

          TEST=testStaticClientUserAgentStaysTheSame() in web_socket_test.dart in standalone_2/standalone
          TEST=new SecurityConfiguration(secure: true).runTests(); in web_socket_error_test.dart and web_socket_test.dart in standalone_2/standalone

          Bug: https://github.com/dart-lang/sdk/issues/34284

          Closes https://github.com/dart-lang/sdk/pull/46040
          https://github.com/dart-lang/sdk/pull/46040

          GitOrigin-RevId: b7c163820ba6766b874dbffc7430ce96a5779768

          Change-Id: I042b1e3fa7a4effed076c0deeec1f86af0dfe26d
          ---
          M sdk/lib/_http/websocket.dart
          M sdk/lib/_http/websocket_impl.dart
          M tests/standalone/io/web_socket_error_test.dart
          M tests/standalone/io/web_socket_test.dart
          M tests/standalone_2/io/web_socket_test.dart
          5 files changed, 80 insertions(+), 41 deletions(-)

          To view, visit change 200262. To unsubscribe, or for help writing mail filters, visit settings.

          Gerrit-Project: sdk
          Gerrit-Branch: main
          Gerrit-Change-Id: I042b1e3fa7a4effed076c0deeec1f86af0dfe26d
          Gerrit-Change-Number: 200262
          Gerrit-PatchSet: 13
          Gerrit-Owner: Copybara Prod <copybara-wor...@google.com>
          Gerrit-Reviewer: Alexander Aprelev <a...@google.com>
          Gerrit-Reviewer: Siva Annamalai <as...@google.com>
          Gerrit-CC: Dart Reviews <rev...@dartlang.org>
          Gerrit-CC: Liam Appelbe <li...@google.com>
          Gerrit-CC: Michael Thomsen <m...@google.com>
          Gerrit-MessageType: newpatchset

          Copybara Prod (Gerrit)

          unread,
          Sep 14, 2021, 8:07:12 PM9/14/21
          to rev...@dartlang.org

          Copybara Prod uploaded patch set #14 to this change.

          View Change

          [io/http] Add a HTTP Client parameter on WebSocket.connect to allow a custom HTTP Client for web socket connections.

          The WebSocket abstract class was changed to allow an optional parameter called customClient that takes in a HTTPClient and passes it to the WebSocket Implementation.
          The WebSocket implementation takes the customClient, checks if its null, if its not null, it uses the customClient in place of the static HTTPClient that the WebSocket Implementation offers.
          This custom client does not override the static HTTPClient, so all previous functionality remains the same when the customClient is not present.

          TEST=testStaticClientUserAgentStaysTheSame() in web_socket_test.dart in standalone_2/standalone
          TEST=new SecurityConfiguration(secure: true).runTests(); in web_socket_error_test.dart and web_socket_test.dart in standalone_2/standalone

          Bug: https://github.com/dart-lang/sdk/issues/34284

          Closes https://github.com/dart-lang/sdk/pull/46040
          https://github.com/dart-lang/sdk/pull/46040

          GitOrigin-RevId: 58fed38baa606a8a492d3729190afa5009cc2409

          Change-Id: I042b1e3fa7a4effed076c0deeec1f86af0dfe26d
          ---
          M sdk/lib/_http/websocket.dart
          M sdk/lib/_http/websocket_impl.dart
          M tests/standalone/io/web_socket_error_test.dart
          M tests/standalone/io/web_socket_test.dart
          M tests/standalone_2/io/web_socket_test.dart
          5 files changed, 82 insertions(+), 45 deletions(-)

          To view, visit change 200262. To unsubscribe, or for help writing mail filters, visit settings.

          Gerrit-Project: sdk
          Gerrit-Branch: main
          Gerrit-Change-Id: I042b1e3fa7a4effed076c0deeec1f86af0dfe26d
          Gerrit-Change-Number: 200262
          Gerrit-PatchSet: 14

          Dart CI (Gerrit)

          unread,
          Sep 14, 2021, 8:24:48 PM9/14/21
          to Copybara Prod, rev...@dartlang.org, Alexander Aprelev, commi...@chromium.org, Siva Annamalai, Liam Appelbe, Michael Thomsen

          go/dart-cbuild result: SUCCESS

          Details: https://goto.google.com/dart-cbuild/find/8392e0b6380aef8e926b3f841e08ee6af4fe7c38

          View Change

            To view, visit change 200262. To unsubscribe, or for help writing mail filters, visit settings.

            Gerrit-Project: sdk
            Gerrit-Branch: main
            Gerrit-Change-Id: I042b1e3fa7a4effed076c0deeec1f86af0dfe26d
            Gerrit-Change-Number: 200262
            Gerrit-PatchSet: 14
            Gerrit-Owner: Copybara Prod <copybara-wor...@google.com>
            Gerrit-Reviewer: Alexander Aprelev <a...@google.com>
            Gerrit-Reviewer: Siva Annamalai <as...@google.com>
            Gerrit-CC: Dart Reviews <rev...@dartlang.org>
            Gerrit-CC: Liam Appelbe <li...@google.com>
            Gerrit-CC: Michael Thomsen <m...@google.com>
            Gerrit-Comment-Date: Wed, 15 Sep 2021 00:24:44 +0000

            Dart CI (Gerrit)

            unread,
            Sep 14, 2021, 8:40:42 PM9/14/21
            to Copybara Prod, rev...@dartlang.org, Alexander Aprelev, commi...@chromium.org, Siva Annamalai, Liam Appelbe, Michael Thomsen

            go/dart-cbuild result: SUCCESS

            Details: https://goto.google.com/dart-cbuild/find/30260fbd041d3ea87e04f7a2ef60e9af4386eb0f

            View Change

              To view, visit change 200262. To unsubscribe, or for help writing mail filters, visit settings.

              Gerrit-Project: sdk
              Gerrit-Branch: main
              Gerrit-Change-Id: I042b1e3fa7a4effed076c0deeec1f86af0dfe26d
              Gerrit-Change-Number: 200262
              Gerrit-PatchSet: 14
              Gerrit-Owner: Copybara Prod <copybara-wor...@google.com>
              Gerrit-Reviewer: Alexander Aprelev <a...@google.com>
              Gerrit-Reviewer: Siva Annamalai <as...@google.com>
              Gerrit-CC: Dart Reviews <rev...@dartlang.org>
              Gerrit-CC: Liam Appelbe <li...@google.com>
              Gerrit-CC: Michael Thomsen <m...@google.com>
              Gerrit-Comment-Date: Wed, 15 Sep 2021 00:40:37 +0000

              Alexander Aprelev (Gerrit)

              unread,
              Sep 14, 2021, 9:18:03 PM9/14/21
              to Copybara Prod, rev...@dartlang.org, Alexander Aprelev, Dart CI, commi...@chromium.org, Siva Annamalai, Liam Appelbe, Michael Thomsen

              Patch set 14:Code-Review +1

              View Change

                To view, visit change 200262. To unsubscribe, or for help writing mail filters, visit settings.

                Gerrit-Project: sdk
                Gerrit-Branch: main
                Gerrit-Change-Id: I042b1e3fa7a4effed076c0deeec1f86af0dfe26d
                Gerrit-Change-Number: 200262
                Gerrit-PatchSet: 14
                Gerrit-Owner: Copybara Prod <copybara-wor...@google.com>
                Gerrit-Reviewer: Alexander Aprelev <a...@google.com>
                Gerrit-Reviewer: Siva Annamalai <as...@google.com>
                Gerrit-CC: Dart Reviews <rev...@dartlang.org>
                Gerrit-CC: Liam Appelbe <li...@google.com>
                Gerrit-CC: Michael Thomsen <m...@google.com>
                Gerrit-Comment-Date: Wed, 15 Sep 2021 01:18:00 +0000
                Gerrit-HasComments: No
                Gerrit-Has-Labels: Yes
                Gerrit-MessageType: comment

                Siva Annamalai (Gerrit)

                unread,
                Sep 15, 2021, 1:38:39 PM9/15/21
                to Copybara Prod, rev...@dartlang.org, Alexander Aprelev, Dart CI, commi...@chromium.org, Liam Appelbe, Michael Thomsen

                Patch set 14:Code-Review +1

                View Change

                  To view, visit change 200262. To unsubscribe, or for help writing mail filters, visit settings.

                  Gerrit-Project: sdk
                  Gerrit-Branch: main
                  Gerrit-Change-Id: I042b1e3fa7a4effed076c0deeec1f86af0dfe26d
                  Gerrit-Change-Number: 200262
                  Gerrit-PatchSet: 14
                  Gerrit-Owner: Copybara Prod <copybara-wor...@google.com>
                  Gerrit-Reviewer: Alexander Aprelev <a...@google.com>
                  Gerrit-Reviewer: Siva Annamalai <as...@google.com>
                  Gerrit-CC: Dart Reviews <rev...@dartlang.org>
                  Gerrit-CC: Liam Appelbe <li...@google.com>
                  Gerrit-CC: Michael Thomsen <m...@google.com>
                  Gerrit-Comment-Date: Wed, 15 Sep 2021 17:38:36 +0000

                  Alexander Aprelev (Gerrit)

                  unread,
                  Sep 15, 2021, 2:06:20 PM9/15/21
                  to Copybara Prod, rev...@dartlang.org, Siva Annamalai, Alexander Aprelev, Dart CI, commi...@chromium.org, Liam Appelbe, Michael Thomsen

                  Patch set 14:Commit-Queue +2

                  View Change

                    To view, visit change 200262. To unsubscribe, or for help writing mail filters, visit settings.

                    Gerrit-Project: sdk
                    Gerrit-Branch: main
                    Gerrit-Change-Id: I042b1e3fa7a4effed076c0deeec1f86af0dfe26d
                    Gerrit-Change-Number: 200262
                    Gerrit-PatchSet: 14
                    Gerrit-Owner: Copybara Prod <copybara-wor...@google.com>
                    Gerrit-Reviewer: Alexander Aprelev <a...@google.com>
                    Gerrit-Reviewer: Siva Annamalai <as...@google.com>
                    Gerrit-CC: Dart Reviews <rev...@dartlang.org>
                    Gerrit-CC: Liam Appelbe <li...@google.com>
                    Gerrit-CC: Michael Thomsen <m...@google.com>
                    Gerrit-Comment-Date: Wed, 15 Sep 2021 18:06:17 +0000

                    commit-bot@chromium.org (Gerrit)

                    unread,
                    Sep 15, 2021, 2:06:49 PM9/15/21
                    to Copybara Prod, rev...@dartlang.org, Siva Annamalai, Alexander Aprelev, Dart CI, Liam Appelbe, Michael Thomsen

                    commi...@chromium.org submitted this change.

                    View Change


                    Approvals: Alexander Aprelev: Looks good to me, approved; Commit Siva Annamalai: Looks good to me, approved
                    [io/http] Add a HTTP Client parameter on WebSocket.connect to allow a custom HTTP Client for web socket connections.

                    The WebSocket abstract class was changed to allow an optional parameter called customClient that takes in a HTTPClient and passes it to the WebSocket Implementation.
                    The WebSocket implementation takes the customClient, checks if its null, if its not null, it uses the customClient in place of the static HTTPClient that the WebSocket Implementation offers.
                    This custom client does not override the static HTTPClient, so all previous functionality remains the same when the customClient is not present.

                    TEST=testStaticClientUserAgentStaysTheSame() in web_socket_test.dart in standalone_2/standalone
                    TEST=new SecurityConfiguration(secure: true).runTests(); in web_socket_error_test.dart and web_socket_test.dart in standalone_2/standalone

                    Bug: https://github.com/dart-lang/sdk/issues/34284

                    Closes https://github.com/dart-lang/sdk/pull/46040
                    https://github.com/dart-lang/sdk/pull/46040

                    GitOrigin-RevId: 58fed38baa606a8a492d3729190afa5009cc2409
                    Change-Id: I042b1e3fa7a4effed076c0deeec1f86af0dfe26d
                    Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/200262
                    Reviewed-by: Alexander Aprelev <a...@google.com>
                    Reviewed-by: Siva Annamalai <as...@google.com>
                    Commit-Queue: Alexander Aprelev <a...@google.com>

                    ---
                    M sdk/lib/_http/websocket.dart
                    M sdk/lib/_http/websocket_impl.dart
                    M tests/standalone/io/web_socket_error_test.dart
                    M tests/standalone/io/web_socket_test.dart
                    M tests/standalone_2/io/web_socket_test.dart
                    5 files changed, 82 insertions(+), 45 deletions(-)

                    
                    
                    diff --git a/sdk/lib/_http/websocket.dart b/sdk/lib/_http/websocket.dart
                    index c9c6246..4b9bbff 100644
                    --- a/sdk/lib/_http/websocket.dart
                    +++ b/sdk/lib/_http/websocket.dart
                    @@ -375,8 +375,10 @@
                    {Iterable<String>? protocols,
                    Map<String, dynamic>? headers,
                    CompressionOptions compression =
                    - CompressionOptions.compressionDefault}) =>
                    - _WebSocketImpl.connect(url, protocols, headers, compression: compression);
                    + CompressionOptions.compressionDefault,
                    + HttpClient? customClient}) =>
                    + _WebSocketImpl.connect(url, protocols, headers,
                    + compression: compression, customClient: customClient);

                    @Deprecated('This constructor will be removed in Dart 2.0. Use `implements`'
                    ' instead of `extends` if implementing this abstract class.')
                    diff --git a/sdk/lib/_http/websocket_impl.dart b/sdk/lib/_http/websocket_impl.dart
                    index 7de33f0..fe2c5a7 100644
                    --- a/sdk/lib/_http/websocket_impl.dart
                    +++ b/sdk/lib/_http/websocket_impl.dart
                    @@ -999,8 +999,8 @@

                    static Future<WebSocket> connect(
                    String url, Iterable<String>? protocols, Map<String, dynamic>? headers,
                    - {CompressionOptions compression =
                    - CompressionOptions.compressionDefault}) {
                    + {CompressionOptions compression = CompressionOptions.compressionDefault,
                    + HttpClient? customClient}) {
                    Uri uri = Uri.parse(url);
                    if (uri.scheme != "ws" && uri.scheme != "wss") {
                    throw new WebSocketException("Unsupported URL scheme '${uri.scheme}'");
                    @@ -1024,7 +1024,7 @@
                    path: uri.path,
                    query: uri.query,
                    fragment: uri.fragment);
                    - return _httpClient.openUrl("GET", uri).then((request) {
                    + return (customClient ?? _httpClient).openUrl("GET", uri).then((request) {
                    if (uri.userInfo != null && !uri.userInfo.isEmpty) {
                    // If the URL contains user information use that for basic
                    // authorization.
                    diff --git a/tests/standalone/io/web_socket_error_test.dart b/tests/standalone/io/web_socket_error_test.dart
                    index a7fdd0e..aca2548 100644
                    --- a/tests/standalone/io/web_socket_error_test.dart
                    +++ b/tests/standalone/io/web_socket_error_test.dart
                    @@ -48,8 +48,8 @@
                    : HttpServer.bind(HOST_NAME, 0, backlog: backlog);

                    Future<WebSocket> createClient(int port) =>
                    - // TODO(whesse): Add a client context argument to WebSocket.connect.
                    - WebSocket.connect('${secure ? "wss" : "ws"}://$HOST_NAME:$port/');
                    + WebSocket.connect('${secure ? "wss" : "ws"}://$HOST_NAME:$port/',
                    + customClient: secure ? HttpClient(context: clientContext) : null);

                    void testForceCloseServerEnd(int totalConnections) {
                    createServer().then((server) {
                    @@ -94,7 +94,6 @@
                    main() {
                    asyncStart();
                    new SecurityConfiguration(secure: false).runTests();
                    - // TODO(whesse): WebSocket.connect needs an optional context: parameter
                    - // new SecurityConfiguration(secure: true).runTests();
                    + new SecurityConfiguration(secure: true).runTests();
                    asyncEnd();
                    }
                    diff --git a/tests/standalone/io/web_socket_test.dart b/tests/standalone/io/web_socket_test.dart
                    index 9b0e789..f5927ba 100644
                    --- a/tests/standalone/io/web_socket_test.dart
                    +++ b/tests/standalone/io/web_socket_test.dart
                    @@ -13,10 +13,8 @@
                    import "dart:typed_data";

                    import "package:async_helper/async_helper.dart";
                    -import "package:convert/convert.dart";
                    import "package:crypto/crypto.dart";
                    import "package:expect/expect.dart";
                    -import "package:path/path.dart";

                    const WEB_SOCKET_GUID = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";

                    @@ -44,9 +42,17 @@
                    ? HttpServer.bindSecure(HOST_NAME, 0, serverContext, backlog: backlog)
                    : HttpServer.bind(HOST_NAME, 0, backlog: backlog);

                    - Future<WebSocket> createClient(int port) =>
                    - // TODO(whesse): Add client context argument to WebSocket.connect
                    - WebSocket.connect('${secure ? "wss" : "ws"}://$HOST_NAME:$port/');
                    + Future<WebSocket> createClient(int port,
                    + {String? user,
                    + Map<String, Object>? headers,
                    + String? customUserAgent}) =>
                    + WebSocket.connect(
                    + '${secure ? "wss" : "ws"}://${user is Null ? "" : "$user@"}$HOST_NAME:$port/',
                    + headers: headers,
                    + customClient: secure
                    + ? (HttpClient(context: clientContext)
                    + ..userAgent = customUserAgent)
                    + : null);

                    checkCloseStatus(webSocket, closeStatus, closeReason) {
                    Expect.equals(
                    @@ -304,7 +310,7 @@
                    asyncEnd();
                    });

                    - HttpClient client = new HttpClient();
                    + final client = HttpClient(context: secure ? clientContext : null);
                    client
                    .postUrl(Uri.parse(
                    "${secure ? 'https:' : 'http:'}//$HOST_NAME:${server.port}/"))
                    @@ -401,12 +407,12 @@
                    var baseWsUrl = '$wsProtocol://$HOST_NAME:${server.port}/';
                    var httpProtocol = '${secure ? "https" : "http"}';
                    var baseHttpUrl = '$httpProtocol://$HOST_NAME:${server.port}/';
                    - HttpClient client = new HttpClient();
                    + final client = HttpClient(context: secure ? clientContext : null);

                    for (int i = 0; i < connections; i++) {
                    var completer = new Completer();
                    futures.add(completer.future);
                    - WebSocket.connect('${baseWsUrl}').then((websocket) {
                    + createClient(server.port).then((websocket) {
                    websocket.listen((_) {
                    websocket.close();
                    }, onDone: completer.complete);
                    @@ -456,9 +462,7 @@
                    });
                    });

                    - var url = '${secure ? "wss" : "ws"}://$HOST_NAME:${server.port}/';
                    -
                    - WebSocket.connect(url).then((websocket) {
                    + createClient(server.port).then((websocket) {
                    return websocket.listen((message) {
                    Expect.equals("Hello", message);
                    websocket.close();
                    @@ -484,12 +488,11 @@
                    });
                    });

                    - var url = '${secure ? "wss" : "ws"}://$HOST_NAME:${server.port}/';
                    var headers = {
                    'My-Header': 'my-value',
                    'My-Header-Multiple': ['my-value-1', 'my-value-2']
                    };
                    - WebSocket.connect(url, headers: headers).then((websocket) {
                    + createClient(server.port, headers: headers).then((websocket) {
                    return websocket.listen((message) {
                    Expect.equals("Hello", message);
                    websocket.close();
                    @@ -522,9 +525,7 @@
                    });
                    });

                    - var url =
                    - '${secure ? "wss" : "ws"}://$userInfo@$HOST_NAME:${server.port}/';
                    - WebSocket.connect(url).then((websocket) {
                    + createClient(server.port, user: userInfo).then((websocket) {
                    return websocket.listen((message) {
                    Expect.equals("Hello", message);
                    websocket.close();
                    @@ -554,6 +555,24 @@
                    });
                    }

                    + void testStaticClientUserAgentStaysTheSame() {
                    + asyncStart();
                    + createServer().then((server) {
                    + server.transform(new WebSocketTransformer()).listen((webSocket) {
                    + Expect.equals('Custom User Agent', WebSocket.userAgent);
                    + server.close();
                    + webSocket.close();
                    + asyncEnd();
                    + });
                    + // Next line should take no effect on custom user agent value provided
                    + WebSocket.userAgent = 'Custom User Agent';
                    + createClient(server.port, customUserAgent: 'New User Agent')
                    + .then((webSocket) {
                    + webSocket.close();
                    + });
                    + });
                    + }
                    +
                    void runTests() {
                    testRequestResponseClientCloses(2, null, null, 1);
                    testRequestResponseClientCloses(2, 3001, null, 2);
                    @@ -582,11 +601,11 @@
                    testAdditionalHeaders();
                    testBasicAuthentication();
                    testShouldSetUserAgent();
                    + testStaticClientUserAgentStaysTheSame();
                    }
                    }

                    main() {
                    new SecurityConfiguration(secure: false).runTests();
                    - // TODO(whesse): Make WebSocket.connect() take an optional context: parameter.
                    - // new SecurityConfiguration(secure: true).runTests();
                    + new SecurityConfiguration(secure: true).runTests();
                    }
                    diff --git a/tests/standalone_2/io/web_socket_test.dart b/tests/standalone_2/io/web_socket_test.dart
                    index a931549..5d7f425 100644
                    --- a/tests/standalone_2/io/web_socket_test.dart
                    +++ b/tests/standalone_2/io/web_socket_test.dart
                    @@ -15,10 +15,8 @@
                    import "dart:typed_data";

                    import "package:async_helper/async_helper.dart";
                    -import "package:convert/convert.dart";
                    import "package:crypto/crypto.dart";
                    import "package:expect/expect.dart";
                    -import "package:path/path.dart";

                    const WEB_SOCKET_GUID = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";

                    @@ -46,9 +44,15 @@
                    ? HttpServer.bindSecure(HOST_NAME, 0, serverContext, backlog: backlog)
                    : HttpServer.bind(HOST_NAME, 0, backlog: backlog);

                    - Future<WebSocket> createClient(int port) =>
                    - // TODO(whesse): Add client context argument to WebSocket.connect
                    - WebSocket.connect('${secure ? "wss" : "ws"}://$HOST_NAME:$port/');
                    + Future<WebSocket> createClient(int port,
                    + {String user, Map<String, Object> headers, String customUserAgent}) =>
                    + WebSocket.connect(
                    + '${secure ? "wss" : "ws"}://${user is Null ? "" : "$user@"}$HOST_NAME:$port/',
                    + headers: headers,
                    + customClient: secure
                    + ? (HttpClient(context: clientContext)
                    + ..userAgent = customUserAgent)
                    + : null);

                    checkCloseStatus(webSocket, closeStatus, closeReason) {
                    Expect.equals(
                    @@ -306,7 +310,7 @@
                    asyncEnd();
                    });

                    - HttpClient client = new HttpClient();
                    + final client = HttpClient(context: secure ? clientContext : null);
                    client
                    .postUrl(Uri.parse(
                    "${secure ? 'https:' : 'http:'}//$HOST_NAME:${server.port}/"))
                    @@ -403,12 +407,12 @@
                    var baseWsUrl = '$wsProtocol://$HOST_NAME:${server.port}/';
                    var httpProtocol = '${secure ? "https" : "http"}';
                    var baseHttpUrl = '$httpProtocol://$HOST_NAME:${server.port}/';
                    - HttpClient client = new HttpClient();
                    + final client = HttpClient(context: secure ? clientContext : null);

                    for (int i = 0; i < connections; i++) {
                    var completer = new Completer();
                    futures.add(completer.future);
                    - WebSocket.connect('${baseWsUrl}').then((websocket) {
                    + createClient(server.port).then((websocket) {
                    websocket.listen((_) {
                    websocket.close();
                    }, onDone: completer.complete);
                    @@ -458,9 +462,7 @@
                    });
                    });

                    - var url = '${secure ? "wss" : "ws"}://$HOST_NAME:${server.port}/';
                    -
                    - WebSocket.connect(url).then((websocket) {
                    + createClient(server.port).then((websocket) {
                    return websocket.listen((message) {
                    Expect.equals("Hello", message);
                    websocket.close();
                    @@ -486,12 +488,11 @@
                    });
                    });

                    - var url = '${secure ? "wss" : "ws"}://$HOST_NAME:${server.port}/';
                    var headers = {
                    'My-Header': 'my-value',
                    'My-Header-Multiple': ['my-value-1', 'my-value-2']
                    };
                    - WebSocket.connect(url, headers: headers).then((websocket) {
                    + createClient(server.port, headers: headers).then((websocket) {
                    return websocket.listen((message) {
                    Expect.equals("Hello", message);
                    websocket.close();
                    @@ -524,9 +525,7 @@
                    });
                    });

                    - var url =
                    - '${secure ? "wss" : "ws"}://$userInfo@$HOST_NAME:${server.port}/';
                    - WebSocket.connect(url).then((websocket) {
                    + createClient(server.port, user: userInfo).then((websocket) {
                    return websocket.listen((message) {
                    Expect.equals("Hello", message);
                    websocket.close();
                    @@ -556,6 +555,24 @@
                    });
                    }

                    + void testStaticClientUserAgentStaysTheSame() {
                    + asyncStart();
                    + createServer().then((server) {
                    + server.transform(new WebSocketTransformer()).listen((webSocket) {
                    + Expect.equals('Custom User Agent', WebSocket.userAgent);
                    + server.close();
                    + webSocket.close();
                    + asyncEnd();
                    + });
                    + // Next line should take no effect on custom user agent value provided
                    + WebSocket.userAgent = 'Custom User Agent';
                    + createClient(server.port, customUserAgent: 'New User Agent')
                    + .then((webSocket) {
                    + webSocket.close();
                    + });
                    + });
                    + }
                    +
                    void runTests() {
                    testRequestResponseClientCloses(2, null, null, 1);
                    testRequestResponseClientCloses(2, 3001, null, 2);
                    @@ -584,11 +601,11 @@
                    testAdditionalHeaders();
                    testBasicAuthentication();
                    testShouldSetUserAgent();
                    + testStaticClientUserAgentStaysTheSame();
                    }
                    }

                    main() {
                    new SecurityConfiguration(secure: false).runTests();
                    - // TODO(whesse): Make WebSocket.connect() take an optional context: parameter.
                    - // new SecurityConfiguration(secure: true).runTests();
                    + new SecurityConfiguration(secure: true).runTests();
                    }

                    To view, visit change 200262. To unsubscribe, or for help writing mail filters, visit settings.

                    Gerrit-Project: sdk
                    Gerrit-Branch: main
                    Gerrit-Change-Id: I042b1e3fa7a4effed076c0deeec1f86af0dfe26d
                    Gerrit-Change-Number: 200262
                    Gerrit-PatchSet: 15
                    Gerrit-Owner: Copybara Prod <copybara-wor...@google.com>
                    Gerrit-Reviewer: Alexander Aprelev <a...@google.com>
                    Gerrit-Reviewer: Siva Annamalai <as...@google.com>
                    Gerrit-CC: Dart Reviews <rev...@dartlang.org>
                    Gerrit-CC: Liam Appelbe <li...@google.com>
                    Gerrit-CC: Michael Thomsen <m...@google.com>
                    Gerrit-MessageType: merged

                    Dart CI (Gerrit)

                    unread,
                    Sep 15, 2021, 2:40:09 PM9/15/21
                    to commi...@chromium.org, Copybara Prod, rev...@dartlang.org, Siva Annamalai, Alexander Aprelev, Liam Appelbe, Michael Thomsen

                    go/dart-cbuild result: FAILURE (NO REGRESSIONS DETECTED)

                    Details: https://goto.google.com/dart-cbuild/find/2917c1cb8fad834b94ad113e4eb3806588049ab6

                    View Change

                      To view, visit change 200262. To unsubscribe, or for help writing mail filters, visit settings.

                      Gerrit-Project: sdk
                      Gerrit-Branch: main
                      Gerrit-Change-Id: I042b1e3fa7a4effed076c0deeec1f86af0dfe26d
                      Gerrit-Change-Number: 200262
                      Gerrit-PatchSet: 15
                      Gerrit-Owner: Copybara Prod <copybara-wor...@google.com>
                      Gerrit-Reviewer: Alexander Aprelev <a...@google.com>
                      Gerrit-Reviewer: Siva Annamalai <as...@google.com>
                      Gerrit-CC: Dart Reviews <rev...@dartlang.org>
                      Gerrit-CC: Liam Appelbe <li...@google.com>
                      Gerrit-CC: Michael Thomsen <m...@google.com>
                      Gerrit-Comment-Date: Wed, 15 Sep 2021 18:40:06 +0000
                      Reply all
                      Reply to author
                      Forward
                      0 new messages