I wasn't able to find anything obvious in the nuxt org on GitHub, but I did post a question in their discussion forum: https://github.com/nuxt/nuxt/discussions/21382

On 6/4/23 3:05 PM, Debadree Chatterjee wrote:
Hey!

So I did a more thorough testing! and it seems there is something common in both these two sites they are using the Nuxt Framework and the breakage in both of them is similar they have videos on the first section of their landing page with animations on top of them, due to the breakage it seems the video doesn't load! If you look at the call sites too the code looks very similar

for https://maisonyoko.com/
Screenshot 2023-06-05 at 12.24.34 AM.png

for https://crossfitdespentes.fr/
Screenshot 2023-06-05 at 12.25.09 AM.png

Both of them nuxt
Screenshot 2023-06-05 at 12.27.12 AM.png
Screenshot 2023-06-05 at 12.27.50 AM.png

I am not familiar with nuxt I will try to get to know about it, but it seems like there could be some problem with nuxt, If any reader here knows nuxt would love to reach out!

Thank You
Debadree
On Wednesday, May 31, 2023 at 9:38:18 PM UTC+5:30 Debadree Chatterjee wrote:

    Hey Philip!

    In my initial testing, I didn't see any observable change in site
    behavior, but I shall confirm once again!

    As for the kill switch and use counter should I update my existing
    CL to include these or make a new one containing the counter to
    just measure the effects?


    On Wednesday, May 31, 2023 at 9:28:39 PM UTC+5:30 Philip
    Jägenstedt wrote:

        Hi Debadree,

        Thank you so much for your hard work on this.

        To confirm, these two sites were from the 20 listed earlier in
        this thread, is that right? Now that we've confirmed that
        these two sites will have a different behavior, can you
        observe any difference on https://maisonyoko.com/ or
        https://crossfitdespentes.fr/ with the changes, but without
        the exception-throwing?

        Generally, finding a behavior change in 10% of tested sites is
        a bit concerning, but if it means that only ~10% of the cases
        hit by the use counter
        <https://chromestatus.com/metrics/feature/timeline/popularity/4478>
        are problematic, it could be <0.001% of sites, and we've
        successfully made breaking changes at that level in the past.

        Since you now have the code for throwing an exception, would
        it be straightforward to turn that into a use counter that we
        can land and get a better measure of this? I think as
        discussed previously in this thread, we should considering
        shipping this with a killswitch and a use counter, so we can
        both revert and check the usage if we get reports of breakage.

        Best regards,
        Philip

        On Tue, May 30, 2023 at 5:16 PM Debadree Chatterjee
        <debad...@gmail.com> wrote:

            Hey Philip!

            Even I was surprised, turns out I was wrong about the
            delete function (so sorry), I have observed a breakage now,

            The has function output example:
            Screenshot 2023-05-30 at 7.36.36 PM.png


            The updated delete function:

            ```c++
            void URLSearchParams::deleteAllWithNameOrTuple(const
            String& name,
                                                           const
            String& value, ExceptionState& exception_state) {
              std::vector<int> indices_to_remove_with_name_val,
            indices_to_remove_with_name;
              for (wtf_size_t i = 0; i < params_.size(); i++) {
                if (params_[i].first == name &&
                    (value.IsNull() || params_[i].second == value)) {
                  indices_to_remove_with_name_val.push_back(i);
                }
              }

              for (wtf_size_t i = 0; i < params_.size(); i++) {
                if (params_[i].first == name) {
                  indices_to_remove_with_name.push_back(i);
                }
              }

              if (indices_to_remove_with_name_val.size() !=
            indices_to_remove_with_name.size()) {
                DLOG(ERROR) << "indices_to_remove_with_name_val.size()
            != indices_to_remove_with_name.size()";
                exception_state.ThrowException(1, "Divergent behavior");
                return;
              }

              // match the values of indices_to_remove_with_name_val,
            indices_to_remove_with_name
              for (size_t i = 0; i <
            indices_to_remove_with_name_val.size(); i++) {
                if (indices_to_remove_with_name_val[i] !=
            indices_to_remove_with_name[i]) {
                  DLOG(ERROR) << "indices_to_remove_with_name_val[i]
            != indices_to_remove_with_name[i]";
                  exception_state.ThrowException(1, "Divergent behavior");
                  return;
                }
              }

              for (wtf_size_t i = 0; i < params_.size();) {
                if (params_[i].first == name &&
                    (value.IsNull() || params_[i].second == value)) {
                  params_.EraseAt(i);
                } else {
                  i++;
                }
              }

              RunUpdateSteps();
            }
            ```
            The example outputs of the delete function:
            Screenshot 2023-05-30 at 8.39.03 PM.png

            Example Breakages:
            In https://maisonyoko.com/
            Screenshot 2023-05-30 at 8.33.59 PM.png
            https://crossfitdespentes.fr/
            Screenshot 2023-05-30 at 8.42.01 PM.png
            Other than these sites didn't notice a breakage.

            seems like the breakages seem to be in the delete function
            only, so sorry once again for the mistake before. Do let
            me know if all this looks ok.

            Thank You,
            Debadree

            On Tuesday, May 30, 2023 at 5:34:18 PM UTC+5:30 Philip
            Jägenstedt wrote:

                Hi Debadree,

                That's very promising! The code looks right to me, but
                just to be sure, did you verify that the exceptions
                are thrown in a test case where the 2nd argument makes
                a difference? It's a bit suspicious when no sites at
                all threw the exception :)

                Best regards,
                Philip

                On Tue, May 30, 2023 at 11:45 AM Debadree Chatterjee
                <debad...@gmail.com> wrote:

                    Hey Everyone!

                    Sorry for the delays I followed Philip's
                    suggestion on testing if behavior diverged in
                    these sites, I checked this by throwing exceptions
                    if the actual return value is different if I used
                    name only or both name and value, I am including
                    the code for reference:

                    bool URLSearchParams::has(const String& name,
                    const String& value, ExceptionState&
                    exception_state) const { bool found_match_name =
                    false, found_match_name_value = false; for (const
                    auto& param : params_) { if (param.first == name)
                    { found_match_name = true; break; } } for (const
                    auto& param : params_) { if (param.first == name
                    && (value.IsNull() || param.second == value)) {
                    found_match_name_value = true; break; } } if
                    (found_match_name != found_match_name_value) {
                    exception_state.ThrowException(1, "Divergent
                    behavior"); return false; } return
                    found_match_name_value; } void
                    URLSearchParams::deleteAllWithNameOrTuple(const
                    String& name, const String& value, ExceptionState&
                    exception_state) { for (wtf_size_t i = 0; i <
                    params_.size();) { bool match_by_name =
                    params_[i].first == name; bool match_by_value =
                    !value.IsNull() && params_[i].second == value; if
                    (match_by_name) { if (match_by_value) {
                    params_.EraseAt(i); } else { // It would have been
                    deleted if value wasnt there
                    exception_state.ThrowException(1, "Divergent
                    behavior"); return; } } else { i++; } }
                    RunUpdateSteps(); }
                    ​
                    The good news is none of the example sites broke
                    or triggered this exception at all, I navigated
                    lightly through all the sites but no exception was
                    observed, whereas if I raised an exception
                    whenever double variables are passed all the sites
                    would give an exception as you have seen in the
                    previous mails. Do let me know if this seems correct!

                    Regards,
                    Debadree

                    On Wednesday, May 24, 2023 at 10:35:59 PM UTC+5:30
                    Debadree Chatterjee wrote:

                        Understood!

                        I am going with the local testing approach for
                        now, I think what I will do is raise
                        exceptions if a difference in behavior is
                        noted as Philip suggested, and see how many of
                        these example sites raise them. This may take
                        a little bit of time I think but trying my best!

                        Thank You!

                        On Wednesday, May 24, 2023 at 9:13:04 PM
                        UTC+5:30 Philip Jägenstedt wrote:

                            If refining the use counter is easy, that
                            would be good to do, even if we don't
                            block shipping on getting stable data for
                            the use counter.

                            But I think that careful local testing is
                            the best way to get a sense for the risk
                            on this. If you're confident you've hit
                            the code path on the sites in question,
                            and nothing at all changes for the user,
                            then I think we should try to ship this.

                            On Mon, May 22, 2023 at 6:59 PM Debadree
                            Chatterjee <debad...@gmail.com> wrote:

                                For basic testing of the sites, I saw
                                no breaking behavior, I did a few
                                actions on sites like adding things to
                                the cart, trying to go the login flow
                                clicking on navigation, etc. Although
                                I think would need to go a little deep
                                on that, Should I submit a new CL for
                                this counter thing? or do deeper local
                                testing?

                                On Monday, May 22, 2023 at 10:09:26 PM
                                UTC+5:30 Philip Jägenstedt wrote:

                                    Well, this is a tricky case with
                                    no obvious answer. You've found
                                    one case of array.some(...), which
                                    most likely will change the
                                    behavior of the code. For the
                                    other cases where a second
                                    argument is passed is explicitly,
                                    it depends on the value whether it
                                    changes behavior, if it's the same
                                    value that was added, then it's fine.

                                    One concrete thing you could do is
                                    to refine the use counter to only
                                    count the cases where the 2nd
                                    argument results in has()
                                    returning false instead of true,
                                    or where delete() doesn't delete
                                    anything but would without the 2nd
                                    argument. However, I'm not sure
                                    that would be informative, if it
                                    reduces the use counter by 10x
                                    we'd still be unsure about how
                                    serious the breakage is to users.

                                    In your manual testing of these
                                    sites, were you able to confirm
                                    the code paths were taken, and
                                    unable to spot anything at all
                                    broken on the pages? Did you
                                    compare to how the sites work
                                    without the changes?

                                    I would say that given testing of
                                    sites that hit the code path, if
                                    you can't find anything at all
                                    breaking, then we should try to
                                    ship the change.

                                    On Fri, May 19, 2023 at 3:40 PM
                                    Debadree Chatterjee
                                    <debad...@gmail.com> wrote:

                                        I tried navigating and
                                        clicking around the sites, but
                                        they didn't seem to be
                                        breaking atleast even though
                                        this exception is being
                                        raised. Are there any more
                                        investigations I can do?

                                        On Friday, May 19, 2023 at
                                        3:59:21 AM UTC+5:30
                                        abot...@igalia.com wrote:

                                            As for having a
                                            premonition that this
                                            would be added, there is
                                            at least one post in the
                                            original Github issue
                                            saying that the poster
                                            already expected the
                                            two-argument overload to
                                            be supported
                                            
(https://github.com/whatwg/url/issues/335#issuecomment-919700370).

                                            Andreu

                                            On 5/18/23 23:42, PhistucK
                                            wrote:
                                            Most of them are just
                                            weird, really. I can only
                                            imagine they started with
                                            a .set with an empty
                                            string as a second
                                            parameter and ended up
                                            changing to .delete
                                            without deleting the
                                            second parameter.
                                            (Or they had a
                                            premonition and knew
                                            there will be a second
                                            parameter with the
                                            specific purpose you want
                                            to ship hehe)

                                            I imagine those were
                                            outliers, I would not
                                            worry much about it (also
                                            the bound callback is a
                                            bit too convoluted to be
                                            widely used), but that is
                                            just me. :)

--
You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscr...@chromium.org. To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/354b0282-d2c8-4ed6-9d3c-a990fda9569bn%40chromium.org <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/354b0282-d2c8-4ed6-9d3c-a990fda9569bn%40chromium.org?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/c4903b30-b5c4-7969-fea0-c03696309888%40chromium.org.

Reply via email to