diff --git a/DEPS b/DEPS index 6e6fe1e..ce78d40 100644 --- a/DEPS +++ b/DEPS
@@ -295,15 +295,15 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Skia # and whatever else without interference from each other. - 'skia_revision': 'f593c76adb1bc744ade1585aac1808f4e92c379c', + 'skia_revision': '0c922b0e97a45929f8a13b7b4a316822c1f808a7', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. - 'v8_revision': '45398db6db46342b0e7219e0c26529f1182c96ee', + 'v8_revision': '2227d8bbb76f71e31edca694815522149547c305', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ANGLE # and whatever else without interference from each other. - 'angle_revision': '4a4ae726c449b719fc3d2ff258c0cded8adb07bd', + 'angle_revision': '1b5dfec1d3a107a4c1c62023297fa842614c121e', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling SwiftShader # and whatever else without interference from each other. @@ -322,7 +322,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Fuchsia sdk # and whatever else without interference from each other. - 'fuchsia_version': 'version:11.20221213.1.1', + 'fuchsia_version': 'version:11.20221214.1.1', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling google-toolbox-for-mac # and whatever else without interference from each other. @@ -374,7 +374,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling devtools-frontend # and whatever else without interference from each other. - 'devtools_frontend_revision': '43f33bfab5e8267107a175f465149f9b22befeba', + 'devtools_frontend_revision': 'e4774385293c8ea1b3ad849c3fa9e9b1e108edbf', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libprotobuf-mutator # and whatever else without interference from each other. @@ -410,7 +410,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'dawn_revision': 'eaeded4971e330369bc740ab1b991233c1f11635', + 'dawn_revision': '188ed1793a20602bba04792f4e7b426f329bff4a', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -458,7 +458,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'libunwind_revision': '09a1f53060bc601b5ee821d7ab52071eed096fda', + 'libunwind_revision': '5e22a7fe2335161ab267867c8e1be481bf6c8300', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -764,7 +764,7 @@ 'src/clank': { 'url': 'https://chrome-internal.googlesource.com/clank/internal/apps.git' + '@' + - '3bf6e9bb160dbbe81938ec79c22232bc09ae377e', + 'c845cf7f3e353eb0bd7a8526a56b6fe4cc27bd5d', 'condition': 'checkout_android and checkout_src_internal', }, @@ -953,7 +953,7 @@ 'packages': [ { 'package': 'chromium/third_party/androidx', - 'version': 'xNL9PXXwIyIMBEGkykyV_H7SFWAqlZgDtKat7N4Pf0IC', + 'version': 'A9iQ0pmVMUDN9vNJclahJzs3Qzprf-p7va6LWZGw4rEC', }, ], 'condition': 'checkout_android', @@ -1204,7 +1204,7 @@ Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'), 'src/third_party/devtools-frontend-internal': { - 'url': 'https://chrome-internal.googlesource.com/devtools/devtools-internal.git' + '@' + '7e9e9188a9bbce9c7ec90cc2138850caa33403ba', + 'url': 'https://chrome-internal.googlesource.com/devtools/devtools-internal.git' + '@' + '857803dd5b6617f417d27cd3086c128f4e250dd6', 'condition': 'checkout_src_internal', }, @@ -1633,7 +1633,7 @@ }, 'src/third_party/perfetto': - Var('android_git') + '/platform/external/perfetto.git' + '@' + '2648c757a2555e5e1c5946e46202fc385d68625b', + Var('android_git') + '/platform/external/perfetto.git' + '@' + '8d5d2a94b712354ef35ea0519c8d18531720b86f', 'src/third_party/perl': { 'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3', @@ -1673,7 +1673,7 @@ 'packages': [ { 'package': 'chromium/third_party/r8', - 'version': 'lillZvBtdIMEXU6ZjAiEGDqyEqLe0DiozKLwy2X0QKkC', + 'version': 'pv_BIbpK8sxEFp63muv1gKsbyWJoyv4PDw342wc9H6AC', }, ], 'condition': 'checkout_android', @@ -1778,7 +1778,7 @@ 'dep_type': 'cipd', }, - 'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@cea6d951c56b2a61ce3cede9a0ce68e1cc61e54f', + 'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@a7b8bd76ed0c833a79132475105eb9ef37d6beff', 'src/third_party/vulkan_memory_allocator': Var('chromium_git') + '/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git' + '@' + 'ebe84bec02c041d28f902da0214bf442743fc907', @@ -1818,7 +1818,7 @@ Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + 'b99b81d6c5f615447fbdb469fa720808faf998b1', 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + '6f5b89acf45f4ce4bfc031dc1105008111dce06c', + Var('webrtc_git') + '/src.git' + '@' + 'c0d44d9d6369968bcb2371640ad65b4589d20b33', # Wuffs' canonical repository is at github.com/google/wuffs, but we use # Skia's mirror of Wuffs, the same as in upstream Skia's DEPS file. @@ -1888,7 +1888,7 @@ Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'), 'src-internal': { - 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@46dc83ed63d0c0e36bf02a1bf9a2b062e2a9b8ff', + 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@4998ecfddf7dd423ca5ed445901bc6628548497c', 'condition': 'checkout_src_internal', }, @@ -1918,7 +1918,7 @@ 'packages': [ { 'package': 'chromeos_internal/apps/help_app/app', - 'version': 'xrrNKXfzoDm8PSoYu3YXfPsqjv5_iFWgCrqAXPb3pw4C', + 'version': 'M_pBz7SYB9e6CD3vpGHWGJwQvW-9DblKDoFFFCF5n4kC', }, ], 'condition': 'checkout_chromeos and checkout_src_internal', @@ -1940,7 +1940,7 @@ 'packages': [ { 'package': 'chromeos_internal/apps/projector_app/app', - 'version': 'msJI0Mjhosoy2zyq348vbKHs0uuXkLiD6FVfG4ge82oC', + 'version': 'Ob23mvxHPbJ009KdpT2COStZxs0gKpKxPoiKPw5Y1rIC', }, ], 'condition': 'checkout_chromeos and checkout_src_internal',
diff --git a/android_webview/browser/network_service/aw_proxying_url_loader_factory.cc b/android_webview/browser/network_service/aw_proxying_url_loader_factory.cc index c37b7431..6083757 100644 --- a/android_webview/browser/network_service/aw_proxying_url_loader_factory.cc +++ b/android_webview/browser/network_service/aw_proxying_url_loader_factory.cc
@@ -10,6 +10,7 @@ #include <vector> #include "android_webview/browser/android_protocol_handler.h" +#include "android_webview/browser/aw_browser_context.h" #include "android_webview/browser/aw_contents_client_bridge.h" #include "android_webview/browser/aw_contents_io_thread_client.h" #include "android_webview/browser/aw_contents_origin_matcher.h" @@ -21,8 +22,10 @@ #include "android_webview/common/aw_features.h" #include "android_webview/common/url_constants.h" #include "base/android/build_info.h" +#include "base/barrier_closure.h" #include "base/bind.h" #include "base/feature_list.h" +#include "base/memory/scoped_refptr.h" #include "base/metrics/histogram_functions.h" #include "base/notreached.h" #include "components/embedder_support/android/util/input_stream.h" @@ -32,6 +35,7 @@ #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/global_request_id.h" +#include "content/public/browser/origin_trials_controller_delegate.h" #include "content/public/browser/web_contents.h" #include "content/public/common/content_constants.h" #include "content/public/common/url_utils.h" @@ -55,6 +59,13 @@ const char kAutoLoginHeaderName[] = "X-Auto-Login"; const char kRequestedWithHeaderWebView[] = "WebView"; +// Argument struct for the |InterceptRequest::InterceptResponseReceived| method +// which can live on the heap and be populated by async callbacks. +struct InterceptResponseReceivedArgs { + std::unique_ptr<AwWebResourceInterceptResponse> intercept_response = nullptr; + bool xrw_origin_trial_enabled = false; +}; + // Handles intercepted, in-progress requests/responses, so that they can be // controlled and modified accordingly. class InterceptedRequest : public network::mojom::URLLoader, @@ -111,7 +122,7 @@ std::unique_ptr<embedder_support::WebResourceResponse> response); void InterceptResponseReceived( - std::unique_ptr<AwWebResourceInterceptResponse> intercept_response); + std::unique_ptr<InterceptResponseReceivedArgs> args); // Returns true if the request was restarted or completed. bool InputStreamFailed(bool restart_needed); @@ -305,6 +316,53 @@ SendErrorCallback(error_status_, false); } +namespace { + +// Persistent Origin Trials can only be checked on the UI thread. +// |result_args| is owned by a BarrierClosure that executes after this call. +void CheckXrwOriginTrialOnUiThread(GURL request_url, + InterceptResponseReceivedArgs* result_args) { + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + content::OriginTrialsControllerDelegate* delegate = + AwBrowserContext::GetDefault()->GetOriginTrialsControllerDelegate(); + if (!delegate) + return; + + result_args->xrw_origin_trial_enabled = delegate->IsTrialPersistedForOrigin( + url::Origin::Create(request_url), "WebViewXRequestedWithDeprecation", + base::Time::Now()); + base::UmaHistogramBoolean( + "Android.WebView.RequestedWithHeader.OriginTrialEnabled", + result_args->xrw_origin_trial_enabled); +} + +// Post a call to the UI thread to check if the XRW deprecation trial is enabled +// for |request_url|, saving the result in |result_args|. +// |result_args| is owned by the |done_callback|. +void CheckXrwOriginTrialAsync(GURL request_url, + InterceptResponseReceivedArgs* result_args, + base::OnceClosure done_callback) { + content::GetUIThreadTaskRunner({})->PostTaskAndReply( + FROM_HERE, + base::BindOnce(&CheckXrwOriginTrialOnUiThread, request_url, + base::Unretained(result_args)), + std::move(done_callback)); +} + +// Response callback for |AwContentsIoThreadClient::ShouldInterceptRequestAsync| +// which saves the result to |result_args|, which is owned by the +// |done_callback|. +// |async_result| is last argument to allow currying through bind. +void OnShouldInterceptRequestAsyncResult( + InterceptResponseReceivedArgs* result_args, + base::OnceClosure done_closure, + std::unique_ptr<AwWebResourceInterceptResponse> async_result) { + result_args->intercept_response = std::move(async_result); + std::move(done_closure).Run(); +} + +} // namespace + void InterceptedRequest::Restart() { std::unique_ptr<AwContentsIoThreadClient> io_thread_client = GetIoThreadClient(); @@ -325,7 +383,14 @@ UpdateLoadFlags(request_.load_flags, io_thread_client.get()); if (!io_thread_client || ShouldNotInterceptRequest()) { // equivalent to no interception - InterceptResponseReceived(nullptr); + std::unique_ptr<InterceptResponseReceivedArgs> + intercept_response_received_args = + std::make_unique<InterceptResponseReceivedArgs>(); + CheckXrwOriginTrialAsync( + request_.url, intercept_response_received_args.get(), + base::BindOnce(&InterceptedRequest::InterceptResponseReceived, + weak_factory_.GetWeakPtr(), + std::move(intercept_response_received_args))); } else { if (request_.referrer.is_valid()) { // intentionally override if referrer header already exists @@ -333,13 +398,31 @@ request_.referrer.spec()); } + base::RepeatingClosure arg_ready_closure; + // Pointer lifetime is tied to |arg_ready_closure|. + InterceptResponseReceivedArgs* intercept_response_received_args; + { + // Inner scope to prevent |call_args| from being accidentally used after + // being moved into the |arg_ready_closure|. + std::unique_ptr<InterceptResponseReceivedArgs> call_args = + std::make_unique<InterceptResponseReceivedArgs>(); + intercept_response_received_args = call_args.get(); + arg_ready_closure = base::BarrierClosure( + 2, base::BindOnce(&InterceptedRequest::InterceptResponseReceived, + weak_factory_.GetWeakPtr(), std::move(call_args))); + } + + CheckXrwOriginTrialAsync(request_.url, intercept_response_received_args, + arg_ready_closure); + // TODO: verify the case when WebContents::RenderFrameDeleted is called // before network request is intercepted (i.e. if that's possible and // whether it can result in any issues). io_thread_client->ShouldInterceptRequestAsync( AwWebResourceRequest(request_), - base::BindOnce(&InterceptedRequest::InterceptResponseReceived, - weak_factory_.GetWeakPtr())); + base::BindOnce(&OnShouldInterceptRequestAsyncResult, + base::Unretained(intercept_response_received_args), + arg_ready_closure)); } } @@ -358,7 +441,13 @@ } void InterceptedRequest::InterceptResponseReceived( - std::unique_ptr<AwWebResourceInterceptResponse> intercept_response) { + std::unique_ptr<InterceptResponseReceivedArgs> args) { + DCHECK(args); + if (args->xrw_origin_trial_enabled) { + requested_with_header_mode = + AwSettings::RequestedWithHeaderMode::APP_PACKAGE_NAME; + } + // We send the application's package name in the X-Requested-With header for // compatibility with previous WebView versions. This should not be visible to // shouldInterceptRequest. It should also not trigger CORS prefetch if @@ -396,17 +485,19 @@ committed_mode); JNIEnv* env = base::android::AttachCurrentThread(); - if (intercept_response && intercept_response->RaisedException(env)) { + if (args->intercept_response && + args->intercept_response->RaisedException(env)) { // The JNI handler has already raised an exception. Fail the resource load // as it may be insecure to load on error. SendErrorAndCompleteImmediately(net::ERR_UNEXPECTED); return; } - if (intercept_response && intercept_response->HasResponse(env)) { + if (args->intercept_response && args->intercept_response->HasResponse(env)) { // non-null response: make sure to use it as an override for the // normal network data. - ContinueAfterInterceptWithOverride(intercept_response->GetResponse(env)); + ContinueAfterInterceptWithOverride( + args->intercept_response->GetResponse(env)); return; }
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/XRWOriginTrialTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/XRWOriginTrialTest.java new file mode 100644 index 0000000..50a3e78 --- /dev/null +++ b/android_webview/javatests/src/org/chromium/android_webview/test/XRWOriginTrialTest.java
@@ -0,0 +1,182 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.android_webview.test; + +import android.annotation.SuppressLint; +import android.util.Pair; + +import androidx.annotation.NonNull; +import androidx.test.filters.SmallTest; + +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; + +import org.chromium.android_webview.AwBrowserContext; +import org.chromium.android_webview.AwContents; +import org.chromium.base.test.util.Batch; +import org.chromium.base.test.util.CommandLineFlags; +import org.chromium.content_public.browser.test.util.TestCallbackHelperContainer.OnPageFinishedHelper; +import org.chromium.net.test.util.TestWebServer; +import org.chromium.net.test.util.WebServer.HTTPHeader; +import org.chromium.net.test.util.WebServer.HTTPRequest; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Integration test for the X-Requested-With origin trial in WebView. + * + * This test is temporary, and should be deleted once the WebViewXRequestedWithDeprecation trial + * ends. + * + * Tests in this class start a server on specific ports since the port number is part of the origin, + * which is encoded in the static trial tokens. To reduce the likelihood of collisions when running + * the full test suite, the tests use different ports, but it is still possible that the server may + * not be able to start if the same test is run multiple times in quick succession. + */ +@Batch(Batch.PER_CLASS) +@RunWith(AwJUnit4ClassRunner.class) +@CommandLineFlags.Add({"origin-trial-public-key=dRCs+TocuKkocNKa0AtZ4awrt9XKH2SQCI6o4FY6BNA=", + "enable-features=PersistentOriginTrials,WebViewXRequestedWithHeaderControl"}) +public class XRWOriginTrialTest { + private static final String ORIGIN_TRIAL_HEADER = "Origin-Trial"; + private static final String CRITICAL_ORIGIN_TRIAL_HEADER = "Critical-Origin-Trial"; + private static final String XRW_HEADER = "X-Requested-With"; + + private static final String PERSISTENT_TRIAL_NAME = "WebViewXRequestedWithDeprecation"; + + private static final String REQUEST_PATH = "/"; + + @Rule + public AwActivityTestRule mActivityTestRule = new AwActivityTestRule(); + + private TestAwContentsClient mContentsClient; + private AwContents mAwContents; + private TestWebServer mServer; + + @Before + public void setUp() throws Exception { + mContentsClient = new TestAwContentsClient(); + AwTestContainerView testContainerView = + mActivityTestRule.createAwTestContainerViewOnMainSync(mContentsClient); + mAwContents = testContainerView.getAwContents(); + AwActivityTestRule.enableJavaScriptOnUiThread(mAwContents); + } + + @SuppressLint("VisibleForTests") + @After + public void tearDown() throws Exception { + // Clean up the stored tokens after tests + mActivityTestRule.runOnUiThread(() -> { + AwBrowserContext context = mActivityTestRule.getAwBrowserContext(); + context.clearPersistentOriginTrialStorageForTesting(); + }); + mActivityTestRule.destroyAwContentsOnMainSync(mAwContents); + // Tests are expected to start their servers on different ports, but they should all be shut + // down at the end. + mServer.shutdown(); + } + + @Test + @SmallTest + public void testNoHeaderWithoutOriginTrial() throws Throwable { + // Port number unique to this test method. Other tests should use different ports. + mServer = TestWebServer.start(22433); + String requestUrl = setResponseHeadersForUrl(Collections.emptyMap()); + + loadUrlSync(requestUrl); + Assert.assertFalse(getLastRequestHeaders().containsKey(XRW_HEADER)); + Assert.assertEquals(1, mServer.getRequestCount(REQUEST_PATH)); + + // Make a second request to verify the header stays off if no trial is set. + loadUrlSync(requestUrl); + Assert.assertFalse(getLastRequestHeaders().containsKey(XRW_HEADER)); + Assert.assertEquals(2, mServer.getRequestCount(REQUEST_PATH)); + } + + @Test + @SmallTest + public void testHeaderOnSecondRequestWithTrial() throws Throwable { + // Port number unique to this test method. Other tests should use different ports. + mServer = TestWebServer.start(22443); + /* Generated with + tools/origin_trials/generate_token.py http://localhost:22443 \ + WebViewXRequestedWithDeprecation --expire-timestamp=2000000000 + */ + final String trialToken = + "AyNFCtEW5OxS8NeOGQ5IN10l6pQiiDRWtvgLq7teZDxi7gl//fxZ/EBVYXDWqYs8LQ5IhCx/xya5ZHh1NT" + + "FA1AwAAABpeyJvcmlnaW4iOiAiaHR0cDovL2xvY2FsaG9zdDoyMjQ0MyIsICJmZWF0dXJlIjogIl" + + "dlYlZpZXdYUmVxdWVzdGVkV2l0aERlcHJlY2F0aW9uIiwgImV4cGlyeSI6IDIwMDAwMDAwMDB9"; + + var headers = Map.of(ORIGIN_TRIAL_HEADER, trialToken); + String requestUrl = setResponseHeadersForUrl(headers); + + loadUrlSync(requestUrl); + Assert.assertFalse(getLastRequestHeaders().containsKey(XRW_HEADER)); + Assert.assertEquals(1, mServer.getRequestCount(REQUEST_PATH)); + + // Make a second request to verify the header is enabled when the trial is active. + loadUrlSync(requestUrl); + Assert.assertTrue(getLastRequestHeaders().containsKey(XRW_HEADER)); + Assert.assertEquals(2, mServer.getRequestCount(REQUEST_PATH)); + } + + @Test + @SmallTest + public void testCriticalEnablesHeader() throws Throwable { + // Port number unique to this test method. Other tests should use different ports. + mServer = TestWebServer.start(22453); + /* Generated with + tools/origin_trials/generate_token.py http://localhost:22453 \ + WebViewXRequestedWithDeprecation --expire-timestamp=2000000000 + */ + final String trialToken = + "A/kHrOHw8h7WZ6L54iqkbhLpjf8m6dhrvKfZ1IQS3lF32ZFowFpx3E9LFYftApKPUZ5HBkSr5GI1UQra8c" + + "nK3QQAAABpeyJvcmlnaW4iOiAiaHR0cDovL2xvY2FsaG9zdDoyMjQ1MyIsICJmZWF0dXJlIjogIl" + + "dlYlZpZXdYUmVxdWVzdGVkV2l0aERlcHJlY2F0aW9uIiwgImV4cGlyeSI6IDIwMDAwMDAwMDB9"; + var headers = Map.of(ORIGIN_TRIAL_HEADER, trialToken, CRITICAL_ORIGIN_TRIAL_HEADER, + PERSISTENT_TRIAL_NAME); + + String requestUrl = setResponseHeadersForUrl(headers); + + // When the trial is requested as critical, the WebView should automatically make two + // requests to enable the trial on the last one. + loadUrlSync(requestUrl); + Assert.assertTrue(getLastRequestHeaders().containsKey(XRW_HEADER)); + Assert.assertEquals(2, mServer.getRequestCount(REQUEST_PATH)); + } + + private void loadUrlSync(String requestUrl) throws Exception { + OnPageFinishedHelper onPageFinishedHelper = mContentsClient.getOnPageFinishedHelper(); + mActivityTestRule.loadUrlSync(mAwContents, onPageFinishedHelper, requestUrl); + Assert.assertEquals(requestUrl, onPageFinishedHelper.getUrl()); + } + + @NonNull + private Map<String, String> getLastRequestHeaders() { + HTTPRequest lastRequest = mServer.getLastRequest(REQUEST_PATH); + HTTPHeader[] headers = lastRequest.getHeaders(); + Map<String, String> headerMap = new HashMap<>(); + for (var header : headers) { + headerMap.put(header.key, header.value); + } + return headerMap; + } + + private String setResponseHeadersForUrl(Map<String, String> headers) { + List<Pair<String, String>> headerList = new ArrayList<>(); + for (var entry : headers.entrySet()) { + headerList.add(new Pair<>(entry.getKey(), entry.getValue())); + } + return mServer.setResponse("/", "<!DOCTYPE html><html><body>Hello, World", headerList); + } +}
diff --git a/android_webview/test/BUILD.gn b/android_webview/test/BUILD.gn index 2a4ba532..c2f3e89 100644 --- a/android_webview/test/BUILD.gn +++ b/android_webview/test/BUILD.gn
@@ -413,6 +413,7 @@ "../javatests/src/org/chromium/android_webview/test/WebViewAsynchronousFindApisTest.java", "../javatests/src/org/chromium/android_webview/test/WebViewFindApisTestRule.java", "../javatests/src/org/chromium/android_webview/test/WebViewModalDialogOverrideTest.java", + "../javatests/src/org/chromium/android_webview/test/XRWOriginTrialTest.java", "../javatests/src/org/chromium/android_webview/test/common/crash/CrashInfoEqualityMatcher.java", "../javatests/src/org/chromium/android_webview/test/common/crash/CrashInfoTest.java", "../javatests/src/org/chromium/android_webview/test/common/services/ServiceConnectionDelayRecorderTest.java",
diff --git a/ash/BUILD.gn b/ash/BUILD.gn index 837d5ad..20abe14 100644 --- a/ash/BUILD.gn +++ b/ash/BUILD.gn
@@ -731,8 +731,6 @@ "login/ui/login_error_bubble.h", "login/ui/login_expanded_public_account_view.cc", "login/ui/login_expanded_public_account_view.h", - "login/ui/login_palette.cc", - "login/ui/login_palette.h", "login/ui/login_password_view.cc", "login/ui/login_password_view.h", "login/ui/login_pin_input_view.cc",
diff --git a/ash/app_list/README.md b/ash/app_list/README.md index d6d3dbc..d617829 100644 --- a/ash/app_list/README.md +++ b/ash/app_list/README.md
@@ -34,7 +34,7 @@ code lived in `//ui/app_list` because the app list used to be supported on non-Chrome OS platforms. -`//chrome/browser/ui/app_list` contains app list code that has Profile +`//chrome/browser/ash/app_list` contains app list code that has Profile dependencies. This includes sync support and communication with the App Service (which provides the list of installed apps). @@ -126,8 +126,8 @@ [2]: /ash/app_list/model/app_list_item_list.h [3]: /ash/app_list/model/app_list_item.h [4]: /ash/public/cpp/app_list/app_list_types.h -[5]: /chrome/browser/ui/app_list/chrome_app_list_model_updater.h -[6]: /chrome/browser/ui/app_list/chrome_app_list_item.h +[5]: /chrome/browser/ash/app_list/chrome_app_list_model_updater.h +[6]: /chrome/browser/ash/app_list/chrome_app_list_item.h [7]: http://go/move-applist #### Folders
diff --git a/ash/app_list/app_list_view_delegate.h b/ash/app_list/app_list_view_delegate.h index 9f3d9935..7b03ea9 100644 --- a/ash/app_list/app_list_view_delegate.h +++ b/ash/app_list/app_list_view_delegate.h
@@ -60,12 +60,9 @@ // Invoked to open the search result and log a click. If the result is // represented by a SuggestedChipView or is a zero state result, // |suggested_index| is the index of the view in the list of suggestions. - // |launched_from| values must match the LaunchedFrom enum in - // chrome/browser/ui/app_list/app_launch_event_logger.proto. |launch_type| is - // either kAppSearchResult or kSearchResult and is used to determine which - // histograms to log to. - // |launch_as_default|: True if the result is launched as the default result - // by user pressing ENTER key. + // |launch_type| is either kAppSearchResult or kSearchResult and is used to + // determine which histograms to log to. |launch_as_default|: True if the + // result is launched as the default result by user pressing ENTER key. virtual void OpenSearchResult(const std::string& result_id, int event_flags, AppListLaunchedFrom launched_from,
diff --git a/ash/app_list/views/apps_grid_view_unittest.cc b/ash/app_list/views/apps_grid_view_unittest.cc index 60e9758..16d52c5c 100644 --- a/ash/app_list/views/apps_grid_view_unittest.cc +++ b/ash/app_list/views/apps_grid_view_unittest.cc
@@ -5202,7 +5202,7 @@ // that contains the options to sort is verified to be shown in apps grid // view. The menu option selecting is also simulated to ensure the sorting is // called. The actual sort algorithm is tested in - // chrome/browser/ui/app_list/app_list_sort_browsertest.cc. + // chrome/browser/ash/app_list/app_list_sort_browsertest.cc. model_->PopulateApps(1); @@ -5373,7 +5373,7 @@ // that contains the options to sort is verified to be shown on folder app // list item view. The menu option selecting is also simulated to ensure the // sorting is called. The actual sort algorithm is tested in - // chrome/browser/ui/app_list/app_list_sort_browsertest.cc. + // chrome/browser/ash/app_list/app_list_sort_browsertest.cc. // Create a folder item and update the layout. model_->CreateAndPopulateFolderWithApps(2);
diff --git a/ash/ash_strings.grd b/ash/ash_strings.grd index c5fbc2d..37caebc 100644 --- a/ash/ash_strings.grd +++ b/ash/ash_strings.grd
@@ -2936,6 +2936,9 @@ <message name="IDS_ASH_STATUS_TRAY_NETWORK_MONITORED_WARNING" desc="The label used in the tray popup to warn users their network may be monitored." > Network may be monitored </message> + <message name="IDS_ASH_STATUS_TRAY_NETWORK_MANAGED_WARNING" desc="The label used in the tray popup to warn users their network is managed by an admin." > + Network is managed + </message> <message name="IDS_ASH_A11Y_ROLE_BUTTON" desc="The label used to identify a button. For accessibility only." > Button </message>
diff --git a/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_NETWORK_MANAGED_WARNING.png.sha1 b/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_NETWORK_MANAGED_WARNING.png.sha1 new file mode 100644 index 0000000..c1794a0 --- /dev/null +++ b/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_NETWORK_MANAGED_WARNING.png.sha1
@@ -0,0 +1 @@ +bb9f516067ad04ec5da5c4fb718992955356f430 \ No newline at end of file
diff --git a/ash/constants/ash_pref_names.cc b/ash/constants/ash_pref_names.cc index 7a702fe..c50c4afc 100644 --- a/ash/constants/ash_pref_names.cc +++ b/ash/constants/ash_pref_names.cc
@@ -1124,6 +1124,11 @@ // user. const char kShowPostRebootNotification[] = "ash.show_post_reboot_notification"; +// Boolean value indicating that the USB device detected notification should be +// shown to the user. +const char kUsbDetectorNotificationEnabled[] = + "ash.usb_detector_notification_enabled"; + // This integer pref indicates which color for the backlight keyboard is // currently selected. A pref with this name is registered in two different // contexts:
diff --git a/ash/constants/ash_pref_names.h b/ash/constants/ash_pref_names.h index 56bbb8df..058885d 100644 --- a/ash/constants/ash_pref_names.h +++ b/ash/constants/ash_pref_names.h
@@ -519,6 +519,9 @@ COMPONENT_EXPORT(ASH_CONSTANTS) extern const char kShowPostRebootNotification[]; COMPONENT_EXPORT(ASH_CONSTANTS) +extern const char kUsbDetectorNotificationEnabled[]; + +COMPONENT_EXPORT(ASH_CONSTANTS) extern const char kPersonalizationKeyboardBacklightColor[]; COMPONENT_EXPORT(ASH_CONSTANTS) extern const char kAutozoomState[];
diff --git a/ash/in_session_auth/auth_dialog_contents_view.cc b/ash/in_session_auth/auth_dialog_contents_view.cc index a5f953d..80aa1f9 100644 --- a/ash/in_session_auth/auth_dialog_contents_view.cc +++ b/ash/in_session_auth/auth_dialog_contents_view.cc
@@ -456,7 +456,7 @@ void AuthDialogContentsView::AddPinTextInputView() { pin_text_input_view_ = - container_->AddChildView(std::make_unique<LoginPasswordView>(palette_)); + container_->AddChildView(std::make_unique<LoginPasswordView>()); pin_text_input_view_->SetPaintToLayer(); pin_text_input_view_->layer()->SetFillsBoundsOpaquely(false); @@ -470,7 +470,7 @@ void AuthDialogContentsView::AddPasswordView() { password_view_ = - container_->AddChildView(std::make_unique<LoginPasswordView>(palette_)); + container_->AddChildView(std::make_unique<LoginPasswordView>()); password_view_->SetPaintToLayer(); password_view_->layer()->SetFillsBoundsOpaquely(false); @@ -493,7 +493,7 @@ DCHECK(auth_methods_ & kAuthPin); if (pin_autosubmit_on_) { pin_pad_view_ = container_->AddChildView(std::make_unique<LoginPinView>( - LoginPinView::Style::kAlphanumeric, palette_, + LoginPinView::Style::kAlphanumeric, base::BindRepeating(&AuthDialogContentsView::OnInsertDigitFromPinPad, base::Unretained(this)), base::BindRepeating(&AuthDialogContentsView::OnBackspaceFromPinPad, @@ -506,7 +506,7 @@ base::Unretained(this))); } else { pin_pad_view_ = container_->AddChildView(std::make_unique<LoginPinView>( - LoginPinView::Style::kAlphanumeric, palette_, + LoginPinView::Style::kAlphanumeric, base::BindRepeating(&AuthDialogContentsView::OnInsertDigitFromPinPad, base::Unretained(this)), base::BindRepeating(&AuthDialogContentsView::OnBackspaceFromPinPad, @@ -526,7 +526,7 @@ void AuthDialogContentsView::AddPinDigitInputView() { pin_digit_input_view_ = - container_->AddChildView(std::make_unique<LoginPinInputView>(palette_)); + container_->AddChildView(std::make_unique<LoginPinInputView>()); pin_digit_input_view_->UpdateLength(auth_metadata_.autosubmit_pin_length); pin_digit_input_view_->SetVisible(true); }
diff --git a/ash/in_session_auth/auth_dialog_contents_view.h b/ash/in_session_auth/auth_dialog_contents_view.h index 348121b..941f34a94 100644 --- a/ash/in_session_auth/auth_dialog_contents_view.h +++ b/ash/in_session_auth/auth_dialog_contents_view.h
@@ -7,7 +7,6 @@ #include <string> -#include "ash/login/ui/login_palette.h" #include "ash/public/cpp/login_types.h" #include "ui/views/view.h" @@ -177,8 +176,6 @@ // Extra parameters to control the UI. AuthMethodsMetadata auth_metadata_; - LoginPalette palette_ = CreateInSessionAuthPalette(); - // Container which holds action buttons. views::View* action_view_container_ = nullptr;
diff --git a/ash/login/ui/access_code_input.cc b/ash/login/ui/access_code_input.cc index 5f7e61b..1687603 100644 --- a/ash/login/ui/access_code_input.cc +++ b/ash/login/ui/access_code_input.cc
@@ -7,11 +7,13 @@ #include <string> #include "ash/strings/grit/ash_strings.h" +#include "ash/style/ash_color_id.h" #include "ash/style/ash_color_provider.h" #include "base/strings/strcat.h" #include "ui/accessibility/ax_enums.mojom.h" #include "ui/accessibility/ax_node_data.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/color/color_provider.h" #include "ui/compositor/layer.h" #include "ui/events/keycodes/dom/dom_code.h" #include "ui/gfx/range/range.h" @@ -38,8 +40,7 @@ FlexCodeInput::FlexCodeInput(OnInputChange on_input_change, OnEnter on_enter, OnEscape on_escape, - bool obscure_pin, - SkColor text_color) + bool obscure_pin) : on_input_change_(std::move(on_input_change)), on_enter_(std::move(on_enter)), on_escape_(std::move(on_escape)) { @@ -58,7 +59,7 @@ gfx::Font::Weight::NORMAL)); code_field_->SetBorder(views::CreateSolidSidedBorder( gfx::Insets::TLBR(0, 0, kAccessCodeFlexUnderlineThicknessDp, 0), - text_color)); + kColorAshShieldAndBaseOpaque)); code_field_->SetBackgroundColor(SK_ColorTRANSPARENT); code_field_->SetFocusBehavior(FocusBehavior::ALWAYS); code_field_->SetPreferredSize( @@ -74,6 +75,12 @@ FlexCodeInput::~FlexCodeInput() = default; +void FlexCodeInput::OnThemeChanged() { + AccessCodeInput::OnThemeChanged(); + const SkColor color = GetColorProvider()->GetColor(kColorAshTextColorPrimary); + SetInputColor(color); +} + void FlexCodeInput::SetAccessibleName(const std::u16string& name) { code_field_->SetAccessibleName(name); } @@ -207,8 +214,7 @@ OnInputChange on_input_change, OnEnter on_enter, OnEscape on_escape, - bool obscure_pin, - SkColor text_color) + bool obscure_pin) : on_input_change_(std::move(on_input_change)), on_enter_(std::move(on_enter)), on_escape_(std::move(on_escape)), @@ -235,13 +241,13 @@ } else { field->SetTextInputType(ui::TEXT_INPUT_TYPE_NUMBER); } - field->SetTextColor(text_color); + field->SetTextColor(SK_ColorTRANSPARENT); field->SetFontList(views::Textfield::GetDefaultFontList().Derive( kAccessCodeFontSizeDeltaDp, gfx::Font::FontStyle::NORMAL, gfx::Font::Weight::NORMAL)); - field->SetBorder(views::CreateSolidSidedBorder( + field->SetBorder(views::CreateThemedSolidSidedBorder( gfx::Insets::TLBR(0, 0, kAccessCodeInputFieldUnderlineThicknessDp, 0), - text_color)); + kColorAshShieldAndBaseOpaque)); field->SetGroup(kFixedLengthInputGroup); // Ignores the a11y focus of |field| because the a11y needs to focus to the @@ -257,6 +263,12 @@ FixedLengthCodeInput::~FixedLengthCodeInput() = default; +void FixedLengthCodeInput::OnThemeChanged() { + AccessCodeInput::OnThemeChanged(); + const SkColor color = GetColorProvider()->GetColor(kColorAshTextColorPrimary); + SetInputColor(color); +} + // Inserts |value| into the |active_field_| and moves focus to the next field // if it exists. void FixedLengthCodeInput::InsertDigit(int value) {
diff --git a/ash/login/ui/access_code_input.h b/ash/login/ui/access_code_input.h index 7cdc36be..487cfc0 100644 --- a/ash/login/ui/access_code_input.h +++ b/ash/login/ui/access_code_input.h
@@ -65,13 +65,14 @@ FlexCodeInput(OnInputChange on_input_change, OnEnter on_enter, OnEscape on_escape, - bool obscure_pin, - SkColor text_color); + bool obscure_pin); FlexCodeInput(const FlexCodeInput&) = delete; FlexCodeInput& operator=(const FlexCodeInput&) = delete; ~FlexCodeInput() override; + void OnThemeChanged() override; + void SetAccessibleName(const std::u16string& name); // Appends |value| to the code @@ -172,13 +173,14 @@ OnInputChange on_input_change, OnEnter on_enter, OnEscape on_escape, - bool obscure_pin, - SkColor text_color); + bool obscure_pin); ~FixedLengthCodeInput() override; FixedLengthCodeInput(const FixedLengthCodeInput&) = delete; FixedLengthCodeInput& operator=(const FixedLengthCodeInput&) = delete; + void OnThemeChanged() override; + // Inserts |value| into the |active_field_| and moves focus to the next field // if it exists. void InsertDigit(int value) override;
diff --git a/ash/login/ui/arrow_button_view.cc b/ash/login/ui/arrow_button_view.cc index ce47fa3..d0b2ce31 100644 --- a/ash/login/ui/arrow_button_view.cc +++ b/ash/login/ui/arrow_button_view.cc
@@ -7,6 +7,7 @@ #include <utility> #include "ash/resources/vector_icons/vector_icons.h" +#include "ash/style/ash_color_id.h" #include "ash/style/ash_color_provider.h" #include "ash/style/color_util.h" #include "base/time/time.h" @@ -28,8 +29,6 @@ namespace ash { namespace { -// Arrow icon size. -constexpr int kArrowIconSizeDp = 20; constexpr int kArrowIconBackroundRadius = 25; constexpr const int kBorderForFocusRingDp = 3; @@ -89,6 +88,12 @@ views::FocusRing::Get(this)->SetPathGenerator( std::make_unique<views::FixedSizeCircleHighlightPathGenerator>( kArrowIconBackroundRadius)); + SetImageModel(views::Button::STATE_NORMAL, + ui::ImageModel::FromVectorIcon(kLockScreenArrowIcon, + kColorAshButtonIconColor)); + SetImageModel(views::Button::STATE_DISABLED, + ui::ImageModel::FromVectorIcon( + kLockScreenArrowIcon, kColorAshButtonIconDisabledColor)); } ArrowButtonView::~ArrowButtonView() = default; @@ -99,12 +104,13 @@ // Draw background. cc::PaintFlags flags; flags.setAntiAlias(true); - if (background_color_) { - flags.setColor(*background_color_); - } else { - flags.setColor(AshColorProvider::Get()->GetControlsLayerColor( - AshColorProvider::ControlsLayerType::kControlBackgroundColorInactive)); - } + SkColor background_color = + background_color_id_ ? GetColorProvider()->GetColor(*background_color_id_) + : AshColorProvider::Get()->GetControlsLayerColor( + AshColorProvider::ControlsLayerType:: + kControlBackgroundColorInactive); + + flags.setColor(background_color); flags.setStyle(cc::PaintFlags::kFill_Style); canvas->DrawCircle(gfx::PointF(rect.CenterPoint()), rect.width() / 2, flags); @@ -116,24 +122,6 @@ PaintLoadingArc(canvas, rect, loading_animation_->GetCurrentValue()); } -void ArrowButtonView::OnThemeChanged() { - LoginButton::OnThemeChanged(); - auto* color_provider = AshColorProvider::Get(); - SkColor icon_color; - if (icon_color_) { - icon_color = *icon_color_; - } else { - icon_color = color_provider->GetContentLayerColor( - AshColorProvider::ContentLayerType::kButtonIconColor); - } - SetImage(views::Button::STATE_NORMAL, - gfx::CreateVectorIcon(kLockScreenArrowIcon, kArrowIconSizeDp, - icon_color)); - SetImage(views::Button::STATE_DISABLED, - gfx::CreateVectorIcon(kLockScreenArrowIcon, kArrowIconSizeDp, - ColorUtil::GetDisabledColor(icon_color))); -} - void ArrowButtonView::RunTransformAnimation() { StopAnimating();
diff --git a/ash/login/ui/arrow_button_view.h b/ash/login/ui/arrow_button_view.h index be655f09..64f011b4 100644 --- a/ash/login/ui/arrow_button_view.h +++ b/ash/login/ui/arrow_button_view.h
@@ -33,7 +33,6 @@ // LoginButton: void PaintButtonContents(gfx::Canvas* canvas) override; - void OnThemeChanged() override; // Causes the icon to transform bigger and smaller repeatedly to draw user // attention to click. @@ -47,8 +46,9 @@ // the animation is looped. void EnableLoadingAnimation(bool enabled); - void SetBackgroundColor(SkColor color) { background_color_ = color; } - void SetIconColor(SkColor color) { icon_color_ = color; } + void SetBackgroundColorId(ui::ColorId color_id) { + background_color_id_ = color_id; + } private: // Helper class that translates events from the loading animation events into @@ -70,8 +70,7 @@ LoadingAnimationDelegate loading_animation_delegate_{this}; std::unique_ptr<gfx::MultiAnimation> loading_animation_; - absl::optional<SkColor> background_color_; - absl::optional<SkColor> icon_color_; + absl::optional<ui::ColorId> background_color_id_; }; } // namespace ash
diff --git a/ash/login/ui/login_auth_user_view.cc b/ash/login/ui/login_auth_user_view.cc index 3b1333e..cb85448 100644 --- a/ash/login/ui/login_auth_user_view.cc +++ b/ash/login/ui/login_auth_user_view.cc
@@ -1057,9 +1057,7 @@ callbacks.on_remove_warning_shown, callbacks.on_remove); user_view_ = user_view.get(); - const LoginPalette palette = CreateDefaultLoginPalette(GetColorProvider()); - - auto password_view = std::make_unique<LoginPasswordView>(palette); + auto password_view = std::make_unique<LoginPasswordView>(); password_view_ = password_view.get(); password_view->SetPaintToLayer(); // Needed for opacity animation. password_view->layer()->SetFillsBoundsOpaquely(false); @@ -1073,7 +1071,7 @@ callbacks.on_easy_unlock_icon_hovered, callbacks.on_easy_unlock_icon_tapped); - auto pin_input_view = std::make_unique<LoginPinInputView>(palette); + auto pin_input_view = std::make_unique<LoginPinInputView>(); pin_input_view_ = pin_input_view.get(); pin_input_view->Init(base::BindRepeating(&LoginAuthUserView::OnAuthSubmit, base::Unretained(this)), @@ -1094,7 +1092,7 @@ gfx::Size(/*ignored*/ 0, kPinPasswordToggleButtonHeight)); auto pin_view = std::make_unique<LoginPinView>( - LoginPinView::Style::kAlphanumeric, palette, + LoginPinView::Style::kAlphanumeric, base::BindRepeating(&LoginAuthUserView::OnPinPadInsertDigit, base::Unretained(this)), base::BindRepeating(&LoginAuthUserView::OnPinPadBackspace, @@ -1698,14 +1696,6 @@ RequestFocus(); } -void LoginAuthUserView::OnThemeChanged() { - NonAccessibleView::OnThemeChanged(); - const LoginPalette palette = CreateDefaultLoginPalette(GetColorProvider()); - password_view_->UpdatePalette(palette); - pin_input_view_->UpdatePalette(palette); - pin_view_->UpdatePalette(palette); -} - void LoginAuthUserView::OnAuthSubmit(const std::u16string& password) { LOG(WARNING) << "crbug.com/1339004 : AuthSubmit " << password_view_->IsReadOnly() << " / "
diff --git a/ash/login/ui/login_auth_user_view.h b/ash/login/ui/login_auth_user_view.h index 59944df..ffe6e46 100644 --- a/ash/login/ui/login_auth_user_view.h +++ b/ash/login/ui/login_auth_user_view.h
@@ -218,9 +218,6 @@ void RequestFocus() override; void OnGestureEvent(ui::GestureEvent* event) override; - // NonAccessibleView: - void OnThemeChanged() override; - private: struct UiState; class FingerprintView;
diff --git a/ash/login/ui/login_palette.cc b/ash/login/ui/login_palette.cc deleted file mode 100644 index 9ed38b4..0000000 --- a/ash/login/ui/login_palette.cc +++ /dev/null
@@ -1,60 +0,0 @@ -// Copyright 2020 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ash/login/ui/login_palette.h" - -#include "ash/style/ash_color_id.h" -#include "ui/color/color_provider.h" -#include "ui/gfx/color_palette.h" - -namespace ash { - -LoginPalette CreateDefaultLoginPalette(ui::ColorProvider* color_provider) { - // `color_provider` should be initialized as `view::GetColorProvider()`, which - // might be nullptr before the view isadded to the widget. Make sure to - // override the colors inside `OnThemeChanged` which will be called after the - // view is added to the widget hierarchy. - if (!color_provider) - return LoginPalette(); - - return LoginPalette( - {.password_text_color = - color_provider->GetColor(kColorAshTextColorPrimary), - .password_placeholder_text_color = - color_provider->GetColor(kColorAshTextColorSecondary), - .password_background_color = SK_ColorTRANSPARENT, - .password_row_background_color = - color_provider->GetColor(kColorAshControlBackgroundColorInactive), - .button_enabled_color = - color_provider->GetColor(kColorAshIconColorPrimary), - .button_annotation_color = - color_provider->GetColor(kColorAshTextColorSecondary), - .pin_ink_drop_highlight_color = - color_provider->GetColor(kColorAshInkDrop), - .pin_ink_drop_ripple_color = color_provider->GetColor(kColorAshInkDrop), - .pin_input_text_color = - color_provider->GetColor(kColorAshTextColorPrimary), - .submit_button_background_color = - color_provider->GetColor(kColorAshControlBackgroundColorInactive), - .submit_button_icon_color = - color_provider->GetColor(kColorAshButtonIconColor)}); -} - -// TODO(b/218610104): Support dark theme. -LoginPalette CreateInSessionAuthPalette() { - return LoginPalette( - {.password_text_color = gfx::kGoogleGrey900, - .password_placeholder_text_color = gfx::kGoogleGrey600, - .password_background_color = SK_ColorTRANSPARENT, - .password_row_background_color = gfx::kGoogleGrey100, - .button_enabled_color = gfx::kGoogleGrey900, - .button_annotation_color = gfx::kGoogleGrey700, - .pin_ink_drop_highlight_color = SkColorSetA(gfx::kGoogleGrey900, 0x0A), - .pin_ink_drop_ripple_color = SkColorSetA(gfx::kGoogleGrey900, 0x0F), - .pin_input_text_color = gfx::kGoogleGrey900, - .submit_button_background_color = gfx::kGoogleGrey100, - .submit_button_icon_color = gfx::kGoogleGrey900}); -} - -} // namespace ash
diff --git a/ash/login/ui/login_palette.h b/ash/login/ui/login_palette.h deleted file mode 100644 index aeb367a..0000000 --- a/ash/login/ui/login_palette.h +++ /dev/null
@@ -1,44 +0,0 @@ -// Copyright 2020 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef ASH_LOGIN_UI_LOGIN_PALETTE_H_ -#define ASH_LOGIN_UI_LOGIN_PALETTE_H_ - -#include "ash/ash_export.h" -#include "third_party/skia/include/core/SkColor.h" - -namespace ui { -class ColorProvider; -} // namespace ui - -namespace ash { - -// LoginPalette provides color values to LoginPasswordView and LoginPinView, -// so that these views can be adapted for different scenarios, e.g. the -// LoginPasswordView for in-session auth dialog will have different colors from -// the LoginPasswordView for lock screen. -struct LoginPalette { - SkColor password_text_color; - SkColor password_placeholder_text_color; - SkColor password_background_color; - SkColor password_row_background_color; - SkColor button_enabled_color; - SkColor button_annotation_color; - SkColor pin_ink_drop_highlight_color; - SkColor pin_ink_drop_ripple_color; - SkColor pin_input_text_color; - SkColor submit_button_background_color; - SkColor submit_button_icon_color; -}; - -// For login screen and lock screen. -ASH_EXPORT LoginPalette -CreateDefaultLoginPalette(ui::ColorProvider* color_provider); - -// For in-session auth dialog. -ASH_EXPORT LoginPalette CreateInSessionAuthPalette(); - -} // namespace ash - -#endif // ASH_LOGIN_UI_LOGIN_PALETTE_H_
diff --git a/ash/login/ui/login_password_view.cc b/ash/login/ui/login_password_view.cc index a262e01..dafd7ea6 100644 --- a/ash/login/ui/login_password_view.cc +++ b/ash/login/ui/login_password_view.cc
@@ -16,6 +16,7 @@ #include "ash/resources/vector_icons/vector_icons.h" #include "ash/shell.h" #include "ash/strings/grit/ash_strings.h" +#include "ash/style/ash_color_id.h" #include "ash/style/ash_color_provider.h" #include "ash/style/color_util.h" #include "base/bind.h" @@ -203,39 +204,29 @@ // and indicators (easy unlock, display password, caps lock enabled). class LoginPasswordView::LoginPasswordRow : public views::View { public: - explicit LoginPasswordRow(const LoginPalette& palette) { - UpdatePalette(palette); - } + explicit LoginPasswordRow() = default; ~LoginPasswordRow() override = default; LoginPasswordRow(const LoginPasswordRow&) = delete; LoginPasswordRow& operator=(const LoginPasswordRow&) = delete; - void UpdatePalette(const LoginPalette& palette) { - color_ = palette.password_row_background_color; - } - // views::View: void OnPaint(gfx::Canvas* canvas) override { views::View::OnPaint(canvas); - cc::PaintFlags flags; flags.setStyle(cc::PaintFlags::kFill_Style); - flags.setColor(color_); + flags.setColor(AshColorProvider::Get()->GetControlsLayerColor( + AshColorProvider::ControlsLayerType::kControlBackgroundColorInactive)); canvas->DrawRoundRect(GetContentsBounds(), kPasswordRowCornerRadiusDp, flags); } - - private: - SkColor color_; }; // A textfield that selects all text on focus and allows to switch between // show/hide password modes. class LoginPasswordView::LoginTextfield : public views::Textfield { public: - LoginTextfield(const LoginPalette& palette, - base::RepeatingClosure on_focus_closure, + LoginTextfield(base::RepeatingClosure on_focus_closure, base::RepeatingClosure on_blur_closure) : on_focus_closure_(std::move(on_focus_closure)), on_blur_closure_(std::move(on_blur_closure)) { @@ -244,7 +235,6 @@ set_placeholder_font_list(font_list_visible_); SetObscuredGlyphSpacing(kPasswordGlyphSpacing); SetBorder(nullptr); - UpdatePalette(palette); // TODO(crbug.com/1218186): Remove this, this is in place temporarily to be // able to submit accessibility checks, but this focusable View needs to @@ -255,6 +245,14 @@ LoginTextfield& operator=(const LoginTextfield&) = delete; ~LoginTextfield() override = default; + void OnThemeChanged() override { + views::Textfield::OnThemeChanged(); + SetTextColor(GetColorProvider()->GetColor(kColorAshTextColorPrimary)); + SetBackgroundColor(SK_ColorTRANSPARENT); + set_placeholder_text_color( + GetColorProvider()->GetColor(kColorAshTextColorSecondary)); + } + // views::Textfield: void OnBlur() override { if (on_blur_closure_) @@ -286,12 +284,6 @@ return gfx::Size(kPasswordTotalWidthDp, kIconSizeDp); } - void UpdatePalette(const LoginPalette& palette) { - SetTextColor(palette.password_text_color); - SetBackgroundColor(palette.password_background_color); - set_placeholder_text_color(palette.password_placeholder_text_color); - } - private: const gfx::FontList font_list_visible_ = views::Textfield::GetDefaultFontList().Derive( @@ -459,10 +451,8 @@ class LoginPasswordView::DisplayPasswordButton : public views::ToggleImageButton { public: - DisplayPasswordButton(const LoginPalette& palette, - views::Button::PressedCallback callback) + explicit DisplayPasswordButton(views::Button::PressedCallback callback) : ToggleImageButton(std::move(callback)) { - UpdateIcons(palette); SetTooltipText(l10n_util::GetStringUTF16( IDS_ASH_LOGIN_DISPLAY_PASSWORD_BUTTON_ACCESSIBLE_NAME_SHOW)); SetToggledTooltipText(l10n_util::GetStringUTF16( @@ -471,26 +461,24 @@ SetInstallFocusRingOnFocus(true); views::FocusRing::Get(this)->SetColorId(ui::kColorAshFocusRing); + const ui::ImageModel invisible_icon = + ui::ImageModel::FromVectorIcon(kLockScreenPasswordInvisibleIcon, + kColorAshIconColorPrimary, kIconSizeDp); + const ui::ImageModel visible_icon = ui::ImageModel::FromVectorIcon( + kLockScreenPasswordVisibleIcon, kColorAshIconColorPrimary, kIconSizeDp); + const ui::ImageModel visible_icon_disabled = ui::ImageModel::FromVectorIcon( + kLockScreenPasswordVisibleIcon, kColorAshIconPrimaryDisabledColor, + kIconSizeDp); + SetImageModel(views::Button::STATE_NORMAL, visible_icon); + SetImageModel(views::Button::STATE_DISABLED, visible_icon_disabled); + SetToggledImageModel(views::Button::STATE_NORMAL, invisible_icon); + SetEnabled(false); } DisplayPasswordButton(const DisplayPasswordButton&) = delete; DisplayPasswordButton& operator=(const DisplayPasswordButton&) = delete; ~DisplayPasswordButton() override = default; - - void UpdateIcons(const LoginPalette& palette) { - auto color = palette.button_enabled_color; - const ui::ImageModel invisible_icon = ui::ImageModel::FromVectorIcon( - kLockScreenPasswordInvisibleIcon, color, kIconSizeDp); - const ui::ImageModel visible_icon = ui::ImageModel::FromVectorIcon( - kLockScreenPasswordVisibleIcon, color, kIconSizeDp); - const ui::ImageModel visible_icon_disabled = ui::ImageModel::FromVectorIcon( - kLockScreenPasswordVisibleIcon, ColorUtil::GetDisabledColor(color), - kIconSizeDp); - SetImageModel(views::Button::STATE_NORMAL, visible_icon); - SetImageModel(views::Button::STATE_DISABLED, visible_icon_disabled); - SetToggledImageModel(views::Button::STATE_NORMAL, invisible_icon); - } }; // A container view that either shows the easy unlock icon or the caps lock @@ -580,7 +568,7 @@ view_->easy_unlock_icon_->set_immediately_hover_for_test(); } -LoginPasswordView::LoginPasswordView(const LoginPalette& palette) +LoginPasswordView::LoginPasswordView() : clear_password_timer_(FROM_HERE, kClearPasswordAfterDelay, base::BindRepeating(&LoginPasswordView::Reset, @@ -589,8 +577,7 @@ kHidePasswordAfterDelay, base::BindRepeating(&LoginPasswordView::HidePassword, base::Unretained(this), - /*chromevox_exception=*/true)), - palette_(palette) { + /*chromevox_exception=*/true)) { Shell::Get()->ime_controller()->AddObserver(this); // Contains the password layout on the left and the submit button on the @@ -616,7 +603,7 @@ views::BoxLayout::MainAxisAlignment::kCenter); password_row_ = password_row_container->AddChildView( - std::make_unique<LoginPasswordRow>(palette)); + std::make_unique<LoginPasswordRow>()); auto layout = std::make_unique<views::BoxLayout>( views::BoxLayout::Orientation::kHorizontal, gfx::Insets::VH(0, kInternalHorizontalPaddingPasswordRowDp), @@ -640,6 +627,8 @@ capslock_icon_ = left_icon_->AddChildView(std::make_unique<views::ImageView>()); + capslock_icon_->SetTooltipText( + l10n_util::GetStringUTF16(IDS_ASH_LOGIN_CAPS_LOCK_ACCESSIBLE_NAME)); capslock_icon_->SetVisible(false); auto* textfield_container = @@ -652,7 +641,6 @@ // view, as the textfield will expand to fill it. textfield_ = textfield_container->AddChildView(std::make_unique<LoginTextfield>( - palette_, // Highlight on focus. Remove highlight on blur. base::BindRepeating(&LoginPasswordView::SetCapsLockHighlighted, base::Unretained(this), /*highlight=*/true), @@ -662,20 +650,18 @@ layout_ptr->SetFlexForView(textfield_container, 1); - display_password_button_ = - password_row_->AddChildView(std::make_unique<DisplayPasswordButton>( - palette_, base::BindRepeating( - [](LoginPasswordView* view) { - view->InvertPasswordDisplayingState(); - }, - this))); + display_password_button_ = password_row_->AddChildView( + std::make_unique<DisplayPasswordButton>(base::BindRepeating( + [](LoginPasswordView* view) { + view->InvertPasswordDisplayingState(); + }, + this))); submit_button_ = AddChildView(std::make_unique<ArrowButtonView>( base::BindRepeating(&LoginPasswordView::SubmitPassword, base::Unretained(this)), kSubmitButtonContentSizeDp)); - submit_button_->SetBackgroundColor(palette.submit_button_background_color); - submit_button_->SetIconColor(palette.submit_button_icon_color); + submit_button_->SetBackgroundColorId(kColorAshControlBackgroundColorInactive); submit_button_->SetTooltipText( l10n_util::GetStringUTF16(IDS_ASH_LOGIN_SUBMIT_BUTTON_ACCESSIBLE_NAME)); submit_button_->SetAccessibleName( @@ -683,7 +669,7 @@ submit_button_->SetEnabled(false); // Initialize the capslock icon without a highlight. - SetCapsLockHighlighted(/*highlight=*/false); + is_capslock_higlight_ = false; // Make sure the textfield always starts with focus. RequestFocus(); @@ -958,29 +944,11 @@ on_submit_.Run(textfield_->GetText()); } -void LoginPasswordView::UpdatePalette(const LoginPalette& palette) { - palette_ = palette; - SetCapsLockHighlighted(is_capslock_higlight_); - password_row_->UpdatePalette(palette); - textfield_->UpdatePalette(palette); - display_password_button_->UpdateIcons(palette); - - // Submit button does not have palette support, explicitly update colors. - submit_button_->SetBackgroundColor(palette.submit_button_background_color); - submit_button_->SetIconColor(palette.submit_button_icon_color); - // Setting color does not apply them immediately, trigger theme changed event. - submit_button_->OnThemeChanged(); -} - void LoginPasswordView::SetCapsLockHighlighted(bool highlight) { is_capslock_higlight_ = highlight; - SkColor color = palette_.button_enabled_color; - if (!highlight) - color = ColorUtil::GetDisabledColor(color); - capslock_icon_->SetImage( - gfx::CreateVectorIcon(kLockScreenCapsLockIcon, kIconSizeDp, color)); - capslock_icon_->SetTooltipText( - l10n_util::GetStringUTF16(IDS_ASH_LOGIN_CAPS_LOCK_ACCESSIBLE_NAME)); + capslock_icon_->SetImage(ui::ImageModel::FromVectorIcon( + kLockScreenCapsLockIcon, highlight ? kColorAshIconColorPrimary + : kColorAshIconPrimaryDisabledColor)); } } // namespace ash
diff --git a/ash/login/ui/login_password_view.h b/ash/login/ui/login_password_view.h index b5c97259..b8944cf 100644 --- a/ash/login/ui/login_password_view.h +++ b/ash/login/ui/login_password_view.h
@@ -10,7 +10,6 @@ #include "ash/ash_export.h" #include "ash/ime/ime_controller_impl.h" #include "ash/login/ui/animated_rounded_image_view.h" -#include "ash/login/ui/login_palette.h" #include "ash/public/cpp/session/user_info.h" #include "base/memory/weak_ptr.h" #include "ui/base/ime/ash/ime_keyboard.h" @@ -90,7 +89,7 @@ using OnEasyUnlockIconHovered = base::RepeatingClosure; // Must call |Init| after construction. - explicit LoginPasswordView(const LoginPalette& palette); + LoginPasswordView(); LoginPasswordView(const LoginPasswordView&) = delete; LoginPasswordView& operator=(const LoginPasswordView&) = delete; @@ -175,10 +174,6 @@ // field. void SubmitPassword(); - // When theme changes, palette should be updated and some subviews - // recalculated. - void UpdatePalette(const LoginPalette& palette); - private: class EasyUnlockIcon; class DisplayPasswordButton; @@ -213,8 +208,6 @@ // through the password and make the characters read out loud one by one). base::RetainingOneShotTimer hide_password_timer_; - LoginPalette palette_; - LoginPasswordRow* password_row_ = nullptr; LoginTextfield* textfield_ = nullptr; ArrowButtonView* submit_button_ = nullptr;
diff --git a/ash/login/ui/login_password_view_test.cc b/ash/login/ui/login_password_view_test.cc index df4c00779..a49e5561 100644 --- a/ash/login/ui/login_password_view_test.cc +++ b/ash/login/ui/login_password_view_test.cc
@@ -4,7 +4,6 @@ #include "ash/login/ui/login_password_view.h" -#include "ash/login/ui/login_palette.h" #include "ash/login/ui/login_test_base.h" #include "ash/public/cpp/login_types.h" #include "ash/shell.h" @@ -41,8 +40,7 @@ void SetUp() override { LoginTestBase::SetUp(); - view_ = new LoginPasswordView( - CreateDefaultLoginPalette(/*color_provider=*/nullptr)); + view_ = new LoginPasswordView(); view_->Init( base::BindRepeating(&LoginPasswordViewTest::OnPasswordSubmit, base::Unretained(this)),
diff --git a/ash/login/ui/login_pin_input_view.cc b/ash/login/ui/login_pin_input_view.cc index dc116c32..18f250c 100644 --- a/ash/login/ui/login_pin_input_view.cc +++ b/ash/login/ui/login_pin_input_view.cc
@@ -7,6 +7,7 @@ #include "ash/constants/ash_features.h" #include "ash/login/ui/access_code_input.h" #include "ash/strings/grit/ash_strings.h" +#include "ash/style/ash_color_id.h" #include "base/bind.h" #include "base/callback_helpers.h" #include "base/strings/utf_string_conversions.h" @@ -36,7 +37,6 @@ class LoginPinInput : public FixedLengthCodeInput { public: LoginPinInput(int length, - const LoginPalette& palette, LoginPinInputView::OnPinSubmit on_submit, LoginPinInputView::OnPinChanged on_changed); @@ -52,10 +52,6 @@ // views::view void GetAccessibleNodeData(ui::AXNodeData* node_data) override; - void UpdatePalette(const LoginPalette& palette) { - SetInputColor(palette.pin_input_text_color); - } - private: int length_ = 0; LoginPinInputView::OnPinSubmit on_submit_; @@ -65,7 +61,6 @@ }; LoginPinInput::LoginPinInput(int length, - const LoginPalette& palette, LoginPinInputView::OnPinSubmit on_submit, LoginPinInputView::OnPinChanged on_changed) : FixedLengthCodeInput(length, @@ -74,8 +69,7 @@ base::Unretained(this)), /*on_enter*/ base::DoNothing(), /*on_escape*/ base::DoNothing(), - /*obscure_pin*/ true, - /*text_color*/ palette.pin_input_text_color), + /*obscure_pin*/ true), length_(length), on_submit_(on_submit), on_changed_(on_changed) { @@ -163,12 +157,11 @@ return view_->code_input_->IsEmpty(); } -LoginPinInputView::LoginPinInputView(const LoginPalette& palette) - : length_(kDefaultLength), palette_(palette) { +LoginPinInputView::LoginPinInputView() : length_(kDefaultLength) { SetLayoutManager(std::make_unique<views::FillLayout>()); code_input_ = AddChildView(std::make_unique<LoginPinInput>( - length_, palette_, + length_, base::BindRepeating(&LoginPinInputView::SubmitPin, base::Unretained(this)), base::BindRepeating(&LoginPinInputView::OnChanged, @@ -213,7 +206,7 @@ RemoveChildView(code_input_); delete code_input_; code_input_ = AddChildView(std::make_unique<LoginPinInput>( - length_, palette_, + length_, base::BindRepeating(&LoginPinInputView::SubmitPin, base::Unretained(this)), base::BindRepeating(&LoginPinInputView::OnChanged, @@ -224,12 +217,6 @@ SetVisible(was_visible); } -void LoginPinInputView::UpdatePalette(const LoginPalette& palette) { - palette_ = palette; - DCHECK(code_input_); - code_input_->UpdatePalette(palette_); -} - void LoginPinInputView::SetAuthenticateWithEmptyPinOnReturnKey(bool enabled) { authenticate_with_empty_pin_on_return_key_ = enabled; }
diff --git a/ash/login/ui/login_pin_input_view.h b/ash/login/ui/login_pin_input_view.h index f5d9104..9c091323 100644 --- a/ash/login/ui/login_pin_input_view.h +++ b/ash/login/ui/login_pin_input_view.h
@@ -7,7 +7,6 @@ #include "ash/ash_export.h" #include "ash/login/ui/access_code_input.h" -#include "ash/login/ui/login_palette.h" #include "ash/login/ui/non_accessible_view.h" #include "base/memory/weak_ptr.h" #include "ui/views/view.h" @@ -53,7 +52,7 @@ LoginPinInputView* const view_; }; - explicit LoginPinInputView(const LoginPalette& palette); + explicit LoginPinInputView(); LoginPinInputView& operator=(const LoginPinInputView&) = delete; LoginPinInputView(const LoginPinInputView&) = delete; ~LoginPinInputView() override; @@ -69,9 +68,6 @@ // Updates the length of the field. Used when switching users. void UpdateLength(const size_t pin_length); - // Updates the palette use by the view. - void UpdatePalette(const LoginPalette& palette); - // When set, hitting return will attempt an unlock with an empty PIN. // LoginAuthUserView interprets such attempts as a SmartLock unlock. void SetAuthenticateWithEmptyPinOnReturnKey(bool enabled); @@ -99,9 +95,6 @@ // Current field length. size_t length_ = kDefaultLength; - // Palette for the instance. - LoginPalette palette_; - // Whether the field is read only. bool is_read_only_ = false;
diff --git a/ash/login/ui/login_pin_input_view_unittest.cc b/ash/login/ui/login_pin_input_view_unittest.cc index 095e8ff..d89b880f 100644 --- a/ash/login/ui/login_pin_input_view_unittest.cc +++ b/ash/login/ui/login_pin_input_view_unittest.cc
@@ -5,7 +5,6 @@ #include "ash/login/ui/login_pin_input_view.h" #include <memory> #include <string> -#include "ash/login/ui/login_palette.h" #include "ash/login/ui/login_test_base.h" #include "base/bind.h" #include "base/strings/strcat.h" @@ -32,8 +31,7 @@ void SetUp() override { LoginTestBase::SetUp(); - view_ = new LoginPinInputView( - CreateDefaultLoginPalette(/*color_provider=*/nullptr)); + view_ = new LoginPinInputView(); view_->Init(base::BindRepeating(&LoginPinInputViewTest::OnPinSubmit, base::Unretained(this)), base::BindRepeating(&LoginPinInputViewTest::OnPinChanged, @@ -150,23 +148,6 @@ ExpectTextValue("\u2022 "); /* 1 bullet 5 spaces */ } -TEST_P(LoginPinInputViewTest, FlagsPreservedOnPaletteChange) { - EXPECT_TRUE(view_->GetVisible()); - EXPECT_FALSE(view_->IsReadOnly()); - - // Updating the palette doesn't affect the default flags. - view_->UpdatePalette(CreateDefaultLoginPalette(/*color_provider=*/nullptr)); - EXPECT_TRUE(view_->GetVisible()); - EXPECT_FALSE(view_->IsReadOnly()); - - // After inverting flags and updating the pallette, the flags are preserved. - view_->SetVisible(false); - view_->SetReadOnly(true); - view_->UpdatePalette(CreateDefaultLoginPalette(/*color_provider=*/nullptr)); - EXPECT_FALSE(view_->GetVisible()); - EXPECT_TRUE(view_->IsReadOnly()); -} - INSTANTIATE_TEST_SUITE_P(PinInputViewTests, LoginPinInputViewTest, testing::Values(6),
diff --git a/ash/login/ui/login_pin_view.cc b/ash/login/ui/login_pin_view.cc index f9bbfb0..adacd379 100644 --- a/ash/login/ui/login_pin_view.cc +++ b/ash/login/ui/login_pin_view.cc
@@ -10,6 +10,7 @@ #include "ash/login/ui/views_utils.h" #include "ash/resources/vector_icons/vector_icons.h" #include "ash/strings/grit/ash_strings.h" +#include "ash/style/ash_color_id.h" #include "ash/style/ash_color_provider.h" #include "ash/style/color_util.h" #include "base/bind.h" @@ -87,13 +88,10 @@ // A base class for pin button in the pin keyboard. class BasePinButton : public views::View { public: - BasePinButton(const LoginPalette& palette, - const gfx::Size& size, + BasePinButton(const gfx::Size& size, const std::u16string& accessible_name, const base::RepeatingClosure& on_press) - : on_press_(on_press), - palette_(palette), - accessible_name_(accessible_name) { + : on_press_(on_press), accessible_name_(accessible_name) { SetFocusBehavior(FocusBehavior::ACCESSIBLE_ONLY); SetPreferredSize(size); @@ -115,7 +113,7 @@ [](BasePinButton* host) { auto highlight = std::make_unique<views::InkDropHighlight>( gfx::SizeF(host->size()), - host->palette_.pin_ink_drop_highlight_color); + host->GetColorProvider()->GetColor(kColorAshInkDrop)); highlight->set_visible_opacity(1.0f); return highlight; }, @@ -131,7 +129,7 @@ return std::make_unique<views::FloodFillInkDropRipple>( host->size(), host->GetLocalBounds().InsetsFrom(bounds), views::InkDrop::Get(host)->GetInkDropCenterBasedOnLastEvent(), - host->palette_.pin_ink_drop_ripple_color, + host->GetColorProvider()->GetColor(kColorAshInkDrop), /*visible_opacity=*/1.f); }, this)); @@ -147,10 +145,6 @@ ~BasePinButton() override = default; - virtual void UpdatePalette(const LoginPalette& palette) { - palette_ = palette; - } - // views::View: void OnFocus() override { View::OnFocus(); @@ -201,8 +195,6 @@ // Handler for press events. May be null. base::RepeatingClosure on_press_; - LoginPalette palette_; - private: const std::u16string accessible_name_; }; @@ -214,11 +206,9 @@ public: DigitPinButton(int value, bool show_sub_label, - const LoginPalette& palette, const gfx::Size& size, const LoginPinView::OnPinKey& on_key) - : BasePinButton(palette, - size, + : BasePinButton(size, GetButtonLabelForNumber(value), base::BindRepeating(on_key, value)) { SetID(GetViewIdForPinNumber(value)); @@ -231,6 +221,7 @@ label_->SetFontList(base_font_list.Derive(8 /*size_delta*/, gfx::Font::FontStyle::NORMAL, gfx::Font::Weight::NORMAL)); + label_->SetEnabledColorId(kColorAshIconColorPrimary); if (show_sub_label) { sub_label_ = AddChildView(new views::Label( @@ -241,9 +232,8 @@ sub_label_->SetFontList( base_font_list.Derive(-1 /*size_delta*/, gfx::Font::FontStyle::NORMAL, gfx::Font::Weight::NORMAL)); + sub_label_->SetEnabledColorId(kColorAshTextColorSecondary); } - - UpdatePalette(palette); } DigitPinButton(const DigitPinButton&) = delete; @@ -251,13 +241,6 @@ ~DigitPinButton() override = default; - void UpdatePalette(const LoginPalette& palette) override { - BasePinButton::UpdatePalette(palette); - label_->SetEnabledColor(palette.button_enabled_color); - if (sub_label_) - sub_label_->SetEnabledColor(palette.button_annotation_color); - } - private: views::Label* label_ = nullptr; views::Label* sub_label_ = nullptr; @@ -266,11 +249,9 @@ // A PIN button that displays backspace icon. class LoginPinView::BackspacePinButton : public BasePinButton { public: - BackspacePinButton(const LoginPalette& palette, - const gfx::Size& size, + BackspacePinButton(const gfx::Size& size, const base::RepeatingClosure& on_press) - : BasePinButton(palette, - size, + : BasePinButton(size, l10n_util::GetStringUTF16( IDS_ASH_PIN_KEYBOARD_DELETE_ACCESSIBLE_NAME), on_press) { @@ -298,9 +279,8 @@ UpdateImage(); } - // BasePinButton: - void UpdatePalette(const LoginPalette& palette) override { - BasePinButton::UpdatePalette(palette); + void OnThemeChanged() override { + BasePinButton::OnThemeChanged(); UpdateImage(); } @@ -380,10 +360,10 @@ } void UpdateImage() { - SkColor color = palette_.button_enabled_color; - if (!GetEnabled()) - color = ColorUtil::GetDisabledColor(color); - image_->SetImage(gfx::CreateVectorIcon(kLockScreenBackspaceIcon, color)); + ui::ColorId color_id = GetEnabled() ? kColorAshIconColorPrimary + : kColorAshIconPrimaryDisabledColor; + image_->SetImage( + ui::ImageModel::FromVectorIcon(kLockScreenBackspaceIcon, color_id)); } bool is_held_ = false; @@ -402,11 +382,8 @@ // A PIN button to press to submit the PIN / password. class LoginPinView::SubmitPinButton : public BasePinButton { public: - SubmitPinButton(const LoginPalette& palette, - const gfx::Size& size, - const base::RepeatingClosure& on_press) - : BasePinButton(palette, - size, + SubmitPinButton(const gfx::Size& size, const base::RepeatingClosure& on_press) + : BasePinButton(size, l10n_util::GetStringUTF16( IDS_ASH_LOGIN_SUBMIT_BUTTON_ACCESSIBLE_NAME), on_press) { @@ -418,18 +395,12 @@ SubmitPinButton& operator=(const SubmitPinButton&) = delete; ~SubmitPinButton() override = default; - // BasePinButton: - void UpdatePalette(const LoginPalette& palette) override { - BasePinButton::UpdatePalette(palette); - UpdateImage(); - } - private: void UpdateImage() { - SkColor color = palette_.button_enabled_color; - if (!GetEnabled()) - color = ColorUtil::GetDisabledColor(color); - image_->SetImage(gfx::CreateVectorIcon(kLockScreenArrowIcon, color)); + ui::ColorId color_id = GetEnabled() ? kColorAshIconColorPrimary + : kColorAshIconPrimaryDisabledColor; + image_->SetImage( + ui::ImageModel::FromVectorIcon(kLockScreenArrowIcon, color_id)); } views::ImageView* image_ = nullptr; @@ -474,11 +445,10 @@ } LoginPinView::LoginPinView(Style keyboard_style, - const LoginPalette& palette, const OnPinKey& on_key, const OnPinBackspace& on_backspace, const OnPinSubmit& on_submit) - : NonAccessibleView(kLoginPinViewClassName), palette_(palette) { + : NonAccessibleView(kLoginPinViewClassName) { DCHECK(on_key); DCHECK(on_backspace); @@ -491,8 +461,8 @@ bool show_letters = keyboard_style == Style::kAlphanumeric; auto add_digit_button = [&](View* row, int value) { - digit_buttons_.push_back(row->AddChildView(new DigitPinButton( - value, show_letters, palette_, kButtonSize, on_key))); + digit_buttons_.push_back(row->AddChildView( + new DigitPinButton(value, show_letters, kButtonSize, on_key))); }; // 1-2-3 @@ -515,14 +485,14 @@ // backspace-0-submit row = BuildAndAddRow(); - backspace_ = row->AddChildView(std::make_unique<BackspacePinButton>( - palette_, kButtonSize, on_backspace)); + backspace_ = row->AddChildView( + std::make_unique<BackspacePinButton>(kButtonSize, on_backspace)); add_digit_button(row, 0); // Only add the submit button if the callback is valid. if (!on_submit.is_null()) { submit_button_ = row->AddChildView( - std::make_unique<SubmitPinButton>(palette_, kButtonSize, on_submit)); + std::make_unique<SubmitPinButton>(kButtonSize, on_submit)); } } @@ -543,16 +513,6 @@ submit_button_->SetEnabled(!is_empty); } -void LoginPinView::UpdatePalette(const LoginPalette& palette) { - palette_ = palette; - backspace_->UpdatePalette(palette); - if (submit_button_) - submit_button_->UpdatePalette(palette); - for (auto* digit_button : digit_buttons_) { - digit_button->UpdatePalette(palette); - } -} - NonAccessibleView* LoginPinView::BuildAndAddRow() { auto* row = new NonAccessibleView(); row->SetLayoutManager(std::make_unique<views::BoxLayout>(
diff --git a/ash/login/ui/login_pin_view.h b/ash/login/ui/login_pin_view.h index 79cd7539..c581c61d 100644 --- a/ash/login/ui/login_pin_view.h +++ b/ash/login/ui/login_pin_view.h
@@ -9,7 +9,6 @@ #include <vector> #include "ash/ash_export.h" -#include "ash/login/ui/login_palette.h" #include "ash/login/ui/non_accessible_view.h" #include "base/callback.h" #include "base/callback_helpers.h" @@ -97,7 +96,6 @@ // If |on_submit| is valid, there will be a submit button on the pinpad that // calls it when the user wants to submit the PIN / password. LoginPinView(Style keyboard_style, - const LoginPalette& palette, const OnPinKey& on_key, const OnPinBackspace& on_backspace, const OnPinSubmit& on_submit = base::NullCallback()); @@ -113,8 +111,6 @@ // Called when the password field text changed. void OnPasswordTextChanged(bool is_empty); - void UpdatePalette(const LoginPalette& palette); - private: class BackspacePinButton; class DigitPinButton; @@ -123,8 +119,6 @@ // Builds and returns a new view which contains a row of the PIN keyboard. NonAccessibleView* BuildAndAddRow(); - LoginPalette palette_; - BackspacePinButton* backspace_ = nullptr; // The submit button does not exist when no |on_submit| callback is passed. SubmitPinButton* submit_button_ = nullptr;
diff --git a/ash/login/ui/login_pin_view_unittest.cc b/ash/login/ui/login_pin_view_unittest.cc index 151642c..b9be595 100644 --- a/ash/login/ui/login_pin_view_unittest.cc +++ b/ash/login/ui/login_pin_view_unittest.cc
@@ -32,14 +32,14 @@ // Creates login pin view with the specified keyboard |style| and sets it up // in a widget. void CreateLoginPinViewWithStyle(LoginPinView::Style style) { - view_ = new LoginPinView( - style, CreateDefaultLoginPalette(/*color_provider=*/nullptr), - base::BindRepeating(&LoginPinViewTest::OnPinKey, - base::Unretained(this)), - base::BindRepeating(&LoginPinViewTest::OnPinBackspace, - base::Unretained(this)), - base::BindRepeating(&LoginPinViewTest::OnPinSubmit, - base::Unretained(this))); + view_ = + new LoginPinView(style, + base::BindRepeating(&LoginPinViewTest::OnPinKey, + base::Unretained(this)), + base::BindRepeating(&LoginPinViewTest::OnPinBackspace, + base::Unretained(this)), + base::BindRepeating(&LoginPinViewTest::OnPinSubmit, + base::Unretained(this))); SetWidget(CreateWidgetWithContent(view_)); }
diff --git a/ash/login/ui/pin_request_view.cc b/ash/login/ui/pin_request_view.cc index cad2a66..0b2bdf34 100644 --- a/ash/login/ui/pin_request_view.cc +++ b/ash/login/ui/pin_request_view.cc
@@ -300,9 +300,6 @@ add_spacer(kDescriptionToAccessCodeDistanceDp); - auto* color_provider = GetColorProvider(); - LoginPalette palette = CreateDefaultLoginPalette(color_provider); - // Access code input view. if (request.pin_length.has_value()) { CHECK_GT(request.pin_length.value(), 0); @@ -313,7 +310,7 @@ base::BindRepeating(&PinRequestView::SubmitCode, base::Unretained(this)), base::BindRepeating(&PinRequestView::OnBack, base::Unretained(this)), - request.obscure_pin, palette.pin_input_text_color)); + request.obscure_pin)); access_code_view_->SetFocusBehavior(FocusBehavior::ALWAYS); } else { auto flex_code_input = std::make_unique<FlexCodeInput>( @@ -322,7 +319,7 @@ base::BindRepeating(&PinRequestView::SubmitCode, base::Unretained(this)), base::BindRepeating(&PinRequestView::OnBack, base::Unretained(this)), - request.obscure_pin, palette.pin_input_text_color); + request.obscure_pin); flex_code_input->SetAccessibleName(default_accessible_title_); access_code_view_ = AddChildView(std::move(flex_code_input)); } @@ -333,7 +330,6 @@ // passing a null |on_submit| callback. pin_keyboard_view_ = new LoginPinView(LoginPinView::Style::kAlphanumeric, - CreateDefaultLoginPalette(color_provider), base::BindRepeating(&AccessCodeInput::InsertDigit, base::Unretained(access_code_view_)), base::BindRepeating(&AccessCodeInput::Backspace, @@ -546,14 +542,6 @@ node_data->SetName(default_accessible_title_); } -void PinRequestView::OnThemeChanged() { - views::DialogDelegateView::OnThemeChanged(); - auto* color_provider = GetColorProvider(); - access_code_view_->SetInputColor( - color_provider->GetColor(kColorAshTextColorPrimary)); - pin_keyboard_view_->UpdatePalette(CreateDefaultLoginPalette(color_provider)); -} - // If |pin_keyboard_always_enabled_| is not set, pin keyboard is only shown in // tablet mode. bool PinRequestView::PinKeyboardVisible() const {
diff --git a/ash/login/ui/pin_request_view.h b/ash/login/ui/pin_request_view.h index 9dfb046..c0cb4406 100644 --- a/ash/login/ui/pin_request_view.h +++ b/ash/login/ui/pin_request_view.h
@@ -132,7 +132,6 @@ void RequestFocus() override; gfx::Size CalculatePreferredSize() const override; void GetAccessibleNodeData(ui::AXNodeData* node_data) override; - void OnThemeChanged() override; // views::DialogDelegateView: views::View* GetInitiallyFocusedView() override;
diff --git a/ash/public/cpp/app_list/app_list_types.h b/ash/public/cpp/app_list/app_list_types.h index bb57dab..12c12c6 100644 --- a/ash/public/cpp/app_list/app_list_types.h +++ b/ash/public/cpp/app_list/app_list_types.h
@@ -322,8 +322,7 @@ kHideContinueSection, }; -// The UI component the user launched the search result from. Must match -// chrome/browser/ui/app_list/app_launch_event_logger.proto. +// The UI component the user launched the search result from. // This enum is used in a histogram, do not remove/renumber entries. If you're // adding to this enum with the intention that it will be logged, update the // AppListLaunchedFrom enum listing in tools/metrics/histograms/enums.xml.
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_sr-Latn.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_sr-Latn.xtb index 36a53d8..0e0618c 100644 --- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_sr-Latn.xtb +++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_sr-Latn.xtb
@@ -99,7 +99,7 @@ <translation id="4148761611071495477"><ph name="CTRL" /><ph name="SEPARATOR" /><ph name="G" /> ili <ph name="ENTER" /></translation> <translation id="4240486403425279990">Režim pregleda</translation> <translation id="4382340674111381977">Vratite se na prethodnu stranicu</translation> -<translation id="4458670250301149821">Premestite ikonu aplikacije u direktorijum na mreži aplikacija ili iz njega</translation> +<translation id="4458670250301149821">Premestite ikonu aplikacije u folder na mreži aplikacija ili iz njega</translation> <translation id="4472417192667361414">Podešavanja sistema i prikaza</translation> <translation id="449214506787633354"><ph name="CTRL" />, pa <ph name="LEFT" /> ili <ph name="RIGHT" /> ili <ph name="UP" /> ili <ph name="DOWN" /></translation> <translation id="4556221320735744018">Pregledajte pomoć za tasterske prečice</translation>
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_sr.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_sr.xtb index 0422d18c..21c451c8 100644 --- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_sr.xtb +++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_sr.xtb
@@ -99,7 +99,7 @@ <translation id="4148761611071495477"><ph name="CTRL" /><ph name="SEPARATOR" /><ph name="G" /> или <ph name="ENTER" /></translation> <translation id="4240486403425279990">Режим прегледа</translation> <translation id="4382340674111381977">Вратите се на претходну страницу</translation> -<translation id="4458670250301149821">Преместите икону апликације у директоријум на мрежи апликација или из њега</translation> +<translation id="4458670250301149821">Преместите икону апликације у фолдер на мрежи апликација или из њега</translation> <translation id="4472417192667361414">Подешавања система и приказа</translation> <translation id="449214506787633354"><ph name="CTRL" />, па <ph name="LEFT" /> или <ph name="RIGHT" /> или <ph name="UP" /> или <ph name="DOWN" /></translation> <translation id="4556221320735744018">Прегледајте помоћ за тастерске пречице</translation>
diff --git a/ash/strings/ash_strings_ar.xtb b/ash/strings/ash_strings_ar.xtb index b97a1f3..d9fe7943 100644 --- a/ash/strings/ash_strings_ar.xtb +++ b/ash/strings/ash_strings_ar.xtb
@@ -1497,6 +1497,7 @@ <translation id="954052413789300507">لا تتوفّر مساحة كافية لتنزيل الملف <ph name="FILENAME" />. عليك إخلاء بعض المساحة.</translation> <translation id="974545358917229949">عرض <ph name="RESULT_COUNT" /> نتيجة عن <ph name="QUERY" /></translation> <translation id="98515147261107953">أفقي</translation> +<translation id="989374776391122812">عناصر التحكّم في الكاميرا والصوت</translation> <translation id="990277280839877440">تم إغلاق النافذة <ph name="WINDOW_TITILE" />.</translation> <translation id="994354411665877646"><ph name="NETWORK_NAME" />، <ph name="SUBTEXT" /></translation> <translation id="996204416024568215">يُرجى الحصول على أحدث الميزات وتحسينات الأمان. يتم تنزيل التحديثات في الخلفية.</translation>
diff --git a/ash/strings/ash_strings_as.xtb b/ash/strings/ash_strings_as.xtb index 7fafc5e..4ec6d09 100644 --- a/ash/strings/ash_strings_as.xtb +++ b/ash/strings/ash_strings_as.xtb
@@ -1257,6 +1257,7 @@ <translation id="79341161159229895"><ph name="FIRST_PARENT_EMAIL" /> আৰু <ph name="SECOND_PARENT_EMAIL" />এ একাউণ্ট পৰিচালনা কৰে</translation> <translation id="793716872548410480">আপোনাৰ ক্লিপব’ৰ্ড চাবলৈ <ph name="SHORTCUT_KEY_NAME" /> + ভি টিপক। আপুনি প্ৰতিলিপি কৰা অন্তিম ৫ টা বস্তু আপোনাৰ ক্লিপব’ৰ্ডত ছেভ কৰা হৈছে।</translation> <translation id="7942349550061667556">ৰঙা</translation> +<translation id="7963992254934562106"><ph name="PHONE_NAME" />ৰ পৰা</translation> <translation id="7968693143708939792">ফ’ল্ডাৰ বাছনি কৰক...</translation> <translation id="7977927628060636163">ম'বাইল নেটৱৰ্ক বিচাৰি থকা হৈছে...</translation> <translation id="7982789257301363584">নেটৱৰ্ক</translation>
diff --git a/ash/strings/ash_strings_az.xtb b/ash/strings/ash_strings_az.xtb index 377af74..af1cd0b 100644 --- a/ash/strings/ash_strings_az.xtb +++ b/ash/strings/ash_strings_az.xtb
@@ -1496,6 +1496,7 @@ <translation id="954052413789300507"><ph name="FILENAME" /> üçün cihazda kifayət qədər yer yoxdur. Yer boşaldın.</translation> <translation id="974545358917229949"><ph name="QUERY" /> üzrə <ph name="RESULT_COUNT" /> nəticə göstərilir</translation> <translation id="98515147261107953">Peyzaj</translation> +<translation id="989374776391122812">Kamera və audio nəzarətləri</translation> <translation id="990277280839877440"><ph name="WINDOW_TITILE" /> pəncərəsi bağlandı.</translation> <translation id="994354411665877646"><ph name="NETWORK_NAME" />, <ph name="SUBTEXT" /></translation> <translation id="996204416024568215">Ən son funksiyaları və təhlükəsizlik təkmilləşdirmələrini əldə edin. Güncəlləmələr arxa fonda işləyir.</translation>
diff --git a/ash/strings/ash_strings_bg.xtb b/ash/strings/ash_strings_bg.xtb index 3690523..22c8ea7 100644 --- a/ash/strings/ash_strings_bg.xtb +++ b/ash/strings/ash_strings_bg.xtb
@@ -1257,6 +1257,7 @@ <translation id="79341161159229895">Профилът се управлява от <ph name="FIRST_PARENT_EMAIL" /> и <ph name="SECOND_PARENT_EMAIL" /></translation> <translation id="793716872548410480">Натиснете <ph name="SHORTCUT_KEY_NAME" /> + V, за да видите буферната памет. В нея се запазват последните 5 неща, които сте копирали.</translation> <translation id="7942349550061667556">червено</translation> +<translation id="7963992254934562106">От <ph name="PHONE_NAME" /></translation> <translation id="7968693143708939792">Избор на папка...</translation> <translation id="7977927628060636163">Търсят се мобилни мрежи...</translation> <translation id="7982789257301363584">Мрежа</translation>
diff --git a/ash/strings/ash_strings_da.xtb b/ash/strings/ash_strings_da.xtb index 2421fc5..8038e2d 100644 --- a/ash/strings/ash_strings_da.xtb +++ b/ash/strings/ash_strings_da.xtb
@@ -1257,6 +1257,7 @@ <translation id="79341161159229895">Kontoen administreres af <ph name="FIRST_PARENT_EMAIL" /> og <ph name="SECOND_PARENT_EMAIL" /></translation> <translation id="793716872548410480">Tryk på <ph name="SHORTCUT_KEY_NAME" />+V for at se din udklipsholder. De seneste fem elementer, du har kopieret, gemmes i din udklipsholder.</translation> <translation id="7942349550061667556">Rød</translation> +<translation id="7963992254934562106">Fra <ph name="PHONE_NAME" /></translation> <translation id="7968693143708939792">Vælg mappe...</translation> <translation id="7977927628060636163">Søger efter mobilnetværk...</translation> <translation id="7982789257301363584">Netværk</translation>
diff --git a/ash/strings/ash_strings_de.xtb b/ash/strings/ash_strings_de.xtb index b2f630d..ead0ecf 100644 --- a/ash/strings/ash_strings_de.xtb +++ b/ash/strings/ash_strings_de.xtb
@@ -1256,6 +1256,7 @@ <translation id="79341161159229895">Konto verwaltet von <ph name="FIRST_PARENT_EMAIL" /> und <ph name="SECOND_PARENT_EMAIL" /></translation> <translation id="793716872548410480">Drücke „<ph name="SHORTCUT_KEY_NAME" /> + V“, um die Zwischenablage zu öffnen. In der Zwischenablage werden immer die letzten fünf Elemente, die du kopiert hast, gespeichert.</translation> <translation id="7942349550061667556">Rot</translation> +<translation id="7963992254934562106">Von <ph name="PHONE_NAME" /></translation> <translation id="7968693143708939792">Ordner auswählen...</translation> <translation id="7977927628060636163">Nach Mobilfunknetzen wird gesucht…</translation> <translation id="7982789257301363584">Netzwerk</translation>
diff --git a/ash/strings/ash_strings_en-GB.xtb b/ash/strings/ash_strings_en-GB.xtb index 778d456..7b4d6b53 100644 --- a/ash/strings/ash_strings_en-GB.xtb +++ b/ash/strings/ash_strings_en-GB.xtb
@@ -1257,6 +1257,7 @@ <translation id="79341161159229895">Account managed by <ph name="FIRST_PARENT_EMAIL" /> and <ph name="SECOND_PARENT_EMAIL" /></translation> <translation id="793716872548410480">Press <ph name="SHORTCUT_KEY_NAME" /> + V to view your clipboard. The last five items that you've copied are saved to your clipboard.</translation> <translation id="7942349550061667556">Red</translation> +<translation id="7963992254934562106">From <ph name="PHONE_NAME" /></translation> <translation id="7968693143708939792">Select folder…</translation> <translation id="7977927628060636163">Searching for mobile networks...</translation> <translation id="7982789257301363584">Network</translation> @@ -1495,6 +1496,7 @@ <translation id="954052413789300507">Not enough space for <ph name="FILENAME" />. Free up space.</translation> <translation id="974545358917229949">Displaying <ph name="RESULT_COUNT" /> results for <ph name="QUERY" /></translation> <translation id="98515147261107953">Landscape</translation> +<translation id="989374776391122812">Camera and audio controls</translation> <translation id="990277280839877440">Window <ph name="WINDOW_TITILE" /> closed.</translation> <translation id="994354411665877646"><ph name="NETWORK_NAME" />, <ph name="SUBTEXT" /></translation> <translation id="996204416024568215">Get the latest features and security improvements. Updates happen in the background.</translation>
diff --git a/ash/strings/ash_strings_es.xtb b/ash/strings/ash_strings_es.xtb index fcf58f1..1abca6cd 100644 --- a/ash/strings/ash_strings_es.xtb +++ b/ash/strings/ash_strings_es.xtb
@@ -1496,6 +1496,7 @@ <translation id="954052413789300507">No hay suficiente espacio para <ph name="FILENAME" />. Libera espacio.</translation> <translation id="974545358917229949">Se muestran <ph name="RESULT_COUNT" /> resultados de <ph name="QUERY" /></translation> <translation id="98515147261107953">Horizontal</translation> +<translation id="989374776391122812">Controles de cámara y audio</translation> <translation id="990277280839877440">La ventana <ph name="WINDOW_TITILE" /> se ha cerrado.</translation> <translation id="994354411665877646"><ph name="NETWORK_NAME" />, <ph name="SUBTEXT" /></translation> <translation id="996204416024568215">Recibe las últimas funciones y mejoras de seguridad. Las actualizaciones se descargan e instalan en segundo plano.</translation>
diff --git a/ash/strings/ash_strings_et.xtb b/ash/strings/ash_strings_et.xtb index 1e3d5d2..9eb731e 100644 --- a/ash/strings/ash_strings_et.xtb +++ b/ash/strings/ash_strings_et.xtb
@@ -1496,6 +1496,7 @@ <translation id="954052413789300507">Faili <ph name="FILENAME" /> jaoks pole piisavalt ruumi. Vabastage ruumi.</translation> <translation id="974545358917229949">Kuvatud on <ph name="RESULT_COUNT" /> tulemust päringule <ph name="QUERY" /></translation> <translation id="98515147261107953">Horisontaalpaigutus</translation> +<translation id="989374776391122812">Kaamera ja heli juhtnupud</translation> <translation id="990277280839877440">Aken <ph name="WINDOW_TITILE" /> on suletud.</translation> <translation id="994354411665877646"><ph name="NETWORK_NAME" />, <ph name="SUBTEXT" /></translation> <translation id="996204416024568215">Hankige uusimad funktsioonid ja turvatäiustused. Värskendamine toimub taustal.</translation>
diff --git a/ash/strings/ash_strings_fa.xtb b/ash/strings/ash_strings_fa.xtb index 52911a46..8a29db1 100644 --- a/ash/strings/ash_strings_fa.xtb +++ b/ash/strings/ash_strings_fa.xtb
@@ -1494,6 +1494,7 @@ <translation id="954052413789300507">فضای کافی برای <ph name="FILENAME" /> وجود ندارد فضا آزاد کنید.</translation> <translation id="974545358917229949">نمایش <ph name="RESULT_COUNT" /> نتیجه برای <ph name="QUERY" /></translation> <translation id="98515147261107953">افقی</translation> +<translation id="989374776391122812">کنترلهای دوربین و صدا</translation> <translation id="990277280839877440">پنجره <ph name="WINDOW_TITILE" /> بسته شد.</translation> <translation id="994354411665877646"><ph name="NETWORK_NAME" />، <ph name="SUBTEXT" /></translation> <translation id="996204416024568215">جدیدترین ویژگیها و قابلیتهای امنیتی بهبودیافته را دریافت میکنید. بهروزرسانی در پسزمینه انجام میشود.</translation>
diff --git a/ash/strings/ash_strings_gl.xtb b/ash/strings/ash_strings_gl.xtb index 32c05bf..3680acb9 100644 --- a/ash/strings/ash_strings_gl.xtb +++ b/ash/strings/ash_strings_gl.xtb
@@ -1496,6 +1496,7 @@ <translation id="954052413789300507">Non hai espazo suficiente para o ficheiro <ph name="FILENAME" />. Libera espazo.</translation> <translation id="974545358917229949">Mostrando <ph name="RESULT_COUNT" /> resultados para "<ph name="QUERY" />"</translation> <translation id="98515147261107953">Horizontal</translation> +<translation id="989374776391122812">Controis da cámara e do micrófono</translation> <translation id="990277280839877440">Pechouse a ventá <ph name="WINDOW_TITILE" />.</translation> <translation id="994354411665877646"><ph name="NETWORK_NAME" />, <ph name="SUBTEXT" /></translation> <translation id="996204416024568215">Goza das últimas funcións e melloras de seguranza. As actualizacións realízanse en segundo plano.</translation>
diff --git a/ash/strings/ash_strings_gu.xtb b/ash/strings/ash_strings_gu.xtb index 4050ade..bfc89d65 100644 --- a/ash/strings/ash_strings_gu.xtb +++ b/ash/strings/ash_strings_gu.xtb
@@ -1257,6 +1257,7 @@ <translation id="79341161159229895"><ph name="FIRST_PARENT_EMAIL" /> અને <ph name="SECOND_PARENT_EMAIL" /> દ્વારા મેનેજ કરાતું એકાઉન્ટ</translation> <translation id="793716872548410480">તમારું ક્લિપબોર્ડ જોવા માટે <ph name="SHORTCUT_KEY_NAME" /> + V દબાવો. તમે કૉપિ કરેલી છેલ્લી 5 આઇટમ તમારા ક્લિપબોર્ડ પર સાચવવામાં આવી છે.</translation> <translation id="7942349550061667556">લાલ</translation> +<translation id="7963992254934562106"><ph name="PHONE_NAME" /> તરફથી</translation> <translation id="7968693143708939792">ફોલ્ડર પસંદ કરો...</translation> <translation id="7977927628060636163">મોબાઇલ નેટવર્કની શોધ કરી રહ્યું છે...</translation> <translation id="7982789257301363584">નેટવર્ક</translation>
diff --git a/ash/strings/ash_strings_hi.xtb b/ash/strings/ash_strings_hi.xtb index 726f4982f..ff451a9 100644 --- a/ash/strings/ash_strings_hi.xtb +++ b/ash/strings/ash_strings_hi.xtb
@@ -1257,6 +1257,7 @@ <translation id="79341161159229895"><ph name="FIRST_PARENT_EMAIL" /> और <ph name="SECOND_PARENT_EMAIL" /> खाता संभालते हैं</translation> <translation id="793716872548410480">क्लिपबोर्ड देखने के लिए, <ph name="SHORTCUT_KEY_NAME" /> + V दबाएं. आपके कॉपी किए गए आखिरी पांच आइटम, क्लिपबोर्ड पर सेव किए गए.</translation> <translation id="7942349550061667556">लाल</translation> +<translation id="7963992254934562106"><ph name="PHONE_NAME" /> से</translation> <translation id="7968693143708939792">फ़ोल्डर को चुनें...</translation> <translation id="7977927628060636163">मोबाइल नेटवर्क खोजे जा रहे हैं...</translation> <translation id="7982789257301363584">नेटवर्क</translation> @@ -1495,6 +1496,7 @@ <translation id="954052413789300507"><ph name="FILENAME" /> को डाउनलोड करने के लिए, डिवाइस में जगह कम है. जगह खाली करें.</translation> <translation id="974545358917229949"><ph name="QUERY" /> के लिए <ph name="RESULT_COUNT" /> नतीजे दिखाए जा रहे हैं</translation> <translation id="98515147261107953">लैंडस्केप</translation> +<translation id="989374776391122812">कैमरा और ऑडियो कंट्रोल</translation> <translation id="990277280839877440"><ph name="WINDOW_TITILE" /> विंडो बंद है.</translation> <translation id="994354411665877646"><ph name="NETWORK_NAME" />, <ph name="SUBTEXT" /></translation> <translation id="996204416024568215">नई सुविधाएं और बेहतर सुरक्षा पाएं. अपडेट बैकग्राउंड में होते हैं.</translation>
diff --git a/ash/strings/ash_strings_id.xtb b/ash/strings/ash_strings_id.xtb index b2c5755e..5be85c3f 100644 --- a/ash/strings/ash_strings_id.xtb +++ b/ash/strings/ash_strings_id.xtb
@@ -1257,6 +1257,7 @@ <translation id="79341161159229895">Akun dikelola oleh <ph name="FIRST_PARENT_EMAIL" /> dan <ph name="SECOND_PARENT_EMAIL" /></translation> <translation id="793716872548410480">Tekan <ph name="SHORTCUT_KEY_NAME" /> + V untuk menampilkan papan klip. Lima item terakhir yang disalin akan disimpan ke papan klip.</translation> <translation id="7942349550061667556">Merah</translation> +<translation id="7963992254934562106">Dari <ph name="PHONE_NAME" /></translation> <translation id="7968693143708939792">Pilih folder ...</translation> <translation id="7977927628060636163">Menelusuri jaringan seluler...</translation> <translation id="7982789257301363584">Jaringan</translation> @@ -1495,6 +1496,7 @@ <translation id="954052413789300507">Ruang penyimpanan tidak cukup untuk <ph name="FILENAME" />. Kosongkan ruang penyimpanan.</translation> <translation id="974545358917229949">Menampilkan <ph name="RESULT_COUNT" /> hasil untuk <ph name="QUERY" /></translation> <translation id="98515147261107953">Lanskap</translation> +<translation id="989374776391122812">Kontrol kamera dan audio</translation> <translation id="990277280839877440">Jendela <ph name="WINDOW_TITILE" /> menutup.</translation> <translation id="994354411665877646"><ph name="NETWORK_NAME" />, <ph name="SUBTEXT" /></translation> <translation id="996204416024568215">Dapatkan fitur dan peningkatan keamanan terbaru. Update berlangsung di latar belakang.</translation>
diff --git a/ash/strings/ash_strings_ko.xtb b/ash/strings/ash_strings_ko.xtb index 126bfd2..68d0257 100644 --- a/ash/strings/ash_strings_ko.xtb +++ b/ash/strings/ash_strings_ko.xtb
@@ -1257,6 +1257,7 @@ <translation id="79341161159229895">계정 관리자: <ph name="FIRST_PARENT_EMAIL" /> 및 <ph name="SECOND_PARENT_EMAIL" /></translation> <translation id="793716872548410480">클립보드를 보려면 <ph name="SHORTCUT_KEY_NAME" /> + V 키를 누르세요. 최근 복사한 5개 항목이 클립보드에 저장되어 있습니다.</translation> <translation id="7942349550061667556">빨간색</translation> +<translation id="7963992254934562106">출처: <ph name="PHONE_NAME" /></translation> <translation id="7968693143708939792">폴더 선택...</translation> <translation id="7977927628060636163">모바일 네트워크 검색 중...</translation> <translation id="7982789257301363584">네트워크</translation> @@ -1495,6 +1496,7 @@ <translation id="954052413789300507"><ph name="FILENAME" /> 파일을 저장할 공간이 부족합니다. 기기 여유 공간을 확보하세요.</translation> <translation id="974545358917229949"><ph name="QUERY" /> 검색결과 <ph name="RESULT_COUNT" />개 표시 중</translation> <translation id="98515147261107953">가로 방향</translation> +<translation id="989374776391122812">카메라 및 오디오 설정</translation> <translation id="990277280839877440"><ph name="WINDOW_TITILE" /> 창이 닫혔습니다.</translation> <translation id="994354411665877646"><ph name="NETWORK_NAME" />, <ph name="SUBTEXT" /></translation> <translation id="996204416024568215">최신 기능과 보안 개선 사항을 받습니다. 업데이트는 백그라운드에서 이루어집니다.</translation>
diff --git a/ash/strings/ash_strings_lo.xtb b/ash/strings/ash_strings_lo.xtb index f8e3965f..5fd1bf3b 100644 --- a/ash/strings/ash_strings_lo.xtb +++ b/ash/strings/ash_strings_lo.xtb
@@ -1257,6 +1257,7 @@ <translation id="79341161159229895">ບັນຊີທີ່ຈັດການໂດຍ <ph name="FIRST_PARENT_EMAIL" /> ແລະ <ph name="SECOND_PARENT_EMAIL" /></translation> <translation id="793716872548410480">ກົດ <ph name="SHORTCUT_KEY_NAME" /> + V ເພື່ອເບິ່ງຄລິບບອດຂອງທ່ານ. 5 ລາຍການສຸດທ້າຍທີ່ທ່ານສຳເນົາໄວ້ຈະຖືກບັນທຶກໄວ້ໃນຄລິບບອດຂອງທ່ານ.</translation> <translation id="7942349550061667556">ສີແດງ</translation> +<translation id="7963992254934562106">ຈາກ <ph name="PHONE_NAME" /></translation> <translation id="7968693143708939792">ເລືອກໂຟນເດີ...</translation> <translation id="7977927628060636163">ກຳລັງຊອກຫາເຄືອຂ່າຍມືຖື...</translation> <translation id="7982789257301363584">ເຄືອຂ່າຍ</translation>
diff --git a/ash/strings/ash_strings_my.xtb b/ash/strings/ash_strings_my.xtb index 0ebbf24..a996a75 100644 --- a/ash/strings/ash_strings_my.xtb +++ b/ash/strings/ash_strings_my.xtb
@@ -1496,6 +1496,7 @@ <translation id="954052413789300507"><ph name="FILENAME" /> အတွက် နေရာမလောက်ပါ။ နေရာလွတ်ပြုလုပ်ပါ။</translation> <translation id="974545358917229949"><ph name="QUERY" /> အတွက် ရလဒ် <ph name="RESULT_COUNT" /> ခုကို ပြနေသည်</translation> <translation id="98515147261107953">ဘေးတိုက်</translation> +<translation id="989374776391122812">ကင်မရာနှင့် အသံ ထိန်းချုပ်မှုများ</translation> <translation id="990277280839877440"><ph name="WINDOW_TITILE" /> ဝင်းဒိုးကို ပိတ်ထားသည်။</translation> <translation id="994354411665877646"><ph name="NETWORK_NAME" />၊ <ph name="SUBTEXT" /></translation> <translation id="996204416024568215">နောက်ဆုံးထုတ်ဝန်ဆောင်မှုနှင့် လုံခြုံရေးတိုးမြှင့်မှုများ ရယူနိုင်သည်။ နောက်ခံတွင် အပ်ဒိတ်လုပ်သည်။</translation>
diff --git a/ash/strings/ash_strings_ro.xtb b/ash/strings/ash_strings_ro.xtb index 5979d20..e9d1d110 100644 --- a/ash/strings/ash_strings_ro.xtb +++ b/ash/strings/ash_strings_ro.xtb
@@ -1496,6 +1496,7 @@ <translation id="954052413789300507">Nu există suficient spațiu pentru <ph name="FILENAME" />. Eliberează spațiu.</translation> <translation id="974545358917229949">Se afișează <ph name="RESULT_COUNT" /> rezultate pentru <ph name="QUERY" /></translation> <translation id="98515147261107953">Peisaj</translation> +<translation id="989374776391122812">Comenzi pentru camera foto și audio</translation> <translation id="990277280839877440">Fereastra <ph name="WINDOW_TITILE" /> s-a închis.</translation> <translation id="994354411665877646"><ph name="NETWORK_NAME" /> <ph name="SUBTEXT" /></translation> <translation id="996204416024568215">Obține cele mai noi funcții și îmbunătățiri ale securității. Actualizările au loc în fundal.</translation>
diff --git a/ash/strings/ash_strings_sl.xtb b/ash/strings/ash_strings_sl.xtb index 61afcf8a..d6ea7cb 100644 --- a/ash/strings/ash_strings_sl.xtb +++ b/ash/strings/ash_strings_sl.xtb
@@ -1257,6 +1257,7 @@ <translation id="79341161159229895">Račun upravljata <ph name="FIRST_PARENT_EMAIL" /> in <ph name="SECOND_PARENT_EMAIL" /></translation> <translation id="793716872548410480">Pritisnite <ph name="SHORTCUT_KEY_NAME" /> + V, če si želite ogledati odložišče. Zadnjih pet kopiranih elementov je shranjenih v odložišču.</translation> <translation id="7942349550061667556">Rdeča</translation> +<translation id="7963992254934562106">Iz: <ph name="PHONE_NAME" /></translation> <translation id="7968693143708939792">Izberite mapo …</translation> <translation id="7977927628060636163">Iskanje mobilnih omrežij ...</translation> <translation id="7982789257301363584">Omrežje</translation>
diff --git a/ash/strings/ash_strings_sr-Latn.xtb b/ash/strings/ash_strings_sr-Latn.xtb index 4c474f8..91c5407d 100644 --- a/ash/strings/ash_strings_sr-Latn.xtb +++ b/ash/strings/ash_strings_sr-Latn.xtb
@@ -70,7 +70,7 @@ <translation id="1287002645302686982">Sačuvana radna površina pod naslovom <ph name="DESK_TEMPLATE_NAME" /> već postoji</translation> <translation id="1289185460362160437">Vratite se u: <ph name="COME_BACK_DAY_OF_WEEK" /> u <ph name="COME_BACK_TIME" />.</translation> <translation id="1290331692326790741">Slab signal</translation> -<translation id="1290982764014248209">Premesti aplikaciju <ph name="DRAGGED_APP" /> u direktorijum <ph name="FOLDER_NAME" />.</translation> +<translation id="1290982764014248209">Premesti aplikaciju <ph name="DRAGGED_APP" /> u folder <ph name="FOLDER_NAME" />.</translation> <translation id="1293264513303784526">Uređaj sa USB priključkom tipa C (levi port)</translation> <translation id="1293556467332435079">Datoteke</translation> <translation id="1293699935367580298">Esc</translation> @@ -596,7 +596,7 @@ <translation id="4285498937028063278">Otkači</translation> <translation id="4294319844246081198">Dobro jutro, <ph name="GIVEN_NAME" />,</translation> <translation id="4296136865091727875">Obrišite sva obaveštenja (<ph name="COUNT" />)</translation> -<translation id="430191667033048642">Aplikacija <ph name="MOVED_APP_NAME" /> je premeštena u direktorijum <ph name="FOLDER_NAME" />.</translation> +<translation id="430191667033048642">Aplikacija <ph name="MOVED_APP_NAME" /> je premeštena u folder <ph name="FOLDER_NAME" />.</translation> <translation id="4302592941791324970">Nije dostupno</translation> <translation id="4303223480529385476">Proširite oblast statusa</translation> <translation id="4312840429157639164">Kamera je uklopljena u gornji desni ugao. Neusaglašenost sa površinom sistema.</translation> @@ -759,7 +759,7 @@ <translation id="5170568018924773124">Prikaži u direktorijumu</translation> <translation id="5176318573511391780">Snimi deo ekrana</translation> <translation id="5198413532174090167"><ph name="DATE" />, <ph name="NUMBER" /> događaja</translation> -<translation id="5198715732953550718">Aplikacija <ph name="MOVED_APP_NAME" /> je kombinovana sa aplikacijom <ph name="IN_PLACE_APP" /> da bi se napravio novi direktorijum.</translation> +<translation id="5198715732953550718">Aplikacija <ph name="MOVED_APP_NAME" /> je kombinovana sa aplikacijom <ph name="IN_PLACE_APP" /> da bi se napravio novi folder.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> <translation id="5206057955438543357">{NUM_NOTIFICATIONS,plural, =1{Još 1 obaveštenje}one{Još # obaveštenje}few{Još # obaveštenja}other{Još # obaveštenja}}</translation> <translation id="5207949376430453814">Istakni kursor za tekst</translation> @@ -800,7 +800,7 @@ <translation id="5379115545237091094">Previše pokušaja</translation> <translation id="5391307769715781764">Želite da zamenite sačuvanu radnu površinu?</translation> <translation id="5393156353051693207">Dodirnite i zadržite bilo gde da biste promenili redosled aplikacija</translation> -<translation id="5395308026110844773"><ph name="DRAGGED_APP_NAME" /> preko aplikacije <ph name="IN_PLACE_APP" />, otpustite da biste napravili direktorijum.</translation> +<translation id="5395308026110844773"><ph name="DRAGGED_APP_NAME" /> preko aplikacije <ph name="IN_PLACE_APP" />, otpustite da biste napravili folder.</translation> <translation id="5397578532367286026">Menadžer (<ph name="MANAGER_EMAIL" />) može da pregleda korišćenje i istoriju ovog korisnika na chrome.com.</translation> <translation id="5400461572260843123">Brza podešavanja, pritisnite taster za pretragu i strelicu ulevo da biste pristupili centru za obaveštenja.</translation> <translation id="5426063383988017631">Meni Podešavanja je zatvoren</translation> @@ -1047,7 +1047,7 @@ <translation id="6777216307882431711">Napaja povezane uređaje sa USB priključkom tipa C</translation> <translation id="6781002679438061620">Radna površina 9</translation> <translation id="6782182743534150858">Radna površina 13</translation> -<translation id="6786750046913594791">Zatvorite direktorijum</translation> +<translation id="6786750046913594791">Zatvorite folder</translation> <translation id="6787595647772650851">Vratite poslednju sesiju</translation> <translation id="6790428901817661496">Pusti</translation> <translation id="6801878137098616817">Nedavno izmenjeno</translation>
diff --git a/ash/strings/ash_strings_sr.xtb b/ash/strings/ash_strings_sr.xtb index 45c7f26..e2f6811 100644 --- a/ash/strings/ash_strings_sr.xtb +++ b/ash/strings/ash_strings_sr.xtb
@@ -70,7 +70,7 @@ <translation id="1287002645302686982">Сачувана радна површина под насловом <ph name="DESK_TEMPLATE_NAME" /> већ постоји</translation> <translation id="1289185460362160437">Вратите се у: <ph name="COME_BACK_DAY_OF_WEEK" /> у <ph name="COME_BACK_TIME" />.</translation> <translation id="1290331692326790741">Слаб сигнал</translation> -<translation id="1290982764014248209">Премести апликацију <ph name="DRAGGED_APP" /> у директоријум <ph name="FOLDER_NAME" />.</translation> +<translation id="1290982764014248209">Премести апликацију <ph name="DRAGGED_APP" /> у фолдер <ph name="FOLDER_NAME" />.</translation> <translation id="1293264513303784526">Уређај са USB прикључком типа C (леви порт)</translation> <translation id="1293556467332435079">Датотеке</translation> <translation id="1293699935367580298">Esc</translation> @@ -596,7 +596,7 @@ <translation id="4285498937028063278">Откачи</translation> <translation id="4294319844246081198">Добро јутро, <ph name="GIVEN_NAME" />,</translation> <translation id="4296136865091727875">Обришите сва обавештења (<ph name="COUNT" />)</translation> -<translation id="430191667033048642">Апликација <ph name="MOVED_APP_NAME" /> је премештена у директоријум <ph name="FOLDER_NAME" />.</translation> +<translation id="430191667033048642">Апликација <ph name="MOVED_APP_NAME" /> је премештена у фолдер <ph name="FOLDER_NAME" />.</translation> <translation id="4302592941791324970">Није доступно</translation> <translation id="4303223480529385476">Проширите област статуса</translation> <translation id="4312840429157639164">Камера је уклопљена у горњи десни угао. Неусаглашеност са површином система.</translation> @@ -759,7 +759,7 @@ <translation id="5170568018924773124">Прикажи у директоријуму</translation> <translation id="5176318573511391780">Сними део екрана</translation> <translation id="5198413532174090167"><ph name="DATE" />, <ph name="NUMBER" /> догађаја</translation> -<translation id="5198715732953550718">Апликација <ph name="MOVED_APP_NAME" /> је комбинована са апликацијом <ph name="IN_PLACE_APP" /> да би се направио нови директоријум.</translation> +<translation id="5198715732953550718">Апликација <ph name="MOVED_APP_NAME" /> је комбинована са апликацијом <ph name="IN_PLACE_APP" /> да би се направио нови фолдер.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> <translation id="5206057955438543357">{NUM_NOTIFICATIONS,plural, =1{Још 1 обавештење}one{Још # обавештење}few{Још # обавештења}other{Још # обавештења}}</translation> <translation id="5207949376430453814">Истакни курсор за текст</translation> @@ -800,7 +800,7 @@ <translation id="5379115545237091094">Превише покушаја</translation> <translation id="5391307769715781764">Желите да замените сачувану радну површину?</translation> <translation id="5393156353051693207">Додирните и задржите било где да бисте променили редослед апликација</translation> -<translation id="5395308026110844773"><ph name="DRAGGED_APP_NAME" /> преко апликације <ph name="IN_PLACE_APP" />, отпустите да бисте направили директоријум.</translation> +<translation id="5395308026110844773"><ph name="DRAGGED_APP_NAME" /> преко апликације <ph name="IN_PLACE_APP" />, отпустите да бисте направили фолдер.</translation> <translation id="5397578532367286026">Менаџер (<ph name="MANAGER_EMAIL" />) може да прегледа коришћење и историју овог корисника на chrome.com.</translation> <translation id="5400461572260843123">Брза подешавања, притисните тастер за претрагу и стрелицу улево да бисте приступили центру за обавештења.</translation> <translation id="5426063383988017631">Мени Подешавања је затворен</translation> @@ -1047,7 +1047,7 @@ <translation id="6777216307882431711">Напаја повезане уређаје са USB прикључком типа C</translation> <translation id="6781002679438061620">Радна површина 9</translation> <translation id="6782182743534150858">Радна површина 13</translation> -<translation id="6786750046913594791">Затворите директоријум</translation> +<translation id="6786750046913594791">Затворите фолдер</translation> <translation id="6787595647772650851">Вратите последњу сесију</translation> <translation id="6790428901817661496">Пусти</translation> <translation id="6801878137098616817">Недавно измењено</translation>
diff --git a/ash/strings/ash_strings_sw.xtb b/ash/strings/ash_strings_sw.xtb index 3b6b99a..90137bc 100644 --- a/ash/strings/ash_strings_sw.xtb +++ b/ash/strings/ash_strings_sw.xtb
@@ -1496,6 +1496,7 @@ <translation id="954052413789300507">Hakuna nafasi inayotosha kupakua <ph name="FILENAME" />. Futa baadhi ya faili ili upate nafasi.</translation> <translation id="974545358917229949">Inaonyesha matokeo <ph name="RESULT_COUNT" /> ya <ph name="QUERY" /></translation> <translation id="98515147261107953">Mlalo</translation> +<translation id="989374776391122812">Vidhibiti vya kamera na sauti</translation> <translation id="990277280839877440">Dirisha la <ph name="WINDOW_TITILE" /> limefungwa.</translation> <translation id="994354411665877646"><ph name="NETWORK_NAME" />, <ph name="SUBTEXT" /></translation> <translation id="996204416024568215">Pata vipengele vipya zaidi na maboresho ya usalama. Masasisho yanafanyika chinichini.</translation>
diff --git a/ash/strings/ash_strings_te.xtb b/ash/strings/ash_strings_te.xtb index a9a3513..d99c12f 100644 --- a/ash/strings/ash_strings_te.xtb +++ b/ash/strings/ash_strings_te.xtb
@@ -129,7 +129,7 @@ <translation id="1632985212731562677">సెట్టింగ్లు > యాక్సెసిబిలిటీలో స్విచ్ యాక్సెస్ను డిజేబుల్ చేయవచ్చు.</translation> <translation id="1637505162081889933"><ph name="NUM_DEVICES" /> పరికరాలు</translation> <translation id="1639239467298939599">లోడ్ చేస్తోంది</translation> -<translation id="1654477262762802994">వాయిస్ ప్రశ్నను ప్రారంభించు</translation> +<translation id="1654477262762802994">వాయిస్ ప్రశ్నను ప్రారంభించండి</translation> <translation id="1668469839109562275">బిల్ట్-ఇన్ VPN</translation> <translation id="1677472565718498478"><ph name="TIME" /> మిగిలి ఉంది</translation> <translation id="1677507110654891115"><ph name="FEATURE_NAME" /> కనెక్ట్ కాలేదు.</translation> @@ -525,7 +525,7 @@ <translation id="3886872229787704059">ఈ రోజు తెరిచారు</translation> <translation id="3891340733213178823">సైన్ అవుట్ చేయడానికి Ctrl+Shift+Qని రెండుసార్లు నొక్కండి.</translation> <translation id="3893630138897523026">ChromeVox (చదవబడే అభిప్రాయం)</translation> -<translation id="3897533311200664389">వచన ప్రశ్నను ప్రారంభించు</translation> +<translation id="3897533311200664389">వచన ప్రశ్నను ప్రారంభించండి</translation> <translation id="3899995891769452915">వాయిస్ ఇన్పుట్</translation> <translation id="3900355044994618856"><ph name="SESSION_TIME_REMAINING" /> తర్వాత మీ సెషన్ ముగుస్తుంది</translation> <translation id="3901991538546252627"><ph name="NAME" />కి కనెక్ట్ చేస్తోంది</translation> @@ -773,7 +773,7 @@ <translation id="5258528442992323769">సేవ్ చేసిన డెస్క్లు లేవు</translation> <translation id="5260676007519551770">డెస్క్ 4</translation> <translation id="5283099933536931082"><ph name="APP_ITEM_TITLE" />, మీ అటెన్షన్ కోసం రిక్వెస్ట్ చేస్తోంది.</translation> -<translation id="5283198616748585639">1 నిమి జోడించు</translation> +<translation id="5283198616748585639">1 నిమి జోడించండి</translation> <translation id="528468243742722775">ముగించు</translation> <translation id="5286194356314741248">స్కాన్ చేస్తోంది</translation> <translation id="5293671101077843611">ఈ రోజు ఈవెంట్లు ఏవీ లేవు</translation> @@ -804,7 +804,7 @@ <translation id="5397578532367286026">ఈ వినియోగదారు యొక్క వినియోగం మరియు హిస్టరీని chrome.comలో నిర్వాహకుడు (<ph name="MANAGER_EMAIL" />) సమీక్షించవచ్చు.</translation> <translation id="5400461572260843123">త్వరిత సెట్టింగ్లు, నోటిఫికేషన్ సెంటర్ను యాక్సెస్ చేయడానికి శోధన + ఎడమకు నొక్కండి.</translation> <translation id="5426063383988017631">సెట్టింగ్ల మెనూ మూసివేయబడింది</translation> -<translation id="5428899915242071344">ఎంచుకోవడం ప్రారంభించు</translation> +<translation id="5428899915242071344">ఎంచుకోవడం ప్రారంభించండి</translation> <translation id="5429993543155113935">అజ్ఞాత విండోలు ప్రస్తుత సపోర్ట్ చేయవు</translation> <translation id="5430931332414098647">తక్షణ టెథెరింగ్</translation> <translation id="5431318178759467895">రంగు</translation> @@ -884,7 +884,7 @@ <translation id="5876666360658629066">తల్లిదండ్రుల కోడ్ను ఎంటర్ చేయండి</translation> <translation id="5881540930187678962">ఫోన్ హబ్ను తర్వాత సెటప్ చేయండి</translation> <translation id="5887954372087850114">విండో <ph name="WINDOW_TITLE" />, <ph name="DESK_TITLE" />కు కేటాయించబడింది, ఇంకా ఇతర డెస్క్ల నుండి కేటాయింపు తీసివేయబడింది</translation> -<translation id="5895138241574237353">మళ్ళీ ప్రారంభించు</translation> +<translation id="5895138241574237353">మళ్ళీ ప్రారంభించండి</translation> <translation id="589817443623831496">పాయింట్ స్కానింగ్</translation> <translation id="5901316534475909376">Shift+Esc</translation> <translation id="5901630391730855834">పసుపు</translation> @@ -1212,7 +1212,7 @@ <translation id="7684531502177797067">కెమెరా ఇన్పుట్ <ph name="CAMERA_NAME" />కు సెట్ చేయబడింది.</translation> <translation id="7689817529363080918">ఇది మైక్రోఫోన్ అనుమతి ఉన్న <ph name="APP1_NAME" />, <ph name="APP2_NAME" /> అన్ని యాప్లు, వెబ్సైట్లలో మైక్రోఫోన్ యాక్సెస్ను అనుమతిస్తుంది</translation> <translation id="7705524343798198388">VPN</translation> -<translation id="7714767791242455379">కొత్త సెల్యులర్ నెట్వర్క్ను జోడించు</translation> +<translation id="7714767791242455379">కొత్త సెల్యులర్ నెట్వర్క్ను జోడించండి</translation> <translation id="7720400844887872976"><ph name="TIME" /> వరకు ఆన్లో ఉంటుంది</translation> <translation id="7720410380936703141">మళ్లీ ట్రై చేయండి</translation> <translation id="7723389094756330927">{NUM_NOTIFICATIONS,plural, =1{1 నోటిఫికేషన్}other{# నోటిఫికేషన్లు}}</translation> @@ -1258,6 +1258,7 @@ <translation id="79341161159229895"><ph name="FIRST_PARENT_EMAIL" /> మరియు <ph name="SECOND_PARENT_EMAIL" /> ద్వారా ఖాతా నిర్వహించబడుతోంది</translation> <translation id="793716872548410480">మీ క్లిప్బోర్డ్ను చూడడానికి, <ph name="SHORTCUT_KEY_NAME" /> + V నొక్కండి. మీరు చివరగా కాపీ చేసిన 5 ఐటెమ్లు, మీ క్లిప్బోర్డ్లో సేవ్ చేయబడతాయి.</translation> <translation id="7942349550061667556">ఎరుపు</translation> +<translation id="7963992254934562106"><ph name="PHONE_NAME" /> నుండి</translation> <translation id="7968693143708939792">ఫోల్డర్ను ఎంచుకోండి...</translation> <translation id="7977927628060636163">మొబైల్ నెట్వర్క్ల కోసం వెతుకుతోంది...</translation> <translation id="7982789257301363584">నెట్వర్క్</translation> @@ -1303,7 +1304,7 @@ <translation id="8183592608247778598">మీ ఫోన్లోని తాజా ఫోటోలు, మీడియా, నోటిఫికేషన్లు, యాప్లను మీ <ph name="DEVICE_TYPE" />లో చూడండి</translation> <translation id="8192202700944119416">నోటిఫికేషన్లు దాచబడ్డాయి.</translation> <translation id="8196787716797768628">టాబ్లెట్ మోడ్లో, యాప్ల మధ్య త్వరగా మారడానికి, అలాగే మీ Chromebookతో ఇంటరాక్ట్ కావడానికి సంజ్ఞలను ఉపయోగించండి.</translation> -<translation id="8200772114523450471">మళ్లీ ప్రారంభించు</translation> +<translation id="8200772114523450471">మళ్లీ ప్రారంభించండి</translation> <translation id="8203795194971602413">కుడి క్లిక్</translation> <translation id="8209010265547628927">రీసెట్ చేయండి</translation> <translation id="8214996719228530800">కెనరీ ఛానెల్</translation>
diff --git a/ash/strings/ash_strings_zh-HK.xtb b/ash/strings/ash_strings_zh-HK.xtb index 86b6c70..ec8b1b4 100644 --- a/ash/strings/ash_strings_zh-HK.xtb +++ b/ash/strings/ash_strings_zh-HK.xtb
@@ -1255,6 +1255,7 @@ <translation id="79341161159229895">帳戶由 <ph name="FIRST_PARENT_EMAIL" /> 和 <ph name="SECOND_PARENT_EMAIL" /> 管理</translation> <translation id="793716872548410480">按下<ph name="SHORTCUT_KEY_NAME" /> + V 鍵即可查看剪貼簿。您最後複製的 5 個項目會儲存至剪貼簿。</translation> <translation id="7942349550061667556">紅色</translation> +<translation id="7963992254934562106">來自 <ph name="PHONE_NAME" /></translation> <translation id="7968693143708939792">選取資料夾…</translation> <translation id="7977927628060636163">正在搜尋流動網絡…</translation> <translation id="7982789257301363584">網絡</translation>
diff --git a/ash/strings/ash_strings_zh-TW.xtb b/ash/strings/ash_strings_zh-TW.xtb index 812247f..385e6b5 100644 --- a/ash/strings/ash_strings_zh-TW.xtb +++ b/ash/strings/ash_strings_zh-TW.xtb
@@ -1255,6 +1255,7 @@ <translation id="79341161159229895">這個帳戶是由 <ph name="FIRST_PARENT_EMAIL" /> 和 <ph name="SECOND_PARENT_EMAIL" /> 管理</translation> <translation id="793716872548410480">按下<ph name="SHORTCUT_KEY_NAME" /> + V 鍵即可查看剪貼簿。你最後複製的 5 個項目會儲存到剪貼簿中。</translation> <translation id="7942349550061667556">紅色</translation> +<translation id="7963992254934562106">來自「<ph name="PHONE_NAME" />」</translation> <translation id="7968693143708939792">選取資料夾…</translation> <translation id="7977927628060636163">正在搜尋行動網路...</translation> <translation id="7982789257301363584">網路</translation> @@ -1492,6 +1493,7 @@ <translation id="954052413789300507">可用空間不足,無法下載「<ph name="FILENAME" />」。請釋出空間。</translation> <translation id="974545358917229949">目前正顯示 <ph name="RESULT_COUNT" /> 項與「<ph name="QUERY" />」相符的搜尋結果</translation> <translation id="98515147261107953">橫向</translation> +<translation id="989374776391122812">攝影機和音訊控制選項</translation> <translation id="990277280839877440">視窗 <ph name="WINDOW_TITILE" /> 已關閉。</translation> <translation id="994354411665877646"><ph name="NETWORK_NAME" />,<ph name="SUBTEXT" /></translation> <translation id="996204416024568215">取得最新功能並改善安全性。更新作業會在背景執行。</translation>
diff --git a/ash/strings/ash_strings_zu.xtb b/ash/strings/ash_strings_zu.xtb index 26958ef6..a306d8fc 100644 --- a/ash/strings/ash_strings_zu.xtb +++ b/ash/strings/ash_strings_zu.xtb
@@ -1257,6 +1257,7 @@ <translation id="79341161159229895">I-akhawunti iphethwe ngu-<ph name="FIRST_PARENT_EMAIL" /> no-<ph name="SECOND_PARENT_EMAIL" /></translation> <translation id="793716872548410480">Cindezela u-<ph name="SHORTCUT_KEY_NAME" /> + V ukubuka ibhodi lakho lokunamathisela. Izinto ezi-5 zokugcina ozikopishile zilondolozwe ebhodini lakho lokunamathisela.</translation> <translation id="7942349550061667556">Okubomvu</translation> +<translation id="7963992254934562106">Kusukela ku-<ph name="PHONE_NAME" /></translation> <translation id="7968693143708939792">Khetha ifolda...</translation> <translation id="7977927628060636163">Isesha amanethiwekhi eselula...</translation> <translation id="7982789257301363584">Inethiwekhi</translation> @@ -1495,6 +1496,7 @@ <translation id="954052413789300507">Akunasikhala esanele se-<ph name="FILENAME" />. Khulula isikhala.</translation> <translation id="974545358917229949">Kuboniswa imphumela engu-<ph name="RESULT_COUNT" /> ye-<ph name="QUERY" /></translation> <translation id="98515147261107953">Ukwakheka kwezwe</translation> +<translation id="989374776391122812">Ikhamera nezilawuli zomsindo</translation> <translation id="990277280839877440">Iwindi elingu-<ph name="WINDOW_TITILE" /> livaliwe.</translation> <translation id="994354411665877646"><ph name="NETWORK_NAME" />, <ph name="SUBTEXT" /></translation> <translation id="996204416024568215">Thola izakhi zakamuva nokuthuthukiswa kokuvikeleka. Izibuyekezo zenzeka ngemuva.</translation>
diff --git a/ash/system/network/network_list_view_controller_impl.cc b/ash/system/network/network_list_view_controller_impl.cc index 6113e69..9166adc8 100644 --- a/ash/system/network/network_list_view_controller_impl.cc +++ b/ash/system/network/network_list_view_controller_impl.cc
@@ -423,6 +423,11 @@ if (setManagedIcon) { SetConnectionWarningIcon(connection_warning_, /*use_managed_icon=*/true); + if (!is_vpn_managed_.value()) { + // Managed proxies are considered a lower privacy risk. + connection_warning_label_->SetText(l10n_util::GetStringUTF16( + IDS_ASH_STATUS_TRAY_NETWORK_MANAGED_WARNING)); + } } } @@ -822,8 +827,9 @@ // Set message label in middle of row. std::unique_ptr<views::Label> label = base::WrapUnique(TrayPopupUtils::CreateDefaultLabel()); - label->SetText( - l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_NETWORK_MONITORED_WARNING)); + label->SetText(l10n_util::GetStringUTF16( + show_managed_icon ? IDS_ASH_STATUS_TRAY_NETWORK_MANAGED_WARNING + : IDS_ASH_STATUS_TRAY_NETWORK_MONITORED_WARNING)); label->SetBackground(views::CreateSolidBackground(SK_ColorTRANSPARENT)); label->SetEnabledColor(AshColorProvider::Get()->GetContentLayerColor( AshColorProvider::ContentLayerType::kTextColorPrimary)); @@ -831,6 +837,7 @@ label.get(), TrayPopupUtils::FontStyle::kDetailedViewLabel); label->SetID(static_cast<int>( NetworkListViewControllerViewChildId::kConnectionWarningLabel)); + connection_warning_label_ = label.get(); connection_warning->AddView(TriView::Container::CENTER, std::move(label)); connection_warning->SetContainerBorder(
diff --git a/ash/system/network/network_list_view_controller_impl.h b/ash/system/network/network_list_view_controller_impl.h index ca50e141..70d0be1 100644 --- a/ash/system/network/network_list_view_controller_impl.h +++ b/ash/system/network/network_list_view_controller_impl.h
@@ -29,6 +29,7 @@ namespace views { class ImageView; +class Label; } namespace ash { @@ -218,6 +219,8 @@ // is monitored by the admin, via policy, it displays the managed icon, // otherwise the system icon. views::ImageView* connection_warning_icon_ = nullptr; + // Owned by `connection_warning_`. + views::Label* connection_warning_label_ = nullptr; NetworkListWifiHeaderView* wifi_header_view_ = nullptr; views::Separator* wifi_separator_view_ = nullptr;
diff --git a/ash/system/network/network_list_view_controller_unittest.cc b/ash/system/network/network_list_view_controller_unittest.cc index 3b981a9..708de9d5 100644 --- a/ash/system/network/network_list_view_controller_unittest.cc +++ b/ash/system/network/network_list_view_controller_unittest.cc
@@ -1278,6 +1278,12 @@ GetManagedNetworkPropertiesWithProxy(/*is_managed*/ false)); AddWifiDevice(); + ASSERT_THAT(GetConnectionWarning(), NotNull()); + ASSERT_THAT(GetConnectionLabelView(), NotNull()); + EXPECT_EQ( + l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_NETWORK_MONITORED_WARNING), + GetConnectionLabelView()->GetText()); + views::ImageView* icon = GetConnectionWarningIcon(); ASSERT_THAT(icon, NotNull()); EXPECT_TRUE(IsSystemIcon(icon)); @@ -1291,6 +1297,12 @@ /*is_managed=*/true)); AddWifiDevice(); + ASSERT_THAT(GetConnectionWarning(), NotNull()); + ASSERT_THAT(GetConnectionLabelView(), NotNull()); + EXPECT_EQ( + l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_NETWORK_MANAGED_WARNING), + GetConnectionLabelView()->GetText()); + views::ImageView* icon = GetConnectionWarningIcon(); ASSERT_THAT(icon, NotNull()); EXPECT_TRUE(IsManagedIcon(icon)); @@ -1306,6 +1318,11 @@ SetDefaultNetworkForTesting(std::move(default_network)); AddWifiDevice(); + ASSERT_THAT(GetConnectionWarning(), NotNull()); + ASSERT_THAT(GetConnectionLabelView(), NotNull()); + EXPECT_EQ( + l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_NETWORK_MANAGED_WARNING), + GetConnectionLabelView()->GetText()); views::ImageView* icon = GetConnectionWarningIcon(); ASSERT_THAT(icon, NotNull());
diff --git a/ash/webui/camera_app_ui/resources/js/mojo/device_operator.ts b/ash/webui/camera_app_ui/resources/js/mojo/device_operator.ts index e127e45..ddc5920 100644 --- a/ash/webui/camera_app_ui/resources/js/mojo/device_operator.ts +++ b/ash/webui/camera_app_ui/resources/js/mojo/device_operator.ts
@@ -6,6 +6,7 @@ import {AsyncJobQueue} from '../async_job_queue.js'; import {reportError} from '../error.js'; import {Point} from '../geometry.js'; +import * as state from '../state.js'; import { ErrorLevel, ErrorType, @@ -593,11 +594,24 @@ event.signal(new Blob([new Uint8Array(data)], {type: mimeType})); } }); + + function suspendObserver(val: boolean) { + if (val) { + for (const [effect, event] of reprocessEvents.entries()) { + if (effect === Effect.PORTRAIT_MODE) { + event.signalError(new Error('camera suspended')); + } + } + } + } + state.addOneTimeObserver(state.State.SUSPEND, suspendObserver); + const device = await this.getDevice(deviceId); await device.setReprocessOptions( effects, listenerCallbacksRouter.$.bindNewPipeAndPassRemote()); Promise.allSettled(callbacks).then(() => { + state.removeObserver(state.State.SUSPEND, suspendObserver); closeEndpoint(listenerCallbacksRouter); }); return callbacks;
diff --git a/ash/webui/camera_app_ui/resources/js/views/camera.ts b/ash/webui/camera_app_ui/resources/js/views/camera.ts index 3ca5bca4..c19eb95 100644 --- a/ash/webui/camera_app_ui/resources/js/views/camera.ts +++ b/ash/webui/camera_app_ui/resources/js/views/camera.ts
@@ -723,6 +723,9 @@ nav.close(ViewName.FLASH); } await this.reviewMultiPageDocument(enterInFixMode); + if (!state.get(state.State.DOC_MODE_REVIEWING)) { + ChromeHelper.getInstance().maybeTriggerSurvey(); + } } /**
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_bg.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_bg.xtb index de6cb6f..1a9437e4 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_bg.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_bg.xtb
@@ -179,7 +179,7 @@ <translation id="8712637175834984815">Разбрах</translation> <translation id="8730621377337864115">Готово</translation> <translation id="8732462232047530626">Преглед на метаданните</translation> -<translation id="8815966864175525708">Превключвател за правене на вертикална снимка</translation> +<translation id="8815966864175525708">Превключвател за правене на снимка в портретен режим</translation> <translation id="8828441885228359828">Възобновяване на записа</translation> <translation id="8870695351537079478">Записването не може да се стартира</translation> <translation id="8880167521484863515">4:3</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ca.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ca.xtb index 2c5d45b..68964f0 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ca.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ca.xtb
@@ -179,7 +179,7 @@ <translation id="8712637175834984815">Entesos</translation> <translation id="8730621377337864115">Fet</translation> <translation id="8732462232047530626">Previsualitza les metadades</translation> -<translation id="8815966864175525708">Botó per fer una foto vertical</translation> +<translation id="8815966864175525708">Botó per fer una foto de retrat</translation> <translation id="8828441885228359828">Reprèn la gravació</translation> <translation id="8870695351537079478">No es pot iniciar la gravació</translation> <translation id="8880167521484863515">4:3</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_it.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_it.xtb index 9f35b06..17dc9e38 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_it.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_it.xtb
@@ -179,7 +179,7 @@ <translation id="8712637175834984815">Fatto</translation> <translation id="8730621377337864115">Fine</translation> <translation id="8732462232047530626">Anteprima metadati</translation> -<translation id="8815966864175525708">Passa alla modalità foto verticale</translation> +<translation id="8815966864175525708">Passa alla modalità foto ritratto</translation> <translation id="8828441885228359828">Riprendi la registrazione</translation> <translation id="8870695351537079478">Impossibile avviare la registrazione</translation> <translation id="8880167521484863515">4 su 3</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_iw.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_iw.xtb index 05c0dd9..86938cf 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_iw.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_iw.xtb
@@ -179,7 +179,7 @@ <translation id="8712637175834984815">הבנתי</translation> <translation id="8730621377337864115">בוצע</translation> <translation id="8732462232047530626">תצוגה מקדימה של מטא-נתונים</translation> -<translation id="8815966864175525708">מעבר לצילום תמונות לאורך</translation> +<translation id="8815966864175525708">מעבר לצילום תמונת דיוקן</translation> <translation id="8828441885228359828">המשך הצילום</translation> <translation id="8870695351537079478">לא ניתן להתחיל בצילום סרטון</translation> <translation id="8880167521484863515">4 על 3</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ja.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ja.xtb index 29d064d..fef5066 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ja.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ja.xtb
@@ -71,7 +71,7 @@ <translation id="3411958449466169012">タイマーをオフにする</translation> <translation id="3448774564454087943">短すぎるため動画は保存されません</translation> <translation id="346539236881580388">撮り直し</translation> -<translation id="3517926952904427380">縦向きの写真を撮影できません</translation> +<translation id="3517926952904427380">ポートレート写真を撮影できません</translation> <translation id="3566302376254083266">左上に移動しています</translation> <translation id="3569311554794739032"><ph name="FILE" /> を削除してもよろしいですか?</translation> <translation id="3573890771273113519">スキャンモードに切り替えます</translation> @@ -179,7 +179,7 @@ <translation id="8712637175834984815">閉じる</translation> <translation id="8730621377337864115">完了</translation> <translation id="8732462232047530626">メタデータのプレビュー</translation> -<translation id="8815966864175525708">縦向きの写真の撮影に切り替え</translation> +<translation id="8815966864175525708">ポートレート写真の撮影に切り替え</translation> <translation id="8828441885228359828">録画を再開</translation> <translation id="8870695351537079478">録画を開始できません</translation> <translation id="8880167521484863515">4 対 3</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ko.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ko.xtb index f66f28f..1dbd99c9 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ko.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ko.xtb
@@ -179,7 +179,7 @@ <translation id="8712637175834984815">확인</translation> <translation id="8730621377337864115">완료</translation> <translation id="8732462232047530626">메타데이터 미리보기</translation> -<translation id="8815966864175525708">세로 모드 사진 촬영으로 전환</translation> +<translation id="8815966864175525708">인물 사진 촬영 모드로 전환</translation> <translation id="8828441885228359828">녹화 재개</translation> <translation id="8870695351537079478">녹화를 시작할 수 없습니다.</translation> <translation id="8880167521484863515">4:3</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ml.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ml.xtb index 2f77f7b..76bda50 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ml.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ml.xtb
@@ -179,7 +179,7 @@ <translation id="8712637175834984815">മനസ്സിലായി</translation> <translation id="8730621377337864115">പൂർത്തിയാക്കി</translation> <translation id="8732462232047530626">മെറ്റാഡാറ്റ പ്രിവ്യൂ ചെയ്യൂ</translation> -<translation id="8815966864175525708">പോർട്രെയ്റ്റ് ഫോട്ടോയെടുക്കൽ മോഡിലേക്ക് മാറുക</translation> +<translation id="8815966864175525708">പോർട്രെയ്റ്റ് ഫോട്ടോയെടുക്കാൻ സ്വിച്ച് ചെയ്യൂ</translation> <translation id="8828441885228359828">റെക്കോർഡ് ചെയ്യൽ പുനരാരംഭിക്കുക</translation> <translation id="8870695351537079478">റെക്കോർഡിംഗ് ആരംഭിക്കാനായില്ല</translation> <translation id="8880167521484863515">4 അനുപാതം 3</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_no.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_no.xtb index b03cb4c1..db2b06a 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_no.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_no.xtb
@@ -179,7 +179,7 @@ <translation id="8712637175834984815">Skjønner</translation> <translation id="8730621377337864115">Ferdig</translation> <translation id="8732462232047530626">Forhåndsvis metadata</translation> -<translation id="8815966864175525708">Bytt til bilde i stående format</translation> +<translation id="8815966864175525708">Bytt til portrettbilde</translation> <translation id="8828441885228359828">Gjenoppta opptaket</translation> <translation id="8870695351537079478">Kan ikke starte opptak</translation> <translation id="8880167521484863515">4 til 3</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_sr-Latn.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_sr-Latn.xtb index 23f2028..a66c9d68 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_sr-Latn.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_sr-Latn.xtb
@@ -56,7 +56,7 @@ <translation id="28682968802727151">Pregled preslikavanja</translation> <translation id="2879583609344924966">Kamera <ph name="CAMERA" /> je priključena.</translation> <translation id="2904654629665923749">Dostupno je skeniranje dokumenata</translation> -<translation id="2968794441791257519">Slike i video snimci koji su snimljeni pomoću kamere će se premestiti u direktorijum Preuzimanja. Možete da im pristupite u Datotekama. +<translation id="2968794441791257519">Slike i video snimci koji su snimljeni pomoću kamere će se premestiti u folder Preuzimanja. Možete da im pristupite u Datotekama. Aplikacije sa dozvolama za pristup memorijskom prostoru će imati pristup slikama i video snimcima.</translation> <translation id="3067436040345934772">Pomeranje udesno</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_sr.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_sr.xtb index e4af136..5e7a8e7f 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_sr.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_sr.xtb
@@ -56,7 +56,7 @@ <translation id="28682968802727151">Преглед пресликавања</translation> <translation id="2879583609344924966">Камера <ph name="CAMERA" /> је прикључена.</translation> <translation id="2904654629665923749">Доступно је скенирање докумената</translation> -<translation id="2968794441791257519">Слике и видео снимци који су снимљени помоћу камере ће се преместити у директоријум Преузимања. Можете да им приступите у Датотекама. +<translation id="2968794441791257519">Слике и видео снимци који су снимљени помоћу камере ће се преместити у фолдер Преузимања. Можете да им приступите у Датотекама. Апликације са дозволама за приступ меморијском простору ће имати приступ сликама и видео снимцима.</translation> <translation id="3067436040345934772">Померање удесно</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ta.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ta.xtb index 58a34c7..c8d405e 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ta.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ta.xtb
@@ -179,7 +179,7 @@ <translation id="8712637175834984815">புரிந்தது</translation> <translation id="8730621377337864115">முடிந்தது</translation> <translation id="8732462232047530626">தரவுத்தகவலை முன்பார்வையிடுக</translation> -<translation id="8815966864175525708">நீளவாக்கில் படமெடுக்குமாறு மாற்றவும்</translation> +<translation id="8815966864175525708">போர்ட்ரெய்ட் மோடில் படமெடுக்குமாறு மாற்றவும்</translation> <translation id="8828441885228359828">ரெக்கார்டிங்கை மீண்டும் தொடங்கு</translation> <translation id="8870695351537079478">பதிவுசெய்வதைத் தொடங்க முடியவில்லை</translation> <translation id="8880167521484863515">4:3</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_te.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_te.xtb index d4ceb8e..7995e08 100644 --- a/ash/webui/camera_app_ui/resources/strings/camera_strings_te.xtb +++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_te.xtb
@@ -48,7 +48,7 @@ <translation id="2501853267655415902">రికార్డింగ్ ఆపివేయబడింది</translation> <translation id="2501953888035679275">మీ కెమెరాతో ఫోటోలను తీయండి, వీడియోలను రికార్డ్ చేయండి.</translation> <translation id="2517472476991765520">స్కాన్ చేయి</translation> -<translation id="2549985041256363841">రికార్డింగ్ను ప్రారంభించు</translation> +<translation id="2549985041256363841">రికార్డింగ్ను ప్రారంభించండి</translation> <translation id="2577915835281444458">రికార్డింగ్ త్వరలోనే ఆపివేయబడుతుంది. పరికర స్టోరేజ్కు వెళ్లి, స్పేస్ను ఖాళీ చేయండి.</translation> <translation id="2599796128805996109">వెనుకవైపు కెమెరా</translation> <translation id="2759905922487820242"><ph name="CURRENT" /> / <ph name="MAXIMAL" />సె</translation>
diff --git a/ash/webui/common/resources/network/BUILD.gn b/ash/webui/common/resources/network/BUILD.gn index 516d5cd..e757ade 100644 --- a/ash/webui/common/resources/network/BUILD.gn +++ b/ash/webui/common/resources/network/BUILD.gn
@@ -70,7 +70,9 @@ js_library("apn_list") { deps = [ + ":apn_detail_dialog", ":onc_mojo", + "//ash/webui/common/resources:assert", "//ash/webui/common/resources:i18n_behavior", "//ash/webui/common/resources:load_time_data.m", "//ash/webui/common/resources/network:apn_list_item",
diff --git a/ash/webui/common/resources/network/apn_list.html b/ash/webui/common/resources/network/apn_list.html index 857de83b..5e3446a 100644 --- a/ash/webui/common/resources/network/apn_list.html +++ b/ash/webui/common/resources/network/apn_list.html
@@ -36,7 +36,8 @@ </template> </div> -<iron-list items="[[getApns_(managedCellularProperties)]]"> +<iron-list items="[[getApns_(managedCellularProperties)]]" + on-show-apn-detail-dialog="onShowApnDetailDialog_"> <template> <apn-list-item apn="[[item]]" @@ -46,3 +47,9 @@ </apn-list-item> </template> </iron-list> + +<template is="dom-if" if="[[shouldShowApnDetailDialog_]]" restamp> + <apn-detail-dialog id="apnDetailDialog" + on-close="onApnDetailDialogClose_"> + </apn-detail-dialog> +</template> \ No newline at end of file
diff --git a/ash/webui/common/resources/network/apn_list.js b/ash/webui/common/resources/network/apn_list.js index 41450960..8e93300a 100644 --- a/ash/webui/common/resources/network/apn_list.js +++ b/ash/webui/common/resources/network/apn_list.js
@@ -11,9 +11,13 @@ import './network_shared.css.js'; import 'chrome://resources/polymer/v3_0/iron-list/iron-list.js'; import 'chrome://resources/ash/common/network/apn_list_item.js'; +import 'chrome://resources/ash/common/network/apn_detail_dialog.js'; +import {assert} from '//resources/ash/common/assert.js'; import {I18nBehavior, I18nBehaviorInterface} from '//resources/ash/common/i18n_behavior.js'; -import {mixinBehaviors, PolymerElement} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {ApnDetailDialog} from '//resources/ash/common/network/apn_detail_dialog.js'; +import {afterNextRender, mixinBehaviors, PolymerElement} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {ApnDetailDialogMode, ApnEventData} from 'chrome://resources/ash/common/network/cellular_utils.js'; import {OncMojo} from 'chrome://resources/ash/common/network/onc_mojo.js'; import {ApnProperties, ApnState, ManagedCellularProperties} from 'chrome://resources/mojo/chromeos/services/network_config/public/mojom/cros_network_config.mojom-webui.js'; @@ -27,7 +31,7 @@ const ApnListBase = mixinBehaviors([I18nBehavior], PolymerElement); /** @polymer */ -class ApnList extends ApnListBase { +export class ApnList extends ApnListBase { static get is() { return 'apn-list'; } @@ -52,6 +56,12 @@ }, /** @private */ + shouldShowApnDetailDialog_: { + type: Boolean, + value: false, + }, + + /** @private */ isConnectedApnAutoDetected_: { type: Boolean, value: false, @@ -59,6 +69,10 @@ }; } + openApnDetailDialogInCreateMode() { + this.showApnDetailDialog_(ApnDetailDialogMode.CREATE, /* apn= */ undefined); + } + /** * Returns an array with all the APN properties that need to be displayed. * TODO(b/162365553): Handle managedCellularProperties.apnList.policyValue @@ -126,6 +140,48 @@ * @private */ onLearnMoreClicked_() {} + + /** + * @param {!Event} event + * @private + */ + onShowApnDetailDialog_(event) { + event.stopPropagation(); + if (this.shouldShowApnDetailDialog_) { + return; + } + const eventData = /** @type {!ApnEventData} */ (event.detail); + this.showApnDetailDialog_(eventData.mode, eventData.apn); + } + + /** + * @param {!ApnDetailDialogMode} mode + * @param {ApnProperties|undefined} apn + * @private + */ + showApnDetailDialog_(mode, apn) { + assert(this.guid); + this.shouldShowApnDetailDialog_ = true; + // Added to ensure dom-if stamping. + afterNextRender(this, () => { + const apnDetailDialog = /** @type {ApnDetailDialog} */ ( + this.shadowRoot.querySelector('#apnDetailDialog')); + assert(!!apnDetailDialog); + + apnDetailDialog.guid = this.guid; + apnDetailDialog.mode = mode; + apnDetailDialog.apnProperties = apn; + }); + } + + /** + * + * @param event {!Event} + * @private + */ + onApnDetailDialogClose_(event) { + this.shouldShowApnDetailDialog_ = false; + } } customElements.define(ApnList.is, ApnList); \ No newline at end of file
diff --git a/ash/webui/common/resources/network/apn_list_item.js b/ash/webui/common/resources/network/apn_list_item.js index abef311..31f15f7 100644 --- a/ash/webui/common/resources/network/apn_list_item.js +++ b/ash/webui/common/resources/network/apn_list_item.js
@@ -83,7 +83,6 @@ * @private */ onDetailsClicked_() { - assert(!!this.guid); assert(!!this.apn); this.dispatchEvent(new CustomEvent('show-apn-detail-dialog', { composed: true, @@ -93,7 +92,6 @@ // Only allow editing if the APN is a custom APN. mode: this.isAutoDetected ? ApnDetailDialogMode.VIEW : ApnDetailDialogMode.EDIT, - guid: this.guid, }), })); }
diff --git a/ash/webui/common/resources/network/cellular_utils.js b/ash/webui/common/resources/network/cellular_utils.js index 38ae8bca..08f2e86 100644 --- a/ash/webui/common/resources/network/cellular_utils.js +++ b/ash/webui/common/resources/network/cellular_utils.js
@@ -23,7 +23,6 @@ * @typedef {{ * apn: !ApnProperties, * mode: !ApnDetailDialogMode, - * guid: !string * }} */ export let ApnEventData;
diff --git a/base/allocator/partition_allocator/partition_alloc_config.h b/base/allocator/partition_allocator/partition_alloc_config.h index b66f0fd..1d7fd996 100644 --- a/base/allocator/partition_allocator/partition_alloc_config.h +++ b/base/allocator/partition_allocator/partition_alloc_config.h
@@ -242,9 +242,11 @@ #endif // Use available space in the reference count to store the initially requested -// size from the application. This is used for debugging, hence disabled by -// default. -// #define PA_REF_COUNT_STORE_REQUESTED_SIZE +// size from the application. This is used for debugging. On mac, it is used to +// workaround a bug. (crbug.com/1378822) +#if BUILDFLAG(IS_MAC) && !defined(PA_REF_COUNT_CHECK_COOKIE) +#define PA_REF_COUNT_STORE_REQUESTED_SIZE +#endif #if defined(PA_REF_COUNT_STORE_REQUESTED_SIZE) && \ defined(PA_REF_COUNT_CHECK_COOKIE)
diff --git a/build/OWNERS b/build/OWNERS index 802f2fa..8a2a5c7 100644 --- a/build/OWNERS +++ b/build/OWNERS
@@ -14,6 +14,7 @@ file://tools/clang/scripts/OWNERS # For java build changes: +smaier@chromium.org wnwen@chromium.org # NOTE: keep this in sync with lsc-owners-override@chromium.org owners
diff --git a/build/check_gn_headers_whitelist.txt b/build/check_gn_headers_whitelist.txt index f589c8ff..e46a598 100644 --- a/build/check_gn_headers_whitelist.txt +++ b/build/check_gn_headers_whitelist.txt
@@ -42,7 +42,7 @@ chrome/browser/media_galleries/media_file_system_context.h chrome/browser/notifications/displayed_notifications_dispatch_callback.h chrome/browser/ui/app_icon_loader_delegate.h -chrome/browser/ui/app_list/app_list_syncable_service_factory.h +chrome/browser/ash/app_list/app_list_syncable_service_factory.h chrome/browser/ui/ash/ash_util.h chrome/browser/ui/ash/multi_user/multi_user_util.h chrome/browser/ui/network_profile_bubble.h
diff --git a/build/fuchsia/linux_internal.sdk.sha1 b/build/fuchsia/linux_internal.sdk.sha1 index ad84747..3ff3bed7 100644 --- a/build/fuchsia/linux_internal.sdk.sha1 +++ b/build/fuchsia/linux_internal.sdk.sha1
@@ -1 +1 @@ -11.20221213.1.1 +11.20221214.1.1
diff --git a/cc/animation/README.md b/cc/animation/README.md index 8b71921..4c3328ef 100644 --- a/cc/animation/README.md +++ b/cc/animation/README.md
@@ -175,37 +175,25 @@ cc::Animation via [blink::Animation::CreateCompositorAnimation][] (attaching the animation to the cc::AnimationTimeline resulting in it being later pushed). The KeyframeEffects are constructed via [blink::Animation::StartAnimationOnCompositor][]. -1. [AnimationHost::RegisterKeyframeEffectForElement][] creates a +1. [cc::AnimationHost::RegisterAnimationForElement][] creates a cc::ElementAnimations for the target `element_id` if one does not already exist. This ElementAnimations instance is shared by all animations with - the same target and tracks the existence of the target. -1. During the commit, [cc::ElementAnimations::ElementRegistered][] is called on the - main thread's AnimationHost either: - - Before BlinkGenPropertyTrees, when a layer with the target `element_id` is - registered. - - After BlinkGenPropertyTrees, after a property tree node with the target - `element_id` is created on the main thread LayerTreeHost's `property_trees_`. - This begins ticking the attached KeyframeEffects and tracks that the element - exists in the active layer / property tree. -1. [cc::LayerTreeHost::FinishCommitOnImplThread][] calls - [cc::AnimationHost::PushPropertiesTo][] which results in + the same target. +1. During the commit, [cc::LayerTreeHostImpl::FinishCommit][] calls + [cc::LayerTreeImpl::PullPropertiesFrom][] which results in [cc::AnimationTimeline::PushAttachedAnimationsToImplThread][] creating a cc::Animation on the compositor thread's AnimationTimeline for each animation missing from the compositor thread. 1. [cc::Animation::PushPropertiesTo][] is called on every animation on the timeline. When the `element_id` is pushed by [cc::KeyframeEffect::PushPropertiesTo][] - [cc::Animation::AttachElementForKeyframeEffect][] creates a compositor side - cc::ElementAnimations instance to track the existence of the element on the - compositor. Since animations are pushed after the layer and property trees, + [cc::AnimationHost::RegisterAnimationForElement][] creates a compositor side + cc::ElementAnimations instance. Since animations are pushed after the layer and property trees, the element should already exist on the pending tree. This will result in the animation being added to the ticking animations list. 1. Now the animation is ticking, meaning that [cc::Animation::Tick][] will be called every frame and update the pending property tree nodes. 1. When the pending tree is activated, - [cc::AnimationHost::ActivateAnimations][] updates the keyframe effects and - [cc::ElementAnimations::ElementRegistered][] - is called for the newly added element id on the active tree, setting - `has_element_in_active_list_`. + [cc::AnimationHost::ActivateAnimations][] updates the keyframe effects. 1. Subsequent animation ticks will now update the property nodes on the active tree. @@ -216,17 +204,15 @@ [blink::Animation::PreCommit]: https://cs.chromium.org/search?q=function:blink::PendingAnimations::Update+%5C-%5C>PreCommit%5C(&g=0&l=57 [blink::Animation::CreateCompositorAnimation]: https://cs.chromium.org/search?q=function:blink::Animation::CreateCompositorAnimation+%5E%5B+%5D*AttachCompositorTimeline [blink::Animation::StartAnimationOnCompositor]: https://cs.chromium.org/search?q=function:blink::Animation::StartAnimationOnCompositor+%5C-%5C>StartAnimationOnCompositor -[AnimationHost::RegisterKeyframeEffectForElement]: https://cs.chromium.org/search?q=function:cc::AnimationHost::RegisterKeyframeEffectForElement+ElementAnimations::Create -[cc::ElementAnimations::ElementRegistered]: https://cs.chromium.org/search?q=function:cc::ElementAnimations::ElementRegistered+%5C!has_element_in_any_list -[cc::LayerTreeHost::FinishCommitOnImplThread]: https://cs.chromium.org/search?q=cc::LayerTreeHost::FinishCommitOnImplThread+file:%5C.cc -[cc::AnimationHost::PushPropertiesTo]: https://cs.chromium.org/search/?q=function:cc::LayerTreeHost::FinishCommitOnImplThread+%5C-%5C>PushPropertiesTo +[cc::AnimationHost::RegisterAnimationForElement]: https://cs.chromium.org/search?q=function:cc::AnimationHost::RegisterAnimationForElement+ElementAnimations::Create +[cc::LayerTreeHostImpl::FinishCommit]: https://cs.chromium.org/search?q=cc::LayerTreeHostImpl::FinishCommit+file:%5C.cc +[cc::LayerTreeImpl::PullPropertiesFrom]: https://cs.chromium.org/search/?q=function:cc::LayerTreeHostImpl::FinishCommit+%5C-%5C>PullPropertiesFrom [cc::AnimationTimeline::PushAttachedAnimationsToImplThread]: https://cs.chromium.org/search?q=function:cc::AnimationTimeline::PushAttachedAnimationsToImplThread+animation%5C-%5C>CreateImplInstance [cc::Animation::PushPropertiesTo]: https://cs.chromium.org/search?q=cc::Animation::PushPropertiesTo+file:%5C.cc [cc::KeyframeEffect::PushPropertiesTo]: https://cs.chromium.org/search?q=cc::KeyframeEffect::PushPropertiesTo+file:%5C.cc -[cc::Animation::AttachElementForKeyframeEffect]: https://cs.chromium.org/search?q=cc::Animation::AttachElementForKeyframeEffect+file:%5C.cc +[cc::AnimationHost::RegisterAnimationForElement]: https://cs.chromium.org/search?q=cc::AnimationHost::RegisterAnimationForElement+file:%5C.cc [cc::Animation::Tick]: https://cs.chromium.org/search?q=cc::Animation::Tick+file:%5C.cc -[cc::AnimationHost::ActivateAnimations]: https://cs.chromium.org/search?q=cc::AnimationHost::ActivateAnimations+ActivateKeyframeEffects -[cc::ElementAnimations::ElementRegistered]: https://cs.chromium.org/search?q=cc::ElementAnimations::ElementRegistered+file:%5C.cc +[cc::AnimationHost::ActivateAnimations]: https://cs.chromium.org/search?q=cc::AnimationHost::ActivateAnimations+ActivateKeyframeModels [KeyframeEffect]: https://cs.chromium.org/chromium/src/cc/animation/keyframe_effect.h [PropertyToElementIdMap]: https://cs.chromium.org/chromium/src/cc/trees/target_property.h?type=cs&g=0&l=42
diff --git a/cc/base/features.cc b/cc/base/features.cc index df030e3..93665eef 100644 --- a/cc/base/features.cc +++ b/cc/base/features.cc
@@ -98,6 +98,10 @@ BASE_FEATURE(kUIEnableSharedImageCacheForGpu, "UIEnableSharedImageCacheForGpu", +#if BUILDFLAG(IS_CHROMEOS_LACROS) + base::FEATURE_ENABLED_BY_DEFAULT); +#else base::FEATURE_DISABLED_BY_DEFAULT); +#endif } // namespace features
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn index 5d0dd7f..f3926b6 100644 --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn
@@ -355,6 +355,7 @@ "//chrome/browser/touch_to_fill/android/internal:resource_provider_public_impl_java", "//components/externalauth/android:google_delegate_public_impl_java", "//components/language/android:ulp_delegate_public_java", + "//components/signin/public/android:account_email_domain_displayability_java", ] }
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sr-Latn.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sr-Latn.xtb index 71f4025..acc08a3e 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sr-Latn.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sr-Latn.xtb
@@ -97,7 +97,7 @@ <translation id="8205266828577616993">Premesti karticu nagore</translation> <translation id="8304833501377495048">Želite li da se traka sa karticama više ne prikazuje?</translation> <translation id="83556505225171773">{TABS_COUNT,plural, =1{Zatvorite <ph name="TABS_COUNT_ONE" /> izabranu karticu}one{Zatvorite <ph name="TABS_COUNT_MANY" /> izabranu karticu}few{Zatvorite <ph name="TABS_COUNT_MANY" /> izabrane kartice}other{Zatvorite <ph name="TABS_COUNT_MANY" /> izabranih kartica}}</translation> -<translation id="8398929769197326728">Novi direktorijum – <ph name="CURRENT_TIMESTAMP_MS" /></translation> +<translation id="8398929769197326728">Novi folder – <ph name="CURRENT_TIMESTAMP_MS" /></translation> <translation id="8557923272772633250">Proširite grupu sa kartica: <ph name="NUMBER_OF_TABS" />.</translation> <translation id="8714939927607906138">Niža cena</translation> <translation id="8749939518995770034">Zatvorena traka sa karticama</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sr.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sr.xtb index 032d7fba..7bb9964 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sr.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sr.xtb
@@ -97,7 +97,7 @@ <translation id="8205266828577616993">Премести картицу нагоре</translation> <translation id="8304833501377495048">Желите ли да се трака са картицама више не приказује?</translation> <translation id="83556505225171773">{TABS_COUNT,plural, =1{Затворите <ph name="TABS_COUNT_ONE" /> изабрану картицу}one{Затворите <ph name="TABS_COUNT_MANY" /> изабрану картицу}few{Затворите <ph name="TABS_COUNT_MANY" /> изабране картице}other{Затворите <ph name="TABS_COUNT_MANY" /> изабраних картица}}</translation> -<translation id="8398929769197326728">Нови директоријум – <ph name="CURRENT_TIMESTAMP_MS" /></translation> +<translation id="8398929769197326728">Нови фолдер – <ph name="CURRENT_TIMESTAMP_MS" /></translation> <translation id="8557923272772633250">Проширите групу са картица: <ph name="NUMBER_OF_TABS" />.</translation> <translation id="8714939927607906138">Нижа цена</translation> <translation id="8749939518995770034">Затворена трака са картицама</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_te.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_te.xtb index 2318b53d..f4fd745 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_te.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_te.xtb
@@ -104,6 +104,6 @@ <translation id="8820741577754260431">మీ ట్యాబ్లలో ధర తగ్గింపు వివరాలను చూడండి</translation> <translation id="9090098097337832354">ఈ స్టోర్ గురించిన సమాచారాన్ని చూపించే స్క్రీన్ మూసివేయబడింది</translation> <translation id="9150694013019234766">స్క్రీన్ దిగువ భాగం దగ్గరలో ఉండే మీ ట్యాబ్ గ్రూప్లో కోరుకునే ట్యాబ్లకు మారండి</translation> -<translation id="9169594135889675189">గ్రూప్నకు కొత్త ట్యాబ్ను జోడించు</translation> +<translation id="9169594135889675189">గ్రూప్నకు కొత్త ట్యాబ్ను జోడించండి</translation> <translation id="959682366969460160">అన్నింటిని క్రమ పద్దతిలో అమర్చండి</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninFirstRunFragmentTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninFirstRunFragmentTest.java index ea5f0c47..468110c 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninFirstRunFragmentTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninFirstRunFragmentTest.java
@@ -1057,7 +1057,7 @@ mFragment.getView().findViewById(R.id.signin_fre_selected_account)::isShown); verify(mFirstRunPageDelegateMock).recordNativePolicyAndChildStatusLoadedHistogram(); final DisplayableProfileData profileData = - new DisplayableProfileData(email, mock(Drawable.class), fullName, givenName); + new DisplayableProfileData(email, mock(Drawable.class), fullName, givenName, true); onView(withText(R.string.fre_welcome)).check(matches(isDisplayed())); onView(withId(R.id.subtitle)).check(matches(not(isDisplayed()))); onView(withText(email)).check(matches(isDisplayed()));
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/webauth/Fido2CredentialRequestTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/webauth/Fido2CredentialRequestTest.java index 122d618..d5d987c 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/webauth/Fido2CredentialRequestTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/webauth/Fido2CredentialRequestTest.java
@@ -56,6 +56,7 @@ import org.chromium.chrome.test.ChromeJUnit4RunnerDelegate; import org.chromium.chrome.test.ChromeTabbedActivityTestRule; import org.chromium.chrome.test.batch.BlankCTATabInitialStateRule; +import org.chromium.chrome.test.util.browser.Features; import org.chromium.components.webauthn.AuthenticatorImpl; import org.chromium.components.webauthn.Fido2Api; import org.chromium.components.webauthn.Fido2ApiCallHelper; @@ -69,6 +70,7 @@ import org.chromium.content_public.browser.test.mock.MockRenderFrameHost; import org.chromium.content_public.browser.test.mock.MockWebContents; import org.chromium.content_public.browser.test.util.TestThreadUtils; +import org.chromium.content_public.common.ContentFeatures; import org.chromium.content_public.common.ContentSwitches; import org.chromium.net.test.EmbeddedTestServer; import org.chromium.url.GURL; @@ -324,7 +326,8 @@ @Override public void onCredentialsDetailsListReceived(RenderFrameHost frameHost, - List<WebAuthnCredentialDetails> credentialList, Callback<byte[]> callback) { + List<WebAuthnCredentialDetails> credentialList, boolean isConditionalRequest, + Callback<byte[]> callback) { Assert.assertEquals(mExpectedCredentialList.size(), credentialList.size()); for (int i = 0; i < credentialList.size(); i++) { Assert.assertEquals( @@ -1218,6 +1221,10 @@ mIntentSender.setNextResultIntent(Fido2ApiTestHelper.createErrorIntent( Fido2Api.NOT_ALLOWED_ERR, "Authentication request must have non-empty allowList")); + // Requests with empty allowCredentials are only passed to GMSCore if there are no + // local passkeys available. + mFido2ApiCallHelper.setReturnedCredentialDetails(new ArrayList<>()); + mRequest.handleGetAssertionRequest(mRequestOptions, mFrameHost, mOrigin, /*payment=*/null, (responseStatus, response) -> mCallback.onSignResponse(responseStatus, response), @@ -1239,6 +1246,10 @@ Fido2ApiTestHelper.createErrorIntent(Fido2Api.NOT_ALLOWED_ERR, "Request doesn't have a valid list of allowed credentials.")); + // Requests with empty allowCredentials are only passed to GMSCore if there are no + // local passkeys available. + mFido2ApiCallHelper.setReturnedCredentialDetails(new ArrayList<>()); + mRequest.handleGetAssertionRequest(mRequestOptions, mFrameHost, mOrigin, /*payment=*/null, (responseStatus, response) -> mCallback.onSignResponse(responseStatus, response), @@ -1398,6 +1409,63 @@ @Test @SmallTest + @Features.EnableFeatures({ContentFeatures.WEB_AUTHN_TOUCH_TO_FILL_CREDENTIAL_SELECTION}) + public void testGetAssertion_emptyAllowCredentials_success() { + mIntentSender.setNextResultIntent(Fido2ApiTestHelper.createSuccessfulGetAssertionIntent()); + mMockBrowserBridge.setExpectedCredentialDetailsList(Arrays.asList( + new WebAuthnCredentialDetails[] {Fido2ApiTestHelper.getCredentialDetails()})); + + mRequestOptions.allowCredentials = new PublicKeyCredentialDescriptor[0]; + + mRequest.handleGetAssertionRequest(mRequestOptions, mFrameHost, mOrigin, /*payment=*/null, + (responseStatus, response) + -> mCallback.onSignResponse(responseStatus, response), + errorStatus -> mCallback.onError(errorStatus)); + mCallback.blockUntilCalled(); + Assert.assertEquals(Integer.valueOf(AuthenticatorStatus.SUCCESS), mCallback.getStatus()); + Fido2ApiTestHelper.validateGetAssertionResponse(mCallback.getGetAssertionResponse()); + Fido2ApiTestHelper.verifyRespondedBeforeTimeout(mStartTimeMs); + } + + @Test + @SmallTest + @Features.DisableFeatures({ContentFeatures.WEB_AUTHN_TOUCH_TO_FILL_CREDENTIAL_SELECTION}) + public void testGetAssertion_emptyAllowCredentialsTouchToFillDisabled_success() { + mIntentSender.setNextResultIntent(Fido2ApiTestHelper.createSuccessfulGetAssertionIntent()); + + mRequestOptions.allowCredentials = new PublicKeyCredentialDescriptor[0]; + + mRequest.handleGetAssertionRequest(mRequestOptions, mFrameHost, mOrigin, /*payment=*/null, + (responseStatus, response) + -> mCallback.onSignResponse(responseStatus, response), + errorStatus -> mCallback.onError(errorStatus)); + mCallback.blockUntilCalled(); + Assert.assertEquals(Integer.valueOf(AuthenticatorStatus.SUCCESS), mCallback.getStatus()); + Fido2ApiTestHelper.validateGetAssertionResponse(mCallback.getGetAssertionResponse()); + } + + @Test + @SmallTest + public void testGetAssertion_emptyAllowCredentialsUserCancels_notAllowedError() { + mMockBrowserBridge.setSelectedCredentialId(new byte[0]); + mMockBrowserBridge.setExpectedCredentialDetailsList(Arrays.asList( + new WebAuthnCredentialDetails[] {Fido2ApiTestHelper.getCredentialDetails()})); + + mRequestOptions.allowCredentials = new PublicKeyCredentialDescriptor[0]; + + mRequest.handleGetAssertionRequest(mRequestOptions, mFrameHost, mOrigin, /*payment=*/null, + (responseStatus, response) + -> mCallback.onSignResponse(responseStatus, response), + errorStatus -> mCallback.onError(errorStatus)); + mCallback.blockUntilCalled(); + Assert.assertEquals( + Integer.valueOf(AuthenticatorStatus.NOT_ALLOWED_ERROR), mCallback.getStatus()); + Assert.assertNull(mCallback.getGetAssertionResponse()); + Fido2ApiTestHelper.verifyRespondedBeforeTimeout(mStartTimeMs); + } + + @Test + @SmallTest public void testGetAssertion_conditionalUi_success() { mIntentSender.setNextResultIntent(Fido2ApiTestHelper.createSuccessfulGetAssertionIntent()); mMockBrowserBridge.setExpectedCredentialDetailsList(Arrays.asList(
diff --git a/chrome/app/resources/chromium_strings_te.xtb b/chrome/app/resources/chromium_strings_te.xtb index 9568d1b..2cac171 100644 --- a/chrome/app/resources/chromium_strings_te.xtb +++ b/chrome/app/resources/chromium_strings_te.xtb
@@ -69,7 +69,7 @@ <translation id="2711502716910134313">Chromium ట్యాబ్</translation> <translation id="2718390899429598676">అదనపు భద్రత కోసం, Chromium మీ డేటాను ఎన్క్రిప్ట్ చేస్తుంది.</translation> <translation id="2770231113462710648">డిఫాల్ట్ బ్రౌజర్ను దీనికి మార్చు:</translation> -<translation id="2799223571221894425">మళ్లీ ప్రారంభించు</translation> +<translation id="2799223571221894425">మళ్లీ ప్రారంభించండి</translation> <translation id="2837693172913560447">ఇది <ph name="USER_EMAIL_ADDRESS" />కు కొత్త Chromium ప్రొఫైల్ను క్రియేట్ చేస్తుంది</translation> <translation id="2847479871509788944">Chromium నుండి తీసివేయండి...</translation> <translation id="2850691299438350830">Chromiumలో మిమ్మల్ని సురక్షితంగా ఉంచుతుంది, మీరు సైన్ ఇన్ చేసినప్పుడు ఇతర Google యాప్లలో మీ సెక్యూరిటీని మెరుగుపరచడానికి ఉపయోగించబడవచ్చు</translation> @@ -198,7 +198,7 @@ <translation id="5698481217667032250">Chromiumను ఈ భాషలో ప్రదర్శించు</translation> <translation id="5862307444128926510">Chromiumకు స్వాగతం</translation> <translation id="5883558403894052917">ఈ ఐటెమ్లు మాల్వేర్ను కలిగి ఉన్నట్టుగా Chromium కనుగొన్నది:</translation> -<translation id="5895138241574237353">మళ్ళీ ప్రారంభించు</translation> +<translation id="5895138241574237353">మళ్ళీ ప్రారంభించండి</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - నెట్వర్క్ సైన్ ఇన్</translation> <translation id="5924017743176219022">ఇంటర్నెట్కు కనెక్ట్ చేస్తోంది...</translation> <translation id="5941711191222866238">కనిష్టీకరించు</translation>
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb index 6579f885..e8a2e39be 100644 --- a/chrome/app/resources/generated_resources_am.xtb +++ b/chrome/app/resources/generated_resources_am.xtb
@@ -71,6 +71,7 @@ <translation id="1067048845568873861">ተፈጥሯል</translation> <translation id="1067661089446014701">ለተጨማሪ ደህንነት ሲባል፣ የይለፍ ቃላት ወደ Google መለያዎ ከመቀመጣቸው በፊት በመሣሪያዎ ላይ ማመስጠር ይችላሉ</translation> <translation id="1067922213147265141">ሌሎች የGoogle አገልግሎቶች</translation> +<translation id="106814709658156573">የጣት አሻራን ለማዋቀር በቁልፍ ሰሌዳው ከታች በስተግራ ጥግ የሚገኘውን የጣት አሻራ ዳሳሽ ልጅዎ እንዲነካው ያድርጉ። የልጅዎ የጣት አሻራ ውሂብ ደህንነቱ በተጠበቀ ሁኔታ ይከማቻል እና በጭራሽ ከዚህ <ph name="DEVICE_TYPE" /> አይወጣም።</translation> <translation id="1069104208554708737">ይህ የይለፍ ቁልፍ እዚህ መሣሪያ ላይ ብቻ ይቀመጣል</translation> <translation id="1069355737714877171"><ph name="PROFILE_NAME" /> የተባለውን የኢሲም መገለጫን ያስወግዱ</translation> <translation id="1069814191880976658">የተለየ ማያ ገጽ ምረጥ</translation> @@ -1006,6 +1007,7 @@ <translation id="1892341345406963517">ሰላም <ph name="PARENT_NAME" /></translation> <translation id="189358972401248634">ሌሎች ቋንቋዎች</translation> <translation id="1895658205118569222">አጥፋ</translation> +<translation id="1896043844785689584">የጣት አሻራን ለማዋቀር በቁልፍ ሰሌዳው ከታች በስተቀኝ ጥግ የሚገኘውን የጣት አሻራ ዳሳሽ ልጅዎ እንዲነካው ያድርጉ። የልጅዎ የጣት አሻራ ውሂብ ደህንነቱ በተጠበቀ ሁኔታ ይከማቻል እና በጭራሽ ከዚህ <ph name="DEVICE_TYPE" /> አይወጣም።</translation> <translation id="1897120393475391208">ጠንካራ የይለፍ ቃል ይጠቀሙ</translation> <translation id="1900305421498694955">ከGoogle Play የመጡ መተግበሪያዎች በውጫዊ የማከማቻ መሣሪያዎች ላይ ፋይሎችን ለማንበብ እና ለመጻፍ ሙሉ የፋይል ሥርዓት መዳረሻ ሊያስፈልጋቸው ይችላሉ። በዚህ መሣሪያ ላይ የተፈጠሩ ፋይሎች እና አቃፊዎች ውጫዊውን አንጻፊ ለሚጠቀሙ ለማናቸውም ሰዎች የሚታዩ ናቸው። <ph name="LINK_BEGIN" />የበለጠ ለመረዳት<ph name="LINK_END" /></translation> <translation id="1901303067676059328">&ሁሉንም ምረጥ</translation> @@ -2231,6 +2233,7 @@ <translation id="3000378525979847272">የተፈቀዱ <ph name="PERMISSION_1" />፣ <ph name="PERMISSION_2" /></translation> <translation id="3000461861112256445">ሞኖ ኦዲዮ</translation> <translation id="3001144475369593262">የልጅ መለያዎች</translation> +<translation id="3001835006423291524">በእርስዎ የቁልፍ ሰሌዳ ከታች በስተቀኝ ጥግ የሚገኘውን የጣት አሻራ ዳሳሽ ይንኩ። የጣት አሻራዎ ውሂብ ደህንነቱ በተጠበቀ ሁኔታ ይከማቻል እና በጭራሽ ከእርስዎ <ph name="DEVICE_TYPE" /> አይወጣም።</translation> <translation id="3003144360685731741">ተመራጭ አውታረ መረቦች</translation> <translation id="3003623123441819449">የሲ ኤስ ኤስ መሸጎጫ</translation> <translation id="3003828226041301643">መሣሪያውን ከጎራው ጋር ማቀላቀል አልተቻለም። መሣሪያዎችን የማከል ልዩ መብቶች እንዳለዎት ለማረጋገጥ መለያዎን ይፈትሹ።</translation> @@ -2312,6 +2315,7 @@ <translation id="3071624960923923138">አዲስ ትር ለመክፈት እዚህ ጠቅ ማድረግ ይችላሉ</translation> <translation id="3072775339180057696">ጣቢያ <ph name="FILE_NAME" /> እንዲመለከት ይፈቀድለት?</translation> <translation id="3074499504015191586">ሙሉ ገጹን ተርጉም</translation> +<translation id="3075144191779656260">ከእርስዎ <ph name="DEVICE_TYPE" /> በግራ-እጅ በኩል ያለውን የጣት አሻራ ዳሳሹን ይንኩ። የጣት አሻራዎ ውሂብ ደህንነቱ በተጠበቀ ሁኔታ ይከማቻል እና በጭራሽ ከእርስዎ <ph name="DEVICE_TYPE" /> አይወጣም።</translation> <translation id="3075874217500066906">የPowerwash ሂደቱን ለመጀመር ዳግም ማስጀመር ያስፈልጋል። ዳግም ከተጀመረ በኋላ መቀጠል እንደሚፈልጉ እንዲያረጋግጡ ይጠየቃሉ።</translation> <translation id="3076909148546628648"><ph name="DOWNLOAD_RECEIVED" />/<ph name="DOWNLOAD_TOTAL" /></translation> <translation id="3076966043108928831">በዚህ መሣሪያ ላይ ብቻ ያስቀምጡ</translation> @@ -2633,6 +2637,7 @@ <translation id="3406290648907941085">ምናባዊ እውነታ መሣሪያዎችን እና ውሂብን እንዲጠቀም ተፈቅዷል</translation> <translation id="3406396172897554194">በቋንቋ ወይም በግቤት ስም ይፈልጉ</translation> <translation id="3406605057700382950">&የዕልባቶች አሞሌ አሳይ</translation> +<translation id="3407967630066378878">የጣት አሻራን ለማዋቀር ከዚህ <ph name="DEVICE_TYPE" /> በግራ-እጅ በኩል የሚገኘውን የጣት አሻራ ዳሳሽ ልጅዎ እንዲነኩት ያድርጉ። የልጅዎ የጣት አሻራ ውሂብ ደህንነቱ በተጠበቀ ሁኔታ ይከማቻል እና በጭራሽ ከዚህ <ph name="DEVICE_TYPE" /> አይወጣም።</translation> <translation id="3408849592677950451">{NUM_PASSWORDS,plural, =1{ለ<ph name="USER_EMAIL" /> 1 የይለፍ ቃል ወደ Google የይለፍ ቃል አስተዳዳሪ መጥቷል}one{ለ<ph name="USER_EMAIL" /> {NUM_PASSWORDS} የይለፍ ቃል ወደ Google የይለፍ ቃል አስተዳዳሪ መጥቷል}other{ለ<ph name="USER_EMAIL" /> {NUM_PASSWORDS} የይለፍ ቃላት ወደ Google የይለፍ ቃል አስተዳዳሪ መጥተዋል}}</translation> <translation id="3409785640040772790">ካርታዎች</translation> <translation id="3412265149091626468">ወደ ተመረጠው ዝለል</translation> @@ -3752,6 +3757,7 @@ <translation id="4451479197788154834">የይለፍ ቃልዎ በዚህ መሣሪያ እና በእርስዎ የGoogle መለያ ዉስጥ ይቀመጣል</translation> <translation id="4451757071857432900">ረባሽ ወይም አሳሳች ማስታወቂያዎችን በሚያሳዩ ጣቢያዎች ላይ የታገደ (የሚመከር)</translation> <translation id="4452898361839215358">ወይም PPD ይምረጡ። <ph name="LINK_BEGIN" />የበለጠ ለመረዳት<ph name="LINK_END" /></translation> +<translation id="4453430595102511050">በእርስዎ የቁልፍ ሰሌዳ ከላይ በስተቀኝ ጥግ የሚገኘውን የጣት አሻራ ዳሳሽ ይንኩ። የጣት አሻራዎ ውሂብ ደህንነቱ በተጠበቀ ሁኔታ ይከማቻል እና በጭራሽ ከእርስዎ <ph name="DEVICE_TYPE" /> አይወጣም።</translation> <translation id="4453946976636652378"><ph name="SEARCH_ENGINE_NAME" /> ላይ ይፈልጉ ወይም ዩአርኤል ይተይቡ</translation> <translation id="4458535500699390320">ይህ ትር ቦዝኖ ሳለ የማህደረ ትውስታ ቆጣቢ ለሌሎች ተግባሮች ማህደረ ትውስታ አስለቅቋል። ይህንን በማንኛውም ጊዜ በቅንብሮች ውስጥ መቀየር ይችላሉ።</translation> <translation id="4459169140545916303">ገባሪ ከ<ph name="DEVICE_LAST_ACTIVATED_TIME" /> ቀናት በፊት</translation> @@ -6029,6 +6035,7 @@ <translation id="6607831829715835317">&ተጨማሪ መሣሪያዎች</translation> <translation id="6607890859198268021"><ph name="USER_EMAIL" /> አስቀድሞ በ<ph name="DOMAIN" /> የሚተዳደር ነው በተለየ የGoogle መለያ የወላጅ መቆጣጠሪያዎችን ለመጠቀም ከቅንብር በኋላ ዘግተው ይውጡ፣ ከዚያ በመለያ መግቢያ ገጹ ላይ «ሰው አክል» የሚለውን ይምረጡ።</translation> <translation id="6608166463665411119">ኢሲምን ዳግም አስጀምር</translation> +<translation id="6608773371844092260">የጣት አሻራን ለማዋቀር ከዚህ <ph name="DEVICE_TYPE" /> በቀኝ-እጅ በኩል የሚገኘውን የጣት አሻራ ዳሳሽ ልጅዎ እንዲነካው ያድርጉ። የልጅዎ የጣት አሻራ ውሂብ ደህንነቱ በተጠበቀ ሁኔታ ይከማቻል እና በጭራሽ ከዚህ <ph name="DEVICE_TYPE" /> አይወጣም።</translation> <translation id="6609478180749378879">ከማንነትን የማያሳውቅ ሁነታ ከወጡ በኋላ በዚህ መሣሪያ ውስጥ የመለያ መግቢያ ውሂብ ይከማቻል። ቆይተው እንደገና በመሣሪያዎ ወደዚህ ድር ጣቢያ ለመግባት ይችላሉ።</translation> <translation id="6610002944194042868">የትርጉም አማራጮች</translation> <translation id="6611907964265870728">እባክዎ መሣሪያዎ ከበይነመረቡ ጋር መገናኘቱን ያረጋግጡ</translation> @@ -6676,6 +6683,7 @@ <translation id="7225082563376899794">የይለፍ ቃላትን በሚሞሉበት ጊዜ Windows Helloን ይጠቀሙ</translation> <translation id="7225179976675429563">የአውታረ መረብ አይነት ይጎድላል</translation> <translation id="7227458944009118910">ከዚህ በታች የተዘረዘሩት መተግበሪያዎች የፕሮቶኮል አገናኞችንም ማስተናገድ ይችላሉ። ሌሎች መተግበሪያዎች ፈቃድ ይጠይቃሉ።</translation> +<translation id="7228056665272655255">የጣት አሻራን ለማዋቀር በቁልፍ ሰሌዳው ከላይ በስተቀኝ ጥግ የሚገኘውን የጣት አሻራ ዳሳሽ ልጅዎ እንዲነኩት ያድርጉ። የልጅዎ የጣት አሻራ ውሂብ ደህንነቱ በተጠበቀ ሁኔታ ይከማቻል እና በጭራሽ ከዚህ <ph name="DEVICE_TYPE" /> አይወጣም።</translation> <translation id="7228523857728654909">ማያ ገጽ መቆለፊያ እና በመለያ መግባት</translation> <translation id="7230222852462421043">መስኮትን &ወደነበረበት መልስ</translation> <translation id="7231260028442989757">የስልክዎን ማሳወቂያዎች ይመልከቱ፣ ያሰናብቱ እና ምላሽ ይስጡ</translation> @@ -6802,6 +6810,7 @@ <translation id="7360233684753165754"><ph name="PAGE_NUMBER" /> ገጾች ወደ <ph name="PRINTER_NAME" /></translation> <translation id="7360257054721917104">የተቀመጡ ዴስኮችን እና ቅንብር ደንቦችን በመመልከት ላይ። ለማሰስ ትርን ይጫኑ።</translation> <translation id="7361297102842600584"><ph name="PLUGIN_NAME" />ን ለማሄድ በቀኝ-ጠቅ ያድርጉ</translation> +<translation id="7361914392989692067">በጣትዎ የኃይል አዝራሩን ይንኩት። የጣት አሻራዎ ውሂብ ደህንነቱ በተጠበቀ ሁኔታ ይከማቻል እና በጭራሽ ከእርስዎ <ph name="DEVICE_TYPE" /> አይወጣም።</translation> <translation id="7362387053578559123">ጣቢያዎች ከብሉቱዝ መሳሪያዎች ጋር ለመገናኘት መጠየቅ ይችላሉ</translation> <translation id="7363349185727752629">የግላዊነት ምርጫዎችዎ መመሪያ</translation> <translation id="7364591875953874521">መዳረሻ ተጠይቋል</translation> @@ -7857,6 +7866,7 @@ <translation id="8299319456683969623">በአሁኑ ጊዜ ከመስመር ውጭ ነዎት።</translation> <translation id="8300011035382349091">የዚህ ትር ዕልባትን አርትዕ</translation> <translation id="8300374739238450534">የእኩለሌሊት ሰማያዊ</translation> +<translation id="8301242268274839723">በቁልፍ ሰሌዳዎ ታች ግራ ጥግ ላይ ያለውን የጣት አሻራ ዳሳሽ ይንኩት። የጣት አሻራዎ ውሂብ ደህንነቱ በተጠበቀ ሁኔታ ይከማቻል እና በጭራሽ ከእርስዎ <ph name="DEVICE_TYPE" /> አይወጣም።</translation> <translation id="8303616404642252802">{COUNT,plural, =1{አድራሻ}one{# አድራሻዎች}other{# አድራሻዎች}}</translation> <translation id="8304383784961451596">ይህንን መሣሪያ ለመጠቀም ፈቃድ አልተሰጠዎትም። በመለያ የመግባት ፈቃድ ለማግኘት እባክዎ አስተዳዳሪውን ያነጋግሩ ወይም በFamily Link ክትትል የሚደረግበትን በGoogle መለያ ይግቡ።</translation> <translation id="8306885873692337975">የቅርብ ጊዜ ባህሪያትን እና የደህንነት ማሻሻያዎችን ያግኙ።</translation> @@ -8587,10 +8597,12 @@ <translation id="8993059306046735527">የ<ph name="DEVICE_TYPE" /> የይለፍ ቃልዎን ከዘነጉ አካባቢያዊ ውሂብዎን አሁንም ወደነበረበት መመለስ ይችላሉ። ወደ የእርስዎ Google መለያ በመለያዎ መግባት ወይም የጠፋ መለያ ማግኛን መጠቀም ያስፈልግዎታል።</translation> <translation id="8993737615451556423">የንባብ ድምፅን ለማፋጠን፣ ለማዘግየት እና ለአፍታ ለማቆም መቆጣጠሪያዎችን ይሰጣል</translation> <translation id="899384117894244799">የተገደበ ተጠቃሚን አስወግድ</translation> +<translation id="8993945059918628059">የጣት አሻራ ዳሳሹን በጣትዎ ይንኩት። የጣት አሻራዎ ውሂብ ደህንነቱ በተጠበቀ ሁኔታ ይከማቻል እና በጭራሽ ከእርስዎ <ph name="DEVICE_TYPE" /> አይወጣም።</translation> <translation id="899403249577094719">የNetscape ሰርቲፊኬት መሰረት</translation> <translation id="899657321862108550">የእርስዎ Chrome፣ በሁሉም ቦታ ላይ</translation> <translation id="8998078711690114234">ይህ የፋይል አይነት አደገኛ ሊሆን ይችላል። <ph name="ORIGIN" />ን የሚያምኑት ከሆነ ብቻ ይህን ፋይል ያስቀምጡ</translation> <translation id="8999560016882908256">የክፍል አጻጻፍ ስህተት፦ <ph name="ERROR_LINE" /></translation> +<translation id="9000185763019430629">ከእርስዎ <ph name="DEVICE_TYPE" /> በቀኝ-እጅ በኩል ያለውን የጣት አሻራ ዳሳሹን ይንኩ። የጣት አሻራዎ ውሂብ ደህንነቱ በተጠበቀ ሁኔታ ይከማቻል እና በጭራሽ ከእርስዎ <ph name="DEVICE_TYPE" /> አይወጣም።</translation> <translation id="9003185744423389627">ከመሣሪያ አስተዳደር አገልጋይ ጋር ያለው ግንኙነት <ph name="FAILURE_TIME" /> ላይ ከ«<ph name="STATUS_TEXT" />» ሁኔታ ጋር አልተሳካም</translation> <translation id="9003647077635673607">በሁሉም ድር ጣቢያዎች ላይ ፍቀድ</translation> <translation id="9003677638446136377">እንደገና ፈትሽ</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb index c36ddb9..9d814c79 100644 --- a/chrome/app/resources/generated_resources_ar.xtb +++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -7743,6 +7743,7 @@ <translation id="8174047975335711832">معلومات عن الجهاز</translation> <translation id="8174876712881364124">يمكنك الاحتفاظ بنسخة احتياطية في Google Drive. وبإمكانك استعادة بياناتك أو تبديل جهازك بسهولة في أي وقت، علمًا بأن هذه النسخة الاحتياطية تتضمن بيانات التطبيق. ويتم تحميل النُسخ الاحتياطية إلى Google وتشفيرها باستخدام كلمة مرور حساب طفلك على Google. <ph name="BEGIN_LINK1" />مزيد من المعلومات<ph name="END_LINK1" /></translation> <translation id="8176332201990304395">زهري وأبيض</translation> +<translation id="8176529144855282213">لتفعيل إمكانية الوصول إلى الميكروفون، عليك تشغيل الميكروفون باستخدام الزر اليدوي على جهازك.</translation> <translation id="8177196903785554304">تفاصيل الشبكة</translation> <translation id="8177318697334260664">{NUM_TABS,plural, =1{نقل علامة تبويب واحدة إلى نافذة جديدة}zero{نقل علامات تبويب إلى نافذة جديدة}two{نقل علامتَي تبويب إلى نافذة جديدة}few{نقل علامات تبويب إلى نافذة جديدة}many{نقل علامات تبويب إلى نافذة جديدة}other{نقل علامات تبويب إلى نافذة جديدة}}</translation> <translation id="8179188928355984576">الحساب لا يُستخدَم مع تطبيقات Android</translation> @@ -8454,6 +8455,7 @@ <translation id="8838770651474809439">هامبورجر</translation> <translation id="8838778928843281408">إدارة أجهزة الهاتف</translation> <translation id="883924185304953854">البحث باستخدام الصور</translation> +<translation id="8839587819996519780">إظهار نقطة الإشعار على رمز التطبيق</translation> <translation id="8841843049738266382">قراءة قائمة المستخدمين المسموح بهم وتغييرها</translation> <translation id="8842594465773264717">حذف بصمة الإصبع هذه</translation> <translation id="8845001906332463065">الحصول على مساعدة</translation>
diff --git a/chrome/app/resources/generated_resources_as.xtb b/chrome/app/resources/generated_resources_as.xtb index a833f8c..f6b3ec15 100644 --- a/chrome/app/resources/generated_resources_as.xtb +++ b/chrome/app/resources/generated_resources_as.xtb
@@ -4495,6 +4495,7 @@ <translation id="5143712164865402236">পূৰ্ণ স্ক্ৰীণলৈ যাওক</translation> <translation id="5145464978649806571">আপুনি নিজৰ ডিভাইচটোৰ পৰা আঁতৰি গ’লে, আপোনাৰ স্ক্ৰীনখন স্বয়ংক্ৰিয়ভাৱে লক হ’ব। আপুনি নিজৰ ডিভাইচটোৰ সন্মুখত থকাৰ সময়ত, বেছি সময় ধৰি আপোনাৰ স্ক্ৰীনখন সক্ৰিয় হৈ থাকিব। লক স্ক্ৰীনটো অক্ষম কৰিলে, আপোনাৰ ডিভাইচটো লক হোৱাৰ পৰিৱৰ্তে সুপ্ত অৱস্থালৈ যাব।</translation> <translation id="514575469079499857">অৱস্থান নিৰ্ণয় কৰিবলৈ আপোনাৰ আইপি ঠিকনা ব্যৱহাৰ কৰক (ডিফ’ল্ট)</translation> +<translation id="5146896637028965135">ছিষ্টেম কণ্ঠধ্বনি</translation> <translation id="5147103632304200977">কোনো ছাইটে HID ডিভাইচসমূহ এক্সেছ কৰিবলৈ বিচাৰিলে সোধক (চুপাৰিছ কৰা হৈছে)</translation> <translation id="5148277445782867161">Googleৰ অৱস্থান সেৱাই আপোনাৰ ডিভাইচৰ অৱস্থান নির্ধাৰণ কৰাত সহায় কৰিবলৈ ৱাই-ফাই, ম’বাইল নেটৱৰ্ক আৰু ছেন্সৰসমূহ দৰে উৎসবোৰ ব্যৱহাৰ কৰে।</translation> <translation id="5150254825601720210">Netscape প্ৰমাণপত্ৰ SSL ছার্ভাৰৰ নাম</translation>
diff --git a/chrome/app/resources/generated_resources_az.xtb b/chrome/app/resources/generated_resources_az.xtb index f136329..7e59e4e 100644 --- a/chrome/app/resources/generated_resources_az.xtb +++ b/chrome/app/resources/generated_resources_az.xtb
@@ -7725,6 +7725,7 @@ <translation id="8174047975335711832">Cihaz haqqında məlumat</translation> <translation id="8174876712881364124">Google Diskə yedəkləyin. İstənilən vaxt asanlıqla datanı bərpa edin və ya cihazı dəyişin. Bu yedəkləməyə tətbiq datası daxildir. Yedəkləmələr Google'a yüklənir və Google Hesab parolu ilə şifrələnir. <ph name="BEGIN_LINK1" />Ətraflı Məlumat<ph name="END_LINK1" /></translation> <translation id="8176332201990304395">Çəhrayı və ağ</translation> +<translation id="8176529144855282213">Mikrofon girişini aktiv etmək üçün cihazınızda fiziki mikrofon keçiricisini aktiv edin</translation> <translation id="8177196903785554304">Şəbəkə Detalları</translation> <translation id="8177318697334260664">{NUM_TABS,plural, =1{Tabeli yeni pəncərəyə köçürün}other{Tabelləri yeni pəncərəyə köçürün}}</translation> <translation id="8179188928355984576">Android tətbiqləri ilə istifadə edilmir</translation> @@ -8429,6 +8430,7 @@ <translation id="8838770651474809439">Hamburger</translation> <translation id="8838778928843281408">Telefonların idarə edilməsi</translation> <translation id="883924185304953854">Şəkil ilə axtarış edin</translation> +<translation id="8839587819996519780">Tətbiq ikonasında bildiriş nöqtəsini göstərin</translation> <translation id="8841843049738266382">İcazə verilənlər siyahısında olan istifadəçiləri oxuyun və dəyişin</translation> <translation id="8842594465773264717">Bu barmaq izini silin</translation> <translation id="8845001906332463065">Yardım alın</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb index e048200e..18a6c77 100644 --- a/chrome/app/resources/generated_resources_bg.xtb +++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -4495,6 +4495,7 @@ <translation id="5143712164865402236">Вход за цял екран</translation> <translation id="5145464978649806571">Ако се отдалечите от устройството си, екранът ще се заключи автоматично. Когато сте пред устройството, екранът ще остане активен по-дълго време. Ако опцията за заключен екран е деактивирана, вместо да се заключва, устройството ви ще преминава в спящ режим.</translation> <translation id="514575469079499857">Определяне на местоположението посредством IP адреса ви (по подразбиране)</translation> +<translation id="5146896637028965135">Системен глас</translation> <translation id="5147103632304200977">Извеждане на запитване, когато сайт иска достъп до HID устройства (препоръчително)</translation> <translation id="5148277445782867161">Услугата на Google за местоположение използва източници като Wi-Fi, мобилни мрежи и сензори, за да спомага за определянето на местоположението на устройството ви.</translation> <translation id="5150254825601720210">Име на SSL сървър за сертификат на Netscape</translation>
diff --git a/chrome/app/resources/generated_resources_bs.xtb b/chrome/app/resources/generated_resources_bs.xtb index fcb9390..281d127 100644 --- a/chrome/app/resources/generated_resources_bs.xtb +++ b/chrome/app/resources/generated_resources_bs.xtb
@@ -7750,7 +7750,7 @@ <translation id="8174047975335711832">Informacije s uređaja</translation> <translation id="8174876712881364124">Izradite sigurnosnu kopiju na Google disku. Jednostavno vratite podatke ili prijeđite na drugi uređaj u bilo kojem trenutku. Sigurnosna kopija uključuje podatke aplikacija. Sigurnosna kopija prenosi se na Google i kriptira pomoću zaporke Google računa vašeg djeteta.<ph name="BEGIN_LINK1" />Saznajte više<ph name="END_LINK1" /></translation> <translation id="8176332201990304395">Ružičasta i bijela</translation> -<translation id="8176529144855282213">Da biste uključili pristup mikrofonu, uključite fizički prekidač mikrofona na uređaju</translation> +<translation id="8176529144855282213">Da uključite pristup mikrofonu, uključite fizički prekidač mikrofona na uređaju</translation> <translation id="8177196903785554304">Informacije o mreži</translation> <translation id="8177318697334260664">{NUM_TABS,plural, =1{Premjesti karticu u novi prozor}one{Premjesti kartice u novi prozor}few{Premjesti kartice u novi prozor}other{Premjesti kartice u novi prozor}}</translation> <translation id="8179188928355984576">Ne koristit se s Android aplikacijama</translation> @@ -8459,7 +8459,7 @@ <translation id="8838770651474809439">Hamburger</translation> <translation id="8838778928843281408">Upravljajte telefonima</translation> <translation id="883924185304953854">Pretraživanje po slici</translation> -<translation id="8839587819996519780">Prikaz točke obavijesti na ikoni aplikacije</translation> +<translation id="8839587819996519780">Prikaz tačke za obavještenja na ikoni aplikacije</translation> <translation id="8841843049738266382">Čitanje i mijenjanje korisnika s liste dozvoljenih</translation> <translation id="8842594465773264717">Izbriši ovaj otisak prsta</translation> <translation id="8845001906332463065">Potražite pomoć</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb index 93e4160d..3713928 100644 --- a/chrome/app/resources/generated_resources_da.xtb +++ b/chrome/app/resources/generated_resources_da.xtb
@@ -4499,6 +4499,7 @@ <translation id="5143712164865402236">Åbn Fuld skærm</translation> <translation id="5145464978649806571">Hvis du bevæger dig væk fra din enhed, låser din skærm automatisk. Når du befinder dig foran din enhed, forbliver din skærm ulåst i længere tid. Hvis låseskærmen er deaktiveret, går din enhed i dvale i stedet for at låse.</translation> <translation id="514575469079499857">Brug din IP-adresse til at fastslå placeringen (standard)</translation> +<translation id="5146896637028965135">Systemstemme</translation> <translation id="5147103632304200977">Spørg, når et website vil have adgang til HID-enheder (anbefales)</translation> <translation id="5148277445782867161">Googles lokationstjeneste bruger kilder som f.eks. Wi-Fi, mobilnetværk og sensorer for at hjælpe med at estimere din enheds lokation.</translation> <translation id="5150254825601720210">SSL-servernavn for Netscape-certifikat</translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb index 5fb775f..2ed32e9 100644 --- a/chrome/app/resources/generated_resources_de.xtb +++ b/chrome/app/resources/generated_resources_de.xtb
@@ -4479,6 +4479,7 @@ <translation id="5143712164865402236">Vollbildmodus ein</translation> <translation id="5145464978649806571">Wenn du dich von deinem Gerät entfernst, wird der Bildschirm automatisch gesperrt. Wenn du dich vor deinem Gerät befindest, bleibt er länger aktiv. Wenn du keinen Sperrbildschirm verwendest, wird dein Gerät stattdessen in den Ruhemodus versetzt.</translation> <translation id="514575469079499857">IP-Adresse zur Standortbestimmung verwenden (Standardeinstellung)</translation> +<translation id="5146896637028965135">Systemstimme</translation> <translation id="5147103632304200977">Nachfragen, wenn eine Website auf HID-Geräte zugreifen möchte (empfohlen)</translation> <translation id="5148277445782867161">Der Standortdienst von Google greift auf Quellen wie WLANs, Mobilfunknetze und Sensoren zurück, um den Gerätestandort besser einschätzen zu können.</translation> <translation id="5150254825601720210">SSL-Servername für Netscape-Zertifikat</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb index f9925cd..c2e9423f 100644 --- a/chrome/app/resources/generated_resources_en-GB.xtb +++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -4498,6 +4498,7 @@ <translation id="5143712164865402236">Enter Full Screen</translation> <translation id="5145464978649806571">If you move away from your device, your screen will lock automatically. When you're in front of your device, your screen will stay awake longer. If lock screen is disabled, your device will sleep instead of lock.</translation> <translation id="514575469079499857">Use your IP address to determine location (default)</translation> +<translation id="5146896637028965135">System voice</translation> <translation id="5147103632304200977">Ask when a site wants to access HID devices (recommended)</translation> <translation id="5148277445782867161">Google's location service uses sources such as Wi-Fi, mobile networks and sensors to help estimate your device’s location.</translation> <translation id="5150254825601720210">Netscape Certificate SSL Server Name</translation> @@ -7746,6 +7747,7 @@ <translation id="8174047975335711832">Device information</translation> <translation id="8174876712881364124">Back up to Google Drive. Easily restore data or switch device at any time. This backup includes app data. Backups are uploaded to Google and encrypted using your child's Google Account password. <ph name="BEGIN_LINK1" />Learn More<ph name="END_LINK1" /></translation> <translation id="8176332201990304395">Pink and white</translation> +<translation id="8176529144855282213">To turn on microphone access, turn on the physical microphone switch on your device</translation> <translation id="8177196903785554304">Network Details</translation> <translation id="8177318697334260664">{NUM_TABS,plural, =1{Move tab to new window}other{Move tabs to new window}}</translation> <translation id="8179188928355984576">Not used with Android apps</translation> @@ -8452,6 +8454,7 @@ <translation id="8838770651474809439">Hamburger</translation> <translation id="8838778928843281408">Manage phones</translation> <translation id="883924185304953854">Search by image</translation> +<translation id="8839587819996519780">Show notification dot on app icon</translation> <translation id="8841843049738266382">Read and change the allowlist users</translation> <translation id="8842594465773264717">Delete this fingerprint</translation> <translation id="8845001906332463065">Get help</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb index ad9e287..9db973dd 100644 --- a/chrome/app/resources/generated_resources_es.xtb +++ b/chrome/app/resources/generated_resources_es.xtb
@@ -7730,6 +7730,7 @@ <translation id="8174047975335711832">Información del dispositivo</translation> <translation id="8174876712881364124">Crear copia de seguridad en Google Drive. Cambia de dispositivo o restaura datos fácilmente en cualquier momento. Esta copia de seguridad incluye datos de las aplicaciones. Los archivos de las copias de seguridad se suben a Google y se cifran con la contraseña de la cuenta de Google de tu hijo. <ph name="BEGIN_LINK1" />Más información<ph name="END_LINK1" /></translation> <translation id="8176332201990304395">Rosa y blanco</translation> +<translation id="8176529144855282213">Para permitir el acceso al micrófono, activa el interruptor físico del micrófono en tu dispositivo</translation> <translation id="8177196903785554304">Información de la red</translation> <translation id="8177318697334260664">{NUM_TABS,plural, =1{Mover pestaña a una nueva ventana}other{Mover pestañas a una nueva ventana}}</translation> <translation id="8179188928355984576">No usada con aplicaciones Android</translation> @@ -8436,6 +8437,7 @@ <translation id="8838770651474809439">Hamburguesa</translation> <translation id="8838778928843281408">Gestionar teléfonos</translation> <translation id="883924185304953854">Búsqueda por imágenes</translation> +<translation id="8839587819996519780">Muestra la burbuja de notificación en el icono de la aplicación</translation> <translation id="8841843049738266382">Consultar y modificar usuarios de la lista de permitidos</translation> <translation id="8842594465773264717">Eliminar esta huella digital</translation> <translation id="8845001906332463065">Obtener ayuda</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb index c9760bdc..7e2ab00 100644 --- a/chrome/app/resources/generated_resources_et.xtb +++ b/chrome/app/resources/generated_resources_et.xtb
@@ -7736,6 +7736,7 @@ <translation id="8174047975335711832">Seadme teave</translation> <translation id="8174876712881364124">Varundage andmed Google Drive'i. Saate andmed igal ajal hõlpsasti taastada või seadet vahetada. See varukoopia hõlmab rakenduste andmeid. Varukoopiad laaditakse Google'isse üles ja krüpteeritakse teie lapse Google'i konto parooliga. <ph name="BEGIN_LINK1" />Lisateave<ph name="END_LINK1" /></translation> <translation id="8176332201990304395">Roosa ja valge</translation> +<translation id="8176529144855282213">Mikrofonile juurdepääsu sisselülitamiseks lülitage oma seadmes sisse mikrofoni füüsiline lüliti</translation> <translation id="8177196903785554304">Võrgu üksikasjad</translation> <translation id="8177318697334260664">{NUM_TABS,plural, =1{Teisalda vaheleht uude aknasse}other{Teisalda vahelehed uude aknasse}}</translation> <translation id="8179188928355984576">Ei kasutata Androidi rakendustega</translation> @@ -8442,6 +8443,7 @@ <translation id="8838770651474809439">Hamburger</translation> <translation id="8838778928843281408">Telefonide haldamine</translation> <translation id="883924185304953854">Otsing pildi järgi</translation> +<translation id="8839587819996519780">Kuva märguandetäpp rakenduse ikoonil</translation> <translation id="8841843049738266382">Lubamisloendisse lisatud kasutajate lugemine ja muutmine</translation> <translation id="8842594465773264717">Kustuta see sõrmejälg</translation> <translation id="8845001906332463065">Otsige abi</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb index 3ffdda0..ac54df9 100644 --- a/chrome/app/resources/generated_resources_fa.xtb +++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -7745,6 +7745,7 @@ <translation id="8174047975335711832">اطلاعات دستگاه</translation> <translation id="8174876712881364124">پشتیبانگیری در Google Drive. هرزمان خواستید دادههایتان را بهآسانی بازیابی کنید یا دستگاهتان را عوض کنید. این پشتیبانگیری دادههای برنامه را شامل میشود. دادههای پشتیبان در Google بارگذاری میشود و با استفاده از گذرواژه حساب Google فرزندتان رمزگذاری میشود. <ph name="BEGIN_LINK1" />بیشتر بدانید<ph name="END_LINK1" /></translation> <translation id="8176332201990304395">صورتی و سفید</translation> +<translation id="8176529144855282213">برای روشن کردن دسترسی میکروفون، کلید فیزیکی میکروفون را روی دستگاهتان روشن کنید</translation> <translation id="8177196903785554304">جزئیات شبکه</translation> <translation id="8177318697334260664">{NUM_TABS,plural, =1{انتقال دادن برگه به پنجره جدید}one{انتقال دادن برگهها به پنجره جدید}other{انتقال دادن برگهها به پنجره جدید}}</translation> <translation id="8179188928355984576">در برنامههای Android استفاده نمیشود</translation> @@ -8452,6 +8453,7 @@ <translation id="8838770651474809439">همبرگر</translation> <translation id="8838778928843281408">مدیریت تلفنها</translation> <translation id="883924185304953854">جستجو با تصویر</translation> +<translation id="8839587819996519780">نمایش نقطههای اعلان روی نماد برنامه</translation> <translation id="8841843049738266382">خواندن و تغییر دادن کاربران فهرست مجازها</translation> <translation id="8842594465773264717">حذف این اثر انگشت</translation> <translation id="8845001906332463065">دریافت راهنمایی</translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb index 12cbed3..bd5c7b4 100644 --- a/chrome/app/resources/generated_resources_fr.xtb +++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -5782,7 +5782,7 @@ <translation id="6367097275976877956">Voulez-vous activer ChromeVox, le lecteur d'écran intégré pour Chrome OS ? Si oui, appuyez sur la barre d'espace.</translation> <translation id="6367985768157257101">Recevoir via le Partage à proximité ?</translation> <translation id="6368276408895187373">Activé - <ph name="VARIATION_NAME" /></translation> -<translation id="636850387210749493">Inscription d'entreprise</translation> +<translation id="636850387210749493">Enregistrement d'entreprise</translation> <translation id="6370021412472292592">Impossible de charger le fichier manifeste.</translation> <translation id="6374077068638737855">Iceweasel</translation> <translation id="6374469231428023295">Réessayer</translation>
diff --git a/chrome/app/resources/generated_resources_gl.xtb b/chrome/app/resources/generated_resources_gl.xtb index 1713b645..b5e9075 100644 --- a/chrome/app/resources/generated_resources_gl.xtb +++ b/chrome/app/resources/generated_resources_gl.xtb
@@ -7725,6 +7725,7 @@ <translation id="8174047975335711832">Información do dispositivo</translation> <translation id="8174876712881364124">Crear copia de seguranza en Google Drive. Restaura facilmente os datos ou cambia de dispositivo en calquera momento. Esta copia de seguranza inclúe os datos das aplicacións. As copias de seguranza cárganse en Google e encríptanse co contrasinal da Conta de Google do teu fillo. <ph name="BEGIN_LINK1" />Máis información<ph name="END_LINK1" /></translation> <translation id="8176332201990304395">Rosa e branco</translation> +<translation id="8176529144855282213">Para habilitar o acceso ao micrófono, activa o interruptor físico do micrófono no dispositivo</translation> <translation id="8177196903785554304">Detalles da rede</translation> <translation id="8177318697334260664">{NUM_TABS,plural, =1{Mover pestana a unha ventá nova}other{Mover pestanas a unha ventá nova}}</translation> <translation id="8179188928355984576">Non se utiliza con aplicacións para Android</translation> @@ -8431,6 +8432,7 @@ <translation id="8838770651474809439">Hamburguesa</translation> <translation id="8838778928843281408">Xestionar teléfonos</translation> <translation id="883924185304953854">Buscar por imaxe</translation> +<translation id="8839587819996519780">Mostrar punto de notificacións na icona da aplicación</translation> <translation id="8841843049738266382">Ler e cambiar a lista de usuarios permitidos</translation> <translation id="8842594465773264717">Eliminar esta impresión dixital</translation> <translation id="8845001906332463065">Obter axuda</translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb index ee0a505..e462fc0 100644 --- a/chrome/app/resources/generated_resources_gu.xtb +++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -4480,6 +4480,7 @@ <translation id="5143712164865402236">પૂર્ણ સ્ક્રીનમાં દાખલ થાઓ</translation> <translation id="5145464978649806571">જો તમે તમારા ડિવાઇસથી દૂર હટી જાઓ, તો તમારી સ્ક્રીન ઑટોમૅટિક રીતે લૉક થઈ જશે. જ્યારે તમે તમારા ડિવાઇસની સામે હાજર રહો, ત્યારે તમારી સ્ક્રીન વધુ સમય માટે સક્રિય રહેશે. જો લૉક સ્ક્રીન બંધ હોય, તો તમારું ડિવાઇસ લૉક થવાને બદલે નિષ્ક્રિય થઈ જશે.</translation> <translation id="514575469079499857">સ્થાન (ડિફૉલ્ટ) નક્કી કરવા માટે તમારા IP ઍડ્રેસનો ઉપયોગ કરો</translation> +<translation id="5146896637028965135">સિસ્ટમ વૉઇસ</translation> <translation id="5147103632304200977">જ્યારે કોઈ સાઇટ HID ડિવાઇસને ઍક્સેસ કરવા માગે ત્યારે પૂછો (સુઝાવ આપેલો છે)</translation> <translation id="5148277445782867161">Googleની સ્થાન સેવા, તમારા ડિવાઇસના સ્થાનનું અનુમાન લગાવવામાં સહાય માટે વાઇ-ફાઇ, મોબાઇલ નેટવર્ક અને સેન્સર જેવા સૉર્સનો ઉપયોગ કરે છે.</translation> <translation id="5150254825601720210">નેટસ્કેપ પ્રમાણપત્ર SSL સર્વર નામ</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb index 5754c26f..5a43350 100644 --- a/chrome/app/resources/generated_resources_hi.xtb +++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -4488,6 +4488,7 @@ <translation id="5143712164865402236">फ़ुल स्क्रीन में प्रवेश करें</translation> <translation id="5145464978649806571">डिवाइस से दूर जाने पर, स्क्रीन अपने-आप लॉक हो जाएगी. डिवाइस के सामने रहने पर, स्क्रीन ज़्यादा देर तक चालू रहेगी. लॉक स्क्रीन की सुविधा बंद होने पर, डिवाइस लॉक होने के बजाय स्लीप मोड में चला जाएगा.</translation> <translation id="514575469079499857">जगह तय करने के लिए अपने आईपी पते का इस्तेमाल करें (डिफ़ॉल्ट)</translation> +<translation id="5146896637028965135">सिस्टम की आवाज़</translation> <translation id="5147103632304200977">जब कोई साइट एचआईडी डिवाइस ऐक्सेस करना चाहे, तो इसके लिए पूछें (सुझाया गया)</translation> <translation id="5148277445782867161">Google की जगह की जानकारी सेवा वाई-फ़ाई, मोबाइल नेटवर्क, और सेंसर जैसे स्रोतों का इस्तेमाल करती है, ताकि आपके डिवाइस की जगह का आसानी से पता लगाया जा सके.</translation> <translation id="5150254825601720210">Netscape प्रमाणपत्र SSL सर्वर नाम</translation> @@ -7735,6 +7736,7 @@ <translation id="8174047975335711832">डिवाइस जानकारी</translation> <translation id="8174876712881364124">'Google डिस्क' में बैक अप लें. किसी भी समय अपना डेटा आसानी से बहाल करें या डिवाइस बदलें. इस बैकअप में ऐप्लिकेशन का डेटा शामिल है. बैकअप आपके बच्चे के Google खाते के पासवर्ड से सुरक्षित करके Google पर अपलोड किए जाते हैं. <ph name="BEGIN_LINK1" />ज़्यादा जानें<ph name="END_LINK1" /></translation> <translation id="8176332201990304395">गुलाबी और सफ़ेद</translation> +<translation id="8176529144855282213">माइक्रोफ़ोन का ऐक्सेस चालू करने के लिए, डिवाइस पर माइक्रोफ़ोन का स्विच चालू करें</translation> <translation id="8177196903785554304">नेटवर्क विवरण</translation> <translation id="8177318697334260664">{NUM_TABS,plural, =1{टैब को नई विंडो पर ले जाएं}one{टैब को नई विंडो पर ले जाएं}other{टैब को नई विंडो पर ले जाएं}}</translation> <translation id="8179188928355984576">Android ऐप्लिकेशन के साथ इस्तेमाल नहीं किया गया</translation> @@ -8440,6 +8442,7 @@ <translation id="8838770651474809439">हैमबर्गर</translation> <translation id="8838778928843281408">फ़ोन मैनेज करें</translation> <translation id="883924185304953854">इमेज से खोजें</translation> +<translation id="8839587819996519780">ऐप्लिकेशन आइकॉन पर सूचनाएं बताने वाला डॉट दिखाएं</translation> <translation id="8841843049738266382">अनुमित वाले उपयोगकर्ताओं की सूची को देखने और बदलाव करने का ऐक्सेस दें</translation> <translation id="8842594465773264717">इस फ़िंगरप्रिंट को मिटाएं</translation> <translation id="8845001906332463065">सहायता पाएं</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb index c4e69d9..685ebea 100644 --- a/chrome/app/resources/generated_resources_id.xtb +++ b/chrome/app/resources/generated_resources_id.xtb
@@ -4498,6 +4498,7 @@ <translation id="5143712164865402236">Masuk Layar Penuh</translation> <translation id="5145464978649806571">Jika Anda beranjak dari perangkat, layar akan otomatis dikunci. Jika Anda di depan perangkat, layar akan tetap aktif lebih lama. Jika layar kunci dinonaktifkan, perangkat akan masuk mode tidur dan tidak dikunci.</translation> <translation id="514575469079499857">Gunakan alamat IP untuk menentukan lokasi (default)</translation> +<translation id="5146896637028965135">Suara sistem</translation> <translation id="5147103632304200977">Tanyakan saat situs ingin mengakses perangkat HID (direkomendasikan)</translation> <translation id="5148277445782867161">Layanan lokasi Google menggunakan sumber seperti Wi-Fi, jaringan seluler, dan sensor untuk membantu memperkirakan lokasi perangkat Anda.</translation> <translation id="5150254825601720210">Netscape Certificate SSL Server Name</translation> @@ -7746,6 +7747,7 @@ <translation id="8174047975335711832">Informasi perangkat</translation> <translation id="8174876712881364124">Cadangkan ke Google Drive. Pulihkan data atau beralih perangkat kapan saja dengan mudah. Cadangan ini meliputi data aplikasi. Cadangan diupload ke Google dan dienkripsi menggunakan sandi Akun Google anak Anda. <ph name="BEGIN_LINK1" />Pelajari Lebih Lanjut<ph name="END_LINK1" /></translation> <translation id="8176332201990304395">Merah muda dan putih</translation> +<translation id="8176529144855282213">Untuk mengaktifkan akses mikrofon, aktifkan tombol mikrofon fisik di perangkat</translation> <translation id="8177196903785554304">Detail Jaringan</translation> <translation id="8177318697334260664">{NUM_TABS,plural, =1{Pindahkan tab ke jendela baru}other{Pindahkan beberapa tab ke jendela baru}}</translation> <translation id="8179188928355984576">Tidak digunakan dengan aplikasi Android</translation> @@ -8452,6 +8454,7 @@ <translation id="8838770651474809439">Hamburger</translation> <translation id="8838778928843281408">Kelola ponsel</translation> <translation id="883924185304953854">Telusuri pakai gambar</translation> +<translation id="8839587819996519780">Tampilkan titik notifikasi di ikon aplikasi</translation> <translation id="8841843049738266382">Membaca dan mengubah pengguna yang diizinkan</translation> <translation id="8842594465773264717">Hapus sidik jari ini</translation> <translation id="8845001906332463065">Dapatkan bantuan</translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb index 8cb90c3..6bc1c2c 100644 --- a/chrome/app/resources/generated_resources_ko.xtb +++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -4497,6 +4497,7 @@ <translation id="5143712164865402236">전체화면 열기</translation> <translation id="5145464978649806571">기기를 자리에 두고 일어나면 화면이 자동으로 잠깁니다. 기기 앞에 있는 동안에는 화면의 절전모드 해제 상태가 더 오래 유지됩니다. 잠금 화면을 사용하고 있지 않은 경우 기기가 잠기지 않고 절전 모드로 전환됩니다.</translation> <translation id="514575469079499857">위치 파악에 IP 주소 사용(기본값)</translation> +<translation id="5146896637028965135">시스템 음성</translation> <translation id="5147103632304200977">사이트에서 HID 기기에 액세스하려고 할 때 확인(권장)</translation> <translation id="5148277445782867161">Google 위치 서비스는 기기 위치를 파악하는 데에 Wi-Fi, 모바일 네트워크, 센서와 같은 소스를 사용합니다.</translation> <translation id="5150254825601720210">Netscape Certificate SSL Server Name</translation> @@ -7746,6 +7747,7 @@ <translation id="8174047975335711832">기기 정보</translation> <translation id="8174876712881364124">Google Drive에 백업합니다. 언제든지 간편하게 데이터를 복원하거나 다른 기기로 전환하세요. 백업에는 앱 데이터가 포함됩니다. 백업 항목은 Google에 업로드되며 자녀의 Google 계정 비밀번호를 사용하여 암호화됩니다. <ph name="BEGIN_LINK1" />자세히 알아보기<ph name="END_LINK1" /></translation> <translation id="8176332201990304395">분홍색 및 흰색</translation> +<translation id="8176529144855282213">마이크 액세스를 사용 설정하려면 기기에서 실제 마이크 스위치를 켜세요.</translation> <translation id="8177196903785554304">네트워크 세부정보</translation> <translation id="8177318697334260664">{NUM_TABS,plural, =1{탭을 새 창으로 이동}other{탭을 새 창으로 이동}}</translation> <translation id="8179188928355984576">Android 앱에서 사용되지 않음</translation> @@ -8452,6 +8454,7 @@ <translation id="8838770651474809439">햄버거</translation> <translation id="8838778928843281408">휴대전화 관리</translation> <translation id="883924185304953854">이미지로 검색</translation> +<translation id="8839587819996519780">앱 아이콘에 알림 표시 점을 표시합니다.</translation> <translation id="8841843049738266382">허용 목록에 있는 사용자를 읽고 변경하기</translation> <translation id="8842594465773264717">이 지문 삭제</translation> <translation id="8845001906332463065">도움말 보기</translation>
diff --git a/chrome/app/resources/generated_resources_lo.xtb b/chrome/app/resources/generated_resources_lo.xtb index 54a4fb2..498eb9f 100644 --- a/chrome/app/resources/generated_resources_lo.xtb +++ b/chrome/app/resources/generated_resources_lo.xtb
@@ -4497,6 +4497,7 @@ <translation id="5143712164865402236">ໃສ່ເຕັມຫນ້າຈໍ</translation> <translation id="5145464978649806571">ຫາກທ່ານອອກຫ່າງຈາກອຸປະກອນຂອງທ່ານ, ໜ້າຈໍຂອງທ່ານຈະລັອກອັດຕະໂນມັດ. ເມື່ອທ່ານຢູ່ໜ້າອຸປະກອນຂອງທ່ານ, ອຸປະກອນຂອງທ່ານຈະເປີດໜ້າຈໍໄວ້ດົນຂຶ້ນ. ຫາກປິດການນຳໃຊ້ໜ້າຈໍລັອກໄວ້, ອຸປະກອນຂອງທ່ານຈະນອນຫຼັບແທນການລັອກ.</translation> <translation id="514575469079499857">ໃຊ້ທີ່ຢູ່ IP ຂອງທ່ານເພື່ອກຳນົດສະຖານທີ່ (ຄ່າເລີ່ມຕົ້ນ)</translation> +<translation id="5146896637028965135">ສຽງຂອງລະບົບ</translation> <translation id="5147103632304200977">ຖາມເມື່ອເວັບໄຊໃດໜຶ່ງຕ້ອງການເຂົ້າເຖິງອຸປະກອນ HID (ແນະນຳ)</translation> <translation id="5148277445782867161">ການບໍລິການລະບຸສະຖານທີ່ຂອງ Google ໃຊ້ແຫຼ່ງຂໍ້ມູນ ເຊັ່ນວ່າ Wi-Fi, ເຄືອຂ່າຍມືຖື ແລະ ເຊັນເຊີ ເພື່ອຄາດຄະເນສະຖານທີ່ຂອງອຸປະກອນຂອງທ່ານ.</translation> <translation id="5150254825601720210">ຊື່ເຊີບເວີ SSL ໃບຢັ້ງຢືນ Netscape</translation>
diff --git a/chrome/app/resources/generated_resources_my.xtb b/chrome/app/resources/generated_resources_my.xtb index 5c42879..0bffaa4 100644 --- a/chrome/app/resources/generated_resources_my.xtb +++ b/chrome/app/resources/generated_resources_my.xtb
@@ -7741,6 +7741,7 @@ <translation id="8174047975335711832">စက်ကိရိယာ အချက်အလက်</translation> <translation id="8174876712881364124">Google Drive သို့ အရန်သိမ်းပါ။ သင့်ဒေတာများကို ပြန်ယူခြင်း (သို့) စက်ပစ္စည်းပြောင်းခြင်းတို့ အချိန်မရွေး လွယ်ကူစွာပြုလုပ်နိုင်သည်။ သင့်အရန်တွင် အက်ပ်ဒေတာများ ပါဝင်သည်။ သင့်ကလေး၏ Google အကောင့်စကားဝှက် အသုံးပြု၍ ၎င်းတို့ကို Google သို့ အပ်လုဒ်လုပ်ပြီး အသွင်ဝှက်ထားပါသည်။ <ph name="BEGIN_LINK1" />ပိုမိုလေ့လာရန်<ph name="END_LINK1" /></translation> <translation id="8176332201990304395">ပန်းရောင်နှင့် အဖြူ</translation> +<translation id="8176529144855282213">မိုက်ခရိုဖုန်းသုံးခွင့် ဖွင့်ရန် သင့်စက်၏ ပကတိမိုက်ခရိုဖုန်းခလုတ်ကို ဖွင့်ရမည်</translation> <translation id="8177196903785554304">ကွန်ရက် အသေးစိတ်</translation> <translation id="8177318697334260664">{NUM_TABS,plural, =1{တဘ်ကို ဝင်းဒိုးအသစ်သို့ ရွှေ့ရန်}other{တဘ်များကို ဝင်းဒိုးအသစ်သို့ ရွှေ့ရန်}}</translation> <translation id="8179188928355984576">Android အက်ပ်များနှင့် မသုံးပါ</translation> @@ -8447,6 +8448,7 @@ <translation id="8838770651474809439">ဟမ်ဘာဂါ</translation> <translation id="8838778928843281408">ဖုန်းများစီမံခြင်း</translation> <translation id="883924185304953854">ပုံနှင့်ရှာရန်</translation> +<translation id="8839587819996519780">အက်ပ်သင်္ကေတတွင် အကြောင်းကြားချက် အစက် ပြပါ</translation> <translation id="8841843049738266382">ခွင့်ပြုစာရင်းပါ အသုံးပြုသူများကို ဖတ်ရှုပြီး ပြောင်းလဲပါ</translation> <translation id="8842594465773264717">ဤလက်ဗွေကို ဖျက်ရန်</translation> <translation id="8845001906332463065">အကူအညီရယူပါ</translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb index 44b312fe..caf76da 100644 --- a/chrome/app/resources/generated_resources_ro.xtb +++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -7734,6 +7734,7 @@ <translation id="8174047975335711832">Informații despre dispozitiv</translation> <translation id="8174876712881364124">Fă backup în Google Drive. Restabilește datele sau schimbă dispozitivul cu ușurință, în orice moment. Acest backup include datele aplicațiilor. Backupurile sunt încărcate pe serverele Google și sunt criptate folosind parola pentru Contul Google al copilului tău. <ph name="BEGIN_LINK1" />Află mai multe<ph name="END_LINK1" /></translation> <translation id="8176332201990304395">Roz și alb</translation> +<translation id="8176529144855282213">Pentru a activa accesul la microfon, activează comutatorul fizic pentru microfon de pe dispozitiv</translation> <translation id="8177196903785554304">Detalii privind rețeaua</translation> <translation id="8177318697334260664">{NUM_TABS,plural, =1{Mută fila în fereastră nouă}few{Mută filele în fereastră nouă}other{Mută filele în fereastră nouă}}</translation> <translation id="8179188928355984576">Nu este folosit cu aplicații pentru Android</translation> @@ -8441,6 +8442,7 @@ <translation id="8838770651474809439">Hamburger</translation> <translation id="8838778928843281408">Gestionează telefoanele</translation> <translation id="883924185304953854">Căutare după imagine</translation> +<translation id="8839587819996519780">Afișează punctul de notificare pe pictograma aplicației</translation> <translation id="8841843049738266382">Citește și modifică utilizatorii trecuți în lista cu acces permis</translation> <translation id="8842594465773264717">Șterge această amprentă</translation> <translation id="8845001906332463065">Obține ajutor</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb index bc2fc1a..140dca7 100644 --- a/chrome/app/resources/generated_resources_sl.xtb +++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -4501,6 +4501,7 @@ <translation id="5143712164865402236">Prehod v celozaslonski način</translation> <translation id="5145464978649806571">Če se odmaknete od naprave, se bo zaslon samodejno zaklenil. Ko ste pred napravo, se zaslon dalj časa ne bo zaklenil. Če je zaklepanje zaslona onemogočeno, se naprava ne bo zaklenila, ampak bo preklopila v stanje pripravljenosti.</translation> <translation id="514575469079499857">Uporaba naslova IP za ugotavljanje lokacije (privzeto)</translation> +<translation id="5146896637028965135">Sistemski glas</translation> <translation id="5147103632304200977">Vprašaj, ko želi spletno mesto dostopati do naprav HID (priporočeno)</translation> <translation id="5148277445782867161">Googlova lokacijska storitev si pri določanju lokacije vaše naprave pomaga z viri, kot so omrežja Wi-Fi, mobilna omrežja in tipala.</translation> <translation id="5150254825601720210">Ime strežnika SLL Netscapeovega potrdila</translation>
diff --git a/chrome/app/resources/generated_resources_sr-Latn.xtb b/chrome/app/resources/generated_resources_sr-Latn.xtb index 9904ba4..9b86ea11 100644 --- a/chrome/app/resources/generated_resources_sr-Latn.xtb +++ b/chrome/app/resources/generated_resources_sr-Latn.xtb
@@ -953,7 +953,7 @@ <translation id="1854180393107901205">Zaustavi prebacivanje</translation> <translation id="1856715684130786728">Dodaj lokaciju...</translation> <translation id="1858585891038687145">Ovaj sertifikat je pouzdan za identifikaciju proizvođača softvera</translation> -<translation id="1861262398884155592">Ovaj direktorijum je prazan</translation> +<translation id="1861262398884155592">Ovaj folder je prazan</translation> <translation id="1862311223300693744">Da li ste instalirali bilo kakav poseban softver za VPN, proksi, zaštitni zid ili NAS?</translation> <translation id="1863182668524159459">Nismo pronašli nijedan serijski port</translation> <translation id="1864111464094315414">Prijavljivanje</translation> @@ -1968,7 +1968,7 @@ <translation id="2767077837043621282">Ažuriranje Chromebook-a nije uspelo. Probajte ponovo kasnije.</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> će moći da menja datoteku <ph name="FILENAME" /> dok ne zatvorite sve kartice ovog sajta</translation> <translation id="2770465223704140727">Ukloni sa liste</translation> -<translation id="2770690685823456775">Izvezite lozinke u drugi direktorijum</translation> +<translation id="2770690685823456775">Izvezite lozinke u drugi folder</translation> <translation id="2770929488047004208">Rezolucija monitora</translation> <translation id="2771268254788431918">Mobilni podaci su aktivirani</translation> <translation id="2771816809568414714">Sir</translation> @@ -2011,7 +2011,7 @@ <translation id="2800760947029405028">Otpremi sliku</translation> <translation id="2801954693771979815">Veličina ekrana</translation> <translation id="2802557211515765772">Nema upravljanih štampača.</translation> -<translation id="2803313416453193357">Otvorite direktorijum</translation> +<translation id="2803313416453193357">Otvorite folder</translation> <translation id="2803719750464280163">Potvrdite da je <ph name="PASSKEY" /> pristupni kôd prikazan na Bluetooth uređaju <ph name="DEVICE" />.</translation> <translation id="2804043232879091219">Nismo uspeli da otvorimo alternativni pregledač</translation> <translation id="2804667941345577550">Odjavićete se sa ovog sajta, uključujući i instance na otvorenim karticama</translation> @@ -2750,7 +2750,7 @@ <translation id="3507421388498836150">Trenutne dozvole za „<ph name="EXTENSION_NAME" />“</translation> <translation id="3507888235492474624">Ponovo skenirajte Bluetooth uređaje</translation> <translation id="3508492320654304609">Brisanje podataka za prijavljivanje nije uspelo</translation> -<translation id="3508920295779105875">Odaberi drugi direktorijum...</translation> +<translation id="3508920295779105875">Odaberi drugi folder...</translation> <translation id="3509379002674019679">Pravite i čuvajte lozinke i upravljajte njima da biste se lako prijavljivali na sajtove i u aplikacije.</translation> <translation id="3511200754045804813">Ponovo skeniraj</translation> <translation id="3511307672085573050">Kopiraj adr&esu linka</translation> @@ -3169,7 +3169,7 @@ <translation id="3893630138897523026">ChromeVox (govorne povratne informacije)</translation> <translation id="3893764153531140319"><ph name="DOWNLOADED_SIZE" />/<ph name="DOWNLOAD_SIZE" /></translation> <translation id="3894123633473837029">Uvrsti nedavnu istoriju Pomoćnika preko Sherlog-a. Ona može da obuhvata vaš identitet, lokaciju i informacije o otklanjanju grešaka. <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /></translation> -<translation id="3894427358181296146">Dodajte direktorijum</translation> +<translation id="3894427358181296146">Dodajte folder</translation> <translation id="3894770151966614831">Želite li da premestite na Google nalog?</translation> <translation id="3895076768659607631">&Upravljaj pretraživačima...</translation> <translation id="3895090224522145010">Kerberos korisničko ime</translation> @@ -3254,7 +3254,7 @@ <translation id="3964480518399667971">Isključi mobilnu mrežu</translation> <translation id="3965811923470826124">Sa razrešivačem</translation> <translation id="3965965397408324205">Zatvori <ph name="PROFILE_NAME" /></translation> -<translation id="3966072572894326936">Odaberi drugi direktorijum...</translation> +<translation id="3966072572894326936">Odaberi drugi folder...</translation> <translation id="3966094581547899417">Detalji o hotspotu</translation> <translation id="3967822245660637423">Preuzimanje je dovršeno</translation> <translation id="3967841595862839006">Izaberite jezik i tastaturu</translation> @@ -3322,7 +3322,7 @@ <translation id="4031179711345676612">Mikrofon je dozvoljen</translation> <translation id="4031527940632463547">Pristup senzorima je blokiran</translation> <translation id="4033415645631238123">Prijavljivanje pomoću Smart Lock-a više nije dostupno. I dalje možete da otključavate pomoću Smart Lock-a.</translation> -<translation id="4033471457476425443">Dodaj novi direktorijum</translation> +<translation id="4033471457476425443">Dodaj novi folder</translation> <translation id="4033711848170683365">To će trajno izbrisati podatke pregledanja sa ovog uređaja. Google naloge na ovom profilu možda koriste druge aplikacije na uređaju <ph name="DEVICE_TYPE" />. Možete da uklonite te naloge u odeljku <ph name="BEGIN_LINK" /><ph name="SETTING_SECTION" /> > <ph name="ACCOUNTS_SECTION" /><ph name="END_LINK" />.</translation> <translation id="4033963223187371752">Bezbedni sajtovi mogu da ugrade sadržaj, poput slika ili veb-okvira koji nisu bezbedni</translation> <translation id="4034741552964543387">Nastavi bez lokalnih podataka</translation> @@ -3356,7 +3356,7 @@ <translation id="4057896668975954729">Prikaži u prodavnici</translation> <translation id="4058720513957747556">AppSocket (TCP/IP)</translation> <translation id="4058793769387728514">Proveri dokument odmah</translation> -<translation id="4061374428807229313">Da biste delili, kliknite desnim tasterom miša na direktorijum u aplikaciji Datoteke, pa izaberite Deli sa Parallels Desktop-om.</translation> +<translation id="4061374428807229313">Da biste delili, kliknite desnim tasterom miša na folder u aplikaciji Datoteke, pa izaberite Deli sa Parallels Desktop-om.</translation> <translation id="406213378265872299">Prilagođena ponašanja</translation> <translation id="4062561150282203854">Sinhronizujte<ph name="DEVICE_TYPE" /> aplikacije, podešavanja i drugo</translation> <translation id="4065876735068446555">Mreža koju koristite (<ph name="NETWORK_ID" />) će možda zahtevati da posetite stranicu za prijavljivanje.</translation> @@ -3698,7 +3698,7 @@ <translation id="4402755511846832236">Ne dozvolite sajtovima da znaju kada aktivno koristite ovaj uređaj</translation> <translation id="4403012369005671154">Pretvaranje govora u tekst</translation> <translation id="4403266582403435904">Lako vraćajte podatke ili menjajte uređaje u bilo kom trenutku. Rezervne kopije se otpremaju na Google i šifruju lozinkom za Google nalog deteta.</translation> -<translation id="4403775189117163360">Odaberite drugi direktorijum</translation> +<translation id="4403775189117163360">Odaberite drugi folder</translation> <translation id="4404136731284211429">Skeniraj ponovo</translation> <translation id="4404843640767531781">Roditelj blokira aplikaciju <ph name="APP_NAME" />. Zatraži od roditelja dozvolu za korišćenje ove aplikacije.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -3903,7 +3903,7 @@ <translation id="4585793705637313973">Izmeni stranicu</translation> <translation id="4586275095964870617">Nismo uspeli da otvorimo <ph name="URL" /> u alternativnom pregledaču. Kontaktirajte administratora sistema.</translation> <translation id="4587589328781138893">Sajtovi</translation> -<translation id="4589713469967853491">Evidencije su upisane u direktorijum Podešavanja.</translation> +<translation id="4589713469967853491">Evidencije su upisane u folder Podešavanja.</translation> <translation id="4590324241397107707">Skladištenje baze podataka</translation> <translation id="459204634473266369">Nema sačuvanih uređaja na <ph name="PRIMARY_EMAIL" /></translation> <translation id="4592891116925567110">Aplikacija za crtanje pomoću pisaljke</translation> @@ -4391,7 +4391,7 @@ <translation id="5059241099014281248">Ograničite prijavljivanje</translation> <translation id="5059526285558225588">Odaberite šta ćete deliti</translation> <translation id="5060332552815861872">Dostupan je 1 štampač za čuvanje.</translation> -<translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{Ovaj direktorijum sadrži obeleživač. Želite li stvarno da ga izbrišete?}one{Ovaj direktorijum sadrži # obeleživač. Želite li stvarno da ga izbrišete?}few{Ovaj direktorijum sadrži # obeleživača. Želite li stvarno da ga izbrišete?}other{Ovaj direktorijum sadrži # obeleživača. Želite li stvarno da ga izbrišete?}}</translation> +<translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{Ovaj folder sadrži obeleživač. Želite li stvarno da ga izbrišete?}one{Ovaj folder sadrži # obeleživač. Želite li stvarno da ga izbrišete?}few{Ovaj folder sadrži # obeleživača. Želite li stvarno da ga izbrišete?}other{Ovaj folder sadrži # obeleživača. Želite li stvarno da ga izbrišete?}}</translation> <translation id="5062930723426326933">Prijavljivanje nije uspelo. Povežite se sa internetom i pokušajte ponovo.</translation> <translation id="5063480226653192405">Korišćenje</translation> <translation id="5065775832226780415">Smart Lock</translation> @@ -4711,7 +4711,7 @@ <translation id="5360150013186312835">Prikaži na traci s alatkama</translation> <translation id="5362741141255528695">Izaberite datoteku privatnog ključa.</translation> <translation id="5363109466694494651">Obavi Powerwash i vrati</translation> -<translation id="5365881113273618889">Folder koji ste izabrali sadrži osetljive datoteke. Želite li stvarno da odobrite aplikaciji „<ph name="APP_NAME" />“ stalan pristup za upisivanje za ovaj direktorijum?</translation> +<translation id="5365881113273618889">Folder koji ste izabrali sadrži osetljive datoteke. Želite li stvarno da odobrite aplikaciji „<ph name="APP_NAME" />“ stalan pristup za upisivanje za ovaj folder?</translation> <translation id="536638840841140142">Nema</translation> <translation id="5368246151595623328"><ph name="NETWORK_NAME" /> – sačuvano sa: <ph name="DEVICE_NAME" /></translation> <translation id="5368720394188453070">Telefon je zaključan. Otključajte ga da biste pristupili.</translation> @@ -4954,7 +4954,7 @@ <ph name="BEGIN_PARAGRAPH3" />Vlasnik može da upravlja ovom funkcijom u odeljku Podešavanja > Napredno > Automatski šalji dijagnostiku i podatke o korišćenju Google-u.<ph name="END_PARAGRAPH3" /> <ph name="BEGIN_PARAGRAPH4" />Ako je uključeno dodatno podešavanje za Aktivnosti na vebu i u aplikacijama, ovi podaci će se možda čuvati na Google nalogu. Možete da pregledate i brišete podatke i da menjate podešavanja naloga na account.google.com.<ph name="END_PARAGRAPH4" /></translation> <translation id="5585019845078534178">Kartice</translation> -<translation id="5585118885427931890">Nije moguće napraviti direktorijum obeleživača.</translation> +<translation id="5585118885427931890">Nije moguće napraviti folder obeleživača.</translation> <translation id="558563010977877295">Otvori određenu stranicu ili skup stranica</translation> <translation id="5585898376467608182">Na uređaju ponestaje memorijskog prostora. Treba vam najmanje <ph name="MINIMUM_SPACE" /> slobodnog prostora da biste koristili <ph name="APP_NAME" />. Da biste oslobodili prostor, izbrišite datoteke sa uređaja.</translation> <translation id="5585912436068747822">Formatiranje nije uspelo</translation> @@ -5145,7 +5145,7 @@ <translation id="5776571780337000608">Pomoću ove aplikacije možete da otvarate i menjate podržane fajlove iz pregledača fajlova ili drugih aplikacija. Da biste kontrolisali koji fajlovi podrazumevano otvaraju ovu aplikaciju, <ph name="BEGIN_LINK" />saznajte kako da podesite podrazumevane aplikacije na uređaju<ph name="END_LINK" />.</translation> <translation id="5777468213129569553">Otvori Chrome</translation> <translation id="5778491106820461378">Možete da upravljate Google nalozima na koje ste prijavljeni u <ph name="LINK_BEGIN" />Podešavanjima<ph name="LINK_END" />. Dozvole koje ste dali veb-sajtovima i aplikacijama mogu da važe za sve naloge. Ako ne želite da sajtovi ili aplikacije pristupaju informacijama o nalogu, možete da se prijavite na <ph name="DEVICE_TYPE" /> kao gost.</translation> -<translation id="5780011244986845107">Folder koji ste izabrali sadrži osetljive datoteke. Želite li stvarno da odobrite aplikaciji „<ph name="APP_NAME" />“ stalan pristup za čitanje za ovaj direktorijum?</translation> +<translation id="5780011244986845107">Folder koji ste izabrali sadrži osetljive datoteke. Želite li stvarno da odobrite aplikaciji „<ph name="APP_NAME" />“ stalan pristup za čitanje za ovaj folder?</translation> <translation id="5780973441651030252">Prioritet procesa</translation> <translation id="5781092003150880845">Sinhronizuj kao <ph name="ACCOUNT_FULL_NAME" /></translation> <translation id="5781865261247219930">Šaljite komande u <ph name="EXTENSION_NAME" /></translation> @@ -5235,7 +5235,7 @@ <translation id="5855267860608268405">Poznate WiFi mreže</translation> <translation id="5855643921295613558">0,6 sekundi</translation> <translation id="5856721540245522153">Omogućavanje funkcija za otklanjanje grešaka</translation> -<translation id="5857090052475505287">Novi direktorijum</translation> +<translation id="5857090052475505287">Novi folder</translation> <translation id="5857171483910641802">Prečice se predlažu na osnovu veb-sajtova koje često posećujete</translation> <translation id="5857675236236529683">Kada budete spremni, ovde pronađite listu za čitanje</translation> <translation id="5858490737742085133">Terminal</translation> @@ -5870,7 +5870,7 @@ <translation id="6453191633103419909">Kvalitet projekcije za karticu/ekran</translation> <translation id="6453921811609336127">Da biste prešli na sledeći metod unosa, pritisnite <ph name="BEGIN_SHORTCUT" /><ph name="BEGIN_CTRL" />Ctrl<ph name="END_CTRL" /><ph name="SEPARATOR1" /><ph name="BEGIN_SHIFT" />Shift<ph name="END_SHIFT" /><ph name="SEPARATOR2" /><ph name="BEGIN_SPACE" />Taster za razmak<ph name="END_SPACE" /><ph name="END_SHORTCUT" /></translation> <translation id="6455264371803474013">Na određenim sajtovima</translation> -<translation id="6455894534188563617">&Novi direktorijum</translation> +<translation id="6455894534188563617">&Novi folder</translation> <translation id="645705751491738698">Nastavi blokiranje JavaScript-a</translation> <translation id="6458347417133445570">Prikazuj detalje o dozvoljavanju svih kolačića</translation> <translation id="6458701200018867744">Otpremanje nije uspelo (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation> @@ -5891,7 +5891,7 @@ <translation id="6469557521904094793">Uključi mobilnu mrežu</translation> <translation id="6470823736074966819">Isključite zvuk obaveštenja</translation> <translation id="6472893788822429178">Prikaži dugme Početak</translation> -<translation id="6474498546677193336">Opozivanje deljenja nije uspelo jer jedna aplikacija koristi ovaj direktorijum. Deljenje direktorijuma će biti opozvano kada se Linux sledeći put zatvori.</translation> +<translation id="6474498546677193336">Opozivanje deljenja nije uspelo jer jedna aplikacija koristi ovaj folder. Deljenje foldera će biti opozvano kada se Linux sledeći put zatvori.</translation> <translation id="6474884162850599008">Prekini vezu sa nalogom Google diska</translation> <translation id="6475294023568239942">U podešavanjima oslobodite prostor na disku ili promenite veličinu diska za Linux</translation> <translation id="6476482583633999078">Brzina govora</translation> @@ -6130,7 +6130,7 @@ <translation id="6693745645188488741">{COUNT,plural, =1{1 stranica}one{{COUNT} stranica}few{{COUNT} stranice}other{{COUNT} stranica}}</translation> <translation id="6697172646384837537">Izaberite gde želite da uvezete lozinke</translation> <translation id="6697492270171225480">Prikazuj predloge za slične stranice kada neka stranica ne može da se pronađe</translation> -<translation id="6697690052557311665">Da biste delili, kliknite desnim tasterom na direktorijum u aplikaciji Files, pa izaberite „Deli sa Linux-om“.</translation> +<translation id="6697690052557311665">Da biste delili, kliknite desnim tasterom na folder u aplikaciji Files, pa izaberite „Deli sa Linux-om“.</translation> <translation id="6698810901424468597">Čitanje i menjanje podataka na <ph name="WEBSITE_1" /> i <ph name="WEBSITE_2" /></translation> <translation id="6700093763382332031">Zaključavanje SIM-a za mobilnu mrežu</translation> <translation id="6700480081846086223">Prebaci <ph name="HOST_NAME" /></translation> @@ -6982,7 +6982,7 @@ <translation id="7502220299952823578">Dodaj na listu Uvek zadrži ove sajtove aktivnim</translation> <translation id="7503191893372251637">Tip Netscape sertifikata</translation> <translation id="7503985202154027481">Poseta ovom sajtu će biti zabeležena na bezbednosnom ključu.</translation> -<translation id="750509436279396091">Otvori direktorijum Preuzimanja</translation> +<translation id="750509436279396091">Otvori folder Preuzimanja</translation> <translation id="7505717542095249632">Sakrij korpu prodavca <ph name="MERCHANT" /></translation> <translation id="7506093026325926984">Lozinka će se čuvati na ovom uređaju</translation> <translation id="7506130076368211615">Podesite novu mrežu</translation> @@ -7431,7 +7431,7 @@ <translation id="7909324225945368569">Promenite ime profila</translation> <translation id="7909969815743704077">Preuzeto je u režimu bez arhiviranja</translation> <translation id="7909986151924474987">Možda nećete moći da ponovo instalirate ovaj profil</translation> -<translation id="7910768399700579500">&Novi direktorijum</translation> +<translation id="7910768399700579500">&Novi folder</translation> <translation id="7911118814695487383">Linux</translation> <translation id="79113168483292735">Odeljak Medijske kartice u Pretrazi kartica</translation> <translation id="7912080627461681647">Lozinka je promenjena na serveru. Odjavite se, pa se ponovo prijavite.</translation> @@ -8664,7 +8664,7 @@ <translation id="9037640663275993951">Uređaj nije dozvoljen</translation> <translation id="9037818663270399707">Veza nije privatna za sav mrežni saobraćaj</translation> <translation id="9037965129289936994">Prikaži original</translation> -<translation id="9038489124413477075">Neimenovani direktorijum</translation> +<translation id="9038489124413477075">Neimenovani folder</translation> <translation id="9039014462651733343">{NUM_ATTEMPTS,plural, =1{Imate još jedan pokušaj.}one{Imate još # pokušaj.}few{Imate još # pokušaja.}other{Imate još # pokušaja.}}</translation> <translation id="9040473193163777637">Želite li da aktivirate ChromeVox, ugrađeni čitač ekrana za Chrome OS? Ako je tako, pritisnite i zadržite oba tastera za jačinu zvuka pet sekundi.</translation> <translation id="9040661932550800571">Želite li da ažurirate lozinku za <ph name="ORIGIN" />?</translation> @@ -8880,7 +8880,7 @@ <translation id="938623846785894166">Neuobičajen fajl</translation> <translation id="939401694733344652">Ovi nalozi se trenutno ne koriste sa Android aplikacijama. Ako izaberete nalog za korišćenje sa ovom Android aplikacijom, on može da se koristi i sa drugim Android aplikacijama. Možete da promenite pristup Android aplikacijama u odeljku <ph name="LINK_BEGIN" />Podešavanja > Nalozi<ph name="LINK_END" />.</translation> <translation id="939598580284253335">Unesite pristupnu frazu</translation> -<translation id="939736085109172342">Novi direktorijum</translation> +<translation id="939736085109172342">Novi folder</translation> <translation id="942532530371314860"><ph name="APP_NAME" /> deli Chrome karticu i zvuk.</translation> <translation id="944799160843436808">Došlo je do problema pri podešavanju Steam-a na Chromebook-u</translation> <translation id="945522503751344254">Pošalji povratne informacije</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb index e7964bc3..38414f48 100644 --- a/chrome/app/resources/generated_resources_sr.xtb +++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -953,7 +953,7 @@ <translation id="1854180393107901205">Заустави пребацивање</translation> <translation id="1856715684130786728">Додај локацију...</translation> <translation id="1858585891038687145">Овај сертификат је поуздан за идентификацију произвођача софтвера</translation> -<translation id="1861262398884155592">Овај директоријум је празан</translation> +<translation id="1861262398884155592">Овај фолдер је празан</translation> <translation id="1862311223300693744">Да ли сте инсталирали било какав посебан софтвер за VPN, прокси, заштитни зид или NAS?</translation> <translation id="1863182668524159459">Нисмо пронашли ниједан серијски порт</translation> <translation id="1864111464094315414">Пријављивање</translation> @@ -1968,7 +1968,7 @@ <translation id="2767077837043621282">Ажурирање Chromebook-а није успело. Пробајте поново касније.</translation> <translation id="2767127727915954024"><ph name="ORIGIN" /> ће моћи да мења датотеку <ph name="FILENAME" /> док не затворите све картице овог сајта</translation> <translation id="2770465223704140727">Уклони са листе</translation> -<translation id="2770690685823456775">Извезите лозинке у други директоријум</translation> +<translation id="2770690685823456775">Извезите лозинке у други фолдер</translation> <translation id="2770929488047004208">Резолуција монитора</translation> <translation id="2771268254788431918">Мобилни подаци су активирани</translation> <translation id="2771816809568414714">Сир</translation> @@ -2011,7 +2011,7 @@ <translation id="2800760947029405028">Отпреми слику</translation> <translation id="2801954693771979815">Величина екрана</translation> <translation id="2802557211515765772">Нема управљаних штампача.</translation> -<translation id="2803313416453193357">Отворите директоријум</translation> +<translation id="2803313416453193357">Отворите фолдер</translation> <translation id="2803719750464280163">Потврдите да је <ph name="PASSKEY" /> приступни кôд приказан на Bluetooth уређају <ph name="DEVICE" />.</translation> <translation id="2804043232879091219">Нисмо успели да отворимо алтернативни прегледач</translation> <translation id="2804667941345577550">Одјавићете се са овог сајта, укључујући и инстанце на отвореним картицама</translation> @@ -2750,7 +2750,7 @@ <translation id="3507421388498836150">Тренутне дозволе за „<ph name="EXTENSION_NAME" />“</translation> <translation id="3507888235492474624">Поново скенирајте Bluetooth уређаје</translation> <translation id="3508492320654304609">Брисање података за пријављивање није успело</translation> -<translation id="3508920295779105875">Одабери други директоријум...</translation> +<translation id="3508920295779105875">Одабери други фолдер...</translation> <translation id="3509379002674019679">Правите и чувајте лозинке и управљајте њима да бисте се лако пријављивали на сајтове и у апликације.</translation> <translation id="3511200754045804813">Поново скенирај</translation> <translation id="3511307672085573050">Копирај адр&есу линка</translation> @@ -3169,7 +3169,7 @@ <translation id="3893630138897523026">ChromeVox (говорне повратне информације)</translation> <translation id="3893764153531140319"><ph name="DOWNLOADED_SIZE" />/<ph name="DOWNLOAD_SIZE" /></translation> <translation id="3894123633473837029">Уврсти недавну историју Помоћника преко Sherlog-а. Она може да обухвата ваш идентитет, локацију и информације о отклањању грешака. <ph name="BEGIN_LINK" />Сазнајте више<ph name="END_LINK" /></translation> -<translation id="3894427358181296146">Додајте директоријум</translation> +<translation id="3894427358181296146">Додајте фолдер</translation> <translation id="3894770151966614831">Желите ли да преместите на Google налог?</translation> <translation id="3895076768659607631">&Управљај претраживачима...</translation> <translation id="3895090224522145010">Kerberos корисничко име</translation> @@ -3254,7 +3254,7 @@ <translation id="3964480518399667971">Искључи мобилну мрежу</translation> <translation id="3965811923470826124">Са разрешивачем</translation> <translation id="3965965397408324205">Затвори <ph name="PROFILE_NAME" /></translation> -<translation id="3966072572894326936">Одабери други директоријум...</translation> +<translation id="3966072572894326936">Одабери други фолдер...</translation> <translation id="3966094581547899417">Детаљи о хотспоту</translation> <translation id="3967822245660637423">Преузимање је довршено</translation> <translation id="3967841595862839006">Изаберите језик и тастатуру</translation> @@ -3322,7 +3322,7 @@ <translation id="4031179711345676612">Микрофон је дозвољен</translation> <translation id="4031527940632463547">Приступ сензорима је блокиран</translation> <translation id="4033415645631238123">Пријављивање помоћу Smart Lock-а више није доступно. И даље можете да откључавате помоћу Smart Lock-а.</translation> -<translation id="4033471457476425443">Додај нови директоријум</translation> +<translation id="4033471457476425443">Додај нови фолдер</translation> <translation id="4033711848170683365">То ће трајно избрисати податке прегледања са овог уређаја. Google налоге на овом профилу можда користе друге апликације на уређају <ph name="DEVICE_TYPE" />. Можете да уклоните те налоге у одељку <ph name="BEGIN_LINK" /><ph name="SETTING_SECTION" /> > <ph name="ACCOUNTS_SECTION" /><ph name="END_LINK" />.</translation> <translation id="4033963223187371752">Безбедни сајтови могу да уграде садржај, попут слика или веб-оквира који нису безбедни</translation> <translation id="4034741552964543387">Настави без локалних података</translation> @@ -3356,7 +3356,7 @@ <translation id="4057896668975954729">Прикажи у продавници</translation> <translation id="4058720513957747556">AppSocket (TCP/IP)</translation> <translation id="4058793769387728514">Провери документ одмах</translation> -<translation id="4061374428807229313">Да бисте делили, кликните десним тастером миша на директоријум у апликацији Датотеке, па изаберите Дели са Parallels Desktop-ом.</translation> +<translation id="4061374428807229313">Да бисте делили, кликните десним тастером миша на фолдер у апликацији Датотеке, па изаберите Дели са Parallels Desktop-ом.</translation> <translation id="406213378265872299">Прилагођена понашања</translation> <translation id="4062561150282203854">Синхронизујте<ph name="DEVICE_TYPE" /> апликације, подешавања и друго</translation> <translation id="4065876735068446555">Мрежа коју користите (<ph name="NETWORK_ID" />) ће можда захтевати да посетите страницу за пријављивање.</translation> @@ -3698,7 +3698,7 @@ <translation id="4402755511846832236">Не дозволите сајтовима да знају када активно користите овај уређај</translation> <translation id="4403012369005671154">Претварање говора у текст</translation> <translation id="4403266582403435904">Лако враћајте податке или мењајте уређаје у било ком тренутку. Резервне копије се отпремају на Google и шифрују лозинком за Google налог детета.</translation> -<translation id="4403775189117163360">Одаберите други директоријум</translation> +<translation id="4403775189117163360">Одаберите други фолдер</translation> <translation id="4404136731284211429">Скенирај поново</translation> <translation id="4404843640767531781">Родитељ блокира апликацију <ph name="APP_NAME" />. Затражи од родитеља дозволу за коришћење ове апликације.</translation> <translation id="4405117686468554883">*.jpeg, *.jpg, *.png</translation> @@ -3903,7 +3903,7 @@ <translation id="4585793705637313973">Измени страницу</translation> <translation id="4586275095964870617">Нисмо успели да отворимо <ph name="URL" /> у алтернативном прегледачу. Контактирајте администратора система.</translation> <translation id="4587589328781138893">Сајтови</translation> -<translation id="4589713469967853491">Евиденције су уписане у директоријум Подешавања.</translation> +<translation id="4589713469967853491">Евиденције су уписане у фолдер Подешавања.</translation> <translation id="4590324241397107707">Складиштење базе података</translation> <translation id="459204634473266369">Нема сачуваних уређаја на <ph name="PRIMARY_EMAIL" /></translation> <translation id="4592891116925567110">Апликација за цртање помоћу писаљке</translation> @@ -4391,7 +4391,7 @@ <translation id="5059241099014281248">Ограничите пријављивање</translation> <translation id="5059526285558225588">Одаберите шта ћете делити</translation> <translation id="5060332552815861872">Доступан је 1 штампач за чување.</translation> -<translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{Овај директоријум садржи обележивач. Желите ли стварно да га избришете?}one{Овај директоријум садржи # обележивач. Желите ли стварно да га избришете?}few{Овај директоријум садржи # обележивача. Желите ли стварно да га избришете?}other{Овај директоријум садржи # обележивача. Желите ли стварно да га избришете?}}</translation> +<translation id="5061347216700970798">{NUM_BOOKMARKS,plural, =1{Овај фолдер садржи обележивач. Желите ли стварно да га избришете?}one{Овај фолдер садржи # обележивач. Желите ли стварно да га избришете?}few{Овај фолдер садржи # обележивача. Желите ли стварно да га избришете?}other{Овај фолдер садржи # обележивача. Желите ли стварно да га избришете?}}</translation> <translation id="5062930723426326933">Пријављивање није успело. Повежите се са интернетом и покушајте поново.</translation> <translation id="5063480226653192405">Коришћење</translation> <translation id="5065775832226780415">Smart Lock</translation> @@ -4711,7 +4711,7 @@ <translation id="5360150013186312835">Прикажи на траци с алаткама</translation> <translation id="5362741141255528695">Изаберите датотеку приватног кључа.</translation> <translation id="5363109466694494651">Обави Powerwash и врати</translation> -<translation id="5365881113273618889">Фолдер који сте изабрали садржи осетљиве датотеке. Желите ли стварно да одобрите апликацији „<ph name="APP_NAME" />“ сталан приступ за уписивање за овај директоријум?</translation> +<translation id="5365881113273618889">Фолдер који сте изабрали садржи осетљиве датотеке. Желите ли стварно да одобрите апликацији „<ph name="APP_NAME" />“ сталан приступ за уписивање за овај фолдер?</translation> <translation id="536638840841140142">Нема</translation> <translation id="5368246151595623328"><ph name="NETWORK_NAME" /> – сачувано са: <ph name="DEVICE_NAME" /></translation> <translation id="5368720394188453070">Телефон је закључан. Откључајте га да бисте приступили.</translation> @@ -4954,7 +4954,7 @@ <ph name="BEGIN_PARAGRAPH3" />Власник може да управља овом функцијом у одељку Подешавања > Напредно > Аутоматски шаљи дијагностику и податке о коришћењу Google-у.<ph name="END_PARAGRAPH3" /> <ph name="BEGIN_PARAGRAPH4" />Ако је укључено додатно подешавање за Активности на вебу и у апликацијама, ови подаци ће се можда чувати на Google налогу. Можете да прегледате и бришете податке и да мењате подешавања налога на account.google.com.<ph name="END_PARAGRAPH4" /></translation> <translation id="5585019845078534178">Картице</translation> -<translation id="5585118885427931890">Није могуће направити директоријум обележивача.</translation> +<translation id="5585118885427931890">Није могуће направити фолдер обележивача.</translation> <translation id="558563010977877295">Отвори одређену страницу или скуп страница</translation> <translation id="5585898376467608182">На уређају понестаје меморијског простора. Треба вам најмање <ph name="MINIMUM_SPACE" /> слободног простора да бисте користили <ph name="APP_NAME" />. Да бисте ослободили простор, избришите датотеке са уређаја.</translation> <translation id="5585912436068747822">Форматирање није успело</translation> @@ -5145,7 +5145,7 @@ <translation id="5776571780337000608">Помоћу ове апликације можете да отварате и мењате подржане фајлове из прегледача фајлова или других апликација. Да бисте контролисали који фајлови подразумевано отварају ову апликацију, <ph name="BEGIN_LINK" />сазнајте како да подесите подразумеване апликације на уређају<ph name="END_LINK" />.</translation> <translation id="5777468213129569553">Отвори Chrome</translation> <translation id="5778491106820461378">Можете да управљате Google налозима на које сте пријављени у <ph name="LINK_BEGIN" />Подешавањима<ph name="LINK_END" />. Дозволе које сте дали веб-сајтовима и апликацијама могу да важе за све налоге. Ако не желите да сајтови или апликације приступају информацијама о налогу, можете да се пријавите на <ph name="DEVICE_TYPE" /> као гост.</translation> -<translation id="5780011244986845107">Фолдер који сте изабрали садржи осетљиве датотеке. Желите ли стварно да одобрите апликацији „<ph name="APP_NAME" />“ сталан приступ за читање за овај директоријум?</translation> +<translation id="5780011244986845107">Фолдер који сте изабрали садржи осетљиве датотеке. Желите ли стварно да одобрите апликацији „<ph name="APP_NAME" />“ сталан приступ за читање за овај фолдер?</translation> <translation id="5780973441651030252">Приоритет процеса</translation> <translation id="5781092003150880845">Синхронизуј као <ph name="ACCOUNT_FULL_NAME" /></translation> <translation id="5781865261247219930">Шаљите команде у <ph name="EXTENSION_NAME" /></translation> @@ -5235,7 +5235,7 @@ <translation id="5855267860608268405">Познате WiFi мреже</translation> <translation id="5855643921295613558">0,6 секунди</translation> <translation id="5856721540245522153">Омогућавање функција за отклањање грешака</translation> -<translation id="5857090052475505287">Нови директоријум</translation> +<translation id="5857090052475505287">Нови фолдер</translation> <translation id="5857171483910641802">Пречице се предлажу на основу веб-сајтова које често посећујете</translation> <translation id="5857675236236529683">Када будете спремни, овде пронађите листу за читање</translation> <translation id="5858490737742085133">Терминал</translation> @@ -5870,7 +5870,7 @@ <translation id="6453191633103419909">Квалитет пројекције за картицу/екран</translation> <translation id="6453921811609336127">Да бисте прешли на следећи метод уноса, притисните <ph name="BEGIN_SHORTCUT" /><ph name="BEGIN_CTRL" />Ctrl<ph name="END_CTRL" /><ph name="SEPARATOR1" /><ph name="BEGIN_SHIFT" />Shift<ph name="END_SHIFT" /><ph name="SEPARATOR2" /><ph name="BEGIN_SPACE" />Тастер за размак<ph name="END_SPACE" /><ph name="END_SHORTCUT" /></translation> <translation id="6455264371803474013">На одређеним сајтовима</translation> -<translation id="6455894534188563617">&Нови директоријум</translation> +<translation id="6455894534188563617">&Нови фолдер</translation> <translation id="645705751491738698">Настави блокирање JavaScript-а</translation> <translation id="6458347417133445570">Приказуј детаље о дозвољавању свих колачића</translation> <translation id="6458701200018867744">Отпремање није успело (<ph name="WEBRTC_LOG_UPLOAD_TIME" />).</translation> @@ -5891,7 +5891,7 @@ <translation id="6469557521904094793">Укључи мобилну мрежу</translation> <translation id="6470823736074966819">Искључите звук обавештења</translation> <translation id="6472893788822429178">Прикажи дугме Почетак</translation> -<translation id="6474498546677193336">Опозивање дељења није успело јер једна апликација користи овај директоријум. Дељење директоријума ће бити опозвано када се Linux следећи пут затвори.</translation> +<translation id="6474498546677193336">Опозивање дељења није успело јер једна апликација користи овај фолдер. Дељење фолдера ће бити опозвано када се Linux следећи пут затвори.</translation> <translation id="6474884162850599008">Прекини везу са налогом Google диска</translation> <translation id="6475294023568239942">У подешавањима ослободите простор на диску или промените величину диска за Linux</translation> <translation id="6476482583633999078">Брзина говора</translation> @@ -6130,7 +6130,7 @@ <translation id="6693745645188488741">{COUNT,plural, =1{1 страница}one{{COUNT} страница}few{{COUNT} странице}other{{COUNT} страница}}</translation> <translation id="6697172646384837537">Изаберите где желите да увезете лозинке</translation> <translation id="6697492270171225480">Приказуј предлоге за сличне странице када нека страница не може да се пронађе</translation> -<translation id="6697690052557311665">Да бисте делили, кликните десним тастером на директоријум у апликацији Files, па изаберите „Дели са Linux-ом“.</translation> +<translation id="6697690052557311665">Да бисте делили, кликните десним тастером на фолдер у апликацији Files, па изаберите „Дели са Linux-ом“.</translation> <translation id="6698810901424468597">Читање и мењање података на <ph name="WEBSITE_1" /> и <ph name="WEBSITE_2" /></translation> <translation id="6700093763382332031">Закључавање SIM-а за мобилну мрежу</translation> <translation id="6700480081846086223">Пребаци <ph name="HOST_NAME" /></translation> @@ -6982,7 +6982,7 @@ <translation id="7502220299952823578">Додај на листу Увек задржи ове сајтове активним</translation> <translation id="7503191893372251637">Тип Netscape сертификата</translation> <translation id="7503985202154027481">Посета овом сајту ће бити забележена на безбедносном кључу.</translation> -<translation id="750509436279396091">Отвори директоријум Преузимања</translation> +<translation id="750509436279396091">Отвори фолдер Преузимања</translation> <translation id="7505717542095249632">Сакриј корпу продавца <ph name="MERCHANT" /></translation> <translation id="7506093026325926984">Лозинка ће се чувати на овом уређају</translation> <translation id="7506130076368211615">Подесите нову мрежу</translation> @@ -7431,7 +7431,7 @@ <translation id="7909324225945368569">Промените име профила</translation> <translation id="7909969815743704077">Преузето је у режиму без архивирања</translation> <translation id="7909986151924474987">Можда нећете моћи да поново инсталирате овај профил</translation> -<translation id="7910768399700579500">&Нови директоријум</translation> +<translation id="7910768399700579500">&Нови фолдер</translation> <translation id="7911118814695487383">Linux</translation> <translation id="79113168483292735">Одељак Медијске картице у Претрази картица</translation> <translation id="7912080627461681647">Лозинка је промењена на серверу. Одјавите се, па се поново пријавите.</translation> @@ -8664,7 +8664,7 @@ <translation id="9037640663275993951">Уређај није дозвољен</translation> <translation id="9037818663270399707">Веза није приватна за сав мрежни саобраћај</translation> <translation id="9037965129289936994">Прикажи оригинал</translation> -<translation id="9038489124413477075">Неименовани директоријум</translation> +<translation id="9038489124413477075">Неименовани фолдер</translation> <translation id="9039014462651733343">{NUM_ATTEMPTS,plural, =1{Имате још један покушај.}one{Имате још # покушај.}few{Имате још # покушаја.}other{Имате још # покушаја.}}</translation> <translation id="9040473193163777637">Желите ли да активирате ChromeVox, уграђени читач екрана за Chrome ОС? Ако је тако, притисните и задржите оба тастера за јачину звука пет секунди.</translation> <translation id="9040661932550800571">Желите ли да ажурирате лозинку за <ph name="ORIGIN" />?</translation> @@ -8880,7 +8880,7 @@ <translation id="938623846785894166">Неуобичајен фајл</translation> <translation id="939401694733344652">Ови налози се тренутно не користе са Android апликацијама. Ако изаберете налог за коришћење са овом Android апликацијом, он може да се користи и са другим Android апликацијама. Можете да промените приступ Android апликацијама у одељку <ph name="LINK_BEGIN" />Подешавања > Налози<ph name="LINK_END" />.</translation> <translation id="939598580284253335">Унесите приступну фразу</translation> -<translation id="939736085109172342">Нови директоријум</translation> +<translation id="939736085109172342">Нови фолдер</translation> <translation id="942532530371314860"><ph name="APP_NAME" /> дели Chrome картицу и звук.</translation> <translation id="944799160843436808">Дошло је до проблема при подешавању Steam-а на Chromebook-у</translation> <translation id="945522503751344254">Пошаљи повратне информације</translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb index 98d0a6b..c1f6e6d 100644 --- a/chrome/app/resources/generated_resources_sw.xtb +++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -7742,6 +7742,7 @@ <translation id="8174047975335711832">Maelezo ya kifaa</translation> <translation id="8174876712881364124">Weka nakala kwenye Hifadhi ya Google. Rejesha data yako au ubadilishe kifaa kwa urahisi wakati wowote. Nakala unayohifadhi inajumuisha data ya programu. Nakala zinapakiwa kwenye Google na kusimbwa kwa kutumia nenosiri la Akaunti ya Google ya mtoto wako. <ph name="BEGIN_LINK1" />Pata Maelezo Zaidi<ph name="END_LINK1" /></translation> <translation id="8176332201990304395">Waridi na nyeupe</translation> +<translation id="8176529144855282213">Ili uruhusu ufikiaji wa maikrofoni, washa swichi ya maikrofoni kwenye kifaa chako</translation> <translation id="8177196903785554304">Maelezo ya Mtandao</translation> <translation id="8177318697334260664">{NUM_TABS,plural, =1{Hamishia kichupo kwenye dirisha jipya}other{Hamishia vichupo kwenye dirisha jipya}}</translation> <translation id="8179188928355984576">Haitumiki kwenye programu za Android</translation> @@ -8448,6 +8449,7 @@ <translation id="8838770651474809439">Hambaga</translation> <translation id="8838778928843281408">Dhibiti simu</translation> <translation id="883924185304953854">Tafuta kwa picha</translation> +<translation id="8839587819996519780">Onyesha kitone cha arifa kwenye aikoni ya programu</translation> <translation id="8841843049738266382">Kusoma na kubadilisha watumiaji walio katika orodha ya walioruhusiwa</translation> <translation id="8842594465773264717">Futa alama hii ya kidole</translation> <translation id="8845001906332463065">Pata usaidizi</translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb index 5d408f9f..86db05ca 100644 --- a/chrome/app/resources/generated_resources_te.xtb +++ b/chrome/app/resources/generated_resources_te.xtb
@@ -84,7 +84,7 @@ <translation id="107278043869924952">పాస్వర్డ్తో పాటు పిన్ను ఉపయోగించండి</translation> <translation id="1076176485976385390">టెక్స్ట్ కర్సర్తో పేజీలను నావిగేట్ చేయండి</translation> <translation id="1076382954055048850">ఇతర ప్రసార సెషన్లను చూపండి</translation> -<translation id="1076698951459398590">థీమ్ను ప్రారంభించు</translation> +<translation id="1076698951459398590">థీమ్ను ప్రారంభించండి</translation> <translation id="1076766328672150609">పరికరాన్ని అన్లాక్ చేయడానికి మీ చిన్నారి PINను ఉపయోగించవచ్చు.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216"><ph name="LANGUAGE" />కు స్పెల్ చెక్ నిఘంటువును డౌన్లోడ్ చేయడం సాధ్యపడలేదు. మళ్లీ ట్రై చేయండి.</translation> @@ -509,7 +509,7 @@ <translation id="1465827627707997754">పిజ్జా ముక్క</translation> <translation id="1467432559032391204">ఎడమ</translation> <translation id="1468571364034902819">ఈ ప్రొఫైల్ను ఉపయోగించలేరు</translation> -<translation id="1470084204649225129">{NUM_TABS,plural, =1{ట్యాబ్ను కొత్త గ్రూప్నకు జోడించు}other{ట్యాబ్లను కొత్త గ్రూప్నకు జోడించు}}</translation> +<translation id="1470084204649225129">{NUM_TABS,plural, =1{ట్యాబ్ను కొత్త గ్రూప్నకు జోడించండి}other{ట్యాబ్లను కొత్త గ్రూప్నకు జోడించండి}}</translation> <translation id="1470350905258700113">ఈ పరికరాన్ని ఉపయోగించండి</translation> <translation id="1470946456740188591">క్యారెట్ బ్రౌజింగ్ను ఆన్ లేదా ఆఫ్ చేయడానికి, షార్ట్కట్ Ctrl+Search+7ను ఉపయోగించండి</translation> <translation id="1472675084647422956">మరిన్ని చూపించు</translation> @@ -574,7 +574,7 @@ <translation id="1527336312600375509">మానిటర్ రిఫ్రెష్ రేటు</translation> <translation id="152913213824448541">సమీప షేరింగ్ కాంటాక్ట్లు</translation> <translation id="1529891865407786369">పవర్ సోర్స్</translation> -<translation id="1531275250079031713">'కొత్త Wi-Fiని జోడించు' డైలాగ్ను చూపు</translation> +<translation id="1531275250079031713">'కొత్త Wi-Fiని జోడించండి' డైలాగ్ను చూపు</translation> <translation id="1531734061664070992"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /></translation> <translation id="1533948060140843887">ఈ డౌన్లోడ్ నా కంప్యూటర్కు హాని కలిగిస్తుందని నేను అర్థం చేసుకున్నాను</translation> <translation id="1535228823998016251">బిగ్గరగా</translation> @@ -619,7 +619,7 @@ <translation id="1571304935088121812">వినియోగదారు పేరును కాపీ చేస్తుంది</translation> <translation id="1571738973904005196">ట్యాబ్ను చూడండి: <ph name="TAB_ORIGIN" /></translation> <translation id="1572139610531470719"><ph name="WINDOW_TITLE" /> (అతిథి)</translation> -<translation id="1572266655485775982">Wi-Fiని ప్రారంభించు</translation> +<translation id="1572266655485775982">Wi-Fiని ప్రారంభించండి</translation> <translation id="1572876035008611720">మీ ఈమెయిల్ను నమోదు చేయండి</translation> <translation id="1573117025466282241">QR కోడ్తో ఫోన్ను ఉపయోగించండి</translation> <translation id="1575741822946219011">భాషలు, ఇన్పుట్లు</translation> @@ -827,7 +827,7 @@ <translation id="1743970419083351269">డౌన్లోడ్ల బార్ను మూసివేయండి</translation> <translation id="1744060673522309905">పరికరాన్ని డొమైన్కు చేర్చడం సాధ్యపడలేదు. మీరు జోడించగల పరికరాల గరిష్ట సంఖ్యను మించిపోలేదని నిర్ధారించుకోండి.</translation> <translation id="1744108098763830590">నేపథ్య పేజీ</translation> -<translation id="1745732479023874451">కాంటాక్ట్లను మేనేజ్ చేయి</translation> +<translation id="1745732479023874451">కాంటాక్ట్లను మేనేజ్ చేయండి</translation> <translation id="1748283190377208783">{0,plural, =1{unused plural form}other{# ఫైల్స్ని ఈ వెబ్ యాప్లో తెరిచి, ఎడిట్ చేయాలా?}}</translation> <translation id="1748563609363301860">మీరు ఈ పాస్వర్డ్ను మీ Google ఖాతాలో లేదా ఈ పరికరంలో మాత్రమే సేవ్ చేయవచ్చు.</translation> <translation id="1749733017156547309">పాస్వర్డ్ను తప్పక అందించాలి</translation> @@ -841,7 +841,7 @@ <translation id="1755872274219796698">పాస్వర్డ్లను తరలించండి</translation> <translation id="1757132445735080748">Linuxను సెటప్ చేయడాన్ని పూర్తి చేయడానికి, ChromeOS Flexను అప్డేట్ చేసి, మళ్లీ ట్రై చేయండి.</translation> <translation id="1757301747492736405">పెండింగ్లో ఉన్నది అన్ఇన్స్టాల్ చేస్తుంది</translation> -<translation id="175772926354468439">థీమ్ను ప్రారంభించు</translation> +<translation id="175772926354468439">థీమ్ను ప్రారంభించండి</translation> <translation id="17584710573359123">Chrome వెబ్ స్టోర్లో చూడండి</translation> <translation id="1761845175367251960"><ph name="NAME" /> యొక్క ఖాతాలు</translation> <translation id="176272781006230109">షాపింగ్ సూచనలు</translation> @@ -859,7 +859,7 @@ <translation id="177053719077591686">Google Driveకు Android యాప్లను బ్యాకప్ చేయండి.</translation> <translation id="177336675152937177">హోస్ట్ చేసిన యాప్ డేటా</translation> <translation id="1775706469381199282">Javascriptను ఉపయోగించడానికి సైట్లను అనుమతించకండి</translation> -<translation id="1776712937009046120">వినియోగదారును జోడించు</translation> +<translation id="1776712937009046120">వినియోగదారును జోడించండి</translation> <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation> <translation id="1778457539567749232">చదవనిదిగా మార్క్ చేస్తుంది</translation> <translation id="1778991607452011493">డీబగ్ లాగ్లను పంపండి (సిఫార్సు చేయబడింది)</translation> @@ -903,7 +903,7 @@ మీరు కొనుగోలు చేసిన సినిమాలు, టీవీ షోలు, సంగీతం, పుస్తకాలు లేదా ఇతర యాప్లో కొనుగోళ్లు కూడా తొలగించబడవచ్చు. <ph name="LINE_BREAKS2" /> ఇది ఇతర పరికరాల్లో యాప్లు లేదా కంటెంట్ను ప్రభావితం చేయదు.</translation> -<translation id="1809734401532861917">నా బుక్మార్క్లు, హిస్టరీ, పాస్వర్డ్లు మరియు ఇతర సెట్టింగ్లను <ph name="USER_EMAIL_ADDRESS" />కి జోడించు</translation> +<translation id="1809734401532861917">నా బుక్మార్క్లు, హిస్టరీ, పాస్వర్డ్లు మరియు ఇతర సెట్టింగ్లను <ph name="USER_EMAIL_ADDRESS" />కి జోడించండి</translation> <translation id="1810366086647840386">ఇమేజ్ సర్వర్</translation> <translation id="1811908311154949291">అజ్ఞాత ఫెన్స్డ్ ఫ్రేమ్: <ph name="FENCEDFRAME_SITE" /></translation> <translation id="1813278315230285598">సేవలు</translation> @@ -962,7 +962,7 @@ <translation id="1852799913675865625">ఫైల్ను చదవడానికి ప్రయత్నించడంలో ఎర్రర్ ఏర్పడింది: <ph name="ERROR_TEXT" />.</translation> <translation id="1854049213067042715">మీరు ఆపిన చోటు నుండే కొనసాగించండి. మీరు సెట్టింగ్లలో, యాప్లు ఆటోమేటిక్గా రీస్టోర్ అవ్వడానికి వాటిని సెట్ చేయవచ్చు లేదా 'రీస్టోర్ చేయండి'ని ఆఫ్ చేయవచ్చు.</translation> <translation id="1854180393107901205">ప్రసారాన్ని ఆపివేయి</translation> -<translation id="1856715684130786728">స్థానాన్ని జోడించు...</translation> +<translation id="1856715684130786728">స్థానాన్ని జోడించండి...</translation> <translation id="1858585891038687145">సాఫ్ట్వేర్ రూపకర్తలను గుర్తించడం కోసం ఈ ప్రమాణపత్రాన్ని విశ్వసిస్తుంది</translation> <translation id="1861262398884155592">ఈ ఫోల్డర్ ఖాళీగా ఉంది</translation> <translation id="1862311223300693744">మీరు ఏదైనా ప్రత్యేక VPN, ప్రాక్సీ, ఫైర్వాల్ లేదా NAS సాఫ్ట్వేర్ను @@ -1265,7 +1265,7 @@ <translation id="2131077480075264">"<ph name="APP_NAME" />"ను అనుమతించనందున దీన్ని ఇన్స్టాల్ చేయడం సాధ్యపడలేదు "<ph name="IMPORT_NAME" />"</translation> <translation id="21354425047973905">పిన్లను దాస్తుంది</translation> <translation id="2135456203358955318">డాక్ చేయబడిన మాగ్నిఫైయర్</translation> -<translation id="2135787500304447609">&మళ్ళీ ప్రారంభించు</translation> +<translation id="2135787500304447609">&మళ్ళీ ప్రారంభించండి</translation> <translation id="2136372518715274136">కొత్త పాస్వర్డ్ను నమోదు చేయండి</translation> <translation id="2136476978468204130">మీరు నమోదు చేసిన రహస్య పదబంధం తప్పు</translation> <translation id="2137128126782078222"><ph name="WEBSITE" /> నుండి నోటిఫికేషన్లను అనుమతించవద్దు</translation> @@ -1499,7 +1499,7 @@ <translation id="2325444234681128157">పాస్వర్డ్ను గుర్తుంచుకో</translation> <translation id="2326188115274135041">'ఆటోమేటిక్గా అన్లాక్ చేయడం'ను ఆన్ చేసేందుకు పిన్ను నిర్ధారించండి</translation> <translation id="2326931316514688470">యాప్ను &మళ్లీ లోడ్ చేయి</translation> -<translation id="2327492829706409234">యాప్ను ప్రారంభించు</translation> +<translation id="2327492829706409234">యాప్ను ప్రారంభించండి</translation> <translation id="2327920026543055248"><ph name="TOTAL" />లో <ph name="CHARACTER" />వ అక్షరాన్ని ఎంటర్ చేయండి</translation> <translation id="2328561734797404498"><ph name="APP_NAME" />ను ఉపయోగించడానికి దయచేసి మీ పరికరాన్ని రీస్టార్ట్ చేయండి.</translation> <translation id="2328636661627946415">మీరు అజ్ఞాత మోడ్లో ఉన్నప్పుడు, సైట్లు తమ సొంత సైట్లో మీ బ్రౌజింగ్ యాక్టివిటీని చూడటానికి కుక్కీలను మాత్రమే ఉపయోగించగలవు. అజ్ఞాత సెషన్ చివరిలో కుక్కీలు తొలగించబడతాయి.</translation> @@ -1591,7 +1591,7 @@ <translation id="2406153734066939945">ఈ ప్రొఫైల్ను, దానిలోని డేటాను తొలగించాలా?</translation> <translation id="2408018932941436077">కార్డ్ సేవ్ అవుతోంది</translation> <translation id="2408955596600435184">మీ PINని నమోదు చేయండి</translation> -<translation id="2409268599591722235">ప్రారంభించు</translation> +<translation id="2409268599591722235">ప్రారంభించండి</translation> <translation id="2410079346590497630">బిల్డ్ వివరాలు</translation> <translation id="2410298923485357543">పరికరం ఆన్లైన్లో ఉన్నప్పుడు సహజ వాయిస్ను ఉపయోగించండి</translation> <translation id="2410754283952462441">ఖాతాను ఎంచుకోండి</translation> @@ -1678,11 +1678,11 @@ <translation id="2485394160472549611">మీ కోసం ఉత్తమంగా ఎంపిక చేసినవి</translation> <translation id="2485422356828889247">అన్ఇన్స్టాల్ చేయి</translation> <translation id="2485681265915754872">Google Play సర్వీస్ నియమాలు</translation> -<translation id="2487067538648443797">కొత్త బుక్మార్క్ను జోడించు</translation> +<translation id="2487067538648443797">కొత్త బుక్మార్క్ను జోడించండి</translation> <translation id="2487268545026948104">మీ డేటాను పునరుద్ధరించడానికి, ఇంటర్నెట్కు కనెక్ట్ అవండి</translation> <translation id="2489686758589235262">మరో 2 స్విచ్లను అసైన్ చేయండి</translation> <translation id="2489829450872380594">తర్వాతసారి, ఈ <ph name="DEVICE_TYPE" />ను కొత్త ఫోన్ అన్లాక్ చేస్తుంది. మీరు సెట్టింగ్లలో స్మార్ట్ లాక్ను ఆఫ్ చేయవచ్చు.</translation> -<translation id="2489918096470125693">&ఫోల్డర్ను జోడించు...</translation> +<translation id="2489918096470125693">&ఫోల్డర్ను జోడించండి...</translation> <translation id="2489931062851778802"><ph name="DEVICE_NAME" />లో ఈ కీలను ఎంటర్ చేయండి</translation> <translation id="2490481887078769936">లిస్ట్ నుండి '<ph name="FILE_NAME" />' తీసివేయబడింది</translation> <translation id="249113932447298600">క్షమించండి, ఈ సమయంలో <ph name="DEVICE_LABEL" /> పరికరానికి మద్దతు లేదు.</translation> @@ -1740,7 +1740,7 @@ <translation id="2537927931785713436">వర్చువల్ మెషిన్ ఇమేజ్ను చెక్ చేస్తోంది</translation> <translation id="2538084450874617176"><ph name="DEVICE_TYPE" />ను ఎవరు ఉపయోగిస్తున్నారు?</translation> <translation id="2538361623464451692">సింక్ నిలిపివేయబడింది</translation> -<translation id="2540449034743108469">ఎక్స్టెన్షన్ యాక్టివిటీలను వినడానికి "ప్రారంభించు" నొక్కండి</translation> +<translation id="2540449034743108469">ఎక్స్టెన్షన్ యాక్టివిటీలను వినడానికి "ప్రారంభించండి" నొక్కండి</translation> <translation id="2540651571961486573">ఏదో తప్పు జరిగింది. ఎర్రర్ కోడ్: <ph name="ERROR_CODE" />.</translation> <translation id="2541002089857695151">పూర్తిస్క్రీన్ ప్రసారాన్ని ఆప్టిమైజ్ చేయాలా?</translation> <translation id="2541423446708352368">అన్ని డౌన్లోడ్లను చూపించు</translation> @@ -1752,7 +1752,7 @@ <translation id="2546991196809436099">స్క్రీన్పై ఉన్న ఐటెమ్లను పెద్దగా చూపడానికి జూమ్ - ఇన్ చేయండి. సెర్చ్ + Ctrl + Mను ఉపయోగించి మాగ్నిఫైయర్ను అన్, ఆఫ్ చేయండి.</translation> <translation id="2548347166720081527"><ph name="PERMISSION" />ను అనుమతించారు</translation> <translation id="2548545707296594436">eSIM ప్రొఫైల్ కాష్ను రీసెట్ చేయండి</translation> -<translation id="2549985041256363841">రికార్డింగ్ను ప్రారంభించు</translation> +<translation id="2549985041256363841">రికార్డింగ్ను ప్రారంభించండి</translation> <translation id="2550212893339833758">వినిమయం చేసిన మెమరీ</translation> <translation id="2550596535588364872"><ph name="EXTENSION_NAME" />ని <ph name="FILE_NAME" /> తెరవడానికి అనుమతించాలా?</translation> <translation id="2552230905527343195">ప్రస్తుత ట్యాబ్ను జోడించడం సాధ్యం కాదు</translation> @@ -1859,7 +1859,7 @@ <translation id="2661714428027871023">లైట్ మోడ్లో మరింత వేగంగా బ్రౌజ్ చేయండి, అలాగే డేటాను తక్కువగా ఉపయోగించండి. మరింత తెలుసుకోవడానికి క్లిక్ చేయండి.</translation> <translation id="2662876636500006917">Chrome వెబ్ స్టోర్</translation> <translation id="2663302507110284145">భాష</translation> -<translation id="2665394472441560184">కొత్త పదాన్ని జోడించు</translation> +<translation id="2665394472441560184">కొత్త పదాన్ని జోడించండి</translation> <translation id="2665647207431876759">గడువు ముగిసింది</translation> <translation id="2665717534925640469">ఇప్పుడు ఈ పేజీ ఫుల్-స్క్రీన్ మరియు మీ మౌస్ కర్సర్ను నిలిపివేసింది.</translation> <translation id="2665919335226618153">అయ్యో! ఫార్మాటింగ్ సమయంలో ఎర్రర్ ఏర్పడింది.</translation> @@ -1875,13 +1875,13 @@ <translation id="2672142220933875349">చెల్లని crx ఫైల్, అన్ప్యాక్ చేయడం విఫలమైంది.</translation> <translation id="2673135533890720193">మీ బ్రౌజింగ్ హిస్టరీని చదవడానికి అనుమతి</translation> <translation id="2674764818721168631">ఆఫ్ చేయబడి ఉంది</translation> -<translation id="2678063897982469759">మళ్లీ-ప్రారంభించు</translation> +<translation id="2678063897982469759">మళ్లీ-ప్రారంభించండి</translation> <translation id="2678100101831051676">ప్రసారం చేయడం సాధ్యపడలేదు.</translation> <translation id="268053382412112343">&చరిత్ర</translation> <translation id="2681124317993121768">గెస్ట్ ప్రొఫైళ్లు సపోర్ట్ చేయవు</translation> <translation id="2682498795777673382">మీ తల్లి/తండ్రి నుండి అప్డేట్</translation> <translation id="2683638487103917598">ఫోల్డర్ క్రమబద్ధీకరించబడింది</translation> -<translation id="2684004000387153598">కొనసాగించడానికి, సరే క్లిక్ చేసి, ఆపై మీ ఈమెయిల్ అడ్రస్ కోసం కొత్త ప్రొఫైల్ను రూపొందించడానికి వ్యక్తిని జోడించు క్లిక్ చేయండి.</translation> +<translation id="2684004000387153598">కొనసాగించడానికి, సరే క్లిక్ చేసి, ఆపై మీ ఈమెయిల్ అడ్రస్ కోసం కొత్త ప్రొఫైల్ను రూపొందించడానికి వ్యక్తిని జోడించండి క్లిక్ చేయండి.</translation> <translation id="2687403674020088961">అన్ని కుక్కీలను బ్లాక్ చేయండి (సిఫార్సు చేయడం లేదు)</translation> <translation id="2687407218262674387">Google సేవా నిబంధనలు</translation> <translation id="2687621393791886981">నన్ను తర్వాత అడగు</translation> @@ -2021,7 +2021,7 @@ <translation id="2795716239552913152">స్థానిక వార్తలు లేదా సమీపంలోని షాప్లు వంటి సందర్భోచిత ఫీచర్ల కోసం సాధారణంగా సైట్లు లొకేషన్ను ఉపయోగించుకుంటాయి</translation> <translation id="2796740370559399562">కుక్కీల అనుమతి కొనసాగించు</translation> <translation id="2798347533012571708">అప్డేట్లను ఉంచుకోండి</translation> -<translation id="2799223571221894425">మళ్లీ ప్రారంభించు</translation> +<translation id="2799223571221894425">మళ్లీ ప్రారంభించండి</translation> <translation id="2800309299477632167">అనుకూల కీమ్యాప్</translation> <translation id="2800760947029405028">చిత్రాన్ని అప్లోడ్ చేయండి</translation> <translation id="2801954693771979815">స్క్రీన్ సైజ్</translation> @@ -2084,7 +2084,7 @@ <translation id="284975061945174219">క్లీన్అప్ విఫలమైంది</translation> <translation id="2849767214114481738">మీ PINను జోడించడం జరిగింది</translation> <translation id="2849936225196189499">క్లిష్టమైన</translation> -<translation id="2850541429955027218">థీమ్ను జోడించు</translation> +<translation id="2850541429955027218">థీమ్ను జోడించండి</translation> <translation id="2850672011315104382">విరామచిహ్న స్టయిల్</translation> <translation id="2851634818064021665">ఈ సైట్ను సందర్శించడానికి మీకు అనుమతి అవసరం</translation> <translation id="2851728849045278002">ఏదో తప్పు జరిగింది. మరిన్ని వివరాల కోసం క్లిక్ చేయండి.</translation> @@ -2103,7 +2103,7 @@ <translation id="2870909136778269686">అప్డేట్ చేస్తోంది...</translation> <translation id="2871813825302180988">ఈ ఖాతా ఈ పరికరంలో ఇప్పటికే ఉపయోగించబడుతోంది.</translation> <translation id="287205682142673348">పోర్ట్ ఫార్వర్డింగ్</translation> -<translation id="287286579981869940"><ph name="PROVIDER_NAME" />ని జోడించు...</translation> +<translation id="287286579981869940"><ph name="PROVIDER_NAME" />ని జోడించండి...</translation> <translation id="2872961005593481000">షట్ డౌన్ చేయండి</translation> <translation id="2873995907777332853">అన్ని కుక్కీలను బ్లాక్ చేయడం గురించి వివరాలను చూపు</translation> <translation id="2874939134665556319">మునుపటి ట్రాక్</translation> @@ -2176,7 +2176,7 @@ <translation id="2932883381142163287">దుర్వినియోగాన్ని రిపోర్ట్ చేయి</translation> <translation id="2933632078076743449">చివరి అప్డేట్</translation> <translation id="2934999512438267372">MIDI డివైజ్ల పూర్తి కంట్రోల్ అనుమతించబడింది</translation> -<translation id="2935225303485967257">ప్రొఫైళ్లను మేనేజ్ చేయి</translation> +<translation id="2935225303485967257">ప్రొఫైళ్లను మేనేజ్ చేయండి</translation> <translation id="2935314715123552088">యాక్టివ్గా ఉన్న eSIM ప్రొఫైల్స్ను డిజేబుల్ చేయండి</translation> <translation id="2935654492420446828">పాఠశాల ఖాతాను తర్వాత జోడించండి</translation> <translation id="2936851848721175671">బ్యాకప్ & పునరుద్ధరణ</translation> @@ -2190,7 +2190,7 @@ <translation id="2944060181911631861">వినియోగం & విశ్లేషణల డేటాను పంపండి. సమస్య విశ్లేషణ, పరికరం, యాప్ వినియోగ డేటాను Googleకు ఆటోమేటిక్గా పంపడం ద్వారా మీ Android అనుభవాన్ని మెరుగుపరచడంలో సహాయపడండి. ఇది సిస్టమ్, యాప్ స్థిరత్వానికి, అలాగే ఇతర మెరుగుదలలకు సహాయపడుతుంది. కొంత సముదాయ డేటా కూడా Google యాప్లకు, అలాగే Android డెవలపర్ల లాంటి భాగస్వాములకు సహాయపడుతుంది. మీ అదనపు వెబ్ & యాప్ యాక్టివిటీ సెట్టింగ్ను ఆన్ చేసినట్లయితే, ఈ డేటా మీ Google ఖాతాలో సేవ్ చేయబడవచ్చు. <ph name="BEGIN_LINK1" />మరింత తెలుసుకోండి<ph name="END_LINK1" /></translation> <translation id="2946054015403765210">ఫైల్స్కు వెళ్లండి</translation> <translation id="2946119680249604491">కనెక్షన్ని జోడించండి</translation> -<translation id="2946640296642327832">Bluetoothని ప్రారంభించు</translation> +<translation id="2946640296642327832">Bluetoothని ప్రారంభించండి</translation> <translation id="2947605845283690091">వెబ్ బ్రౌజింగ్ వేగంగా ఉండాలి. ఇప్పుడే <ph name="BEGIN_LINK" />మీ ఎక్స్టెన్షన్లను చెక్ చేయడానికి<ph name="END_LINK" /> సమయం తీసుకోండి.</translation> <translation id="2948300991547862301"><ph name="PAGE_TITLE" />కు వెళ్లండి</translation> <translation id="29488703364906173">ఆధునిక వెబ్ కోసం రూపొందించబడిన వేగవంతమైన, సరళమైన మరియు సురక్షితమైన వెబ్ బ్రౌజర్.</translation> @@ -2230,7 +2230,7 @@ <translation id="2989474696604907455">జోడించబడలేదు</translation> <translation id="2989786307324390836">DER-ఎన్కోడ్ చేసిన బైనరీ, ఒక సర్టిఫికెట్</translation> <translation id="2989805286512600854">కొత్త ట్యాబ్లో తెరువు</translation> -<translation id="2990313168615879645">Google ఖాతాను జోడించు</translation> +<translation id="2990313168615879645">Google ఖాతాను జోడించండి</translation> <translation id="2990583317361835189">మోషన్ సెన్సార్లను ఉపయోగించడానికి సైట్లను అనుమతించకండి</translation> <translation id="2992931425024192067">మొత్తం నోటిఫికేషన్ కంటెంట్ను చూపించండి</translation> <translation id="2993517869960930405">యాప్ సమాచారం</translation> @@ -2290,7 +2290,7 @@ <translation id="3032204772252313646">ఆటో క్యాప్షన్లు</translation> <translation id="3033348223765101500">మీ డేటాను కంట్రోల్ చేయండి</translation> <translation id="3036327949511794916">ఈ <ph name="DEVICE_TYPE" />ని తిరిగిచ్చే గడువు తేదీ గడువు దాటింది.</translation> -<translation id="3036546437875325427">ఫ్లాష్ను ప్రారంభించు</translation> +<translation id="3036546437875325427">ఫ్లాష్ను ప్రారంభించండి</translation> <translation id="3037754279345160234">డొమైన్లో చేరడానికి కాన్ఫిగరేషన్ను అన్వయించడం సాధ్యపడలేదు. దయచేసి మీ నిర్వాహకుడిని సంప్రదించండి.</translation> <translation id="3038612606416062604">ఒక ప్రింటర్ను మాన్యువల్గా జోడించండి</translation> <translation id="3039491566278747710">పరికరంలో ఆఫ్లైన్ విధానాన్ని ఇన్స్టాల్ చేయడంలో విఫలమైంది.</translation> @@ -2305,7 +2305,7 @@ <translation id="3048917188684939573">ప్రసార, పరికర లాగ్లు</translation> <translation id="3051250416341590778">డిస్ప్లే సైజ్</translation> <translation id="3053013834507634016">సర్టిఫికెట్ కీ ఉపయోగం</translation> -<translation id="3053273573829329829">వినియోగదారు పిన్ను ప్రారంభించు</translation> +<translation id="3053273573829329829">వినియోగదారు పిన్ను ప్రారంభించండి</translation> <translation id="3054766768827382232">డిజేబుల్ చేయడం వలన మీ పెరిఫెరల్లు మెరుగ్గా పని చేస్తాయి, కాని అనధికార వినియోగం ద్వారా మీ వ్యక్తిగత డేటాను బబహిర్గతం కావచ్చు.</translation> <translation id="3055113921564083271">మీరు తీసివేసిన ఆసక్తులు</translation> <translation id="3055590424724986000">మీరు ఎంచుకునే ప్రొవైడర్తో</translation> @@ -2402,7 +2402,7 @@ <translation id="3151562827395986343">హిస్టరీ, కుక్కీలు, కాష్ మొదలైన వాటిని తీసివేస్తుంది</translation> <translation id="3151786313568798007">దృగ్విన్యాసం</translation> <translation id="3152356229013609796">మీ ఫోన్ నోటిఫికేషన్లను చూడడం, విస్మరించడం, వాటికి రిప్లయి ఇవ్వడం చేయగలదు</translation> -<translation id="3157387275655328056">పఠన లిస్ట్కు జోడించు</translation> +<translation id="3157387275655328056">పఠన లిస్ట్కు జోడించండి</translation> <translation id="3157931365184549694">పునరుద్ధరించు</translation> <translation id="3158033540161634471">మీ వేలిముద్రను సెటప్ చేయండి</translation> <translation id="3158770568048368350">ఇది మీ మొబైల్ నెట్వర్క్ కొంతసేపు డిస్కనెక్ట్ కావడానికి కారణం కావచ్చు</translation> @@ -2844,7 +2844,7 @@ <translation id="3587482841069643663">మొత్తం</translation> <translation id="3588790464166520201">పేమెంట్ హ్యాండ్లర్లను ఇన్స్టాల్ చేయడానికి అనుమతించబడింది</translation> <translation id="3589766037099229847">అసురక్షిత కంటెంట్ బ్లాక్ చేయబడింది</translation> -<translation id="3590194807845837023">ప్రొఫైల్ను అన్లాక్ చేసి, మళ్లీ ప్రారంభించు</translation> +<translation id="3590194807845837023">ప్రొఫైల్ను అన్లాక్ చేసి, మళ్లీ ప్రారంభించండి</translation> <translation id="3590295622232282437">నిర్వహిత సెషన్లోకి ప్రవేశిస్తోంది.</translation> <translation id="3592260987370335752">&మరింత తెలుసుకోండి</translation> <translation id="3593152357631900254">Fuzzy-Pinyin మోడ్ను అనుమతించండి</translation> @@ -2967,7 +2967,7 @@ <translation id="3704331259350077894">ఆపరేషన్ రద్దు</translation> <translation id="3705722231355495246">-</translation> <translation id="3706463572498736864">ఒక షీట్కు పేజీల సంఖ్య</translation> -<translation id="370649949373421643">Wi-fiని ప్రారంభించు</translation> +<translation id="370649949373421643">Wi-fiని ప్రారంభించండి</translation> <translation id="370665806235115550">లోడ్ అవుతోంది...</translation> <translation id="3707163604290651814">ప్రస్తుతం <ph name="NAME" />గా సైన్ ఇన్ చేయబడి ఉన్నారు</translation> <translation id="3708295717182051206">క్యాప్షన్లు</translation> @@ -3091,7 +3091,7 @@ <translation id="3810593934879994994">కింది ఫోల్డర్లలోని ఫైళ్లను <ph name="ORIGIN" /> చూడగలదు</translation> <translation id="3810914450553844415">మీ అడ్మినిస్ట్రేటర్ అదనపు Google ఖాతాలను అనుమతించరు.</translation> <translation id="3810973564298564668">మేనేజ్ చేయండి</translation> -<translation id="381202950560906753">మరొక దానిని జోడించు</translation> +<translation id="381202950560906753">మరొక దానిని జోడించండి</translation> <translation id="3812525830114410218">ప్రమాణపత్రం చెల్లదు</translation> <translation id="3813296892522778813">మీరు వెతుకుతున్నది మీకు కనిపించకపోతే <ph name="BEGIN_LINK_CHROMIUM" />Google Chrome సహాయం<ph name="END_LINK_CHROMIUM" />కు వెళ్లండి</translation> <translation id="3813358687923336574">పేజీలను అనువాదం చేయడానికి, త్వరిత సమాధానాల కోసం ఉపయోగించిన భాష</translation> @@ -3200,7 +3200,7 @@ <translation id="3903187154317825986">బిల్ట్-ఇన్ కీబోర్డ్</translation> <translation id="3904326018476041253">లొకేషన్ సర్వీస్లు</translation> <translation id="3905761538810670789">యాప్ను సరి చేయి</translation> -<translation id="3908501907586732282">ఎక్స్టెన్షన్ను ప్రారంభించు</translation> +<translation id="3908501907586732282">ఎక్స్టెన్షన్ను ప్రారంభించండి</translation> <translation id="3909701002594999354">అన్ని కంట్రోల్లను చూడండి</translation> <translation id="3909791450649380159">క&త్తిరించు</translation> <translation id="39103738135459590">యాక్టివేషన్ కోడ్</translation> @@ -3239,7 +3239,7 @@ <translation id="3937640725563832867">సర్టిఫికెట్ జారీ చేసినవారి ప్రత్యామ్నాయ పేరు</translation> <translation id="3937734102568271121">ఎల్లప్పుడూ <ph name="LANGUAGE" /> భాషలోది అనువదించు</translation> <translation id="3938128855950761626"><ph name="VENDOR_ID" /> విక్రేత నుండి అందించే పరికరాలు</translation> -<translation id="3940233957883229251">ఆటోమేటిక్గా రిపీట్ చేయడాన్ని ప్రారంభించు</translation> +<translation id="3940233957883229251">ఆటోమేటిక్గా రిపీట్ చేయడాన్ని ప్రారంభించండి</translation> <translation id="3941565636838060942">ఈ ప్రోగ్రామ్కు యాక్సెస్ను దాచడానికి, మీరు దీన్ని నియంత్రణ ప్యానెల్లోని <ph name="CONTROL_PANEL_APPLET_NAME" />ను ఉపయోగించి అన్ఇన్స్టాల్ చేయాలి. @@ -3287,7 +3287,7 @@ <translation id="3977145907578671392">అజ్ఞాత మోడ్లో కొన్ని సైట్లలోని ఫీచర్లు పని చేయవు</translation> <translation id="3977886311744775419">ఈ రకమైన నెట్వర్క్లో ఆటోమేటిక్ అప్డేట్లు డౌన్లోడ్ చేయబడవు, కానీ మీరు మాన్యువల్గా అప్డేట్లను చెక్ చేయవచ్చు.</translation> <translation id="3979395879372752341">కొత్త ఎక్స్టెన్షన్ జోడించబడింది (<ph name="EXTENSION_NAME" />)</translation> -<translation id="3979748722126423326"><ph name="NETWORKDEVICE" />ను ప్రారంభించు</translation> +<translation id="3979748722126423326"><ph name="NETWORKDEVICE" />ను ప్రారంభించండి</translation> <translation id="3981058120448670012">సమీపంలోని పరికరాలకు <ph name="REMAINING_TIME" /> పాటు <ph name="DEVICE_NAME" />గా కనిపిస్తుంది...</translation> <translation id="3981760180856053153">చెల్లని సేవ్ రకం ఎంటర్ చేయబడింది.</translation> <translation id="3981902534690264083">యాడ్ల పనితీరును అడ్వర్టయిజర్లు అర్థం చేసుకోగలరు</translation> @@ -3337,7 +3337,7 @@ <translation id="4031179711345676612">మైక్రోఫోన్ అనుమతించబడింది</translation> <translation id="4031527940632463547">సెన్సార్లు బ్లాక్ చేయబడ్డాయి</translation> <translation id="4033415645631238123">Smart Lockతో సైన్ ఇన్ చేసే ఆప్షన్ ఇకపై అందుబాటులో ఉండదు. మీరు ఇప్పటికీ Smart Lockతో అన్లాక్ చేయవచ్చు.</translation> -<translation id="4033471457476425443">కొత్త ఫోల్డర్ను జోడించు</translation> +<translation id="4033471457476425443">కొత్త ఫోల్డర్ను జోడించండి</translation> <translation id="4033711848170683365">ఇది బ్రౌజింగ్ డేటాను ఈ పరికరం నుండి శాశ్వతంగా తొలగిస్తుంది. ఈ ప్రొఫైల్లోని Google ఖాతాలను, మీ <ph name="DEVICE_TYPE" />లోని ఇతర యాప్లు ఉపయోగించవచ్చు. మీరు ఈ ఖాతాలను <ph name="BEGIN_LINK" /><ph name="SETTING_SECTION" /> > <ph name="ACCOUNTS_SECTION" /><ph name="END_LINK" />లో తీసివేయవచ్చు.</translation> <translation id="4033963223187371752">సురక్షిత సైట్లు సురక్షితం కాని ఇమేజ్లు లేదా వెబ్ ఫ్రేమ్ల వంటి కంటెంట్ను పొందుపరచవచ్చు</translation> <translation id="4034741552964543387">లోకల్ డేటా లేకుండా కొనసాగించండి</translation> @@ -3496,7 +3496,7 @@ <translation id="4190828427319282529">కీబోర్డ్ ఫోకస్ను హైలైట్ చేయండి</translation> <translation id="4193836101014293726">ఈ ప్రొఫైల్ను తొలగించడం సాధ్యపడదు</translation> <translation id="419427585139779713">ఒకసారికి ఒక అక్షరాన్ని ఇన్పుట్ చేస్తుంది</translation> -<translation id="4194570336751258953">క్లిక్ చేయడానికి టాప్ చేయి ప్రారంభించు</translation> +<translation id="4194570336751258953">క్లిక్ చేయడానికి టాప్ చేయి ప్రారంభించండి</translation> <translation id="4195378859392041564">మీ మౌస్తో ఏదైనా కీపై క్లిక్ చేసి, ఆపై అనుకూలంగా మార్చడానికి కీబోర్డ్ కీని నొక్కండి</translation> <translation id="4195421689821407315">సురక్షితం కాని డౌన్లోడ్</translation> <translation id="4195643157523330669">కొత్త ట్యాబ్లో తెరువు</translation> @@ -3689,7 +3689,7 @@ <translation id="4379281552162875326">"<ph name="APP_NAME" />"ను అన్ఇన్స్టాల్ చేయాలా?</translation> <translation id="4380648069038809855">పూర్తి స్క్రీన్లోకి ప్రవేశించారు</translation> <translation id="4383048856908088702">ఈ ట్యాబ్ ఇన్యాక్టివ్గా ఉన్నప్పుడు, ఇతర టాస్క్ల కోసం మెమరీ సేవర్ <ph name="MEMORY_VALUE" /> మెమరీని ఖాళీ చేసింది. మీరు దీన్ని ఎప్పుడైనా <ph name="SETTINGS_LINK" />లో మార్చవచ్చు.</translation> -<translation id="4384312707950789900">ప్రాధాన్య నెట్వర్క్లకు జోడించు</translation> +<translation id="4384312707950789900">ప్రాధాన్య నెట్వర్క్లకు జోడించండి</translation> <translation id="4384652540891215547">ఎక్స్టెన్షన్ను యాక్టివేట్ చేయండి</translation> <translation id="4384886290276344300">కీబోర్డ్ సెట్టింగ్లను మార్చండి</translation> <translation id="438503109373656455">సారటోగా</translation> @@ -3886,7 +3886,7 @@ <translation id="4558426062282641716">స్వీయ-ప్రారంభ అనుమతి రిక్వెస్ట్ చేయబడింది</translation> <translation id="4559617833001311418">ఈ సైట్ మీ మోషన్ లేదా లైట్ సెన్సార్లను యాక్సెస్ చేస్తోంది.</translation> <translation id="4561893854334016293">ఇటీవల మార్చిన అనుమతులు లేవు</translation> -<translation id="4562155214028662640">వేలిముద్రను జోడించు</translation> +<translation id="4562155214028662640">వేలిముద్రను జోడించండి</translation> <translation id="4563210852471260509">ప్రారంభ ఇన్పుట్ భాష చైనీస్</translation> <translation id="4563382028841851106">ఖాతా నుండి తీసివేయండి</translation> <translation id="4563880231729913339">మూడో వేలు</translation> @@ -3898,7 +3898,7 @@ <translation id="456717285308019641">పేజీని అనువదించాల్సిన భాష</translation> <translation id="4567512141633030272">సైన్ ఇన్ ఆప్షన్ తప్పుగా ఉందా?</translation> <translation id="4567533462991917415">సెట్ అప్ చేసిన తర్వాత మీరు ఎప్పుడైనా మరింత మందిని జోడించవచ్చు. ప్రతి వ్యక్తి వారి ఖాతాను వ్యక్తిగతీకరించుకోవచ్చు అలాగే వారి డేటాను ప్రైవేట్గా ఉంచుకోవచ్చు.</translation> -<translation id="4567772783389002344">పదాన్ని జోడించు</translation> +<translation id="4567772783389002344">పదాన్ని జోడించండి</translation> <translation id="4568025708905928793">సెక్యూరిటీ కీ అభ్యర్థించబడుతోంది</translation> <translation id="4568213207643490790">క్షమించండి, ఈ పరికరంలో Google ఖాతాలకు అనుమతి లేదు.</translation> <translation id="4569747168316751899">నిష్క్రియంగా ఉన్నప్పుడు</translation> @@ -3957,7 +3957,7 @@ <translation id="4622051949285931942">ఆటోమేటిక్ అప్డేట్లను ఆఫ్ చేయాలా?</translation> <translation id="4623167406982293031">ఖాతాను వెరిఫై చేయండి</translation> <translation id="4623189117674524348">ఈ పరికరం కోసం API యాక్సెస్ అధికారం మంజూరు చేయడంలో సిస్టమ్ విఫలమైంది.</translation> -<translation id="4625078469366263107">యాప్ను ప్రారంభించు</translation> +<translation id="4625078469366263107">యాప్ను ప్రారంభించండి</translation> <translation id="4627427111733173920">కుక్కీలు బ్లాక్ చేయబడ్డాయి</translation> <translation id="4627442949885028695">మరో పరికరం నుండి కొనసాగించండి</translation> <translation id="4628762811416793313">Linux కంటెయినర్ సెటప్ పూర్తి కాలేదు. దయచేసి మళ్లీ ప్రయత్నించండి.</translation> @@ -4133,7 +4133,7 @@ <translation id="479536056609751218">వెబ్పేజీ, HTML మాత్రమే</translation> <translation id="4796142525425001238">ఎల్లప్పుడూ రీస్టోర్ చేయండి</translation> <translation id="4797314204379834752">ఆన్లైన్ షాపింగ్, మరిన్నింటి కోసం టాస్క్లను క్రమబద్ధీకరించడానికి ట్యాబ్ గ్రూప్లను ఉపయోగించడానికి ట్రై చేయండి</translation> -<translation id="4798236378408895261"><ph name="BEGIN_LINK" />బ్లూటూత్ లాగ్లు<ph name="END_LINK" />ని జోడించు (Google అంతర్గతం)</translation> +<translation id="4798236378408895261"><ph name="BEGIN_LINK" />బ్లూటూత్ లాగ్లు<ph name="END_LINK" />ని జోడించండి (Google అంతర్గతం)</translation> <translation id="479863874072008121">పరికరాలను మేనేజ్ చేయండి</translation> <translation id="4800839971935185386">పేరు & చిహ్నం అప్డేట్లను రివ్యూ చేయండి</translation> <translation id="4801448226354548035">ఖాతాలను దాచు</translation> @@ -4378,7 +4378,7 @@ <translation id="5026806129670917316">Wi‑Fiని ఆన్ చేయండి</translation> <translation id="5026874946691314267">దీన్ని మళ్లీ చూపవద్దు</translation> <translation id="5027550639139316293">ఈమెయిల్ సర్టిఫికెట్</translation> -<translation id="5027562294707732951">ఎక్స్టెన్షన్ని జోడించు</translation> +<translation id="5027562294707732951">ఎక్స్టెన్షన్ని జోడించండి</translation> <translation id="5029568752722684782">కాపీని తీసివేయండి</translation> <translation id="5029873138381728058">వర్చువల్ మెషీన్లను చెక్ చేయడం విఫలమైంది</translation> <translation id="503155457707535043">యాప్లు డౌన్లోడ్ చేయబడుతున్నాయి</translation> @@ -4438,7 +4438,7 @@ <translation id="508645147179720015">గమనికలో 1000 కంటే ఎక్కువ అక్షరాలు ఉన్నాయి</translation> <translation id="5086874064903147617">డిఫాల్ట్ హోమ్ పేజీని పునరుద్ధరించాలా?</translation> <translation id="5087249366037322692">మూడవ పక్షం ద్వారా జోడించబడింది</translation> -<translation id="5087580092889165836">కార్డ్ను జోడించు</translation> +<translation id="5087580092889165836">కార్డ్ను జోడించండి</translation> <translation id="5088534251099454936">RSA ఎన్క్రిప్షన్తో PKCS #1 SHA-512</translation> <translation id="5089763948477033443">సైడ్ ప్యానెల్ సైజ్ మార్చే హ్యాండిల్</translation> <translation id="5090637338841444533">మీ కెమెరా పొజిషన్ను ట్రాక్ చేయడానికి అనుమతించబడలేదు</translation> @@ -4497,6 +4497,7 @@ <translation id="5143712164865402236">ఫుల్-స్క్రీన్ను ఎంటర్ చేయండి</translation> <translation id="5145464978649806571">మీరు మీ పరికరం నుండి దూరంగా వెళ్లినప్పుడు, ఆటోమేటిక్గా మీ స్క్రీన్ లాక్ అవుతుంది. మీరు మీ పరికరం ముందు ఉన్నప్పుడు, మీ స్క్రీన్ మేల్కొనే ఉంటుంది. లాక్ స్క్రీన్ డిజేబుల్ చేసి ఉంటే, మీ పరికరం లాక్ అవ్వడానికి బదులుగా స్లీప్ మోడ్లో ఉంటుంది.</translation> <translation id="514575469079499857">స్థానాన్ని (డిఫాల్ట్) గుర్తించడానికి మీ IP అడ్రస్ను ఉపయోగించండి</translation> +<translation id="5146896637028965135">సిస్టమ్ వాయిస్</translation> <translation id="5147103632304200977">HID పరికరాలను సైట్ యాక్సెస్ చేయాలనుకున్నప్పుడు అడుగు (సిఫార్సు చేయబడింది)</translation> <translation id="5148277445782867161">మీ పరికరం లొకేషన్ను అంచనా వేయడంలో సహాయపడటానికి Wi-Fi, మొబైల్ నెట్వర్క్లు, సెన్సార్ల లాంటి సోర్సులను Google లొకేషన్ సర్వీస్ ఉపయోగిస్తుంది.</translation> <translation id="5150254825601720210">Netscape సర్టిఫికెట్ SSL సర్వర్ పేరు</translation> @@ -4676,7 +4677,7 @@ <translation id="5308380583665731573">కనెక్ట్ చేయండి</translation> <translation id="5309418307557605830">Google Assistant ఇక్కడ కూడా పని చేస్తుంది</translation> <translation id="5311304534597152726">ఇలా సైన్ ఇన్ చేస్తున్నారు</translation> -<translation id="5313967007315987356">సైట్ను జోడించు</translation> +<translation id="5313967007315987356">సైట్ను జోడించండి</translation> <translation id="5315738755890845852">అదనపు వంకర కలుపు: <ph name="ERROR_LINE" /></translation> <translation id="5317780077021120954">సేవ్ చేయండి</translation> <translation id="5319359161174645648">Chromeను Google సిఫార్సు చేస్తోంది</translation> @@ -4842,11 +4843,11 @@ <translation id="5474859849784484111">ఇప్పుడే మీరు Wi-Fiకి కనెక్ట్ అయ్యి, అప్డేట్ను డౌన్లోడ్ చేయాలని <ph name="MANAGER" /> తెలియజేస్తోంది. లేదా డేటా నియంత్రణ ఉన్న కనెక్షన్ నుండి డౌన్లోడ్ చేయండి (ఛార్జీలు వర్తించవచ్చు).</translation> <translation id="5476016146231427848">Chromebookలో Steamను ఉపయోగించడానికి దయచేసి మీ పరికరాన్ని రీస్టార్ట్ చేయండి</translation> <translation id="5481273127572794904">ఆటోమేటిక్గా అనేక ఫైళ్లను డౌన్లోడ్ చేయడానికి అనుమతించబడలేదు</translation> -<translation id="5481941284378890518">సమీప ప్రింటర్లను జోడించు</translation> +<translation id="5481941284378890518">సమీప ప్రింటర్లను జోడించండి</translation> <translation id="5483785310822538350">ఫైల్ మరియు పరికర యాక్సెస్ను ఉపసంహరించు</translation> <translation id="5484772771923374861">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> కోసం మీరు మీ డేటాను బ్యాకప్ చేసి, ఈరోజే ఈ <ph name="DEVICE_TYPE" />ను రిటర్న్ చేయాల్సి ఉంటుంది. <ph name="LINK_BEGIN" />వివరాలను చూడండి<ph name="LINK_END" />}other{<ph name="MANAGER" /> కోసం మీరు మీ డేటాను బ్యాకప్ చేసి, ఈ <ph name="DEVICE_TYPE" />ను {NUM_DAYS} రోజులలోపు రిటర్న్ చేయాల్సి ఉంటుంది. <ph name="LINK_BEGIN" />వివరాలను చూడండి<ph name="LINK_END" />}}</translation> <translation id="5485080380723335835">భద్రత కోసం మీ <ph name="DEVICE_TYPE" /> లాక్ అయింది. కొనసాగించడానికి మీ పాస్వర్డ్ను మాన్యువల్గా నమోదు చేయండి.</translation> -<translation id="5485102783864353244">యాప్ను జోడించు</translation> +<translation id="5485102783864353244">యాప్ను జోడించండి</translation> <translation id="5485754497697573575">అన్ని ట్యాబ్లను పునరుద్ధరించు</translation> <translation id="5486261815000869482">పాస్వర్డ్ని నిర్ధారించండి</translation> <translation id="5486561344817861625">బ్రౌజర్ పునఃప్రారంభాన్ని ప్రారంభించండి</translation> @@ -4920,7 +4921,7 @@ <translation id="5543983818738093899">స్థితి కోసం చెక్ చేస్తోంది...</translation> <translation id="5544482392629385159"><ph name="DEVICE_COUNT" />లో <ph name="DEVICE_INDEX" />వ పరికరం, <ph name="DEVICE_NAME" /></translation> <translation id="554517701842997186">రెండరర్</translation> -<translation id="5545335608717746497">{NUM_TABS,plural, =1{ట్యాబ్ను గ్రూప్నకు జోడించు}other{ట్యాబ్లను గ్రూప్నకు జోడించు}}</translation> +<translation id="5545335608717746497">{NUM_TABS,plural, =1{ట్యాబ్ను గ్రూప్నకు జోడించండి}other{ట్యాబ్లను గ్రూప్నకు జోడించండి}}</translation> <translation id="5545693483061321551">వివిధ సైట్లలో మీ బ్రౌజింగ్ యాక్టివిటీని చూడటానికి సైట్లు మీ కుక్కీలను ఉపయోగించలేవు, ఉదాహరణకు, యాడ్లను వ్యక్తిగతీకరించడం. కొన్ని సైట్లలోని ఫీచర్లు పని చేయకపోవచ్చు.</translation> <translation id="5546865291508181392">కనుగొను</translation> <translation id="5548075230008247516">అన్ని ఐటెమ్ల ఎంపిక రద్దు చేయబడింది, ఎంపిక మోడ్ నుండి నిష్క్రమించారు.</translation> @@ -5028,7 +5029,7 @@ <translation id="563535393368633106">యాక్సెస్ చేయడానికి ముందు అడుగుతుంది (సిఫార్సు చేయబడింది)</translation> <translation id="5636012309446422"><ph name="PRIMARY_EMAIL" /> నుండి <ph name="DEVICE" />ను తీసివేయాలా?</translation> <translation id="5636996382092289526">మీరు <ph name="NETWORK_ID" />ను ఉపయోగించడానికి మొదట కొన్నిసెకన్లలో ఆటోమేటిక్గా తెరవబడే <ph name="LINK_START" />నెట్వర్క్ సైన్ ఇన్ పేజీని సందర్శించాలి<ph name="LINK_END" />. ఇది జరగకపోతే, నెట్వర్క్ను ఉపయోగించలేరు.</translation> -<translation id="5637476008227280525">మొబైల్ డేటాను ప్రారంభించు</translation> +<translation id="5637476008227280525">మొబైల్ డేటాను ప్రారంభించండి</translation> <translation id="5638309510554459422"><ph name="BEGIN_LINK" />Chrome వెబ్ స్టోర్లో<ph name="END_LINK" /> ఎక్స్టెన్షన్లు మరియు థీమ్లను కనుగొనండి</translation> <translation id="5639549361331209298">ఈ పేజీని మళ్లీ లోడ్ చేయండి, మరిన్ని ఎంపికలను చూడటానికి దీనిపై కర్సర్ ఉంచండి</translation> <translation id="5640133431808313291">సెక్యూరిటీ కీలను నిర్వహించండి</translation> @@ -5073,7 +5074,7 @@ <translation id="5687935527303996204">మీ పరికరం ప్లగ్-ఇన్ చేసి ఉందని నిర్ధారించుకోండి, అలాగే దాన్ని ఆఫ్ చేయకండి. ఇన్స్టాలేషన్కు 20 నిమిషాల వరకు సమయం పట్టవచ్చు. ఇన్స్టాలేషన్ పూర్తయిన తర్వాత మీ పరికరం ఆటోమేటిక్గా షట్ డౌన్ అవుతుంది.</translation> <translation id="5689516760719285838">లొకేషన్</translation> <translation id="5689531695336322499"><ph name="SUPERVISED_USER_NAME" /> ఇప్పటికే మరో పరికరంలో Assistantతో వాయిస్ మ్యాచ్ను సెటప్ చేసినట్టుగా అనిపిస్తోంది. ఈ పరికరంలో వాయిస్ మోడల్ను రూపొందించడం కోసం ఈ మునుపటి రికార్డింగ్లు ఉపయోగించబడ్డాయి.</translation> -<translation id="56907980372820799">డేటాను జోడించు</translation> +<translation id="56907980372820799">డేటాను జోడించండి</translation> <translation id="5691581861107245578">మీరు టైప్ చేస్తున్న దానికి సంబంధించిన ఎమోజీ సూచనలను పొందండి</translation> <translation id="5691772641933328258">వేలిముద్ర గుర్తించబడలేదు</translation> <translation id="5692183275898619210">ముద్రణ పూర్తయింది</translation> @@ -5235,7 +5236,7 @@ <translation id="5840658767386246331">Googleతో సెర్చ్ చేయండి</translation> <translation id="5840680448799937675">ఫైళ్లు ఎల్లప్పుడూ ఆఫ్లైన్లో షేర్ చేయబడతాయి</translation> <translation id="5841270259333717135">ఈథర్నెట్ను కాన్ఫిగర్ చేయండి</translation> -<translation id="5842497610951477805">బ్లూటూత్ను ప్రారంభించు</translation> +<translation id="5842497610951477805">బ్లూటూత్ను ప్రారంభించండి</translation> <translation id="5844574845205796324">అన్వేషించడానికి కొత్త కంటెంట్ను సూచించండి</translation> <translation id="5846200638699387931">రిలేషన్ సింటాక్స్ ఎర్రర్: <ph name="ERROR_LINE" /></translation> <translation id="5846455742152785308">షాడో ఏదీ కనుగొనబడలేదు</translation> @@ -5262,7 +5263,7 @@ <translation id="5862109781435984885">అరలో స్టైలస్ సాధనాలను చూపుతుంది</translation> <translation id="5862319196656206789">కనెక్ట్ చేయబడిన పరికరాలను సెటప్ చేయండి</translation> <translation id="5862731021271217234">మీ ఇతర పరికరాలలో ఉన్న మీ అన్ని ట్యాబ్లను పొందాలనుకుంటే, సింక్ ఎంపికను ఆన్ చేయాలి</translation> -<translation id="5863445608433396414">డీబగ్గింగ్ ఫీచర్లను ప్రారంభించు</translation> +<translation id="5863445608433396414">డీబగ్గింగ్ ఫీచర్లను ప్రారంభించండి</translation> <translation id="5864195618110239517">డేటా నియంత్రణ ఉన్న కనెక్షన్ను ఉపయోగించండి</translation> <translation id="5864754048328252126">ఛార్జింగ్లో ఉన్నప్పుడు ఇన్యాక్టివ్ చర్య</translation> <translation id="5865508026715185451"><ph name="APP_NAME" /> త్వరలో పాజ్ అవుతుంది</translation> @@ -5292,7 +5293,7 @@ <translation id="5889282057229379085">ఇంటర్మీడియట్ CAల అత్యధిక సంఖ్య: <ph name="NUM_INTERMEDIATE_CA" /></translation> <translation id="5889629805140803638">మీ స్వంత <ph name="BEGIN_LINK" />సింక్ రహస్య పదబంధం<ph name="END_LINK" />తో సింక్ చేయబడిన డేటాను ఎన్క్రిప్ట్ చేయండి. Google Pay నుండి పేమెంట్ ఆప్షన్లు, అడ్రస్లు ఎన్క్రిప్ట్ చేయబడవు. Chrome నుండి బ్రౌజింగ్ హిస్టరీ సింక్ చేయబడదు.</translation> <translation id="5891688036610113830">ప్రాధాన్య Wi-Fi నెట్వర్క్లు</translation> -<translation id="5895138241574237353">మళ్ళీ ప్రారంభించు</translation> +<translation id="5895138241574237353">మళ్ళీ ప్రారంభించండి</translation> <translation id="5895335062901455404">మీరు మీ Google ఖాతాతో సైన్ ఇన్ చేసినప్పుడు, ఏ ChromeOS Flex పరికరంలోనైనా మీరు సేవ్ చేసిన ప్రాధాన్యతలు, యాక్టివిటీ సిద్ధంగా ఉంటాయి. ఏది సింక్ చేయాలనే దాన్ని, మీరు సెట్టింగ్లలో ఎంచుకోవచ్చు.</translation> <translation id="589541317545606110"><ph name="VISUAL_SEARCH_PROVIDER" /> సహాయంతో పేజీని సెర్చ్ చేయండి</translation> <translation id="5896436821193322561">అనుమతించవద్దు</translation> @@ -5349,7 +5350,7 @@ <translation id="5939518447894949180">రీసెట్ చేయి</translation> <translation id="5939719276406088041">షార్ట్కట్ను క్రియేట్ చేయడం సాధ్యపడదు</translation> <translation id="594048410531370124">గుర్తించబడని కీ. <ph name="RESPONSE" /> కోసం ఏదైనా కీని నొక్కండి.</translation> -<translation id="5941153596444580863">వ్యక్తిని జోడించు...</translation> +<translation id="5941153596444580863">వ్యక్తిని జోడించండి...</translation> <translation id="5941343993301164315">దయచేసి <ph name="TOKEN_NAME" />కు సైన్ ఇన్ చేయండి.</translation> <translation id="5941711191222866238">కనిష్టీకరించు</translation> <translation id="594221546068848596"><ph name="VISUAL_SEARCH_PROVIDER" /> సహాయంతో పేజీని సెర్చ్ చేయండి</translation> @@ -5387,7 +5388,7 @@ <translation id="5972559880616357748"><ph name="SITE_GROUP" /> కోసం మరిన్ని చర్యలు</translation> <translation id="5972666587303800813">నిర్వహణ సేవ లేదు</translation> <translation id="5972708806901999743">పైకి తరలించు</translation> -<translation id="5972826969634861500"><ph name="PRODUCT_NAME" /> ప్రారంభించు</translation> +<translation id="5972826969634861500"><ph name="PRODUCT_NAME" /> ప్రారంభించండి</translation> <translation id="5973041996755340290">ఈ బ్రౌజర్ను "<ph name="CLIENT_NAME" />" డీబగ్గింగ్ చేయడం ప్రారంభించింది</translation> <translation id="5973605538625120605">పిన్ను మార్చండి</translation> <translation id="5975056890546437204">{COUNT,plural, =0{అన్నింటినీ &అజ్ఞాత విండోలో తెరువు}=1{&అజ్ఞాత విండోలో తెరువు}other{అన్నింటినీ ({COUNT}) &అజ్ఞాత విండోలో తెరువు}}</translation> @@ -5496,7 +5497,7 @@ <translation id="6077189836672154517"><ph name="DEVICE_TYPE" />కు సంబంధించిన చిట్కాలు మరియు అప్డేట్లు</translation> <translation id="6077476112742402730">స్పీక్-టు-టైప్</translation> <translation id="6078121669093215958">{0,plural, =1{గెస్ట్}other{# తెరవబడిన గెస్ట్ విండోలు}}</translation> -<translation id="6078323886959318429">షార్ట్కట్ను జోడించు</translation> +<translation id="6078323886959318429">షార్ట్కట్ను జోడించండి</translation> <translation id="6078742430369906859">"<ph name="NETWORK_ID" />"లో కనెక్టివిటీ పరిమితం చేయబడి ఉండవచ్చు</translation> <translation id="6078752646384677957">దయచేసి మీ మైక్రోఫోన్ మరియు ఆడియో స్థాయిలను చెక్ చేయండి.</translation> <translation id="6078769373519310690">"<ph name="CHROME_EXTENSION_NAME" />" ఒక HID పరికరానికి కనెక్ట్ కావాలని కోరుకుంటుంది</translation> @@ -5532,7 +5533,7 @@ <translation id="6104796831253957966">ప్రింటర్ క్యూ నిండిపోయింది</translation> <translation id="6111972606040028426">Google Assistantను ఎనేబుల్ చేయండి</translation> <translation id="6112294629795967147">సైజ్ మార్చడం కోసం తాకండి</translation> -<translation id="6112727384379533756">టిక్కెట్ను జోడించు</translation> +<translation id="6112727384379533756">టిక్కెట్ను జోడించండి</translation> <translation id="6112931163620622315">మీ ఫోన్ని చెక్ చేయండి</translation> <translation id="6113434369102685411">Chrome బ్రౌజర్, <ph name="DEVICE_TYPE" /> లాంచర్ కోసం మీ ఆటోమేటిక్ సెర్చ్ ఇంజిన్ను సెట్ చేయండి</translation> <translation id="6113942107547980621">Smart Lockను ఉపయోగించడానికి, మీ ఫోన్లో ప్రాథమిక వినియోగదారు ప్రొఫైల్కు మారండి</translation> @@ -5828,7 +5829,7 @@ <translation id="6401597285454423070">మీ కంప్యూటర్ విశ్వసనీయ ప్లాట్ఫామ్ మాడ్యూల్ (TPM) సెక్యూరిటీ పరికరాన్ని కలిగి ఉంది, ఇది ChromeOSలో అనేక కీలకమైన సెక్యూరిటీ ఫీచర్లను అమలు చేయడానికి ఉపయోగించబడుతుంది. మరింత తెలుసుకోవడానికి Chromebook సహాయ కేంద్రాన్ని సందర్శించండి: https://support.google.com/chromebook/?p=tpm</translation> <translation id="6404187344102273690">Chromebook గేమింగ్</translation> <translation id="6404511346730675251">బుక్మార్క్ను ఎడిట్ చేయండి</translation> -<translation id="6406303162637086258">బ్రౌజర్ పునఃప్రారంభాన్ని ప్రారంభించు</translation> +<translation id="6406303162637086258">బ్రౌజర్ పునఃప్రారంభాన్ని ప్రారంభించండి</translation> <translation id="6406506848690869874">Sync</translation> <translation id="6406708970972405507">సెట్టింగ్లు - <ph name="SECTION_TITLE" /></translation> <translation id="6408118934673775994"><ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> మరియు <ph name="WEBSITE_3" />లో ఉన్న మీ డేటాను చదవడం మరియు మార్చడం</translation> @@ -6052,7 +6053,7 @@ <translation id="6605847144724004692">ఇంకా ఏ వినియోగదారులు రేట్ చేయలేదు.</translation> <translation id="6606671997164410857">మీరు ఇప్పటికే మరో పరికరంలో Google Assistantను సెటప్ చేసినట్టుగా అనిపిస్తోంది. ఈ పరికరంలో స్క్రీన్ కాంటెక్స్ట్ను ఆన్ చేయడం ద్వారా Assistant నుండి మరిన్ని ప్రయోజనాలను పొందండి.</translation> <translation id="6607831829715835317">మరిన్ని సాధనా&లు</translation> -<translation id="6607890859198268021"><ph name="USER_EMAIL" />ను ఇప్పటికే <ph name="DOMAIN" /> మేనేజ్ చేస్తోంది. వేరొక Google ఖాతాతో తల్లిదండ్రుల నియంత్రణలను ఉపయోగించడానికి, సెటప్ను పూర్తి చేశాక సైన్ అవుట్ చేసి, ఆపై సైన్ ఇన్ స్క్రీన్పై ఉన్న "వ్యక్తిని జోడించు"ను ఎంచుకోండి.</translation> +<translation id="6607890859198268021"><ph name="USER_EMAIL" />ను ఇప్పటికే <ph name="DOMAIN" /> మేనేజ్ చేస్తోంది. వేరొక Google ఖాతాతో తల్లిదండ్రుల నియంత్రణలను ఉపయోగించడానికి, సెటప్ను పూర్తి చేశాక సైన్ అవుట్ చేసి, ఆపై సైన్ ఇన్ స్క్రీన్పై ఉన్న "వ్యక్తిని జోడించండి"ను ఎంచుకోండి.</translation> <translation id="6608166463665411119">eSIMను రీసెట్ చేయండి</translation> <translation id="6608773371844092260">వేలిముద్రను సెటప్ చేయడానికి, ఈ <ph name="DEVICE_TYPE" />కు కుడి వైపున ఉన్న వేలిముద్ర సెన్సార్ను మీ చిన్నారి వేలితో తాకించండి. మీ చిన్నారి వేలిముద్ర డేటా సురక్షితంగా స్టోర్ చేయబడుతుంది, ఎప్పటికీ ఈ <ph name="DEVICE_TYPE" />లోనే ఉంటుంది.</translation> <translation id="6609478180749378879">మీరు అజ్ఞాత మోడ్ నుండి నిష్క్రమించిన తర్వాత సైన్-ఇన్ డేటా ఈ పరికరంలో స్టోర్ చేయబడుతుంది. మీ పరికరం ద్వారా తర్వాత మళ్లీ ఈ వెబ్సైట్కు మీరు సైన్ ఇన్ చేయగలరు.</translation> @@ -6192,7 +6193,7 @@ <translation id="6743841972744298686">సింక్ సెట్టింగ్లు</translation> <translation id="6745592621698551453">ఇప్పుడే అప్డేట్ చేయి</translation> <translation id="6746124502594467657">క్రిందికి తరలించు</translation> -<translation id="674632704103926902">నొక్కి లాగడాన్ని ప్రారంభించు</translation> +<translation id="674632704103926902">నొక్కి లాగడాన్ని ప్రారంభించండి</translation> <translation id="6748465660675848252">మీరు కొనసాగించవచ్చు, కానీ మీ సింక్ చేసిన డేటా మరియు సెట్టింగ్లు మాత్రమే పునరుద్ధరించబడతాయి. మొత్తం స్థానిక డేటాను కోల్పోవడం జరుగుతుంది.</translation> <translation id="6748980958975836188">నేను <ph name="BEGIN_LINK1" />Google సర్వీస్ నియమాలు<ph name="END_LINK1" />, <ph name="BEGIN_LINK2" />Chrome, ఇంకా ChromeOS అదనపు సర్వీస్ నియమాలను<ph name="END_LINK2" /> చదివి అంగీకరిస్తున్నాను.</translation> <translation id="6750757184909117990">సెల్యులార్ను డిజేబుల్ చేయడం</translation> @@ -6235,7 +6236,7 @@ <translation id="6789592661892473991">అడ్డంగా విభజించు</translation> <translation id="6790428901817661496">ప్లే చేయి</translation> <translation id="6790497603648687708"><ph name="EXTENSION_NAME" /> రిమోట్ విధానంలో జోడించబడింది</translation> -<translation id="6790820461102226165">వ్యక్తిని జోడించు...</translation> +<translation id="6790820461102226165">వ్యక్తిని జోడించండి...</translation> <translation id="6793879402816827484">↓ <ph name="STATUS" /></translation> <translation id="6795371939514004514">స్క్రీన్పై ఉన్న ఐటెమ్ల మధ్య ఆటోమేటిక్గా కదలడానికి ఆటో-స్కాన్ మిమ్మల్ని అనుమతిస్తుంది. ఒక ఐటెమ్ హైలైట్ అయినప్పుడు, దాన్ని యాక్టివేట్ చేయడానికి "ఎంచుకోండి"ని నొక్కండి.</translation> <translation id="6795884519221689054">పాండా</translation> @@ -6251,7 +6252,7 @@ <translation id="6802031077390104172"><ph name="USAGE" /> (<ph name="OID" />)</translation> <translation id="680488281839478944">వర్చువల్ మెషీన్కు "<ph name="DEFAULT_VM_NAME" />" ఉంది</translation> <translation id="6805647936811177813">దయచేసి <ph name="HOST_NAME" /> నుండి క్లయింట్ సర్టిఫికెట్ను దిగుమతి చేయడానికి <ph name="TOKEN_NAME" />కు సైన్ ఇన్ చేయండి.</translation> -<translation id="680572642341004180"><ph name="SHORT_PRODUCT_OS_NAME" />లో RLZ ట్రాకింగ్ను ప్రారంభించు.</translation> +<translation id="680572642341004180"><ph name="SHORT_PRODUCT_OS_NAME" />లో RLZ ట్రాకింగ్ను ప్రారంభించండి.</translation> <translation id="6806089545527108739">అనుమతించవద్దు, కానీ తర్వాత అడగాలి</translation> <translation id="6808039367995747522">కొనసాగించడానికి, మీ సెక్యూరిటీ కీని చొప్పించి, తాకండి.</translation> <translation id="6808166974213191158">ChromeOS Flex సిస్టమ్ ఇమేజ్ రైటర్</translation> @@ -6600,7 +6601,7 @@ <translation id="7108668606237948702">ఎంటర్</translation> <translation id="7108933416628942903">ఇప్పుడు లాక్ చేయి</translation> <translation id="7109543803214225826">షార్ట్కట్ తీసివేయబడింది</translation> -<translation id="7110644433780444336">{NUM_TABS,plural, =1{ట్యాబ్ను గ్రూప్నకు జోడించు}other{ట్యాబ్లను గ్రూప్నకు జోడించు}}</translation> +<translation id="7110644433780444336">{NUM_TABS,plural, =1{ట్యాబ్ను గ్రూప్నకు జోడించండి}other{ట్యాబ్లను గ్రూప్నకు జోడించండి}}</translation> <translation id="7111822978084196600">ఈ విండోకు పేరు పెట్టండి</translation> <translation id="7113102733263608554"><ph name="ITEM_COUNT_ONE" /> ఐటెమ్</translation> <translation id="7113502843173351041">మీ ఈమెయిల్ అడ్రస్ను తెలియపరచడానికి అనుమతి</translation> @@ -6650,7 +6651,7 @@ <translation id="7170236477717446850">ప్రొఫైల్ ఫోటో</translation> <translation id="7171000599584840888">ప్రొఫైల్ను జోడించండి...</translation> <translation id="7171259390164035663">నమోదు చేసుకోవద్దు</translation> -<translation id="7172470549472604877">{NUM_TABS,plural, =1{ట్యాబ్ను కొత్త గ్రూప్నకు జోడించు}other{ట్యాబ్లను కొత్త గ్రూప్నకు జోడించు}}</translation> +<translation id="7172470549472604877">{NUM_TABS,plural, =1{ట్యాబ్ను కొత్త గ్రూప్నకు జోడించండి}other{ట్యాబ్లను కొత్త గ్రూప్నకు జోడించండి}}</translation> <translation id="7173114856073700355">సెట్టింగ్లను తెరువు</translation> <translation id="7174199383876220879">కొత్తది! మీ సంగీతం, వీడియోలు ఇంకా మరిన్నింటిని నియంత్రిస్తుంది.</translation> <translation id="7175037578838465313"><ph name="NAME" />ని కాన్ఫిగర్ చేయండి</translation> @@ -6772,7 +6773,7 @@ <translation id="729583233778673644">AES మరియు RC4 ఎన్క్రిప్షన్ను అనుమతించండి. ఈ ఎంపికను ఉపయోగించడం వలన RC4 సైఫర్లు అసురక్షితమైనవి కాబట్టి మీకు హాని పెరుగుతుంది.</translation> <translation id="7297726121602187087">ముదురు ఆకుపచ్చ రంగు</translation> <translation id="7298195798382681320">సిఫార్సు చేయబడినవి</translation> -<translation id="7299337219131431707">అతిథి బ్రౌజింగ్ను ప్రారంభించు</translation> +<translation id="7299337219131431707">అతిథి బ్రౌజింగ్ను ప్రారంభించండి</translation> <translation id="7299515639584427954">సపోర్ట్ చేయబడిన లింక్ల కోసం ఆటోమేటిక్ యాప్ను మార్చాలా?</translation> <translation id="7301470816294041580">"Ok Google, ఇది ఏ పాట?" లేదా "Ok Google, నా స్క్రీన్పై ఏముంది?" అని మీరు అడగవచ్చు</translation> <translation id="730289542559375723">{NUM_APPLICATIONS,plural, =1{Chrome సరిగ్గా పని చేయకుండా ఈ అప్లికేషన్ నివారించవచ్చు.}other{Chrome సరిగ్గా పని చేయకుండా ఈ అప్లికేషన్లు నివారించవచ్చు.}}</translation> @@ -7189,7 +7190,7 @@ <translation id="7680416688940118410">టచ్స్క్రీన్ కాలిబ్రేషన్</translation> <translation id="7681095912841365527">సైట్ బ్లూటూత్ను ఉపయోగించవచ్చు</translation> <translation id="7681597159868843240">వర్చువల్ రియాలిటీ లేదా ఫిట్నెస్ ట్రాకింగ్ వంటి ఫీచర్ల కోసం సాధారణంగా సైట్లు పరికర మోషన్ సెన్సార్లను ఉపయోగించుకుంటాయి</translation> -<translation id="7683373461016844951">కొనసాగించాలంటే, సరే క్లిక్ చేసి, ఆపై మీ <ph name="DOMAIN" /> ఈమెయిల్ అడ్రస్ కోసం కొత్త ప్రొఫైల్ను క్రియేట్ చేయడానికి వ్యక్తిని జోడించు క్లిక్ చేయండి.</translation> +<translation id="7683373461016844951">కొనసాగించాలంటే, సరే క్లిక్ చేసి, ఆపై మీ <ph name="DOMAIN" /> ఈమెయిల్ అడ్రస్ కోసం కొత్త ప్రొఫైల్ను క్రియేట్ చేయడానికి వ్యక్తిని జోడించండి క్లిక్ చేయండి.</translation> <translation id="7683834360226457448">చూపు సమస్య ఉన్న వారికి సహాయపడే డిస్ప్లే టూల్స్</translation> <translation id="7684212569183643648">మీ నిర్వాహకుడు ఇన్స్టాల్ చేశారు</translation> <translation id="7684559058815332124">క్యాప్టివ్ పోర్టల్ లాగిన్ పేజీని సందర్శించండి</translation> @@ -7199,7 +7200,7 @@ <translation id="7686938547853266130"><ph name="FRIENDLY_NAME" /> (<ph name="DEVICE_PATH" />)</translation> <translation id="7690294790491645610">కొత్త పాస్వర్డ్ను నిర్ధారించండి</translation> <translation id="7690378713476594306">లిస్ట్ నుండి ఎంచుకోండి</translation> -<translation id="7690853182226561458">&ఫోల్డర్ను జోడించు...</translation> +<translation id="7690853182226561458">&ఫోల్డర్ను జోడించండి...</translation> <translation id="7691073721729883399">కియోస్క్ యాప్ కోసం క్రిప్టోహోమ్ మౌంట్ చేయబడలేదు.</translation> <translation id="7691077781194517083">ఈ సెక్యూరిటీ కీని రీసెట్ చేయలేకపోయింది. ఎర్రర్ <ph name="ERROR_CODE" />.</translation> <translation id="7691163173018300413">"Ok Google"</translation> @@ -7279,7 +7280,7 @@ <translation id="7758450972308449809">మీ ప్రదర్శన సరిహద్దులను సర్దుబాటు చేయండి</translation> <translation id="7760004034676677601">మీరు ఆశిస్తున్న ప్రారంభ పేజీ ఇదేనా?</translation> <translation id="7762024824096060040">ఈ ఖాతాను ఉపయోగించలేరు</translation> -<translation id="7764225426217299476">అడ్రస్ను జోడించు</translation> +<translation id="7764225426217299476">అడ్రస్ను జోడించండి</translation> <translation id="7764256770584298012"><ph name="DOWNLOAD_DOMAIN" /> నుండి <ph name="DOWNLOAD_RECEIVED" /></translation> <translation id="7765158879357617694">తరలించు</translation> <translation id="7765507180157272835">బ్లూటూత్, Wi-Fi అవసరం</translation> @@ -7320,7 +7321,7 @@ <ph name="EXTENSION_NAME" /></translation> <translation id="7789963078219276159">ప్రారంభ పేజీ నేపథ్యం <ph name="CATEGORY" />కు మార్చబడింది.</translation> -<translation id="7791543448312431591">జోడించు</translation> +<translation id="7791543448312431591">జోడించండి</translation> <translation id="7792012425874949788">సైన్ ఇన్ చేయడంలో ఏదో తప్పు జరిగింది</translation> <translation id="7792388396321542707">భాగస్వామ్యం చేయడాన్ని ఆపివేయి</translation> <translation id="779308894558717334">లేత ఆకుపచ్చ రంగు</translation> @@ -7480,7 +7481,7 @@ <translation id="7941179291434537290">టెథరింగ్ సంసిద్ధత:</translation> <translation id="7942349550061667556">ఎరుపు</translation> <translation id="7943368935008348579">PDFలను డౌన్లోడ్ చేయండి</translation> -<translation id="7943837619101191061">స్థానాన్ని జోడించు...</translation> +<translation id="7943837619101191061">స్థానాన్ని జోడించండి...</translation> <translation id="7944772052836377867">ఇది మీరేనని సింక్ వెరిఫై చేయాలి</translation> <translation id="7945031593909029181">"<ph name="CHROME_EXTENSION_NAME" />" దీనికి కనెక్ట్ చేయాలనుకుంటోంది</translation> <translation id="7945703887991230167">ఎక్కువగా ఇష్టపడే వాయిస్</translation> @@ -7512,7 +7513,7 @@ <translation id="7966571622054096916">{COUNT,plural, =1{బుక్మార్క్ లిస్ట్లో 1 ఐటెమ్ ఉంది}other{బుక్మార్క్ లిస్ట్లో {COUNT} ఐటెమ్లు ఉన్నాయి}}</translation> <translation id="7968072247663421402">ప్రొవైడర్ ఆప్షన్లు</translation> <translation id="7968742106503422125">మీరు కాపీ చేసి, అతికించే డేటాను చదవడం మరియు ఎడిట్ చేయడం</translation> -<translation id="7968833647796919681">పనితీరు డేటా సేకరణను ప్రారంభించు</translation> +<translation id="7968833647796919681">పనితీరు డేటా సేకరణను ప్రారంభించండి</translation> <translation id="7968982339740310781">వివరాలను చూడండి</translation> <translation id="7969046989155602842">ఆదేశం</translation> <translation id="7970673414865679092">ఈథర్నెట్ వివరాలు</translation> @@ -7535,7 +7536,7 @@ <translation id="7984068253310542383">మిర్రర్ <ph name="DISPLAY_NAME" /></translation> <translation id="7986295104073916105">సేవ్ చేసిన పాస్వర్డ్ సెట్టింగ్లను చదవడానికి మరియు మార్చడానికి అనుమతి</translation> <translation id="7987814697832569482">ఎల్లప్పుడూ ఈ VPN ద్వారా కనెక్ట్ చేయి</translation> -<translation id="7988355189918024273">సులభంగా యాక్సెస్ చేసే ఫీచర్లను ప్రారంభించు</translation> +<translation id="7988355189918024273">సులభంగా యాక్సెస్ చేసే ఫీచర్లను ప్రారంభించండి</translation> <translation id="7988805580376093356">మీ OSను అలానే ఉంచి, USB నుండి <ph name="DEVICE_OS" />ను రన్ చేయండి.</translation> <translation id="7990863024647916394"><ph name="DISPLAY_NAME" /> వాయిస్ <ph name="COUNT" /></translation> <translation id="7991296728590311172">స్విచ్ యాక్సెస్ సెట్టింగ్లు</translation> @@ -7769,7 +7770,7 @@ <translation id="8197673340773315084">'ఆఫీస్', 'వ్యక్తిగతం' వంటి లేబుల్ను లేదా ఏదైనా పేరును జోడించండి</translation> <translation id="8198456017687137612">ప్రసారం చేసే ట్యాబ్</translation> <translation id="8199300056570174101">నెట్వర్క్ (సేవ) మరియు పరికర లక్షణాలు</translation> -<translation id="8200772114523450471">మళ్లీ ప్రారంభించు</translation> +<translation id="8200772114523450471">మళ్లీ ప్రారంభించండి</translation> <translation id="8200789660596905522">మీ <ph name="DEVICE_NAME" />లో ప్రసార రిక్వెస్ట్ను అంగీకరించారని నిర్ధారించుకోండి.</translation> <translation id="8202160505685531999">దయచేసి మీ <ph name="DEVICE_TYPE" /> ప్రొఫైల్ను అప్డేట్ చేయడానికి మీ పాస్వర్డ్ను మళ్లీ నమోదు చేయండి.</translation> <translation id="8203152941016626022">సమీప షేరింగ్ పరికరం పేరు</translation> @@ -7798,7 +7799,7 @@ <translation id="8225265270453771718">అప్లికేషన్ విండోను షేర్ చేయండి</translation> <translation id="8226222018808695353">నిషేధించబడింది</translation> <translation id="8226619461731305576">క్యూ</translation> -<translation id="8227119283605456246">ఫైల్ను జోడించు</translation> +<translation id="8227119283605456246">ఫైల్ను జోడించండి</translation> <translation id="8228783756378591900">మీ సంస్థకు చెందిన సెక్యూరిటీ పాలసీలతో ఈ ఫైల్ను చెక్ చేస్తోంది...</translation> <translation id="8230134520748321204"><ph name="ORIGIN" /> కోసం పాస్వర్డ్ని సేవ్ చేయాలా?</translation> <translation id="8230446983261649357">ఇమేజ్లను చూపించడానికి సైట్లను అనుమతించకండి</translation> @@ -7876,7 +7877,7 @@ <translation id="8289128870594824098">డిస్క్ సైజ్</translation> <translation id="8289509909262565712"><ph name="DEVICE_OS" />కు స్వాగతం</translation> <translation id="8291415872436043161">Chromeను డౌన్లోడ్ చేయండి</translation> -<translation id="8293206222192510085">బుక్మార్క్లను జోడించు</translation> +<translation id="8293206222192510085">బుక్మార్క్లను జోడించండి</translation> <translation id="8294431847097064396">సోర్స్</translation> <translation id="8298429963694909221">మీరు మీ <ph name="DEVICE_TYPE" />లో మీ ఫోన్ నుండి ఇప్పుడు నోటిఫికేషన్లను పొందగలరు. మీ <ph name="DEVICE_TYPE" />లో నోటిఫికేషన్లను విస్మరించడం వలన అవి మీ ఫోన్లో కూడా విస్మరించబడతాయి. మీ ఫోన్ సమీపంలోనే ఉండి, అలాగే అందులో బ్లూటూత్, Wi-Fi ఆన్ చేయబడి ఉన్నాయని నిర్ధారించుకోండి.</translation> <translation id="8299319456683969623">మీరు ప్రస్తుతం ఆఫ్లైన్లో ఉన్నారు.</translation> @@ -7897,7 +7898,7 @@ <translation id="831440797644402910">ఈ ఫోల్డర్ను తెరవడం సాధ్యం కాదు</translation> <translation id="8314835274931377415">స్విచ్ యాక్సెస్ సెటప్ను ప్రారంభించాలనుకుంటున్నారా?</translation> <translation id="8317582043908962055">P&DF టెక్స్ట్ను గుర్తించండి</translation> -<translation id="8317671367883557781">నెట్వర్క్ కనెక్షన్ను జోడించు</translation> +<translation id="8317671367883557781">నెట్వర్క్ కనెక్షన్ను జోడించండి</translation> <translation id="8317965619823678157">పాస్వర్డ్లను కాపీ చేయండి</translation> <translation id="8318266828739827371">మీ స్క్రీన్లో మ్యాగ్నిఫై చేసిన భాగాన్ని చూడటానికి స్ప్లిట్ స్క్రీన్ వీక్షణను ఉపయోగించండి. సెర్చ్ + Ctrl + Dని ఉపయోగించి డాక్ చేయబడిన మ్యాగ్నిఫయర్ను ఆన్, ఆఫ్ చేయండి.</translation> <translation id="8319414634934645341">విస్తరించిన కీ ఉపయోగం</translation> @@ -8109,7 +8110,7 @@ <translation id="8525157245469383124">రిటైలర్-స్టోర్ ID ABC-1234 ఫార్మాట్లో ఉండాలి</translation> <translation id="8525306231823319788">ఫుల్-స్క్రీన్</translation> <translation id="8526813720153458066">SSH</translation> -<translation id="8528074251912154910">భాషలను జోడించు</translation> +<translation id="8528074251912154910">భాషలను జోడించండి</translation> <translation id="8528962588711550376">సైన్ ఇన్ అవుతోంది.</translation> <translation id="8529925957403338845">తక్షణ టెథెరింగ్ కనెక్షన్ విఫలమైంది</translation> <translation id="8531701051932785007">మెరుగైన సురక్షిత బ్రౌజింగ్ ఆఫ్ చేయబడింది</translation> @@ -8530,7 +8531,7 @@ <translation id="8910222113987937043">మీ బుక్మార్క్లు, హిస్టరీ, పాస్వర్డ్లు, ఇతర సెట్టింగ్లలో మార్పులు మీ Google ఖాతాకు ఇకపై సింక్ చేయబడవు. అయినప్పటికీ, ఇప్పటికే ఉన్న మీ డేటా Google ఖాతాలో నిల్వ చేయబడుతుంది. <ph name="BEGIN_LINK" />Google డాష్బోర్డ్<ph name="END_LINK" />లో నిర్వహించబడుతుంది.</translation> <translation id="8910987510378294980">పరికర లిస్ట్ను దాచండి</translation> <translation id="8912362522468806198">Google ఖాతా</translation> -<translation id="8912810933860534797">ఆటోమేటిక్ స్కాన్ను ప్రారంభించు</translation> +<translation id="8912810933860534797">ఆటోమేటిక్ స్కాన్ను ప్రారంభించండి</translation> <translation id="8915307125957890427">ట్యాబ్పై కుడి క్లిక్ చేసి, "Tabను గ్రూప్నకు జోడించండి" ఆప్షన్ను ఎంచుకుని, తర్వాత "కొత్త గ్రూప్"ను ఎంచుకోండి</translation> <translation id="8915370057835397490">సూచన లోడ్ అవుతోంది</translation> <translation id="8916476537757519021">అజ్ఞాత సబ్ఫ్రేమ్: <ph name="SUBFRAME_SITE" /></translation> @@ -8581,7 +8582,7 @@ <translation id="89667524227025535">పరికర కెమెరాను ఉపయోగించి QR కోడ్ను స్కాన్ చేయండి లేదా మీ క్యారియర్ అందించిన యాక్టివేషన్ కోడ్ను ఎంటర్ చేయండి</translation> <translation id="8966809848145604011">ఇతర ప్రొఫైళ్లు</translation> <translation id="8966870118594285808">ట్యాబ్ను మీరు పొరపాటున మూసివేసినట్లయితే మళ్లీ తెరవగలరు</translation> -<translation id="8967427617812342790">పఠనా లిస్ట్కు జోడించు</translation> +<translation id="8967427617812342790">పఠనా లిస్ట్కు జోడించండి</translation> <translation id="8968527460726243404">ChromeOS సిస్టమ్ ఇమేజ్ రైటర్</translation> <translation id="8968766641738584599">కార్డ్ని సేవ్ చేయండి</translation> <translation id="89720367119469899">ఎస్కేప్</translation> @@ -8738,8 +8739,8 @@ <translation id="909554839118732438">అజ్ఞాత విండోలన్నింటినీ మూసివేయండి</translation> <translation id="9100416672768993722">చివరిగా ఉపయోగించిన ఇన్పుట్ విధానానికి స్విచ్ చేయడానికి, <ph name="BEGIN_SHORTCUT" /><ph name="BEGIN_CTRL" />Ctrl<ph name="END_CTRL" /><ph name="SEPARATOR" /><ph name="BEGIN_SPACE" />Space<ph name="END_SPACE" /><ph name="END_SHORTCUT" /> కీలను నొక్కండి</translation> <translation id="9100765901046053179">అధునాతన సెట్టింగ్లు</translation> -<translation id="9101691533782776290">యాప్ను ప్రారంభించు</translation> -<translation id="9102610709270966160">ఎక్స్టెన్షన్ను ప్రారంభించు</translation> +<translation id="9101691533782776290">యాప్ను ప్రారంభించండి</translation> +<translation id="9102610709270966160">ఎక్స్టెన్షన్ను ప్రారంభించండి</translation> <translation id="9103479157856427471">దగ్గరగా జూమ్ చేసిన స్క్రీన్ కీబోర్డ్ ఫోకస్ను ఫాలో చేస్తుంది</translation> <translation id="9103868373786083162">హిస్టరీని చూసేందుకు వెనుకకు వెళ్లు, సందర్భ మెనూ నొక్కండి</translation> <translation id="9108035152087032312">పేరు &విండో...</translation>
diff --git a/chrome/app/resources/generated_resources_zh-HK.xtb b/chrome/app/resources/generated_resources_zh-HK.xtb index 26c6d18..4629c6b 100644 --- a/chrome/app/resources/generated_resources_zh-HK.xtb +++ b/chrome/app/resources/generated_resources_zh-HK.xtb
@@ -4498,6 +4498,7 @@ <translation id="5143712164865402236">進入全螢幕</translation> <translation id="5145464978649806571">如果您不在裝置前方,系統會自動鎖定螢幕;如果您回到裝置前方時,系統就會解除鎖定螢幕。如果停用螢幕鎖定,則裝置會進入休眠狀態,而不是鎖定螢幕。</translation> <translation id="514575469079499857">使用您的 IP 位址確定位置 (預設)</translation> +<translation id="5146896637028965135">系統語音</translation> <translation id="5147103632304200977">在網站要存取 HID 裝置時詢問您 (建議使用)</translation> <translation id="5148277445782867161">Google 的位置資訊服務會透過 Wi-Fi、流動網絡及感應器等來源協助估計裝置位置。</translation> <translation id="5150254825601720210">Netscape 憑證 SSL 伺服器名稱</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb index 6f00fe1..5ca8fa4 100644 --- a/chrome/app/resources/generated_resources_zh-TW.xtb +++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -4481,6 +4481,7 @@ <translation id="5143712164865402236">進入全螢幕</translation> <translation id="5145464978649806571">如果你不在裝置前方,系統會自動鎖定螢幕;當你回到裝置前方時,系統就會解除鎖定螢幕。假如停用螢幕鎖定,則裝置會進入休眠狀態,而不是鎖定螢幕。</translation> <translation id="514575469079499857">使用你的 IP 位址判斷所在位置 (預設)</translation> +<translation id="5146896637028965135">系統語音</translation> <translation id="5147103632304200977">網站必須先詢問你,才能存取 HID 裝置 (建議)</translation> <translation id="5148277445782867161">Google 的定位服務會使用 Wi‑Fi、行動網路和感應器等來源,推測出這部裝置的所在位置。</translation> <translation id="5150254825601720210">Netscape 憑證 SSL 伺服器名稱</translation> @@ -7726,6 +7727,7 @@ <translation id="8174047975335711832">裝置資訊</translation> <translation id="8174876712881364124">備份到 Google 雲端硬碟。你隨時可以輕鬆還原資料或改用其他裝置。備份內容包含應用程式資料。備份內容會上傳到 Google,並以貴子女帳戶的 Google 帳戶密碼加密。<ph name="BEGIN_LINK1" />瞭解詳情<ph name="END_LINK1" /></translation> <translation id="8176332201990304395">粉紅色與白色</translation> +<translation id="8176529144855282213">如要開啟麥克風存取權,請打開裝置的麥克風實體開關</translation> <translation id="8177196903785554304">網路詳細資料</translation> <translation id="8177318697334260664">{NUM_TABS,plural, =1{將分頁移到新視窗}other{將分頁移到新視窗}}</translation> <translation id="8179188928355984576">無法存取 Android 應用程式</translation> @@ -8432,6 +8434,7 @@ <translation id="8838770651474809439">漢堡</translation> <translation id="8838778928843281408">管理手機</translation> <translation id="883924185304953854">以圖搜尋</translation> +<translation id="8839587819996519780">在應用程式圖示上顯示通知圓點</translation> <translation id="8841843049738266382">讀取及變更列入許可清單的使用者</translation> <translation id="8842594465773264717">刪除這個指紋</translation> <translation id="8845001906332463065">尋求協助</translation>
diff --git a/chrome/app/resources/generated_resources_zu.xtb b/chrome/app/resources/generated_resources_zu.xtb index fc0955e..e813de758 100644 --- a/chrome/app/resources/generated_resources_zu.xtb +++ b/chrome/app/resources/generated_resources_zu.xtb
@@ -4498,6 +4498,7 @@ <translation id="5143712164865402236">Faka isikrini esigcwele</translation> <translation id="5145464978649806571">Uma usuka kudivayisi yakho, isikrini sakho sizokhiya ngokuzenzakalelayo. Uma uphambi kwedivayisi yakho, isikrini sakho sizohlala sivuliwe isikhathi eside. Uma isikrini sokukhiya sikhutshaziwe, idivayisi yakho izolala esikhundleni sokukhiywa.</translation> <translation id="514575469079499857">Sebenzisa ikheli lakho le-IP ukuze unqume indawo (okuzenzakalelayo)</translation> +<translation id="5146896637028965135">Izwi lesistimu</translation> <translation id="5147103632304200977">Buma uma isayithi lifuna ukufinyelela amadivayisi e-HID (kuyanconywa)</translation> <translation id="5148277445782867161">Isevisi yendawo ye-Google isebenzisa imithombo efana ne-Wi-Fi, amanethiwekhi eselula, nezinzwa ukuze zisize ukulinganisela indawo yedivayisi yakho.</translation> <translation id="5150254825601720210">Igama leseva ye-SSL yesitifiketi se-Netscape</translation> @@ -7749,6 +7750,7 @@ <translation id="8174047975335711832">Ulwazi lwedivayisi</translation> <translation id="8174876712881364124">Ukwenza isipele ku-Google Drayivu. Buyisa kalula idatha noma shintsha idivayisi noma kunini. Lesi sipele sibandakanya idatha yohlelo lokusebenza. Izipele zilayishwa ku-Google futhi zibethelwe kusetshenziswa iphasiwedi ye-akhawunti ye-Google yengane yakho. <ph name="BEGIN_LINK1" />Funda kabanzi<ph name="END_LINK1" /></translation> <translation id="8176332201990304395">Okuphinki nokumhlophe</translation> +<translation id="8176529144855282213">Ukuze uvule ukufinyelela kwemakrofoni, vula iswishi yemakrofoni ebonakalayo kudivayisi yakho</translation> <translation id="8177196903785554304">Imininingwane yenethiwekhi</translation> <translation id="8177318697334260664">{NUM_TABS,plural, =1{Hambisa ithebhu kuwindi elisha}one{Hambisa amathebhu kuwindi elisha}other{Hambisa amathebhu kuwindi elisha}}</translation> <translation id="8179188928355984576">Akusetshenziswa nama-app e-Android</translation> @@ -8456,6 +8458,7 @@ <translation id="8838770651474809439">I-hamburger</translation> <translation id="8838778928843281408">Phatha amafoni</translation> <translation id="883924185304953854">Sesha ngesithombe</translation> +<translation id="8839587819996519780">Bonisa ichashazi lesaziso kusithonjana se-app</translation> <translation id="8841843049738266382">Funda futhi ushintshe uhlu lwabasebenzisi abagunyaziwe</translation> <translation id="8842594465773264717">Susa lezi zigxivizo zeminwe</translation> <translation id="8845001906332463065">Thola usizo</translation>
diff --git a/chrome/app/resources/google_chrome_strings_te.xtb b/chrome/app/resources/google_chrome_strings_te.xtb index aa286a4a..d63da88 100644 --- a/chrome/app/resources/google_chrome_strings_te.xtb +++ b/chrome/app/resources/google_chrome_strings_te.xtb
@@ -97,7 +97,7 @@ <translation id="2765403129283291972">ఈ సైట్ కోసం మీ మైక్రోఫోన్ను యాక్సెస్ చేయడానికి Chromeకు అనుమతి అవసరం</translation> <translation id="2770231113462710648">డిఫాల్ట్ బ్రౌజర్ను దీనికి మార్చు:</translation> <translation id="2775140325783767197">Chrome మీ పాస్వర్డ్లను చెక్ చేయలేకపోయింది. మీ ఇంటర్నెట్ కనెక్షన్ సరిచూసుకుని, తర్వాత ట్రై చేయండి.</translation> -<translation id="2799223571221894425">మళ్లీ ప్రారంభించు</translation> +<translation id="2799223571221894425">మళ్లీ ప్రారంభించండి</translation> <translation id="2847461019998147611">Google Chromeను ఈ భాషలో ప్రదర్శించు</translation> <translation id="2857540653560290388">Chromeను ప్రారంభిస్తోంది...</translation> <translation id="2857972467023607093">ఈ ఖాతాతో ఇప్పటికే ఒక Chrome ప్రొఫైల్ ఉంది</translation> @@ -243,7 +243,7 @@ <translation id="5795887333006832406"><ph name="PAGE_TITLE" /> - Google Chrome Canary</translation> <translation id="5804318322022881572">Chromeను ప్రారంభించడం సాధ్యపడలేదు. మళ్లీ ప్రయత్నించండి.</translation> <translation id="5867197326698922595">పాస్వర్డ్లను ఎడిట్ చేయడానికి Google Chrome ప్రయత్నిస్తోంది.</translation> -<translation id="5895138241574237353">మళ్ళీ ప్రారంభించు</translation> +<translation id="5895138241574237353">మళ్ళీ ప్రారంభించండి</translation> <translation id="5901850848447342934">మీరు Chromeను మూసివేసినప్పుడు మీరు <ph name="BEGIN_BOLD" />చాలా వరకు సైట్ల నుండి సైన్ అవుట్ అవుతారు.<ph name="END_BOLD" /> సింక్ ఆఫ్లో ఉంటే, మీరు <ph name="BEGIN_BOLD" />Google సర్వీస్లు, అలాగే Chrome నుండి కూడా సైన్ అవుట్ అవుతారు<ph name="END_BOLD" />.</translation> <translation id="5903106910045431592"><ph name="PAGE_TITLE" /> - నెట్వర్క్ సైన్ ఇన్</translation> <translation id="5924017743176219022">ఇంటర్నెట్కు కనెక్ట్ చేస్తోంది...</translation>
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp index aeb96344..a4bc515a 100644 --- a/chrome/app/settings_strings.grdp +++ b/chrome/app/settings_strings.grdp
@@ -1829,6 +1829,18 @@ <message name="IDS_SETTINGS_TOPICS_PAGE_TOGGLE_SUB_LABEL" translateable="false" desc="Subabel for the toggle in the Topics preferences page."> Vivamus nibh turpis, varius quis nisi vel, porta laoreet tellus. Mauris porta imperdiet venenatis </message> + <message name="IDS_SETTINGS_TOPICS_PAGE_CURRENT_TOPICS_HEADING" translateable="false" desc="Section title for the current Topics list underneath toggle in the Topics preferences page."> + Mauris at lectus + </message> + <message name="IDS_SETTINGS_TOPICS_PAGE_CURRENT_TOPICS_DESCRIPTION" translateable="false" desc="Section description for the current Topics list in the Topics preferences page."> + Nulla tincidunt iaculis nulla, sit amet viverra massa luctus nec. Integer eget pellentesque magna, et venenatis lorem. Integer a porta elit. Eget bibendum neque. + </message> + <message name="IDS_SETTINGS_TOPICS_PAGE_CURRENT_TOPICS_DESCRIPTION_DISABLED" translateable="false" desc="Section description for the current Topics list when Topics is disabled in the Topics preferences page."> + Sed porta viverra lacus ut euismod. Integer a cursus metus, ac ultricies libero. + </message> + <message name="IDS_SETTINGS_TOPICS_PAGE_CURRENT_TOPICS_DESCRIPTION_EMPTY" translateable="false" desc="Section description for the current Topics list when the Topics list is empty in the Topics preferences page."> + Curabitur sagittis sapien ut turpis interdum, vitae porttitor sem pretium. Vestibulum sem mauris, ultrices ac massa sit amet, sodales aliquet est. + </message> <!-- Privacy Sandbox Settings 4 - Fledge Page --> <message name="IDS_SETTINGS_FLEDGE_PAGE_TITLE" translateable="false" desc="Title for the Fledge preferences page.">
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index 7dbf7ac..44c56811 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -1041,6 +1041,8 @@ "password_manager/account_password_store_factory.h", "password_manager/affiliation_service_factory.cc", "password_manager/affiliation_service_factory.h", + "password_manager/affiliations_prefetcher_factory.cc", + "password_manager/affiliations_prefetcher_factory.h", "password_manager/bulk_leak_check_service_factory.cc", "password_manager/bulk_leak_check_service_factory.h", "password_manager/chrome_password_manager_client.cc", @@ -3248,6 +3250,8 @@ "touch_to_fill/touch_to_fill_controller_autofill_delegate.h", "touch_to_fill/touch_to_fill_controller_delegate.cc", "touch_to_fill/touch_to_fill_controller_delegate.h", + "touch_to_fill/touch_to_fill_controller_webauthn_delegate.cc", + "touch_to_fill/touch_to_fill_controller_webauthn_delegate.h", "touch_to_fill/touch_to_fill_webauthn_credential.cc", "touch_to_fill/touch_to_fill_webauthn_credential.h", "translate/android/translate_bridge.cc",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index 1a3a841..fe1d53a 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -9569,6 +9569,10 @@ FEATURE_VALUE_TYPE(ash::features::kPrintingPpdChannel)}, #endif + {"storage-buckets", flag_descriptions::kStorageBucketsName, + flag_descriptions::kStorageBucketsDescription, kOsAll, + FEATURE_VALUE_TYPE(blink::features::kStorageBuckets)}, + // NOTE: Adding a new flag requires adding a corresponding entry to enum // "LoginCustomFlags" in tools/metrics/histograms/enums.xml. See "Flag // Histograms" in tools/metrics/histograms/README.md (run the
diff --git a/chrome/browser/apps/app_service/app_icon/app_icon_factory_unittest.cc b/chrome/browser/apps/app_service/app_icon/app_icon_factory_unittest.cc index e628c1e..508bc22 100644 --- a/chrome/browser/apps/app_service/app_icon/app_icon_factory_unittest.cc +++ b/chrome/browser/apps/app_service/app_icon/app_icon_factory_unittest.cc
@@ -36,8 +36,8 @@ #include "ash/components/arc/mojom/intent_helper.mojom.h" #include "ash/constants/ash_features.h" #include "chrome/browser/apps/icon_standardizer.h" +#include "chrome/browser/ash/app_list/md_icon_normalizer.h" #include "chrome/browser/chromeos/arc/icon_decode_request.h" -#include "chrome/browser/ui/app_list/md_icon_normalizer.h" #include "chrome/common/chrome_features.h" #include "chrome/grit/chrome_unscaled_resources.h" #endif
diff --git a/chrome/browser/apps/app_service/app_icon/app_icon_loader.cc b/chrome/browser/apps/app_service/app_icon/app_icon_loader.cc index ab6104e..e7e63c2 100644 --- a/chrome/browser/apps/app_service/app_icon/app_icon_loader.cc +++ b/chrome/browser/apps/app_service/app_icon/app_icon_loader.cc
@@ -50,8 +50,8 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) #include "chrome/browser/apps/icon_standardizer.h" +#include "chrome/browser/ash/app_list/md_icon_normalizer.h" #include "chrome/browser/chromeos/arc/icon_decode_request.h" -#include "chrome/browser/ui/app_list/md_icon_normalizer.h" #include "chrome/grit/chrome_unscaled_resources.h" #endif
diff --git a/chrome/browser/apps/app_service/app_icon/web_app_icon_unittest.cc b/chrome/browser/apps/app_service/app_icon/web_app_icon_unittest.cc index 10448f2..0f997d8e 100644 --- a/chrome/browser/apps/app_service/app_icon/web_app_icon_unittest.cc +++ b/chrome/browser/apps/app_service/app_icon/web_app_icon_unittest.cc
@@ -56,8 +56,8 @@ #include "chrome/browser/apps/app_service/app_service_proxy.h" #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" #include "chrome/browser/apps/icon_standardizer.h" +#include "chrome/browser/ash/app_list/md_icon_normalizer.h" #include "chrome/browser/chromeos/arc/icon_decode_request.h" -#include "chrome/browser/ui/app_list/md_icon_normalizer.h" #include "chrome/common/chrome_features.h" #include "chrome/grit/chrome_unscaled_resources.h" #include "components/services/app_service/public/cpp/icon_loader.h"
diff --git a/chrome/browser/apps/app_service/publishers/extension_apps_base.cc b/chrome/browser/apps/app_service/publishers/extension_apps_base.cc index 709135e7..a4452f6 100644 --- a/chrome/browser/apps/app_service/publishers/extension_apps_base.cc +++ b/chrome/browser/apps/app_service/publishers/extension_apps_base.cc
@@ -23,12 +23,12 @@ #include "chrome/browser/apps/app_service/launch_utils.h" #include "chrome/browser/apps/app_service/publishers/extension_apps_enable_flow.h" #include "chrome/browser/apps/app_service/publishers/extension_apps_util.h" +#include "chrome/browser/ash/app_list/extension_app_utils.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_util.h" #include "chrome/browser/extensions/launch_util.h" #include "chrome/browser/prefs/incognito_mode_prefs.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/extension_app_utils.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/browser_navigator.h"
diff --git a/chrome/browser/apps/app_service/publishers/extension_apps_chromeos.cc b/chrome/browser/apps/app_service/publishers/extension_apps_chromeos.cc index 0a61b3a..43b36a5d 100644 --- a/chrome/browser/apps/app_service/publishers/extension_apps_chromeos.cc +++ b/chrome/browser/apps/app_service/publishers/extension_apps_chromeos.cc
@@ -33,6 +33,7 @@ #include "chrome/browser/apps/app_service/metrics/app_service_metrics.h" #include "chrome/browser/apps/app_service/publishers/extension_apps_util.h" #include "chrome/browser/ash/app_list/arc/arc_app_utils.h" +#include "chrome/browser/ash/app_list/extension_app_utils.h" #include "chrome/browser/ash/arc/arc_util.h" #include "chrome/browser/ash/child_accounts/time_limits/app_time_limit_interface.h" #include "chrome/browser/ash/crosapi/browser_util.h" @@ -52,7 +53,6 @@ #include "chrome/browser/notifications/notification_display_service_factory.h" #include "chrome/browser/policy/system_features_disable_list_policy_handler.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/extension_app_utils.h" #include "chrome/browser/ui/ash/multi_user/multi_user_util.h" #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager_helper.h" #include "chrome/browser/ui/ash/session_controller_client_impl.h"
diff --git a/chrome/browser/apps/platform_apps/api/enterprise_remote_apps/enterprise_remote_apps_apitest.cc b/chrome/browser/apps/platform_apps/api/enterprise_remote_apps/enterprise_remote_apps_apitest.cc index 70ee69ea..a87c32b 100644 --- a/chrome/browser/apps/platform_apps/api/enterprise_remote_apps/enterprise_remote_apps_apitest.cc +++ b/chrome/browser/apps/platform_apps/api/enterprise_remote_apps/enterprise_remote_apps_apitest.cc
@@ -16,6 +16,7 @@ #include "base/files/file_path.h" #include "base/path_service.h" #include "base/values.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" #include "chrome/browser/ash/login/test/embedded_policy_test_server_mixin.h" #include "chrome/browser/ash/login/test/session_manager_state_waiter.h" #include "chrome/browser/ash/login/wizard_controller.h" @@ -27,7 +28,6 @@ #include "chrome/browser/ash/remote_apps/remote_apps_model.h" #include "chrome/browser/extensions/chrome_test_extension_loader.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" #include "chrome/browser/ui/ash/shelf/chrome_shelf_controller.h" #include "chrome/common/chrome_paths.h" #include "components/policy/proto/chrome_device_policy.pb.h"
diff --git a/chrome/browser/ash/BUILD.gn b/chrome/browser/ash/BUILD.gn index 04b7947..77f999a 100644 --- a/chrome/browser/ash/BUILD.gn +++ b/chrome/browser/ash/BUILD.gn
@@ -2352,6 +2352,8 @@ "policy/remote_commands/crd_logging.h", "policy/remote_commands/crd_remote_command_utils.cc", "policy/remote_commands/crd_remote_command_utils.h", + "policy/remote_commands/device_command_fetch_crd_availability_info_job.cc", + "policy/remote_commands/device_command_fetch_crd_availability_info_job.h", "policy/remote_commands/device_command_fetch_status_job.cc", "policy/remote_commands/device_command_fetch_status_job.h", "policy/remote_commands/device_command_get_available_routines_job.cc", @@ -4836,6 +4838,7 @@ "policy/off_hours/off_hours_policy_applier_unittest.cc", "policy/off_hours/off_hours_proto_parser_unittest.cc", "policy/remote_commands/crd_host_delegate_unittest.cc", + "policy/remote_commands/device_command_fetch_crd_availability_info_job_unittest.cc", "policy/remote_commands/device_command_get_available_routines_job_unittest.cc", "policy/remote_commands/device_command_get_routine_update_job_unittest.cc", "policy/remote_commands/device_command_refresh_machine_certificate_job_unittest.cc",
diff --git a/chrome/browser/ash/accessibility/spoken_feedback_app_list_browsertest.cc b/chrome/browser/ash/accessibility/spoken_feedback_app_list_browsertest.cc index e2e32691..7fdd1c3 100644 --- a/chrome/browser/ash/accessibility/spoken_feedback_app_list_browsertest.cc +++ b/chrome/browser/ash/accessibility/spoken_feedback_app_list_browsertest.cc
@@ -16,13 +16,13 @@ #include "base/test/scoped_feature_list.h" #include "base/test/simple_test_tick_clock.h" #include "chrome/browser/ash/accessibility/spoken_feedback_browsertest.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" +#include "chrome/browser/ash/app_list/chrome_app_list_model_updater.h" #include "chrome/browser/ash/app_list/search/chrome_search_result.h" #include "chrome/browser/ash/app_list/search/search_controller_impl.h" #include "chrome/browser/ash/app_list/search/search_provider.h" #include "chrome/browser/ash/app_list/test/chrome_app_list_test_support.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" -#include "chrome/browser/ui/app_list/chrome_app_list_model_updater.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_window.h" #include "chrome/common/chrome_switches.h"
diff --git a/chrome/browser/ash/android_sms/android_sms_app_manager_impl.cc b/chrome/browser/ash/android_sms/android_sms_app_manager_impl.cc index a79130f3..2e316b0 100644 --- a/chrome/browser/ash/android_sms/android_sms_app_manager_impl.cc +++ b/chrome/browser/ash/android_sms/android_sms_app_manager_impl.cc
@@ -14,8 +14,8 @@ #include "chrome/browser/apps/app_service/launch_utils.h" #include "chrome/browser/ash/android_sms/android_sms_app_setup_controller.h" #include "chrome/browser/ash/android_sms/android_sms_urls.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" #include "chrome/browser/web_applications/web_app_provider.h" #include "chromeos/ash/components/multidevice/logging/logging.h" #include "components/prefs/pref_registry_simple.h"
diff --git a/chrome/browser/ash/android_sms/android_sms_service_factory.cc b/chrome/browser/ash/android_sms/android_sms_service_factory.cc index a7de250..b125e64 100644 --- a/chrome/browser/ash/android_sms/android_sms_service_factory.cc +++ b/chrome/browser/ash/android_sms/android_sms_service_factory.cc
@@ -7,12 +7,12 @@ #include "ash/constants/ash_features.h" #include "base/feature_list.h" #include "base/no_destructor.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" #include "chrome/browser/ash/multidevice_setup/multidevice_setup_client_factory.h" #include "chrome/browser/ash/profiles/profile_helper.h" #include "chrome/browser/content_settings/host_content_settings_map_factory.h" #include "chrome/browser/notifications/notification_display_service_factory.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" #include "chrome/browser/web_applications/web_app_provider.h" #include "chrome/browser/web_applications/web_app_provider_factory.h" #include "chrome/browser/web_applications/web_app_utils.h"
diff --git a/chrome/browser/ash/app_list/DEPS b/chrome/browser/ash/app_list/DEPS index 722a4fe..1c60fc26 100644 --- a/chrome/browser/ash/app_list/DEPS +++ b/chrome/browser/ash/app_list/DEPS
@@ -1,6 +1,3 @@ -# TODO(https://crbug.com/1164001): When this file is edited, same file in -# //chrome/browser/ui/app_list should be updated as well. We need -# to sync both files until the migration is done. include_rules = [ "+ash/app_list/model", "+ash/resources",
diff --git a/chrome/browser/ash/app_list/DIR_METADATA b/chrome/browser/ash/app_list/DIR_METADATA index 935cf66..ec76141 100644 --- a/chrome/browser/ash/app_list/DIR_METADATA +++ b/chrome/browser/ash/app_list/DIR_METADATA
@@ -1,6 +1,3 @@ -# TODO(https://crbug.com/1164001): When this file is edited, same file in -# //chrome/browser/ash/app_list should be updated as well. We need -# to sync both files until the migration is done. monorail { component: "UI>Shell>Launcher" }
diff --git a/chrome/browser/ui/app_list/app_context_menu.cc b/chrome/browser/ash/app_list/app_context_menu.cc similarity index 97% rename from chrome/browser/ui/app_list/app_context_menu.cc rename to chrome/browser/ash/app_list/app_context_menu.cc index 934de59c..41bbdf7 100644 --- a/chrome/browser/ui/app_list/app_context_menu.cc +++ b/chrome/browser/ash/app_list/app_context_menu.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/app_list/app_context_menu.h" +#include "chrome/browser/ash/app_list/app_context_menu.h" #include <utility> @@ -11,8 +11,8 @@ #include "ash/resources/vector_icons/vector_icons.h" #include "chrome/app/vector_icons/vector_icons.h" #include "chrome/browser/apps/app_service/menu_util.h" -#include "chrome/browser/ui/app_list/app_context_menu_delegate.h" -#include "chrome/browser/ui/app_list/app_list_controller_delegate.h" +#include "chrome/browser/ash/app_list/app_context_menu_delegate.h" +#include "chrome/browser/ash/app_list/app_list_controller_delegate.h" #include "chrome/grit/generated_resources.h" #include "components/vector_icons/vector_icons.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/chrome/browser/ui/app_list/app_context_menu.h b/chrome/browser/ash/app_list/app_context_menu.h similarity index 93% rename from chrome/browser/ui/app_list/app_context_menu.h rename to chrome/browser/ash/app_list/app_context_menu.h index cfad082..f96b9c0 100644 --- a/chrome/browser/ui/app_list/app_context_menu.h +++ b/chrome/browser/ash/app_list/app_context_menu.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_UI_APP_LIST_APP_CONTEXT_MENU_H_ -#define CHROME_BROWSER_UI_APP_LIST_APP_CONTEXT_MENU_H_ +#ifndef CHROME_BROWSER_ASH_APP_LIST_APP_CONTEXT_MENU_H_ +#define CHROME_BROWSER_ASH_APP_LIST_APP_CONTEXT_MENU_H_ #include <memory> #include <string> @@ -75,4 +75,4 @@ } // namespace app_list -#endif // CHROME_BROWSER_UI_APP_LIST_APP_CONTEXT_MENU_H_ +#endif // CHROME_BROWSER_ASH_APP_LIST_APP_CONTEXT_MENU_H_
diff --git a/chrome/browser/ui/app_list/app_context_menu_delegate.h b/chrome/browser/ash/app_list/app_context_menu_delegate.h similarity index 66% rename from chrome/browser/ui/app_list/app_context_menu_delegate.h rename to chrome/browser/ash/app_list/app_context_menu_delegate.h index 43bd486..c14f5e0 100644 --- a/chrome/browser/ui/app_list/app_context_menu_delegate.h +++ b/chrome/browser/ash/app_list/app_context_menu_delegate.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_UI_APP_LIST_APP_CONTEXT_MENU_DELEGATE_H_ -#define CHROME_BROWSER_UI_APP_LIST_APP_CONTEXT_MENU_DELEGATE_H_ +#ifndef CHROME_BROWSER_ASH_APP_LIST_APP_CONTEXT_MENU_DELEGATE_H_ +#define CHROME_BROWSER_ASH_APP_LIST_APP_CONTEXT_MENU_DELEGATE_H_ namespace app_list { @@ -18,4 +18,4 @@ } // namespace app_list -#endif // CHROME_BROWSER_UI_APP_LIST_APP_CONTEXT_MENU_DELEGATE_H_ +#endif // CHROME_BROWSER_ASH_APP_LIST_APP_CONTEXT_MENU_DELEGATE_H_
diff --git a/chrome/browser/ui/app_list/app_context_menu_unittest.cc b/chrome/browser/ash/app_list/app_context_menu_unittest.cc similarity index 98% rename from chrome/browser/ui/app_list/app_context_menu_unittest.cc rename to chrome/browser/ash/app_list/app_context_menu_unittest.cc index 7f06c74..33f4d9a 100644 --- a/chrome/browser/ui/app_list/app_context_menu_unittest.cc +++ b/chrome/browser/ash/app_list/app_context_menu_unittest.cc
@@ -23,10 +23,14 @@ #include "chrome/browser/apps/app_service/app_service_proxy.h" #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" #include "chrome/browser/apps/app_service/app_service_test.h" +#include "chrome/browser/ash/app_list/app_context_menu_delegate.h" +#include "chrome/browser/ash/app_list/app_list_controller_delegate.h" +#include "chrome/browser/ash/app_list/app_list_test_util.h" #include "chrome/browser/ash/app_list/app_service/app_service_app_item.h" #include "chrome/browser/ash/app_list/app_service/app_service_context_menu.h" #include "chrome/browser/ash/app_list/arc/arc_app_list_prefs.h" #include "chrome/browser/ash/app_list/arc/arc_app_test.h" +#include "chrome/browser/ash/app_list/chrome_app_list_item.h" #include "chrome/browser/ash/app_list/internal_app/internal_app_metadata.h" #include "chrome/browser/ash/app_list/test/fake_app_list_model_updater.h" #include "chrome/browser/ash/app_list/test/test_app_list_controller_delegate.h" @@ -37,10 +41,6 @@ #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_util.h" #include "chrome/browser/extensions/menu_manager_factory.h" -#include "chrome/browser/ui/app_list/app_context_menu_delegate.h" -#include "chrome/browser/ui/app_list/app_list_controller_delegate.h" -#include "chrome/browser/ui/app_list/app_list_test_util.h" -#include "chrome/browser/ui/app_list/chrome_app_list_item.h" #include "chrome/common/chrome_paths.h" #include "chrome/test/base/testing_profile.h" #include "components/app_constants/constants.h"
diff --git a/chrome/browser/ui/app_list/app_list_client_impl.cc b/chrome/browser/ash/app_list/app_list_client_impl.cc similarity index 98% rename from chrome/browser/ui/app_list/app_list_client_impl.cc rename to chrome/browser/ash/app_list/app_list_client_impl.cc index 3ac4bda..23846cb 100644 --- a/chrome/browser/ui/app_list/app_list_client_impl.cc +++ b/chrome/browser/ash/app_list/app_list_client_impl.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/app_list/app_list_client_impl.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" #include <stddef.h> @@ -19,6 +19,12 @@ #include "base/metrics/histogram_macros.h" #include "base/metrics/user_metrics.h" #include "base/strings/strcat.h" +#include "chrome/browser/ash/app_list/app_list_controller_delegate.h" +#include "chrome/browser/ash/app_list/app_list_model_updater.h" +#include "chrome/browser/ash/app_list/app_list_notifier_impl.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" +#include "chrome/browser/ash/app_list/app_sync_ui_state_watcher.h" #include "chrome/browser/ash/app_list/search/chrome_search_result.h" #include "chrome/browser/ash/app_list/search/cros_action_history/cros_action_recorder.h" #include "chrome/browser/ash/app_list/search/ranking/launch_data.h" @@ -29,12 +35,7 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/search_engines/template_url_service_factory.h" -#include "chrome/browser/ui/app_list/app_list_controller_delegate.h" -#include "chrome/browser/ui/app_list/app_list_model_updater.h" -#include "chrome/browser/ui/app_list/app_list_notifier_impl.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" -#include "chrome/browser/ui/app_list/app_sync_ui_state_watcher.h" +#include "chrome/browser/ui/app_list/app_list_util.h" #include "chrome/browser/ui/ash/shelf/app_shortcut_shelf_item_controller.h" #include "chrome/browser/ui/ash/shelf/chrome_shelf_controller.h" #include "chrome/browser/ui/ash/shelf/chrome_shelf_controller_util.h"
diff --git a/chrome/browser/ui/app_list/app_list_client_impl.h b/chrome/browser/ash/app_list/app_list_client_impl.h similarity index 97% rename from chrome/browser/ui/app_list/app_list_client_impl.h rename to chrome/browser/ash/app_list/app_list_client_impl.h index 4b51d03..968d651 100644 --- a/chrome/browser/ui/app_list/app_list_client_impl.h +++ b/chrome/browser/ash/app_list/app_list_client_impl.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_UI_APP_LIST_APP_LIST_CLIENT_IMPL_H_ -#define CHROME_BROWSER_UI_APP_LIST_APP_LIST_CLIENT_IMPL_H_ +#ifndef CHROME_BROWSER_ASH_APP_LIST_APP_LIST_CLIENT_IMPL_H_ +#define CHROME_BROWSER_ASH_APP_LIST_APP_LIST_CLIENT_IMPL_H_ #include <stdint.h> @@ -19,7 +19,7 @@ #include "base/memory/weak_ptr.h" #include "base/scoped_observation.h" #include "base/time/time.h" -#include "chrome/browser/ui/app_list/app_list_controller_delegate.h" +#include "chrome/browser/ash/app_list/app_list_controller_delegate.h" #include "components/search_engines/template_url_service.h" #include "components/search_engines/template_url_service_observer.h" #include "components/session_manager/core/session_manager_observer.h" @@ -250,4 +250,4 @@ base::WeakPtrFactory<AppListClientImpl> weak_ptr_factory_{this}; }; -#endif // CHROME_BROWSER_UI_APP_LIST_APP_LIST_CLIENT_IMPL_H_ +#endif // CHROME_BROWSER_ASH_APP_LIST_APP_LIST_CLIENT_IMPL_H_
diff --git a/chrome/browser/ui/app_list/app_list_client_impl_browsertest.cc b/chrome/browser/ash/app_list/app_list_client_impl_browsertest.cc similarity index 98% rename from chrome/browser/ui/app_list/app_list_client_impl_browsertest.cc rename to chrome/browser/ash/app_list/app_list_client_impl_browsertest.cc index 0174923..58b5524 100644 --- a/chrome/browser/ui/app_list/app_list_client_impl_browsertest.cc +++ b/chrome/browser/ash/app_list/app_list_client_impl_browsertest.cc
@@ -27,6 +27,11 @@ #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" #include "chrome/browser/apps/app_service/launch_utils.h" #include "chrome/browser/apps/platform_apps/app_browsertest_util.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" +#include "chrome/browser/ash/app_list/app_list_controller_delegate.h" +#include "chrome/browser/ash/app_list/app_list_model_updater.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" +#include "chrome/browser/ash/app_list/chrome_app_list_item.h" #include "chrome/browser/ash/app_list/search/search_controller.h" #include "chrome/browser/ash/app_list/test/chrome_app_list_test_support.h" #include "chrome/browser/ash/login/demo_mode/demo_session.h" @@ -42,11 +47,6 @@ #include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/search_engines/template_url_service_factory.h" #include "chrome/browser/signin/identity_test_environment_profile_adaptor.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" -#include "chrome/browser/ui/app_list/app_list_controller_delegate.h" -#include "chrome/browser/ui/app_list/app_list_model_updater.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" -#include "chrome/browser/ui/app_list/chrome_app_list_item.h" #include "chrome/browser/ui/ash/system_web_apps/system_web_app_ui_utils.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_finder.h"
diff --git a/chrome/browser/ui/app_list/app_list_client_interactive_uitest.cc b/chrome/browser/ash/app_list/app_list_client_interactive_uitest.cc similarity index 93% rename from chrome/browser/ui/app_list/app_list_client_interactive_uitest.cc rename to chrome/browser/ash/app_list/app_list_client_interactive_uitest.cc index 617ea2b..1009b6b 100644 --- a/chrome/browser/ui/app_list/app_list_client_interactive_uitest.cc +++ b/chrome/browser/ash/app_list/app_list_client_interactive_uitest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/app_list/app_list_client_impl.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" #include "chrome/browser/ui/browser.h" #include "chrome/test/base/in_process_browser_test.h"
diff --git a/chrome/browser/ui/app_list/app_list_controller_delegate.cc b/chrome/browser/ash/app_list/app_list_controller_delegate.cc similarity index 98% rename from chrome/browser/ui/app_list/app_list_controller_delegate.cc rename to chrome/browser/ash/app_list/app_list_controller_delegate.cc index 9ab78162..9462207 100644 --- a/chrome/browser/ui/app_list/app_list_controller_delegate.cc +++ b/chrome/browser/ash/app_list/app_list_controller_delegate.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/app_list/app_list_controller_delegate.h" +#include "chrome/browser/ash/app_list/app_list_controller_delegate.h" #include <utility>
diff --git a/chrome/browser/ui/app_list/app_list_controller_delegate.h b/chrome/browser/ash/app_list/app_list_controller_delegate.h similarity index 94% rename from chrome/browser/ui/app_list/app_list_controller_delegate.h rename to chrome/browser/ash/app_list/app_list_controller_delegate.h index fc96229..009c0cd 100644 --- a/chrome/browser/ui/app_list/app_list_controller_delegate.h +++ b/chrome/browser/ash/app_list/app_list_controller_delegate.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_UI_APP_LIST_APP_LIST_CONTROLLER_DELEGATE_H_ -#define CHROME_BROWSER_UI_APP_LIST_APP_LIST_CONTROLLER_DELEGATE_H_ +#ifndef CHROME_BROWSER_ASH_APP_LIST_APP_LIST_CONTROLLER_DELEGATE_H_ +#define CHROME_BROWSER_ASH_APP_LIST_APP_LIST_CONTROLLER_DELEGATE_H_ #include <stdint.h> @@ -111,4 +111,4 @@ base::WeakPtrFactory<AppListControllerDelegate> weak_ptr_factory_{this}; }; -#endif // CHROME_BROWSER_UI_APP_LIST_APP_LIST_CONTROLLER_DELEGATE_H_ +#endif // CHROME_BROWSER_ASH_APP_LIST_APP_LIST_CONTROLLER_DELEGATE_H_
diff --git a/chrome/browser/ui/app_list/app_list_model_builder.cc b/chrome/browser/ash/app_list/app_list_model_builder.cc similarity index 95% rename from chrome/browser/ui/app_list/app_list_model_builder.cc rename to chrome/browser/ash/app_list/app_list_model_builder.cc index ef9ddc3..ede3475 100644 --- a/chrome/browser/ui/app_list/app_list_model_builder.cc +++ b/chrome/browser/ash/app_list/app_list_model_builder.cc
@@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/app_list/app_list_model_builder.h" +#include "chrome/browser/ash/app_list/app_list_model_builder.h" #include <utility> #include <vector> #include "base/logging.h" -#include "chrome/browser/ui/app_list/chrome_app_list_item.h" +#include "chrome/browser/ash/app_list/chrome_app_list_item.h" //////////////////////////////////////////////////////////////////////////////// // AppListModelBuilder::ScopedAppPositionInitCallbackForTest
diff --git a/chrome/browser/ui/app_list/app_list_model_builder.h b/chrome/browser/ash/app_list/app_list_model_builder.h similarity index 91% rename from chrome/browser/ui/app_list/app_list_model_builder.h rename to chrome/browser/ash/app_list/app_list_model_builder.h index d153bf7..f3958e70 100644 --- a/chrome/browser/ui/app_list/app_list_model_builder.h +++ b/chrome/browser/ash/app_list/app_list_model_builder.h
@@ -2,14 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_UI_APP_LIST_APP_LIST_MODEL_BUILDER_H_ -#define CHROME_BROWSER_UI_APP_LIST_APP_LIST_MODEL_BUILDER_H_ +#ifndef CHROME_BROWSER_ASH_APP_LIST_APP_LIST_MODEL_BUILDER_H_ +#define CHROME_BROWSER_ASH_APP_LIST_APP_LIST_MODEL_BUILDER_H_ #include <memory> #include <string> -#include "chrome/browser/ui/app_list/app_list_model_updater.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/app_list_model_updater.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" #include "components/sync/protocol/app_list_specifics.pb.h" class AppListControllerDelegate; @@ -97,4 +97,4 @@ AppPositionInitCallback* position_setter_for_test_ = nullptr; }; -#endif // CHROME_BROWSER_UI_APP_LIST_APP_LIST_MODEL_BUILDER_H_ +#endif // CHROME_BROWSER_ASH_APP_LIST_APP_LIST_MODEL_BUILDER_H_
diff --git a/chrome/browser/ui/app_list/app_list_model_updater.cc b/chrome/browser/ash/app_list/app_list_model_updater.cc similarity index 93% rename from chrome/browser/ui/app_list/app_list_model_updater.cc rename to chrome/browser/ash/app_list/app_list_model_updater.cc index e3bc4f0..9c3a372 100644 --- a/chrome/browser/ui/app_list/app_list_model_updater.cc +++ b/chrome/browser/ash/app_list/app_list_model_updater.cc
@@ -1,13 +1,14 @@ // Copyright 2018 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/app_list/app_list_model_updater.h" + +#include "chrome/browser/ash/app_list/app_list_model_updater.h" #include <algorithm> #include "ash/public/cpp/app_list/app_list_config.h" #include "ash/public/cpp/app_list/app_list_types.h" -#include "chrome/browser/ui/app_list/chrome_app_list_item.h" +#include "chrome/browser/ash/app_list/chrome_app_list_item.h" namespace {
diff --git a/chrome/browser/ui/app_list/app_list_model_updater.h b/chrome/browser/ash/app_list/app_list_model_updater.h similarity index 93% rename from chrome/browser/ui/app_list/app_list_model_updater.h rename to chrome/browser/ash/app_list/app_list_model_updater.h index 1abfca0a..ba9cb898 100644 --- a/chrome/browser/ui/app_list/app_list_model_updater.h +++ b/chrome/browser/ash/app_list/app_list_model_updater.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_UI_APP_LIST_APP_LIST_MODEL_UPDATER_H_ -#define CHROME_BROWSER_UI_APP_LIST_APP_LIST_MODEL_UPDATER_H_ +#ifndef CHROME_BROWSER_ASH_APP_LIST_APP_LIST_MODEL_UPDATER_H_ +#define CHROME_BROWSER_ASH_APP_LIST_APP_LIST_MODEL_UPDATER_H_ #include <memory> #include <string> @@ -12,9 +12,9 @@ #include "ash/public/cpp/app_list/app_list_types.h" #include "base/callback_forward.h" #include "base/containers/flat_map.h" -#include "chrome/browser/ui/app_list/app_list_model_updater_observer.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" -#include "chrome/browser/ui/app_list/chrome_app_list_item.h" +#include "chrome/browser/ash/app_list/app_list_model_updater_observer.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/chrome_app_list_item.h" class ChromeSearchResult; @@ -151,4 +151,4 @@ const int model_id_; }; -#endif // CHROME_BROWSER_UI_APP_LIST_APP_LIST_MODEL_UPDATER_H_ +#endif // CHROME_BROWSER_ASH_APP_LIST_APP_LIST_MODEL_UPDATER_H_
diff --git a/chrome/browser/ui/app_list/app_list_model_updater_observer.h b/chrome/browser/ash/app_list/app_list_model_updater_observer.h similarity index 79% rename from chrome/browser/ui/app_list/app_list_model_updater_observer.h rename to chrome/browser/ash/app_list/app_list_model_updater_observer.h index 5b0acd9..7e639c1 100644 --- a/chrome/browser/ui/app_list/app_list_model_updater_observer.h +++ b/chrome/browser/ash/app_list/app_list_model_updater_observer.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_UI_APP_LIST_APP_LIST_MODEL_UPDATER_OBSERVER_H_ -#define CHROME_BROWSER_UI_APP_LIST_APP_LIST_MODEL_UPDATER_OBSERVER_H_ +#ifndef CHROME_BROWSER_ASH_APP_LIST_APP_LIST_MODEL_UPDATER_OBSERVER_H_ +#define CHROME_BROWSER_ASH_APP_LIST_APP_LIST_MODEL_UPDATER_OBSERVER_H_ #include "base/observer_list_types.h" @@ -27,4 +27,4 @@ virtual void OnAppListItemUpdated(ChromeAppListItem* item) {} }; -#endif // CHROME_BROWSER_UI_APP_LIST_APP_LIST_MODEL_UPDATER_OBSERVER_H_ +#endif // CHROME_BROWSER_ASH_APP_LIST_APP_LIST_MODEL_UPDATER_OBSERVER_H_
diff --git a/chrome/browser/ui/app_list/app_list_notifier_impl.cc b/chrome/browser/ash/app_list/app_list_notifier_impl.cc similarity index 99% rename from chrome/browser/ui/app_list/app_list_notifier_impl.cc rename to chrome/browser/ash/app_list/app_list_notifier_impl.cc index 01eb3f5..85a2121 100644 --- a/chrome/browser/ui/app_list/app_list_notifier_impl.cc +++ b/chrome/browser/ash/app_list/app_list_notifier_impl.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/app_list/app_list_notifier_impl.h" +#include "chrome/browser/ash/app_list/app_list_notifier_impl.h" #include "ash/public/cpp/app_list/app_list_controller.h" #include "base/check.h"
diff --git a/chrome/browser/ui/app_list/app_list_notifier_impl.h b/chrome/browser/ash/app_list/app_list_notifier_impl.h similarity index 97% rename from chrome/browser/ui/app_list/app_list_notifier_impl.h rename to chrome/browser/ash/app_list/app_list_notifier_impl.h index 3cce1c3..b62ecfb 100644 --- a/chrome/browser/ui/app_list/app_list_notifier_impl.h +++ b/chrome/browser/ash/app_list/app_list_notifier_impl.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_UI_APP_LIST_APP_LIST_NOTIFIER_IMPL_H_ -#define CHROME_BROWSER_UI_APP_LIST_APP_LIST_NOTIFIER_IMPL_H_ +#ifndef CHROME_BROWSER_ASH_APP_LIST_APP_LIST_NOTIFIER_IMPL_H_ +#define CHROME_BROWSER_ASH_APP_LIST_APP_LIST_NOTIFIER_IMPL_H_ #include <memory> #include <string> @@ -216,4 +216,4 @@ base::WeakPtrFactory<AppListNotifierImpl> weak_ptr_factory_{this}; }; -#endif // CHROME_BROWSER_UI_APP_LIST_APP_LIST_NOTIFIER_IMPL_H_ +#endif // CHROME_BROWSER_ASH_APP_LIST_APP_LIST_NOTIFIER_IMPL_H_
diff --git a/chrome/browser/ui/app_list/app_list_sort_browsertest.cc b/chrome/browser/ash/app_list/app_list_sort_browsertest.cc similarity index 99% rename from chrome/browser/ui/app_list/app_list_sort_browsertest.cc rename to chrome/browser/ash/app_list/app_list_sort_browsertest.cc index a891dcb..1b2cd395f 100644 --- a/chrome/browser/ui/app_list/app_list_sort_browsertest.cc +++ b/chrome/browser/ash/app_list/app_list_sort_browsertest.cc
@@ -18,14 +18,14 @@ #include "base/run_loop.h" #include "base/strings/safe_sprintf.h" #include "base/test/metrics/histogram_tester.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" +#include "chrome/browser/ash/app_list/app_list_model_updater.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" #include "chrome/browser/ash/app_list/test/chrome_app_list_test_support.h" #include "chrome/browser/ash/login/login_manager_test.h" #include "chrome/browser/ash/login/test/login_manager_mixin.h" #include "chrome/browser/ash/login/ui/user_adding_screen.h" #include "chrome/browser/extensions/extension_browsertest.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" -#include "chrome/browser/ui/app_list/app_list_model_updater.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" #include "chrome/common/pref_names.h" #include "components/prefs/pref_service.h" #include "content/public/test/browser_test.h"
diff --git a/chrome/browser/ui/app_list/app_list_sort_unittest.cc b/chrome/browser/ash/app_list/app_list_sort_unittest.cc similarity index 99% rename from chrome/browser/ui/app_list/app_list_sort_unittest.cc rename to chrome/browser/ash/app_list/app_list_sort_unittest.cc index caa0f4f5..665ccd5 100644 --- a/chrome/browser/ui/app_list/app_list_sort_unittest.cc +++ b/chrome/browser/ash/app_list/app_list_sort_unittest.cc
@@ -7,12 +7,12 @@ #include "ash/app_list/model/app_list_model.h" #include "ash/constants/ash_features.h" #include "base/containers/cxx20_erase_vector.h" +#include "chrome/browser/ash/app_list/app_list_model_updater.h" +#include "chrome/browser/ash/app_list/app_list_test_util.h" +#include "chrome/browser/ash/app_list/chrome_app_list_model_updater.h" #include "chrome/browser/ash/app_list/test/app_list_syncable_service_test_base.h" #include "chrome/browser/ash/app_list/test/test_app_list_controller.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_model_updater.h" -#include "chrome/browser/ui/app_list/app_list_test_util.h" -#include "chrome/browser/ui/app_list/chrome_app_list_model_updater.h" #include "chrome/common/pref_names.h" #include "chrome/test/base/testing_profile.h" #include "components/crx_file/id_util.h"
diff --git a/chrome/browser/ui/app_list/app_list_sync_model_sanitizer.cc b/chrome/browser/ash/app_list/app_list_sync_model_sanitizer.cc similarity index 97% rename from chrome/browser/ui/app_list/app_list_sync_model_sanitizer.cc rename to chrome/browser/ash/app_list/app_list_sync_model_sanitizer.cc index 3249e4b..1d40d94 100644 --- a/chrome/browser/ui/app_list/app_list_sync_model_sanitizer.cc +++ b/chrome/browser/ash/app_list/app_list_sync_model_sanitizer.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/app_list/app_list_sync_model_sanitizer.h" +#include "chrome/browser/ash/app_list/app_list_sync_model_sanitizer.h" #include <vector> @@ -12,8 +12,8 @@ #include "base/containers/contains.h" #include "base/guid.h" #include "base/strings/string_util.h" -#include "chrome/browser/ui/app_list/app_list_model_updater.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/app_list_model_updater.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" #include "components/sync/model/string_ordinal.h" namespace app_list {
diff --git a/chrome/browser/ui/app_list/app_list_sync_model_sanitizer.h b/chrome/browser/ash/app_list/app_list_sync_model_sanitizer.h similarity index 91% rename from chrome/browser/ui/app_list/app_list_sync_model_sanitizer.h rename to chrome/browser/ash/app_list/app_list_sync_model_sanitizer.h index 96c45706..ea06712 100644 --- a/chrome/browser/ui/app_list/app_list_sync_model_sanitizer.h +++ b/chrome/browser/ash/app_list/app_list_sync_model_sanitizer.h
@@ -2,15 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_UI_APP_LIST_APP_LIST_SYNC_MODEL_SANITIZER_H_ -#define CHROME_BROWSER_UI_APP_LIST_APP_LIST_SYNC_MODEL_SANITIZER_H_ +#ifndef CHROME_BROWSER_ASH_APP_LIST_APP_LIST_SYNC_MODEL_SANITIZER_H_ +#define CHROME_BROWSER_ASH_APP_LIST_APP_LIST_SYNC_MODEL_SANITIZER_H_ #include <map> #include <set> #include <string> #include <vector> -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" #include "components/sync/model/string_ordinal.h" namespace app_list { @@ -69,4 +69,4 @@ } // namespace app_list -#endif // CHROME_BROWSER_UI_APP_LIST_APP_LIST_SYNC_MODEL_SANITIZER_H_ +#endif // CHROME_BROWSER_ASH_APP_LIST_APP_LIST_SYNC_MODEL_SANITIZER_H_
diff --git a/chrome/browser/ui/app_list/app_list_syncable_service.cc b/chrome/browser/ash/app_list/app_list_syncable_service.cc similarity index 99% rename from chrome/browser/ui/app_list/app_list_syncable_service.cc rename to chrome/browser/ash/app_list/app_list_syncable_service.cc index 1113ffa7..6216955 100644 --- a/chrome/browser/ui/app_list/app_list_syncable_service.cc +++ b/chrome/browser/ash/app_list/app_list_syncable_service.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" #include <algorithm> #include <set> @@ -23,9 +23,14 @@ #include "build/build_config.h" #include "chrome/browser/apps/app_service/app_service_proxy.h" #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" +#include "chrome/browser/ash/app_list/app_list_model_updater.h" +#include "chrome/browser/ash/app_list/app_list_sync_model_sanitizer.h" #include "chrome/browser/ash/app_list/app_service/app_service_app_model_builder.h" #include "chrome/browser/ash/app_list/arc/arc_app_list_prefs.h" #include "chrome/browser/ash/app_list/arc/arc_app_utils.h" +#include "chrome/browser/ash/app_list/chrome_app_list_item.h" +#include "chrome/browser/ash/app_list/chrome_app_list_model_updater.h" #include "chrome/browser/ash/app_list/reorder/app_list_reorder_core.h" #include "chrome/browser/ash/app_list/reorder/app_list_reorder_util.h" #include "chrome/browser/ash/arc/arc_util.h" @@ -35,12 +40,7 @@ #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/sync/sync_service_factory.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" -#include "chrome/browser/ui/app_list/app_list_model_updater.h" -#include "chrome/browser/ui/app_list/app_list_sync_model_sanitizer.h" #include "chrome/browser/ui/app_list/app_list_util.h" -#include "chrome/browser/ui/app_list/chrome_app_list_item.h" -#include "chrome/browser/ui/app_list/chrome_app_list_model_updater.h" #include "chrome/browser/web_applications/web_app_id_constants.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/extensions/extension_constants.h"
diff --git a/chrome/browser/ui/app_list/app_list_syncable_service.h b/chrome/browser/ash/app_list/app_list_syncable_service.h similarity index 98% rename from chrome/browser/ui/app_list/app_list_syncable_service.h rename to chrome/browser/ash/app_list/app_list_syncable_service.h index 6da0b86..05c77a3 100644 --- a/chrome/browser/ui/app_list/app_list_syncable_service.h +++ b/chrome/browser/ash/app_list/app_list_syncable_service.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_UI_APP_LIST_APP_LIST_SYNCABLE_SERVICE_H_ -#define CHROME_BROWSER_UI_APP_LIST_APP_LIST_SYNCABLE_SERVICE_H_ +#ifndef CHROME_BROWSER_ASH_APP_LIST_APP_LIST_SYNCABLE_SERVICE_H_ +#define CHROME_BROWSER_ASH_APP_LIST_APP_LIST_SYNCABLE_SERVICE_H_ #include <stddef.h> @@ -473,4 +473,4 @@ } // namespace base -#endif // CHROME_BROWSER_UI_APP_LIST_APP_LIST_SYNCABLE_SERVICE_H_ +#endif // CHROME_BROWSER_ASH_APP_LIST_APP_LIST_SYNCABLE_SERVICE_H_
diff --git a/chrome/browser/ui/app_list/app_list_syncable_service_factory.cc b/chrome/browser/ash/app_list/app_list_syncable_service_factory.cc similarity index 96% rename from chrome/browser/ui/app_list/app_list_syncable_service_factory.cc rename to chrome/browser/ash/app_list/app_list_syncable_service_factory.cc index d4cce6d8..361734f4 100644 --- a/chrome/browser/ui/app_list/app_list_syncable_service_factory.cc +++ b/chrome/browser/ash/app_list/app_list_syncable_service_factory.cc
@@ -2,16 +2,16 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" #include <set> #include "build/build_config.h" #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" #include "chrome/browser/ash/app_list/arc/arc_app_list_prefs_factory.h" #include "chrome/browser/ash/app_list/search/files/file_suggest_keyed_service_factory.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" #include "components/prefs/pref_service.h" #include "extensions/browser/extension_system_provider.h" #include "extensions/browser/extensions_browser_client.h"
diff --git a/chrome/browser/ui/app_list/app_list_syncable_service_factory.h b/chrome/browser/ash/app_list/app_list_syncable_service_factory.h similarity index 88% rename from chrome/browser/ui/app_list/app_list_syncable_service_factory.h rename to chrome/browser/ash/app_list/app_list_syncable_service_factory.h index fb02a00..fdd90d7 100644 --- a/chrome/browser/ui/app_list/app_list_syncable_service_factory.h +++ b/chrome/browser/ash/app_list/app_list_syncable_service_factory.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_UI_APP_LIST_APP_LIST_SYNCABLE_SERVICE_FACTORY_H_ -#define CHROME_BROWSER_UI_APP_LIST_APP_LIST_SYNCABLE_SERVICE_FACTORY_H_ +#ifndef CHROME_BROWSER_ASH_APP_LIST_APP_LIST_SYNCABLE_SERVICE_FACTORY_H_ +#define CHROME_BROWSER_ASH_APP_LIST_APP_LIST_SYNCABLE_SERVICE_FACTORY_H_ #include <memory> @@ -52,4 +52,4 @@ } // namespace app_list -#endif // CHROME_BROWSER_UI_APP_LIST_APP_LIST_SYNCABLE_SERVICE_FACTORY_H_ +#endif // CHROME_BROWSER_ASH_APP_LIST_APP_LIST_SYNCABLE_SERVICE_FACTORY_H_
diff --git a/chrome/browser/ui/app_list/app_list_syncable_service_unittest.cc b/chrome/browser/ash/app_list/app_list_syncable_service_unittest.cc similarity index 99% rename from chrome/browser/ui/app_list/app_list_syncable_service_unittest.cc rename to chrome/browser/ash/app_list/app_list_syncable_service_unittest.cc index a982aeb..74c99dce 100644 --- a/chrome/browser/ui/app_list/app_list_syncable_service_unittest.cc +++ b/chrome/browser/ash/app_list/app_list_syncable_service_unittest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" #include <algorithm> #include <utility> @@ -20,16 +20,16 @@ #include "cc/base/math_util.h" #include "chrome/browser/apps/app_service/app_service_proxy.h" #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" +#include "chrome/browser/ash/app_list/app_list_model_updater.h" +#include "chrome/browser/ash/app_list/app_list_test_util.h" +#include "chrome/browser/ash/app_list/chrome_app_list_item.h" +#include "chrome/browser/ash/app_list/chrome_app_list_model_updater.h" #include "chrome/browser/ash/app_list/reorder/app_list_reorder_core.h" #include "chrome/browser/ash/app_list/test/app_list_syncable_service_test_base.h" #include "chrome/browser/ash/app_list/test/fake_app_list_model_updater.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/profiles/profile_manager.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" -#include "chrome/browser/ui/app_list/app_list_model_updater.h" -#include "chrome/browser/ui/app_list/app_list_test_util.h" -#include "chrome/browser/ui/app_list/chrome_app_list_item.h" -#include "chrome/browser/ui/app_list/chrome_app_list_model_updater.h" #include "chrome/browser/ui/settings_window_manager_chromeos.h" #include "chrome/browser/web_applications/test/web_app_install_test_utils.h" #include "chrome/browser/web_applications/web_app_id_constants.h"
diff --git a/chrome/browser/ui/app_list/app_list_test_util.cc b/chrome/browser/ash/app_list/app_list_test_util.cc similarity index 98% rename from chrome/browser/ui/app_list/app_list_test_util.cc rename to chrome/browser/ash/app_list/app_list_test_util.cc index 517be4e..389ff0a5 100644 --- a/chrome/browser/ui/app_list/app_list_test_util.cc +++ b/chrome/browser/ash/app_list/app_list_test_util.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/app_list/app_list_test_util.h" +#include "chrome/browser/ash/app_list/app_list_test_util.h" #include "base/feature_list.h" #include "base/files/file_path.h"
diff --git a/chrome/browser/ui/app_list/app_list_test_util.h b/chrome/browser/ash/app_list/app_list_test_util.h similarity index 91% rename from chrome/browser/ui/app_list/app_list_test_util.h rename to chrome/browser/ash/app_list/app_list_test_util.h index 8c517f19..0c09c7e 100644 --- a/chrome/browser/ui/app_list/app_list_test_util.h +++ b/chrome/browser/ash/app_list/app_list_test_util.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_UI_APP_LIST_APP_LIST_TEST_UTIL_H_ -#define CHROME_BROWSER_UI_APP_LIST_APP_LIST_TEST_UTIL_H_ +#ifndef CHROME_BROWSER_ASH_APP_LIST_APP_LIST_TEST_UTIL_H_ +#define CHROME_BROWSER_ASH_APP_LIST_APP_LIST_TEST_UTIL_H_ #include "chrome/browser/extensions/extension_service_test_base.h" #include "components/sync/model/sync_data.h" @@ -65,4 +65,4 @@ } // namespace app_list -#endif // CHROME_BROWSER_UI_APP_LIST_APP_LIST_TEST_UTIL_H_ +#endif // CHROME_BROWSER_ASH_APP_LIST_APP_LIST_TEST_UTIL_H_
diff --git a/chrome/browser/ash/app_list/app_service/app_service_app_item.cc b/chrome/browser/ash/app_list/app_service/app_service_app_item.cc index 220c4c62..42748f2 100644 --- a/chrome/browser/ash/app_list/app_service/app_service_app_item.cc +++ b/chrome/browser/ash/app_list/app_service/app_service_app_item.cc
@@ -22,11 +22,11 @@ #include "chrome/browser/apps/app_service/app_service_proxy.h" #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" #include "chrome/browser/apps/app_service/launch_utils.h" +#include "chrome/browser/ash/app_list/app_list_controller_delegate.h" #include "chrome/browser/ash/app_list/app_service/app_service_context_menu.h" #include "chrome/browser/ash/crostini/crostini_util.h" #include "chrome/browser/ash/remote_apps/remote_apps_manager.h" #include "chrome/browser/ash/remote_apps/remote_apps_manager_factory.h" -#include "chrome/browser/ui/app_list/app_list_controller_delegate.h" #include "chrome/browser/ui/ash/shelf/chrome_shelf_controller.h" #include "components/services/app_service/public/cpp/app_types.h"
diff --git a/chrome/browser/ash/app_list/app_service/app_service_app_item.h b/chrome/browser/ash/app_list/app_service/app_service_app_item.h index f0c5da9..e5861c7 100644 --- a/chrome/browser/ash/app_list/app_service/app_service_app_item.h +++ b/chrome/browser/ash/app_list/app_service/app_service_app_item.h
@@ -9,8 +9,8 @@ #include "base/memory/weak_ptr.h" #include "base/time/time.h" -#include "chrome/browser/ui/app_list/app_context_menu_delegate.h" -#include "chrome/browser/ui/app_list/chrome_app_list_item.h" +#include "chrome/browser/ash/app_list/app_context_menu_delegate.h" +#include "chrome/browser/ash/app_list/chrome_app_list_item.h" #include "components/services/app_service/public/cpp/app_launch_util.h" #include "components/services/app_service/public/cpp/app_types.h" #include "components/services/app_service/public/cpp/app_update.h"
diff --git a/chrome/browser/ash/app_list/app_service/app_service_app_item_browsertest.cc b/chrome/browser/ash/app_list/app_service/app_service_app_item_browsertest.cc index e8e2651..9321dd8 100644 --- a/chrome/browser/ash/app_list/app_service/app_service_app_item_browsertest.cc +++ b/chrome/browser/ash/app_list/app_service/app_service_app_item_browsertest.cc
@@ -17,10 +17,10 @@ #include "chrome/browser/apps/app_service/app_service_proxy.h" #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" #include "chrome/browser/apps/platform_apps/app_browsertest_util.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" #include "chrome/browser/ash/app_list/app_service/app_service_app_item.h" #include "chrome/browser/ash/system_web_apps/system_web_app_manager.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/web_applications/web_app_launch_manager.h" #include "chrome/browser/web_applications/test/with_crosapi_param.h"
diff --git a/chrome/browser/ash/app_list/app_service/app_service_app_model_builder.h b/chrome/browser/ash/app_list/app_service/app_service_app_model_builder.h index 5598c016..de42654 100644 --- a/chrome/browser/ash/app_list/app_service/app_service_app_model_builder.h +++ b/chrome/browser/ash/app_list/app_service/app_service_app_model_builder.h
@@ -5,7 +5,7 @@ #ifndef CHROME_BROWSER_ASH_APP_LIST_APP_SERVICE_APP_SERVICE_APP_MODEL_BUILDER_H_ #define CHROME_BROWSER_ASH_APP_LIST_APP_SERVICE_APP_SERVICE_APP_MODEL_BUILDER_H_ -#include "chrome/browser/ui/app_list/app_list_model_builder.h" +#include "chrome/browser/ash/app_list/app_list_model_builder.h" #include "components/services/app_service/public/cpp/app_registry_cache.h" class AppListControllerDelegate;
diff --git a/chrome/browser/ash/app_list/app_service/app_service_app_model_builder_unittest.cc b/chrome/browser/ash/app_list/app_service/app_service_app_model_builder_unittest.cc index d7213ee..c8ada23 100644 --- a/chrome/browser/ash/app_list/app_service/app_service_app_model_builder_unittest.cc +++ b/chrome/browser/ash/app_list/app_service/app_service_app_model_builder_unittest.cc
@@ -21,7 +21,10 @@ #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" #include "chrome/browser/apps/app_service/app_service_test.h" #include "chrome/browser/apps/icon_standardizer.h" +#include "chrome/browser/ash/app_list/app_list_test_util.h" +#include "chrome/browser/ash/app_list/chrome_app_list_item.h" #include "chrome/browser/ash/app_list/internal_app/internal_app_metadata.h" +#include "chrome/browser/ash/app_list/md_icon_normalizer.h" #include "chrome/browser/ash/app_list/test/fake_app_list_model_updater.h" #include "chrome/browser/ash/app_list/test/test_app_list_controller_delegate.h" #include "chrome/browser/ash/borealis/borealis_features.h" @@ -41,9 +44,6 @@ #include "chrome/browser/extensions/install_tracker.h" #include "chrome/browser/extensions/install_tracker_factory.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_test_util.h" -#include "chrome/browser/ui/app_list/chrome_app_list_item.h" -#include "chrome/browser/ui/app_list/md_icon_normalizer.h" #include "chrome/browser/web_applications/test/fake_web_app_provider.h" #include "chrome/browser/web_applications/test/web_app_install_test_utils.h" #include "chrome/browser/web_applications/user_display_mode.h"
diff --git a/chrome/browser/ash/app_list/app_service/app_service_context_menu.cc b/chrome/browser/ash/app_list/app_service/app_service_context_menu.cc index dbf93738..476c63d 100644 --- a/chrome/browser/ash/app_list/app_service/app_service_context_menu.cc +++ b/chrome/browser/ash/app_list/app_service/app_service_context_menu.cc
@@ -14,6 +14,13 @@ #include "chrome/browser/apps/app_service/app_service_proxy.h" #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" #include "chrome/browser/apps/app_service/menu_util.h" +#include "chrome/browser/ash/app_list/app_context_menu_delegate.h" +#include "chrome/browser/ash/app_list/app_list_controller_delegate.h" +#include "chrome/browser/ash/app_list/app_list_model_updater.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" +#include "chrome/browser/ash/app_list/chrome_app_list_model_updater.h" +#include "chrome/browser/ash/app_list/extension_app_utils.h" #include "chrome/browser/ash/app_restore/full_restore_service.h" #include "chrome/browser/ash/crosapi/browser_manager.h" #include "chrome/browser/ash/crostini/crostini_manager.h" @@ -25,13 +32,6 @@ #include "chrome/browser/extensions/context_menu_matcher.h" #include "chrome/browser/extensions/menu_manager.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_context_menu_delegate.h" -#include "chrome/browser/ui/app_list/app_list_controller_delegate.h" -#include "chrome/browser/ui/app_list/app_list_model_updater.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" -#include "chrome/browser/ui/app_list/chrome_app_list_model_updater.h" -#include "chrome/browser/ui/app_list/extension_app_utils.h" #include "chrome/browser/ui/ash/shelf/standalone_browser_extension_app_context_menu.h" #include "chrome/browser/ui/chrome_pages.h" #include "chrome/browser/ui/webui/settings/ash/app_management/app_management_uma.h"
diff --git a/chrome/browser/ash/app_list/app_service/app_service_context_menu.h b/chrome/browser/ash/app_list/app_service/app_service_context_menu.h index e7325c7..1f8e2ad 100644 --- a/chrome/browser/ash/app_list/app_service/app_service_context_menu.h +++ b/chrome/browser/ash/app_list/app_service/app_service_context_menu.h
@@ -12,7 +12,7 @@ #include "base/memory/weak_ptr.h" #include "chrome/browser/apps/app_service/app_service_proxy_forward.h" #include "chrome/browser/apps/app_service/app_shortcut_item.h" -#include "chrome/browser/ui/app_list/app_context_menu.h" +#include "chrome/browser/ash/app_list/app_context_menu.h" #include "components/services/app_service/public/cpp/app_types.h" #include "components/services/app_service/public/cpp/menu.h"
diff --git a/chrome/browser/ash/app_list/app_service/app_service_context_menu_browsertest.cc b/chrome/browser/ash/app_list/app_service/app_service_context_menu_browsertest.cc index 80af735..e39e672 100644 --- a/chrome/browser/ash/app_list/app_service/app_service_context_menu_browsertest.cc +++ b/chrome/browser/ash/app_list/app_service/app_service_context_menu_browsertest.cc
@@ -8,10 +8,10 @@ #include "ash/public/cpp/app_menu_constants.h" #include "base/run_loop.h" #include "base/test/bind.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" +#include "chrome/browser/ash/app_list/app_list_model_updater.h" +#include "chrome/browser/ash/app_list/chrome_app_list_item.h" #include "chrome/browser/ash/app_list/test/chrome_app_list_test_support.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" -#include "chrome/browser/ui/app_list/app_list_model_updater.h" -#include "chrome/browser/ui/app_list/chrome_app_list_item.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/web_applications/test/web_app_install_test_utils.h" #include "chrome/browser/web_applications/web_app_command_manager.h"
diff --git a/chrome/browser/ui/app_list/app_sync_ui_state.cc b/chrome/browser/ash/app_list/app_sync_ui_state.cc similarity index 95% rename from chrome/browser/ui/app_list/app_sync_ui_state.cc rename to chrome/browser/ash/app_list/app_sync_ui_state.cc index d78ee8a3..4c823bb9 100644 --- a/chrome/browser/ui/app_list/app_sync_ui_state.cc +++ b/chrome/browser/ash/app_list/app_sync_ui_state.cc
@@ -2,15 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/app_list/app_sync_ui_state.h" +#include "chrome/browser/ash/app_list/app_sync_ui_state.h" #include "build/build_config.h" +#include "chrome/browser/ash/app_list/app_sync_ui_state_factory.h" +#include "chrome/browser/ash/app_list/app_sync_ui_state_observer.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/pending_extension_manager.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/sync/sync_service_factory.h" -#include "chrome/browser/ui/app_list/app_sync_ui_state_factory.h" -#include "chrome/browser/ui/app_list/app_sync_ui_state_observer.h" #include "components/prefs/pref_service.h" #include "components/sync/driver/sync_service.h" #include "components/sync/driver/sync_user_settings.h"
diff --git a/chrome/browser/ui/app_list/app_sync_ui_state.h b/chrome/browser/ash/app_list/app_sync_ui_state.h similarity index 94% rename from chrome/browser/ui/app_list/app_sync_ui_state.h rename to chrome/browser/ash/app_list/app_sync_ui_state.h index 21a7783..de336c7 100644 --- a/chrome/browser/ui/app_list/app_sync_ui_state.h +++ b/chrome/browser/ash/app_list/app_sync_ui_state.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_UI_APP_LIST_APP_SYNC_UI_STATE_H_ -#define CHROME_BROWSER_UI_APP_LIST_APP_SYNC_UI_STATE_H_ +#ifndef CHROME_BROWSER_ASH_APP_LIST_APP_SYNC_UI_STATE_H_ +#define CHROME_BROWSER_ASH_APP_LIST_APP_SYNC_UI_STATE_H_ #include "base/observer_list.h" #include "base/timer/timer.h" @@ -94,4 +94,4 @@ extensions::ExtensionRegistry* extension_registry_; }; -#endif // CHROME_BROWSER_UI_APP_LIST_APP_SYNC_UI_STATE_H_ +#endif // CHROME_BROWSER_ASH_APP_LIST_APP_SYNC_UI_STATE_H_
diff --git a/chrome/browser/ui/app_list/app_sync_ui_state_factory.cc b/chrome/browser/ash/app_list/app_sync_ui_state_factory.cc similarity index 90% rename from chrome/browser/ui/app_list/app_sync_ui_state_factory.cc rename to chrome/browser/ash/app_list/app_sync_ui_state_factory.cc index 538ebb16..d02e459 100644 --- a/chrome/browser/ui/app_list/app_sync_ui_state_factory.cc +++ b/chrome/browser/ash/app_list/app_sync_ui_state_factory.cc
@@ -2,11 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/app_list/app_sync_ui_state_factory.h" +#include "chrome/browser/ash/app_list/app_sync_ui_state_factory.h" +#include "chrome/browser/ash/app_list/app_sync_ui_state.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/sync/sync_service_factory.h" -#include "chrome/browser/ui/app_list/app_sync_ui_state.h" #include "extensions/browser/extension_registry_factory.h" // static
diff --git a/chrome/browser/ui/app_list/app_sync_ui_state_factory.h b/chrome/browser/ash/app_list/app_sync_ui_state_factory.h similarity index 83% rename from chrome/browser/ui/app_list/app_sync_ui_state_factory.h rename to chrome/browser/ash/app_list/app_sync_ui_state_factory.h index 4ff365c..f2f744c 100644 --- a/chrome/browser/ui/app_list/app_sync_ui_state_factory.h +++ b/chrome/browser/ash/app_list/app_sync_ui_state_factory.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_UI_APP_LIST_APP_SYNC_UI_STATE_FACTORY_H_ -#define CHROME_BROWSER_UI_APP_LIST_APP_SYNC_UI_STATE_FACTORY_H_ +#ifndef CHROME_BROWSER_ASH_APP_LIST_APP_SYNC_UI_STATE_FACTORY_H_ +#define CHROME_BROWSER_ASH_APP_LIST_APP_SYNC_UI_STATE_FACTORY_H_ #include "base/memory/singleton.h" #include "chrome/browser/profiles/profile_keyed_service_factory.h" @@ -32,4 +32,4 @@ content::BrowserContext* context) const override; }; -#endif // CHROME_BROWSER_UI_APP_LIST_APP_SYNC_UI_STATE_FACTORY_H_ +#endif // CHROME_BROWSER_ASH_APP_LIST_APP_SYNC_UI_STATE_FACTORY_H_
diff --git a/chrome/browser/ui/app_list/app_sync_ui_state_observer.cc b/chrome/browser/ash/app_list/app_sync_ui_state_observer.cc similarity index 78% rename from chrome/browser/ui/app_list/app_sync_ui_state_observer.cc rename to chrome/browser/ash/app_list/app_sync_ui_state_observer.cc index 0682b17..c478604 100644 --- a/chrome/browser/ui/app_list/app_sync_ui_state_observer.cc +++ b/chrome/browser/ash/app_list/app_sync_ui_state_observer.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/app_list/app_sync_ui_state_observer.h" +#include "chrome/browser/ash/app_list/app_sync_ui_state_observer.h" #include "base/check.h"
diff --git a/chrome/browser/ui/app_list/app_sync_ui_state_observer.h b/chrome/browser/ash/app_list/app_sync_ui_state_observer.h similarity index 67% rename from chrome/browser/ui/app_list/app_sync_ui_state_observer.h rename to chrome/browser/ash/app_list/app_sync_ui_state_observer.h index 365a9842..c8d6d8b 100644 --- a/chrome/browser/ui/app_list/app_sync_ui_state_observer.h +++ b/chrome/browser/ash/app_list/app_sync_ui_state_observer.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_UI_APP_LIST_APP_SYNC_UI_STATE_OBSERVER_H_ -#define CHROME_BROWSER_UI_APP_LIST_APP_SYNC_UI_STATE_OBSERVER_H_ +#ifndef CHROME_BROWSER_ASH_APP_LIST_APP_SYNC_UI_STATE_OBSERVER_H_ +#define CHROME_BROWSER_ASH_APP_LIST_APP_SYNC_UI_STATE_OBSERVER_H_ #include "base/observer_list_types.h" @@ -16,4 +16,4 @@ ~AppSyncUIStateObserver() override; }; -#endif // CHROME_BROWSER_UI_APP_LIST_APP_SYNC_UI_STATE_OBSERVER_H_ +#endif // CHROME_BROWSER_ASH_APP_LIST_APP_SYNC_UI_STATE_OBSERVER_H_
diff --git a/chrome/browser/ui/app_list/app_sync_ui_state_watcher.cc b/chrome/browser/ash/app_list/app_sync_ui_state_watcher.cc similarity index 82% rename from chrome/browser/ui/app_list/app_sync_ui_state_watcher.cc rename to chrome/browser/ash/app_list/app_sync_ui_state_watcher.cc index 0f695880..618a2516 100644 --- a/chrome/browser/ui/app_list/app_sync_ui_state_watcher.cc +++ b/chrome/browser/ash/app_list/app_sync_ui_state_watcher.cc
@@ -2,10 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/app_list/app_sync_ui_state_watcher.h" +#include "chrome/browser/ash/app_list/app_sync_ui_state_watcher.h" -#include "chrome/browser/ui/app_list/app_list_model_updater.h" -#include "chrome/browser/ui/app_list/app_sync_ui_state.h" +#include "chrome/browser/ash/app_list/app_list_model_updater.h" +#include "chrome/browser/ash/app_list/app_sync_ui_state.h" AppSyncUIStateWatcher::AppSyncUIStateWatcher(Profile* profile, AppListModelUpdater* model_updater)
diff --git a/chrome/browser/ui/app_list/app_sync_ui_state_watcher.h b/chrome/browser/ash/app_list/app_sync_ui_state_watcher.h similarity index 76% rename from chrome/browser/ui/app_list/app_sync_ui_state_watcher.h rename to chrome/browser/ash/app_list/app_sync_ui_state_watcher.h index 5e45098..25641c7 100644 --- a/chrome/browser/ui/app_list/app_sync_ui_state_watcher.h +++ b/chrome/browser/ash/app_list/app_sync_ui_state_watcher.h
@@ -2,10 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_UI_APP_LIST_APP_SYNC_UI_STATE_WATCHER_H_ -#define CHROME_BROWSER_UI_APP_LIST_APP_SYNC_UI_STATE_WATCHER_H_ +#ifndef CHROME_BROWSER_ASH_APP_LIST_APP_SYNC_UI_STATE_WATCHER_H_ +#define CHROME_BROWSER_ASH_APP_LIST_APP_SYNC_UI_STATE_WATCHER_H_ -#include "chrome/browser/ui/app_list/app_sync_ui_state_observer.h" +#include "chrome/browser/ash/app_list/app_sync_ui_state_observer.h" class AppListModelUpdater; class AppSyncUIState; @@ -31,4 +31,4 @@ AppListModelUpdater* model_updater_; }; -#endif // CHROME_BROWSER_UI_APP_LIST_APP_SYNC_UI_STATE_WATCHER_H_ +#endif // CHROME_BROWSER_ASH_APP_LIST_APP_SYNC_UI_STATE_WATCHER_H_
diff --git a/chrome/browser/ash/app_list/arc/arc_app_unittest.cc b/chrome/browser/ash/app_list/arc/arc_app_unittest.cc index 7bb7680..084dd95 100644 --- a/chrome/browser/ash/app_list/arc/arc_app_unittest.cc +++ b/chrome/browser/ash/app_list/arc/arc_app_unittest.cc
@@ -58,6 +58,7 @@ #include "chrome/browser/ash/app_list/arc/arc_pai_starter.h" #include "chrome/browser/ash/app_list/arc/intent.h" #include "chrome/browser/ash/app_list/arc/mock_arc_app_list_prefs_observer.h" +#include "chrome/browser/ash/app_list/chrome_app_list_item.h" #include "chrome/browser/ash/app_list/test/fake_app_list_model_updater.h" #include "chrome/browser/ash/app_list/test/test_app_list_controller_delegate.h" #include "chrome/browser/ash/arc/arc_optin_uma.h" @@ -68,7 +69,6 @@ #include "chrome/browser/extensions/extension_service_test_base.h" #include "chrome/browser/policy/profile_policy_connector.h" #include "chrome/browser/sync/sync_service_factory.h" -#include "chrome/browser/ui/app_list/chrome_app_list_item.h" #include "chrome/browser/ui/ash/shelf/arc_app_shelf_id.h" #include "chrome/browser/ui/ash/shelf/chrome_shelf_controller.h" #include "chrome/browser/ui/ash/shelf/shelf_controller_helper.h"
diff --git a/chrome/browser/ash/app_list/arc/arc_app_utils.cc b/chrome/browser/ash/app_list/arc/arc_app_utils.cc index 5f9207f..c114ff5b5 100644 --- a/chrome/browser/ash/app_list/arc/arc_app_utils.cc +++ b/chrome/browser/ash/app_list/arc/arc_app_utils.cc
@@ -28,6 +28,7 @@ #include "base/strings/string_piece.h" #include "base/values.h" #include "chrome/browser/apps/app_service/intent_util.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" #include "chrome/browser/ash/app_list/arc/intent.h" #include "chrome/browser/ash/app_list/search/ranking/launch_data.h" #include "chrome/browser/ash/app_list/search/search_controller.h" @@ -43,7 +44,6 @@ #include "chrome/browser/browser_process.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_observer.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" #include "chrome/browser/ui/ash/shelf/arc_app_shelf_id.h" #include "chrome/browser/ui/ash/shelf/arc_shelf_spinner_item_controller.h" #include "chrome/browser/ui/ash/shelf/chrome_shelf_controller.h"
diff --git a/chrome/browser/ash/app_list/arc/arc_playstore_app_context_menu.cc b/chrome/browser/ash/app_list/arc/arc_playstore_app_context_menu.cc index 9cafa66c..0c245d2 100644 --- a/chrome/browser/ash/app_list/arc/arc_playstore_app_context_menu.cc +++ b/chrome/browser/ash/app_list/arc/arc_playstore_app_context_menu.cc
@@ -6,7 +6,7 @@ #include <string> -#include "chrome/browser/ui/app_list/app_context_menu_delegate.h" +#include "chrome/browser/ash/app_list/app_context_menu_delegate.h" #include "chrome/grit/generated_resources.h" ArcPlayStoreAppContextMenu::ArcPlayStoreAppContextMenu(
diff --git a/chrome/browser/ash/app_list/arc/arc_playstore_app_context_menu.h b/chrome/browser/ash/app_list/arc/arc_playstore_app_context_menu.h index 9866bc0..c097548 100644 --- a/chrome/browser/ash/app_list/arc/arc_playstore_app_context_menu.h +++ b/chrome/browser/ash/app_list/arc/arc_playstore_app_context_menu.h
@@ -5,7 +5,7 @@ #ifndef CHROME_BROWSER_ASH_APP_LIST_ARC_ARC_PLAYSTORE_APP_CONTEXT_MENU_H_ #define CHROME_BROWSER_ASH_APP_LIST_ARC_ARC_PLAYSTORE_APP_CONTEXT_MENU_H_ -#include "chrome/browser/ui/app_list/app_context_menu.h" +#include "chrome/browser/ash/app_list/app_context_menu.h" class AppListControllerDelegate; class Profile;
diff --git a/chrome/browser/ash/app_list/arc/arc_vpn_provider_unittest.cc b/chrome/browser/ash/app_list/arc/arc_vpn_provider_unittest.cc index 8e8b17c2..b7d59a3 100644 --- a/chrome/browser/ash/app_list/arc/arc_vpn_provider_unittest.cc +++ b/chrome/browser/ash/app_list/arc/arc_vpn_provider_unittest.cc
@@ -5,10 +5,10 @@ #include "chrome/browser/ash/app_list/arc/arc_vpn_provider_manager.h" #include "ash/components/arc/test/fake_app_instance.h" +#include "chrome/browser/ash/app_list/app_list_test_util.h" #include "chrome/browser/ash/app_list/arc/arc_app_list_prefs.h" #include "chrome/browser/ash/app_list/arc/arc_app_test.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_test_util.h" namespace app_list {
diff --git a/chrome/browser/ui/app_list/chrome_app_list_item.cc b/chrome/browser/ash/app_list/chrome_app_list_item.cc similarity index 95% rename from chrome/browser/ui/app_list/chrome_app_list_item.cc rename to chrome/browser/ash/app_list/chrome_app_list_item.cc index a8ffebb..2d446a1 100644 --- a/chrome/browser/ui/app_list/chrome_app_list_item.cc +++ b/chrome/browser/ash/app_list/chrome_app_list_item.cc
@@ -2,28 +2,25 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/app_list/chrome_app_list_item.h" +#include "chrome/browser/ash/app_list/chrome_app_list_item.h" #include <utility> #include "ash/public/cpp/tablet_mode.h" #include "base/notreached.h" #include "build/chromeos_buildflags.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" +#include "chrome/browser/ash/app_list/chrome_app_list_model_updater.h" #include "chrome/browser/ash/app_list/reorder/app_list_reorder_util.h" +#include "chrome/browser/ash/login/demo_mode/demo_session.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" -#include "chrome/browser/ui/app_list/chrome_app_list_model_updater.h" #include "chrome/browser/ui/ash/app_icon_color_cache.h" #include "extensions/browser/app_sorting.h" #include "extensions/browser/extension_system.h" #include "ui/gfx/color_utils.h" #include "ui/gfx/image/image_skia_operations.h" -#if BUILDFLAG(IS_CHROMEOS_ASH) -#include "chrome/browser/ash/login/demo_mode/demo_session.h" -#endif - namespace { AppListControllerDelegate* g_controller_for_test = nullptr; @@ -84,11 +81,9 @@ } void ChromeAppListItem::PerformActivate(int event_flags) { -#if BUILDFLAG(IS_CHROMEOS_ASH) // Handle recording app launch source from the AppList in Demo Mode. ash::DemoSession::RecordAppLaunchSourceIfInDemoMode( ash::DemoSession::AppLaunchSource::kAppList); -#endif Activate(event_flags); MaybeDismissAppList(); }
diff --git a/chrome/browser/ui/app_list/chrome_app_list_item.h b/chrome/browser/ash/app_list/chrome_app_list_item.h similarity index 94% rename from chrome/browser/ui/app_list/chrome_app_list_item.h rename to chrome/browser/ash/app_list/chrome_app_list_item.h index 6c0cfe6..118e3dd 100644 --- a/chrome/browser/ui/app_list/chrome_app_list_item.h +++ b/chrome/browser/ash/app_list/chrome_app_list_item.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_UI_APP_LIST_CHROME_APP_LIST_ITEM_H_ -#define CHROME_BROWSER_UI_APP_LIST_CHROME_APP_LIST_ITEM_H_ +#ifndef CHROME_BROWSER_ASH_APP_LIST_CHROME_APP_LIST_ITEM_H_ +#define CHROME_BROWSER_ASH_APP_LIST_CHROME_APP_LIST_ITEM_H_ #include <memory> #include <string> @@ -12,8 +12,8 @@ #include "ash/public/cpp/app_list/app_list_types.h" #include "ash/public/cpp/shelf_types.h" #include "base/memory/raw_ptr.h" -#include "chrome/browser/ui/app_list/app_context_menu.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/app_context_menu.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" #include "ui/gfx/image/image_skia.h" class AppListControllerDelegate; @@ -163,4 +163,4 @@ raw_ptr<AppListModelUpdater> model_updater_ = nullptr; }; -#endif // CHROME_BROWSER_UI_APP_LIST_CHROME_APP_LIST_ITEM_H_ +#endif // CHROME_BROWSER_ASH_APP_LIST_CHROME_APP_LIST_ITEM_H_
diff --git a/chrome/browser/ui/app_list/chrome_app_list_item_browsertest.cc b/chrome/browser/ash/app_list/chrome_app_list_item_browsertest.cc similarity index 96% rename from chrome/browser/ui/app_list/chrome_app_list_item_browsertest.cc rename to chrome/browser/ash/app_list/chrome_app_list_item_browsertest.cc index 0c899ae..f31b72d 100644 --- a/chrome/browser/ui/app_list/chrome_app_list_item_browsertest.cc +++ b/chrome/browser/ash/app_list/chrome_app_list_item_browsertest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/app_list/chrome_app_list_item.h" +#include "chrome/browser/ash/app_list/chrome_app_list_item.h" #include <vector> @@ -10,10 +10,10 @@ #include "ash/public/cpp/accelerators.h" #include "ash/public/cpp/test/app_list_test_api.h" #include "base/strings/stringprintf.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" +#include "chrome/browser/ash/app_list/app_list_model_updater.h" #include "chrome/browser/ash/app_list/test/chrome_app_list_test_support.h" #include "chrome/browser/profiles/profile_manager.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" -#include "chrome/browser/ui/app_list/app_list_model_updater.h" #include "chrome/test/base/in_process_browser_test.h" #include "content/public/test/browser_test.h" #include "ui/gfx/image/image_skia.h"
diff --git a/chrome/browser/ui/app_list/chrome_app_list_item_manager.cc b/chrome/browser/ash/app_list/chrome_app_list_item_manager.cc similarity index 97% rename from chrome/browser/ui/app_list/chrome_app_list_item_manager.cc rename to chrome/browser/ash/app_list/chrome_app_list_item_manager.cc index 84c371d..78a101c 100644 --- a/chrome/browser/ui/app_list/chrome_app_list_item_manager.cc +++ b/chrome/browser/ash/app_list/chrome_app_list_item_manager.cc
@@ -2,10 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/app_list/chrome_app_list_item_manager.h" +#include "chrome/browser/ash/app_list/chrome_app_list_item_manager.h" #include "base/ranges/algorithm.h" -#include "chrome/browser/ui/app_list/chrome_app_list_item.h" +#include "chrome/browser/ash/app_list/chrome_app_list_item.h" ChromeAppListItemManager::ChromeAppListItemManager() = default;
diff --git a/chrome/browser/ui/app_list/chrome_app_list_item_manager.h b/chrome/browser/ash/app_list/chrome_app_list_item_manager.h similarity index 94% rename from chrome/browser/ui/app_list/chrome_app_list_item_manager.h rename to chrome/browser/ash/app_list/chrome_app_list_item_manager.h index 2f5882b..111c9ed 100644 --- a/chrome/browser/ui/app_list/chrome_app_list_item_manager.h +++ b/chrome/browser/ash/app_list/chrome_app_list_item_manager.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_UI_APP_LIST_CHROME_APP_LIST_ITEM_MANAGER_H_ -#define CHROME_BROWSER_UI_APP_LIST_CHROME_APP_LIST_ITEM_MANAGER_H_ +#ifndef CHROME_BROWSER_ASH_APP_LIST_CHROME_APP_LIST_ITEM_MANAGER_H_ +#define CHROME_BROWSER_ASH_APP_LIST_CHROME_APP_LIST_ITEM_MANAGER_H_ #include <map> #include <string> @@ -84,4 +84,4 @@ std::map<std::string, std::vector<ChromeAppListItem*>> folder_item_mappings_; }; -#endif // CHROME_BROWSER_UI_APP_LIST_CHROME_APP_LIST_ITEM_MANAGER_H_ +#endif // CHROME_BROWSER_ASH_APP_LIST_CHROME_APP_LIST_ITEM_MANAGER_H_
diff --git a/chrome/browser/ui/app_list/chrome_app_list_item_manager_unittest.cc b/chrome/browser/ash/app_list/chrome_app_list_item_manager_unittest.cc similarity index 98% rename from chrome/browser/ui/app_list/chrome_app_list_item_manager_unittest.cc rename to chrome/browser/ash/app_list/chrome_app_list_item_manager_unittest.cc index a15d038..fb1a644 100644 --- a/chrome/browser/ui/app_list/chrome_app_list_item_manager_unittest.cc +++ b/chrome/browser/ash/app_list/chrome_app_list_item_manager_unittest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/app_list/chrome_app_list_item_manager.h" +#include "chrome/browser/ash/app_list/chrome_app_list_item_manager.h" #include "chrome/browser/ash/app_list/test/fake_app_list_model_updater.h" #include "components/crx_file/id_util.h"
diff --git a/chrome/browser/ui/app_list/chrome_app_list_model_updater.cc b/chrome/browser/ash/app_list/chrome_app_list_model_updater.cc similarity index 99% rename from chrome/browser/ui/app_list/chrome_app_list_model_updater.cc rename to chrome/browser/ash/app_list/chrome_app_list_model_updater.cc index 647712dd..eb9ba069f 100644 --- a/chrome/browser/ui/app_list/chrome_app_list_model_updater.cc +++ b/chrome/browser/ash/app_list/chrome_app_list_model_updater.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/app_list/chrome_app_list_model_updater.h" +#include "chrome/browser/ash/app_list/chrome_app_list_model_updater.h" #include <unordered_map> #include <utility> @@ -17,13 +17,13 @@ #include "ash/public/cpp/tablet_mode.h" #include "base/bind.h" #include "base/strings/utf_string_conversions.h" +#include "chrome/browser/ash/app_list/app_list_controller_delegate.h" +#include "chrome/browser/ash/app_list/app_list_sync_model_sanitizer.h" +#include "chrome/browser/ash/app_list/chrome_app_list_item.h" +#include "chrome/browser/ash/app_list/chrome_app_list_item_manager.h" #include "chrome/browser/ash/app_list/reorder/app_list_reorder_core.h" #include "chrome/browser/ash/app_list/reorder/app_list_reorder_delegate.h" #include "chrome/browser/ash/app_list/search/chrome_search_result.h" -#include "chrome/browser/ui/app_list/app_list_controller_delegate.h" -#include "chrome/browser/ui/app_list/app_list_sync_model_sanitizer.h" -#include "chrome/browser/ui/app_list/chrome_app_list_item.h" -#include "chrome/browser/ui/app_list/chrome_app_list_item_manager.h" #include "extensions/common/constants.h" #include "ui/base/models/menu_model.h"
diff --git a/chrome/browser/ui/app_list/chrome_app_list_model_updater.h b/chrome/browser/ash/app_list/chrome_app_list_model_updater.h similarity index 96% rename from chrome/browser/ui/app_list/chrome_app_list_model_updater.h rename to chrome/browser/ash/app_list/chrome_app_list_model_updater.h index 604152ff..11bd639 100644 --- a/chrome/browser/ui/app_list/chrome_app_list_model_updater.h +++ b/chrome/browser/ash/app_list/chrome_app_list_model_updater.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_UI_APP_LIST_CHROME_APP_LIST_MODEL_UPDATER_H_ -#define CHROME_BROWSER_UI_APP_LIST_CHROME_APP_LIST_MODEL_UPDATER_H_ +#ifndef CHROME_BROWSER_ASH_APP_LIST_CHROME_APP_LIST_MODEL_UPDATER_H_ +#define CHROME_BROWSER_ASH_APP_LIST_CHROME_APP_LIST_MODEL_UPDATER_H_ #include <map> #include <memory> @@ -16,7 +16,7 @@ #include "ash/public/cpp/app_list/app_list_model_delegate.h" #include "base/memory/weak_ptr.h" #include "base/observer_list.h" -#include "chrome/browser/ui/app_list/app_list_model_updater.h" +#include "chrome/browser/ash/app_list/app_list_model_updater.h" namespace app_list { namespace reorder { @@ -236,4 +236,4 @@ base::WeakPtrFactory<ChromeAppListModelUpdater> weak_ptr_factory_{this}; }; -#endif // CHROME_BROWSER_UI_APP_LIST_CHROME_APP_LIST_MODEL_UPDATER_H_ +#endif // CHROME_BROWSER_ASH_APP_LIST_CHROME_APP_LIST_MODEL_UPDATER_H_
diff --git a/chrome/browser/ui/app_list/chrome_app_list_model_updater_browsertest.cc b/chrome/browser/ash/app_list/chrome_app_list_model_updater_browsertest.cc similarity index 98% rename from chrome/browser/ui/app_list/chrome_app_list_model_updater_browsertest.cc rename to chrome/browser/ash/app_list/chrome_app_list_model_updater_browsertest.cc index 751eb6e..d9bf9e0 100644 --- a/chrome/browser/ui/app_list/chrome_app_list_model_updater_browsertest.cc +++ b/chrome/browser/ash/app_list/chrome_app_list_model_updater_browsertest.cc
@@ -16,6 +16,10 @@ #include "base/run_loop.h" #include "chrome/browser/apps/app_service/app_service_proxy.h" #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" +#include "chrome/browser/ash/app_list/app_list_model_updater.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" +#include "chrome/browser/ash/app_list/chrome_app_list_item.h" #include "chrome/browser/ash/app_list/test/chrome_app_list_test_support.h" #include "chrome/browser/ash/login/login_manager_test.h" #include "chrome/browser/ash/login/test/login_manager_mixin.h" @@ -23,10 +27,6 @@ #include "chrome/browser/extensions/extension_browsertest.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" -#include "chrome/browser/ui/app_list/app_list_model_updater.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" -#include "chrome/browser/ui/app_list/chrome_app_list_item.h" #include "chrome/browser/web_applications/test/web_app_install_test_utils.h" #include "chrome/browser/web_applications/web_app_id_constants.h" #include "chrome/browser/web_applications/web_app_install_info.h"
diff --git a/chrome/browser/ui/app_list/extension_app_utils.cc b/chrome/browser/ash/app_list/extension_app_utils.cc similarity index 96% rename from chrome/browser/ui/app_list/extension_app_utils.cc rename to chrome/browser/ash/app_list/extension_app_utils.cc index dce8a3f0..085ee53 100644 --- a/chrome/browser/ui/app_list/extension_app_utils.cc +++ b/chrome/browser/ash/app_list/extension_app_utils.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/app_list/extension_app_utils.h" +#include "chrome/browser/ash/app_list/extension_app_utils.h" #include "ash/public/cpp/app_menu_constants.h" #include "chrome/browser/ash/login/demo_mode/demo_session.h"
diff --git a/chrome/browser/ui/app_list/extension_app_utils.h b/chrome/browser/ash/app_list/extension_app_utils.h similarity index 82% rename from chrome/browser/ui/app_list/extension_app_utils.h rename to chrome/browser/ash/app_list/extension_app_utils.h index 142a1e50..5c9a9b63 100644 --- a/chrome/browser/ui/app_list/extension_app_utils.h +++ b/chrome/browser/ash/app_list/extension_app_utils.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_UI_APP_LIST_EXTENSION_APP_UTILS_H_ -#define CHROME_BROWSER_UI_APP_LIST_EXTENSION_APP_UTILS_H_ +#ifndef CHROME_BROWSER_ASH_APP_LIST_EXTENSION_APP_UTILS_H_ +#define CHROME_BROWSER_ASH_APP_LIST_EXTENSION_APP_UTILS_H_ #include <string> @@ -34,4 +34,4 @@ } // namespace app_list -#endif // CHROME_BROWSER_UI_APP_LIST_EXTENSION_APP_UTILS_H_ +#endif // CHROME_BROWSER_ASH_APP_LIST_EXTENSION_APP_UTILS_H_
diff --git a/chrome/browser/ash/app_list/internal_app/internal_app_metadata.cc b/chrome/browser/ash/app_list/internal_app/internal_app_metadata.cc index abaa8cad..d25a231 100644 --- a/chrome/browser/ash/app_list/internal_app/internal_app_metadata.cc +++ b/chrome/browser/ash/app_list/internal_app/internal_app_metadata.cc
@@ -18,12 +18,12 @@ #include "base/strings/utf_string_conversions.h" #include "base/time/time.h" #include "chrome/browser/apps/app_service/metrics/app_service_metrics.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" +#include "chrome/browser/ash/app_list/extension_app_utils.h" #include "chrome/browser/ash/plugin_vm/plugin_vm_util.h" #include "chrome/browser/ash/release_notes/release_notes_storage.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/sync/session_sync_service_factory.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" -#include "chrome/browser/ui/app_list/extension_app_utils.h" #include "chrome/browser/ui/ash/shelf/chrome_shelf_controller.h" #include "chrome/browser/ui/extensions/app_launch_params.h" #include "chrome/browser/ui/settings_window_manager_chromeos.h"
diff --git a/chrome/browser/ui/app_list/md_icon_normalizer.cc b/chrome/browser/ash/app_list/md_icon_normalizer.cc similarity index 99% rename from chrome/browser/ui/app_list/md_icon_normalizer.cc rename to chrome/browser/ash/app_list/md_icon_normalizer.cc index 8f5850c..8c5d9362 100644 --- a/chrome/browser/ui/app_list/md_icon_normalizer.cc +++ b/chrome/browser/ash/app_list/md_icon_normalizer.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/app_list/md_icon_normalizer.h" +#include "chrome/browser/ash/app_list/md_icon_normalizer.h" #include <algorithm> #include <cmath>
diff --git a/chrome/browser/ui/app_list/md_icon_normalizer.h b/chrome/browser/ash/app_list/md_icon_normalizer.h similarity index 90% rename from chrome/browser/ui/app_list/md_icon_normalizer.h rename to chrome/browser/ash/app_list/md_icon_normalizer.h index 42d248a..7a552da0 100644 --- a/chrome/browser/ui/app_list/md_icon_normalizer.h +++ b/chrome/browser/ash/app_list/md_icon_normalizer.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_UI_APP_LIST_MD_ICON_NORMALIZER_H_ -#define CHROME_BROWSER_UI_APP_LIST_MD_ICON_NORMALIZER_H_ +#ifndef CHROME_BROWSER_ASH_APP_LIST_MD_ICON_NORMALIZER_H_ +#define CHROME_BROWSER_ASH_APP_LIST_MD_ICON_NORMALIZER_H_ #include "ui/gfx/geometry/size.h" @@ -43,4 +43,4 @@ } // namespace app_list -#endif // CHROME_BROWSER_UI_APP_LIST_MD_ICON_NORMALIZER_H_ +#endif // CHROME_BROWSER_ASH_APP_LIST_MD_ICON_NORMALIZER_H_
diff --git a/chrome/browser/ui/app_list/md_icon_normalizer_unittest.cc b/chrome/browser/ash/app_list/md_icon_normalizer_unittest.cc similarity index 99% rename from chrome/browser/ui/app_list/md_icon_normalizer_unittest.cc rename to chrome/browser/ash/app_list/md_icon_normalizer_unittest.cc index 6105a52..117c1a72 100644 --- a/chrome/browser/ui/app_list/md_icon_normalizer_unittest.cc +++ b/chrome/browser/ash/app_list/md_icon_normalizer_unittest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/app_list/md_icon_normalizer.h" +#include "chrome/browser/ash/app_list/md_icon_normalizer.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/skia/include/core/SkBitmap.h"
diff --git a/chrome/browser/ash/app_list/reorder/app_list_reorder_core.cc b/chrome/browser/ash/app_list/reorder/app_list_reorder_core.cc index 519cfd8..a55a5f30 100644 --- a/chrome/browser/ash/app_list/reorder/app_list_reorder_core.cc +++ b/chrome/browser/ash/app_list/reorder/app_list_reorder_core.cc
@@ -8,8 +8,8 @@ #include "ash/public/cpp/app_list/app_list_types.h" #include "base/numerics/safe_conversions.h" -#include "chrome/browser/ui/app_list/app_list_model_updater.h" -#include "chrome/browser/ui/app_list/chrome_app_list_item.h" +#include "chrome/browser/ash/app_list/app_list_model_updater.h" +#include "chrome/browser/ash/app_list/chrome_app_list_item.h" namespace app_list { namespace reorder {
diff --git a/chrome/browser/ash/app_list/reorder/app_list_reorder_core_unittest.cc b/chrome/browser/ash/app_list/reorder/app_list_reorder_core_unittest.cc index f755a0a..7a36039 100644 --- a/chrome/browser/ash/app_list/reorder/app_list_reorder_core_unittest.cc +++ b/chrome/browser/ash/app_list/reorder/app_list_reorder_core_unittest.cc
@@ -5,7 +5,7 @@ #include "chrome/browser/ash/app_list/reorder/app_list_reorder_core.h" #include "ash/public/cpp/app_list/app_list_types.h" -#include "chrome/browser/ui/app_list/chrome_app_list_item.h" +#include "chrome/browser/ash/app_list/chrome_app_list_item.h" #include "components/crx_file/id_util.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/chrome/browser/ash/app_list/reorder/app_list_reorder_util.h b/chrome/browser/ash/app_list/reorder/app_list_reorder_util.h index d52c51b..a3db0e2b 100644 --- a/chrome/browser/ash/app_list/reorder/app_list_reorder_util.h +++ b/chrome/browser/ash/app_list/reorder/app_list_reorder_util.h
@@ -11,8 +11,8 @@ #include "ash/public/cpp/app_list/app_list_types.h" #include "base/i18n/string_compare.h" #include "base/strings/utf_string_conversions.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" -#include "chrome/browser/ui/app_list/chrome_app_list_item.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/chrome_app_list_item.h" #include "components/sync/model/string_ordinal.h" #include "third_party/icu/source/i18n/unicode/coll.h" #include "third_party/skia/include/core/SkColor.h"
diff --git a/chrome/browser/ash/app_list/search/README.md b/chrome/browser/ash/app_list/search/README.md index baedab6..79eec78 100644 --- a/chrome/browser/ash/app_list/search/README.md +++ b/chrome/browser/ash/app_list/search/README.md
@@ -14,7 +14,7 @@ To interact with the frontend, it calls the [`AppListController`](https://source.chromium.org/chromium/chromium/src/+/main:ash/public/cpp/app_list/app_list_controller.h;l=31;drc=16b9100fa38b90f93e29fb6d7e4578a7eaeb7a1f) and - [`AppListModelUpdater`](https://source.chromium.org/chromium/chromium/src/+/main:chrome/browser/ui/app_list/app_list_model_updater.h;l=26;drc=4a8573cb240df29b0e4d9820303538fb28e31d84), + [`AppListModelUpdater`](https://source.chromium.org/chromium/chromium/src/+/main:chrome/browser/ash/app_list/app_list_model_updater.h;l=26;drc=4a8573cb240df29b0e4d9820303538fb28e31d84), and is called by the [`AppListClient`](https://source.chromium.org/chromium/chromium/src/+/main:ash/public/cpp/app_list/app_list_client.h;l=36;drc=3a215d1e60a3b32928a50d00ea07ae52ea491a16). - **SearchProvider**. The base class for all search providers. Each search provider typically handles one type of result, such as settings, apps or @@ -43,7 +43,7 @@ ### Metrics - **AppListNotifierImpl**. Located in the parent directory - [`chrome/browser/ui/app_list/`](https://source.chromium.org/chromium/chromium/src/+/main:chrome/browser/ui/app_list/). + [`chrome/browser/ash/app_list/`](https://source.chromium.org/chromium/chromium/src/+/main:chrome/browser/ash/app_list/). Contains a state machine that converts raw UI events into information such as impressions and launches. - **SearchMetricsManager**. Observes the [`AppListNotifier`](https://source.chromium.org/chromium/chromium/src/+/main:ash/public/cpp/app_list/app_list_notifier.h;l=28;drc=ccc5ecdf824f172bf8675eb33f5377483289c334) and logs metrics accordingly.
diff --git a/chrome/browser/ash/app_list/search/app_result.h b/chrome/browser/ash/app_list/search/app_result.h index 4c96d94..13e62f1f 100644 --- a/chrome/browser/ash/app_list/search/app_result.h +++ b/chrome/browser/ash/app_list/search/app_result.h
@@ -10,8 +10,8 @@ #include "ash/public/cpp/app_list/app_list_metrics.h" #include "base/memory/weak_ptr.h" +#include "chrome/browser/ash/app_list/app_context_menu_delegate.h" #include "chrome/browser/ash/app_list/search/chrome_search_result.h" -#include "chrome/browser/ui/app_list/app_context_menu_delegate.h" class AppListControllerDelegate; class Profile;
diff --git a/chrome/browser/ash/app_list/search/app_search_provider.cc b/chrome/browser/ash/app_list/search/app_search_provider.cc index 8afb69ca..f2a3306 100644 --- a/chrome/browser/ash/app_list/search/app_search_provider.cc +++ b/chrome/browser/ash/app_list/search/app_search_provider.cc
@@ -15,9 +15,9 @@ #include "base/metrics/histogram_macros.h" #include "base/threading/thread_task_runner_handle.h" #include "base/time/time.h" +#include "chrome/browser/ash/app_list/app_list_model_updater.h" #include "chrome/browser/ash/app_list/search/app_search_data_source.h" #include "chrome/browser/ash/app_list/search/chrome_search_result.h" -#include "chrome/browser/ui/app_list/app_list_model_updater.h" namespace app_list {
diff --git a/chrome/browser/ash/app_list/search/app_search_provider_test_base.h b/chrome/browser/ash/app_list/search/app_search_provider_test_base.h index 3490306..60c6491 100644 --- a/chrome/browser/ash/app_list/search/app_search_provider_test_base.h +++ b/chrome/browser/ash/app_list/search/app_search_provider_test_base.h
@@ -10,9 +10,9 @@ #include "base/files/scoped_temp_dir.h" #include "base/test/simple_test_clock.h" +#include "chrome/browser/ash/app_list/app_list_test_util.h" #include "chrome/browser/ash/app_list/arc/arc_app_test.h" #include "chrome/browser/ash/app_list/search/chrome_search_result.h" -#include "chrome/browser/ui/app_list/app_list_test_util.h" #include "extensions/common/mojom/manifest.mojom.h" class FakeAppListModelUpdater;
diff --git a/chrome/browser/ash/app_list/search/app_service_app_result.cc b/chrome/browser/ash/app_list/search/app_service_app_result.cc index a30aec7..f1f30295 100644 --- a/chrome/browser/ash/app_list/search/app_service_app_result.cc +++ b/chrome/browser/ash/app_list/search/app_service_app_result.cc
@@ -12,10 +12,10 @@ #include "chrome/browser/apps/app_service/app_service_proxy.h" #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" #include "chrome/browser/apps/app_service/metrics/app_service_metrics.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" #include "chrome/browser/ash/app_list/app_service/app_service_context_menu.h" #include "chrome/browser/ash/app_list/search/common/icon_constants.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" #include "chrome/browser/ui/ash/shelf/chrome_shelf_controller.h" #include "components/services/app_service/public/cpp/app_launch_util.h" #include "components/services/app_service/public/cpp/app_update.h"
diff --git a/chrome/browser/ash/app_list/search/app_zero_state_provider.cc b/chrome/browser/ash/app_list/search/app_zero_state_provider.cc index 8bf9c85..61bd802f 100644 --- a/chrome/browser/ash/app_list/search/app_zero_state_provider.cc +++ b/chrome/browser/ash/app_list/search/app_zero_state_provider.cc
@@ -11,9 +11,9 @@ #include "base/bind.h" #include "base/metrics/histogram_macros.h" #include "base/time/time.h" +#include "chrome/browser/ash/app_list/app_list_model_updater.h" #include "chrome/browser/ash/app_list/search/app_search_data_source.h" #include "chrome/browser/ash/app_list/search/chrome_search_result.h" -#include "chrome/browser/ui/app_list/app_list_model_updater.h" namespace app_list {
diff --git a/chrome/browser/ash/app_list/search/arc/arc_app_shortcut_search_result.cc b/chrome/browser/ash/app_list/search/arc/arc_app_shortcut_search_result.cc index 87db59f8..e069d50 100644 --- a/chrome/browser/ash/app_list/search/arc/arc_app_shortcut_search_result.cc +++ b/chrome/browser/ash/app_list/search/arc/arc_app_shortcut_search_result.cc
@@ -12,13 +12,13 @@ #include "base/metrics/histogram_macros.h" #include "base/strings/utf_string_conversions.h" #include "chrome/browser/apps/app_service/app_icon/app_icon_factory.h" +#include "chrome/browser/ash/app_list/app_list_controller_delegate.h" #include "chrome/browser/ash/app_list/app_service/app_service_app_icon_loader.h" #include "chrome/browser/ash/app_list/arc/arc_app_list_prefs.h" #include "chrome/browser/ash/app_list/arc/arc_app_utils.h" #include "chrome/browser/ash/app_list/search/common/icon_constants.h" #include "chrome/browser/chromeos/arc/icon_decode_request.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_controller_delegate.h" #include "chrome/grit/generated_resources.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/models/image_model.h"
diff --git a/chrome/browser/ash/app_list/search/arc/arc_app_shortcuts_search_provider_unittest.cc b/chrome/browser/ash/app_list/search/arc/arc_app_shortcuts_search_provider_unittest.cc index 457c913..40dce41 100644 --- a/chrome/browser/ash/app_list/search/arc/arc_app_shortcuts_search_provider_unittest.cc +++ b/chrome/browser/ash/app_list/search/arc/arc_app_shortcuts_search_provider_unittest.cc
@@ -12,13 +12,13 @@ #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" #include "base/test/scoped_feature_list.h" +#include "chrome/browser/ash/app_list/app_list_test_util.h" #include "chrome/browser/ash/app_list/arc/arc_app_list_prefs.h" #include "chrome/browser/ash/app_list/arc/arc_app_test.h" #include "chrome/browser/ash/app_list/search/chrome_search_result.h" #include "chrome/browser/ash/app_list/search/test/test_search_controller.h" #include "chrome/browser/ash/app_list/test/test_app_list_controller_delegate.h" #include "chrome/browser/chromeos/arc/icon_decode_request.h" -#include "chrome/browser/ui/app_list/app_list_test_util.h" #include "testing/gtest/include/gtest/gtest.h" namespace app_list::test {
diff --git a/chrome/browser/ash/app_list/search/arc/arc_playstore_search_provider_unittest.cc b/chrome/browser/ash/app_list/search/arc/arc_playstore_search_provider_unittest.cc index e11391d4..509e005 100644 --- a/chrome/browser/ash/app_list/search/arc/arc_playstore_search_provider_unittest.cc +++ b/chrome/browser/ash/app_list/search/arc/arc_playstore_search_provider_unittest.cc
@@ -13,13 +13,13 @@ #include "base/strings/string_number_conversions.h" #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" +#include "chrome/browser/ash/app_list/app_list_test_util.h" #include "chrome/browser/ash/app_list/arc/arc_app_test.h" #include "chrome/browser/ash/app_list/search/chrome_search_result.h" #include "chrome/browser/ash/app_list/search/test/test_search_controller.h" #include "chrome/browser/ash/app_list/test/test_app_list_controller_delegate.h" #include "chrome/browser/chromeos/arc/icon_decode_request.h" #include "chrome/browser/extensions/extension_service.h" -#include "chrome/browser/ui/app_list/app_list_test_util.h" #include "chrome/test/base/testing_profile.h" #include "extensions/common/extension_builder.h"
diff --git a/chrome/browser/ash/app_list/search/arc/arc_playstore_search_result.cc b/chrome/browser/ash/app_list/search/arc/arc_playstore_search_result.cc index 6ea7c96..724ef0e 100644 --- a/chrome/browser/ash/app_list/search/arc/arc_playstore_search_result.cc +++ b/chrome/browser/ash/app_list/search/arc/arc_playstore_search_result.cc
@@ -13,11 +13,11 @@ #include "ash/public/cpp/app_list/vector_icons/vector_icons.h" #include "base/strings/utf_string_conversions.h" #include "chrome/browser/apps/app_service/app_icon/app_icon_factory.h" +#include "chrome/browser/ash/app_list/app_list_controller_delegate.h" #include "chrome/browser/ash/app_list/arc/arc_playstore_app_context_menu.h" #include "chrome/browser/ash/app_list/search/common/icon_constants.h" #include "chrome/browser/chromeos/arc/icon_decode_request.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_controller_delegate.h" #include "components/crx_file/id_util.h" #include "ui/base/models/image_model.h" #include "ui/gfx/canvas.h"
diff --git a/chrome/browser/ash/app_list/search/arc/arc_playstore_search_result.h b/chrome/browser/ash/app_list/search/arc/arc_playstore_search_result.h index a71b504..3df7199 100644 --- a/chrome/browser/ash/app_list/search/arc/arc_playstore_search_result.h +++ b/chrome/browser/ash/app_list/search/arc/arc_playstore_search_result.h
@@ -12,8 +12,8 @@ #include "ash/components/arc/mojom/app.mojom.h" #include "ash/public/cpp/app_list/app_list_metrics.h" #include "base/memory/weak_ptr.h" +#include "chrome/browser/ash/app_list/app_context_menu_delegate.h" #include "chrome/browser/ash/app_list/search/chrome_search_result.h" -#include "chrome/browser/ui/app_list/app_context_menu_delegate.h" #include "third_party/abseil-cpp/absl/types/optional.h" class AppListControllerDelegate;
diff --git a/chrome/browser/ash/app_list/search/assistant_text_search_provider_unittest.cc b/chrome/browser/ash/app_list/search/assistant_text_search_provider_unittest.cc index e308eba..13d752a3 100644 --- a/chrome/browser/ash/app_list/search/assistant_text_search_provider_unittest.cc +++ b/chrome/browser/ash/app_list/search/assistant_text_search_provider_unittest.cc
@@ -11,9 +11,9 @@ #include "ash/public/cpp/assistant/test_support/mock_assistant_state.h" #include "base/strings/utf_string_conversions.h" #include "base/test/scoped_feature_list.h" +#include "chrome/browser/ash/app_list/app_list_test_util.h" #include "chrome/browser/ash/app_list/search/chrome_search_result.h" #include "chrome/browser/ash/app_list/search/test/test_search_controller.h" -#include "chrome/browser/ui/app_list/app_list_test_util.h" #include "testing/gmock/include/gmock/gmock.h" #include "url/gurl.h"
diff --git a/chrome/browser/ash/app_list/search/chrome_search_result.cc b/chrome/browser/ash/app_list/search/chrome_search_result.cc index 622091f..e4c1154e 100644 --- a/chrome/browser/ash/app_list/search/chrome_search_result.cc +++ b/chrome/browser/ash/app_list/search/chrome_search_result.cc
@@ -7,7 +7,7 @@ #include <map> #include "base/logging.h" -#include "chrome/browser/ui/app_list/app_context_menu.h" +#include "chrome/browser/ash/app_list/app_context_menu.h" #include "ui/base/models/image_model.h" ChromeSearchResult::ChromeSearchResult()
diff --git a/chrome/browser/ash/app_list/search/chrome_search_result.h b/chrome/browser/ash/app_list/search/chrome_search_result.h index 0a9ff59c..0b8643a 100644 --- a/chrome/browser/ash/app_list/search/chrome_search_result.h +++ b/chrome/browser/ash/app_list/search/chrome_search_result.h
@@ -12,8 +12,8 @@ #include "ash/public/cpp/app_list/app_list_metrics.h" #include "ash/public/cpp/app_list/app_list_types.h" #include "base/memory/weak_ptr.h" +#include "chrome/browser/ash/app_list/app_list_model_updater.h" #include "chrome/browser/ash/app_list/search/scoring.h" -#include "chrome/browser/ui/app_list/app_list_model_updater.h" #include "chromeos/crosapi/mojom/launcher_search.mojom.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "ui/base/models/simple_menu_model.h"
diff --git a/chrome/browser/ash/app_list/search/games/game_provider.cc b/chrome/browser/ash/app_list/search/games/game_provider.cc index 995960e8..f6428599 100644 --- a/chrome/browser/ash/app_list/search/games/game_provider.cc +++ b/chrome/browser/ash/app_list/search/games/game_provider.cc
@@ -19,10 +19,10 @@ #include "chrome/browser/apps/app_discovery_service/app_discovery_util.h" #include "chrome/browser/apps/app_discovery_service/game_extras.h" #include "chrome/browser/apps/app_discovery_service/result.h" +#include "chrome/browser/ash/app_list/app_list_controller_delegate.h" #include "chrome/browser/ash/app_list/search/games/game_result.h" #include "chrome/browser/ash/app_list/search/search_features.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_controller_delegate.h" #include "chromeos/ash/components/string_matching/fuzzy_tokenized_string_match.h" #include "chromeos/ash/components/string_matching/tokenized_string.h" #include "components/prefs/pref_service.h"
diff --git a/chrome/browser/ash/app_list/search/games/game_result.cc b/chrome/browser/ash/app_list/search/games/game_result.cc index b4fd95e..ab6a643 100644 --- a/chrome/browser/ash/app_list/search/games/game_result.cc +++ b/chrome/browser/ash/app_list/search/games/game_result.cc
@@ -17,9 +17,9 @@ #include "chrome/browser/apps/app_discovery_service/game_extras.h" #include "chrome/browser/apps/app_service/app_service_proxy.h" #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" +#include "chrome/browser/ash/app_list/app_list_controller_delegate.h" #include "chrome/browser/ash/app_list/search/common/icon_constants.h" #include "chrome/browser/ash/app_list/search/common/search_result_util.h" -#include "chrome/browser/ui/app_list/app_list_controller_delegate.h" #include "ui/base/page_transition_types.h" #include "ui/base/window_open_disposition_utils.h" #include "ui/gfx/image/image_skia.h"
diff --git a/chrome/browser/ash/app_list/search/help_app_provider_unittest.cc b/chrome/browser/ash/app_list/search/help_app_provider_unittest.cc index 72af884..4d31412 100644 --- a/chrome/browser/ash/app_list/search/help_app_provider_unittest.cc +++ b/chrome/browser/ash/app_list/search/help_app_provider_unittest.cc
@@ -14,10 +14,10 @@ #include "base/test/scoped_feature_list.h" #include "chrome/browser/apps/app_service/app_service_proxy.h" #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" +#include "chrome/browser/ash/app_list/app_list_test_util.h" #include "chrome/browser/ash/app_list/search/chrome_search_result.h" #include "chrome/browser/ash/app_list/search/common/icon_constants.h" #include "chrome/browser/ash/app_list/search/test/test_search_controller.h" -#include "chrome/browser/ui/app_list/app_list_test_util.h" #include "chrome/browser/web_applications/web_app_id_constants.h" #include "components/services/app_service/public/cpp/stub_icon_loader.h" #include "content/public/test/browser_task_environment.h"
diff --git a/chrome/browser/ash/app_list/search/help_app_zero_state_provider_unittest.cc b/chrome/browser/ash/app_list/search/help_app_zero_state_provider_unittest.cc index d77d0fd6..88af76f 100644 --- a/chrome/browser/ash/app_list/search/help_app_zero_state_provider_unittest.cc +++ b/chrome/browser/ash/app_list/search/help_app_zero_state_provider_unittest.cc
@@ -11,11 +11,11 @@ #include "ash/public/cpp/app_list/app_list_types.h" #include "base/feature_list.h" #include "base/test/scoped_feature_list.h" +#include "chrome/browser/ash/app_list/app_list_notifier_impl.h" +#include "chrome/browser/ash/app_list/app_list_test_util.h" #include "chrome/browser/ash/app_list/search/chrome_search_result.h" #include "chrome/browser/ash/app_list/search/test/test_search_controller.h" #include "chrome/browser/ash/app_list/test/test_app_list_controller.h" -#include "chrome/browser/ui/app_list/app_list_notifier_impl.h" -#include "chrome/browser/ui/app_list/app_list_test_util.h" #include "chrome/common/pref_names.h" #include "chrome/test/base/testing_profile.h" #include "chromeos/strings/grit/chromeos_strings.h"
diff --git a/chrome/browser/ash/app_list/search/omnibox/omnibox_answer_result.cc b/chrome/browser/ash/app_list/search/omnibox/omnibox_answer_result.cc index 3fd9cf3..7a4d1d7 100644 --- a/chrome/browser/ash/app_list/search/omnibox/omnibox_answer_result.cc +++ b/chrome/browser/ash/app_list/search/omnibox/omnibox_answer_result.cc
@@ -10,13 +10,13 @@ #include "ash/public/cpp/app_list/vector_icons/vector_icons.h" #include "ash/public/cpp/style/dark_light_mode_controller.h" #include "base/strings/string_util.h" +#include "chrome/browser/ash/app_list/app_list_controller_delegate.h" #include "chrome/browser/ash/app_list/search/common/icon_constants.h" #include "chrome/browser/ash/app_list/search/common/search_result_util.h" #include "chrome/browser/ash/app_list/search/omnibox/omnibox_util.h" #include "chrome/browser/bitmap_fetcher/bitmap_fetcher.h" #include "chrome/browser/chromeos/launcher_search/search_util.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_controller_delegate.h" #include "chromeos/crosapi/mojom/launcher_search.mojom.h" #include "components/omnibox/browser/vector_icons.h" #include "extensions/common/image_util.h"
diff --git a/chrome/browser/ash/app_list/search/omnibox/omnibox_lacros_provider.cc b/chrome/browser/ash/app_list/search/omnibox/omnibox_lacros_provider.cc index 0c7f0b4f..e09ceaa 100644 --- a/chrome/browser/ash/app_list/search/omnibox/omnibox_lacros_provider.cc +++ b/chrome/browser/ash/app_list/search/omnibox/omnibox_lacros_provider.cc
@@ -4,6 +4,7 @@ #include "chrome/browser/ash/app_list/search/omnibox/omnibox_lacros_provider.h" +#include "chrome/browser/ash/app_list/app_list_controller_delegate.h" #include "chrome/browser/ash/app_list/search/omnibox/omnibox_answer_result.h" #include "chrome/browser/ash/app_list/search/omnibox/omnibox_result.h" #include "chrome/browser/ash/app_list/search/omnibox/omnibox_util.h" @@ -14,7 +15,6 @@ #include "chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.h" #include "chrome/browser/chromeos/launcher_search/search_util.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_controller_delegate.h" #include "chromeos/ash/components/string_matching/tokenized_string.h" #include "chromeos/crosapi/mojom/crosapi.mojom.h" #include "chromeos/crosapi/mojom/launcher_search.mojom.h"
diff --git a/chrome/browser/ash/app_list/search/omnibox/omnibox_provider.cc b/chrome/browser/ash/app_list/search/omnibox/omnibox_provider.cc index a60bc8d..460e67f7 100644 --- a/chrome/browser/ash/app_list/search/omnibox/omnibox_provider.cc +++ b/chrome/browser/ash/app_list/search/omnibox/omnibox_provider.cc
@@ -9,6 +9,7 @@ #include <utility> #include "base/metrics/histogram_macros.h" +#include "chrome/browser/ash/app_list/app_list_controller_delegate.h" #include "chrome/browser/ash/app_list/search/omnibox/omnibox_answer_result.h" #include "chrome/browser/ash/app_list/search/omnibox/omnibox_result.h" #include "chrome/browser/ash/app_list/search/omnibox/omnibox_util.h" @@ -20,7 +21,6 @@ #include "chrome/browser/favicon/favicon_service_factory.h" #include "chrome/browser/history/history_service_factory.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_controller_delegate.h" #include "components/favicon/core/favicon_service.h" #include "components/omnibox/browser/autocomplete_classifier.h" #include "components/omnibox/browser/autocomplete_input.h"
diff --git a/chrome/browser/ash/app_list/search/omnibox/omnibox_result.cc b/chrome/browser/ash/app_list/search/omnibox/omnibox_result.cc index d4ee7bc..99baa3bd 100644 --- a/chrome/browser/ash/app_list/search/omnibox/omnibox_result.cc +++ b/chrome/browser/ash/app_list/search/omnibox/omnibox_result.cc
@@ -7,13 +7,13 @@ #include "ash/public/cpp/app_list/vector_icons/vector_icons.h" #include "ash/public/cpp/style/dark_light_mode_controller.h" #include "base/strings/strcat.h" +#include "chrome/browser/ash/app_list/app_list_controller_delegate.h" #include "chrome/browser/ash/app_list/search/common/icon_constants.h" #include "chrome/browser/ash/app_list/search/omnibox/omnibox_util.h" #include "chrome/browser/bitmap_fetcher/bitmap_fetcher.h" #include "chrome/browser/chromeos/launcher_search/search_util.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/search_engines/template_url_service_factory.h" -#include "chrome/browser/ui/app_list/app_list_controller_delegate.h" #include "chrome/grit/generated_resources.h" #include "chromeos/crosapi/mojom/launcher_search.mojom.h" #include "components/omnibox/browser/vector_icons.h"
diff --git a/chrome/browser/ash/app_list/search/omnibox/open_tab_result.cc b/chrome/browser/ash/app_list/search/omnibox/open_tab_result.cc index 8401752..9419ac1 100644 --- a/chrome/browser/ash/app_list/search/omnibox/open_tab_result.cc +++ b/chrome/browser/ash/app_list/search/omnibox/open_tab_result.cc
@@ -10,12 +10,12 @@ #include "base/strings/strcat.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" +#include "chrome/browser/ash/app_list/app_list_controller_delegate.h" #include "chrome/browser/ash/app_list/search/common/icon_constants.h" #include "chrome/browser/ash/app_list/search/common/search_result_util.h" #include "chrome/browser/ash/app_list/search/common/string_util.h" #include "chrome/browser/ash/app_list/search/omnibox/omnibox_util.h" #include "chrome/browser/chromeos/launcher_search/search_util.h" -#include "chrome/browser/ui/app_list/app_list_controller_delegate.h" #include "chromeos/ash/components/string_matching/tokenized_string.h" #include "chromeos/ash/components/string_matching/tokenized_string_match.h" #include "chromeos/crosapi/mojom/launcher_search.mojom.h"
diff --git a/chrome/browser/ash/app_list/search/search_controller_factory.h b/chrome/browser/ash/app_list/search/search_controller_factory.h index 67e71fe2..0951c8b 100644 --- a/chrome/browser/ash/app_list/search/search_controller_factory.h +++ b/chrome/browser/ash/app_list/search/search_controller_factory.h
@@ -7,7 +7,7 @@ #include <memory> -#include "chrome/browser/ui/app_list/app_list_model_updater.h" +#include "chrome/browser/ash/app_list/app_list_model_updater.h" class AppListControllerDelegate; class Profile;
diff --git a/chrome/browser/ash/app_list/search/search_controller_impl.cc b/chrome/browser/ash/app_list/search/search_controller_impl.cc index e8f822b..c3003eca 100644 --- a/chrome/browser/ash/app_list/search/search_controller_impl.cc +++ b/chrome/browser/ash/app_list/search/search_controller_impl.cc
@@ -16,6 +16,8 @@ #include "base/strings/utf_string_conversions.h" #include "base/time/default_clock.h" #include "base/time/time.h" +#include "chrome/browser/ash/app_list/app_list_controller_delegate.h" +#include "chrome/browser/ash/app_list/app_list_model_updater.h" #include "chrome/browser/ash/app_list/search/app_search_data_source.h" #include "chrome/browser/ash/app_list/search/chrome_search_result.h" #include "chrome/browser/ash/app_list/search/common/string_util.h" @@ -26,8 +28,6 @@ #include "chrome/browser/ash/app_list/search/search_provider.h" #include "chrome/browser/ash/app_list/search/search_session_metrics_manager.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_controller_delegate.h" -#include "chrome/browser/ui/app_list/app_list_model_updater.h" #include "components/metrics/structured/structured_events.h" #include "components/prefs/pref_service.h" #include "content/public/browser/browser_task_traits.h"
diff --git a/chrome/browser/ash/app_list/search/test/app_list_search_test_helper.h b/chrome/browser/ash/app_list/search/test/app_list_search_test_helper.h index cba9c85..0f052d4 100644 --- a/chrome/browser/ash/app_list/search/test/app_list_search_test_helper.h +++ b/chrome/browser/ash/app_list/search/test/app_list_search_test_helper.h
@@ -21,14 +21,14 @@ #include "base/test/metrics/histogram_tester.h" #include "base/test/scoped_feature_list.h" #include "base/threading/thread_restrictions.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" +#include "chrome/browser/ash/app_list/app_list_model_updater.h" #include "chrome/browser/ash/app_list/search/chrome_search_result.h" #include "chrome/browser/ash/app_list/search/search_controller.h" #include "chrome/browser/ash/app_list/test/chrome_app_list_test_support.h" #include "chrome/browser/ash/file_manager/path_util.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" -#include "chrome/browser/ui/app_list/app_list_model_updater.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_finder.h" #include "chrome/common/pref_names.h"
diff --git a/chrome/browser/ash/app_list/test/app_list_syncable_service_test_base.cc b/chrome/browser/ash/app_list/test/app_list_syncable_service_test_base.cc index c480708..dd6ececd 100644 --- a/chrome/browser/ash/app_list/test/app_list_syncable_service_test_base.cc +++ b/chrome/browser/ash/app_list/test/app_list_syncable_service_test_base.cc
@@ -4,11 +4,11 @@ #include "chrome/browser/ash/app_list/test/app_list_syncable_service_test_base.h" +#include "chrome/browser/ash/app_list/app_list_model_updater.h" +#include "chrome/browser/ash/app_list/chrome_app_list_item.h" +#include "chrome/browser/ash/app_list/chrome_app_list_model_updater.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/profiles/profile_manager.h" -#include "chrome/browser/ui/app_list/app_list_model_updater.h" -#include "chrome/browser/ui/app_list/chrome_app_list_item.h" -#include "chrome/browser/ui/app_list/chrome_app_list_model_updater.h" #include "chrome/test/base/testing_browser_process.h" #include "chrome/test/base/testing_profile.h"
diff --git a/chrome/browser/ash/app_list/test/app_list_syncable_service_test_base.h b/chrome/browser/ash/app_list/test/app_list_syncable_service_test_base.h index 26781cb..26183f2 100644 --- a/chrome/browser/ash/app_list/test/app_list_syncable_service_test_base.h +++ b/chrome/browser/ash/app_list/test/app_list_syncable_service_test_base.h
@@ -8,8 +8,8 @@ #include <string> #include "base/files/scoped_temp_dir.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" -#include "chrome/browser/ui/app_list/app_list_test_util.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/app_list_test_util.h" class ChromeAppListModelUpdater;
diff --git a/chrome/browser/ash/app_list/test/chrome_app_list_test_support.cc b/chrome/browser/ash/app_list/test/chrome_app_list_test_support.cc index b840ae4..7d8a2a8 100644 --- a/chrome/browser/ash/app_list/test/chrome_app_list_test_support.cc +++ b/chrome/browser/ash/app_list/test/chrome_app_list_test_support.cc
@@ -12,13 +12,13 @@ #include "base/bind.h" #include "base/run_loop.h" #include "base/strings/stringprintf.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" +#include "chrome/browser/ash/app_list/app_list_model_updater.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" +#include "chrome/browser/ash/app_list/chrome_app_list_item.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/profiles/profile_manager.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" -#include "chrome/browser/ui/app_list/app_list_model_updater.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" -#include "chrome/browser/ui/app_list/chrome_app_list_item.h" #include "components/crx_file/id_util.h" #include "third_party/skia/include/core/SkBitmap.h"
diff --git a/chrome/browser/ash/app_list/test/fake_app_list_model_updater.cc b/chrome/browser/ash/app_list/test/fake_app_list_model_updater.cc index f9b88d0b..f94ce48a 100644 --- a/chrome/browser/ash/app_list/test/fake_app_list_model_updater.cc +++ b/chrome/browser/ash/app_list/test/fake_app_list_model_updater.cc
@@ -10,7 +10,7 @@ #include "base/containers/flat_map.h" #include "base/logging.h" #include "base/run_loop.h" -#include "chrome/browser/ui/app_list/chrome_app_list_item.h" +#include "chrome/browser/ash/app_list/chrome_app_list_item.h" #include "extensions/common/constants.h" FakeAppListModelUpdater::FakeAppListModelUpdater(
diff --git a/chrome/browser/ash/app_list/test/fake_app_list_model_updater.h b/chrome/browser/ash/app_list/test/fake_app_list_model_updater.h index 41126b8..aaad8fa 100644 --- a/chrome/browser/ash/app_list/test/fake_app_list_model_updater.h +++ b/chrome/browser/ash/app_list/test/fake_app_list_model_updater.h
@@ -11,8 +11,8 @@ #include <vector> #include "base/observer_list.h" +#include "chrome/browser/ash/app_list/app_list_model_updater.h" #include "chrome/browser/ash/app_list/search/chrome_search_result.h" -#include "chrome/browser/ui/app_list/app_list_model_updater.h" class ChromeAppListItem;
diff --git a/chrome/browser/ash/app_list/test/test_app_list_controller.cc b/chrome/browser/ash/app_list/test/test_app_list_controller.cc index 3dc1f45..ad2d462 100644 --- a/chrome/browser/ash/app_list/test/test_app_list_controller.cc +++ b/chrome/browser/ash/app_list/test/test_app_list_controller.cc
@@ -5,8 +5,8 @@ #include "chrome/browser/ash/app_list/test/test_app_list_controller.h" #include "ash/public/cpp/app_list/app_list_controller_observer.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" -#include "chrome/browser/ui/app_list/app_list_model_updater.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" +#include "chrome/browser/ash/app_list/app_list_model_updater.h" namespace test {
diff --git a/chrome/browser/ash/app_list/test/test_app_list_controller_delegate.h b/chrome/browser/ash/app_list/test/test_app_list_controller_delegate.h index ccd7950..5fc7606 100644 --- a/chrome/browser/ash/app_list/test/test_app_list_controller_delegate.h +++ b/chrome/browser/ash/app_list/test/test_app_list_controller_delegate.h
@@ -7,7 +7,7 @@ #include <string> -#include "chrome/browser/ui/app_list/app_list_controller_delegate.h" +#include "chrome/browser/ash/app_list/app_list_controller_delegate.h" namespace test {
diff --git a/chrome/browser/ash/arc/app_shortcuts/arc_app_shortcuts_menu_builder.cc b/chrome/browser/ash/arc/app_shortcuts/arc_app_shortcuts_menu_builder.cc index 9e8a88e4..8c3aa682 100644 --- a/chrome/browser/ash/arc/app_shortcuts/arc_app_shortcuts_menu_builder.cc +++ b/chrome/browser/ash/arc/app_shortcuts/arc_app_shortcuts_menu_builder.cc
@@ -10,12 +10,12 @@ #include "base/bind.h" #include "base/metrics/histogram_macros.h" #include "base/strings/utf_string_conversions.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" #include "chrome/browser/ash/app_list/arc/arc_app_utils.h" #include "chrome/browser/ash/app_list/search/ranking/launch_data.h" #include "chrome/browser/ash/app_list/search/search_controller.h" #include "chrome/browser/ash/arc/app_shortcuts/arc_app_shortcuts_request.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" #include "ui/base/models/image_model.h" #include "ui/base/models/simple_menu_model.h"
diff --git a/chrome/browser/ash/crosapi/browser_data_migrator_util.cc b/chrome/browser/ash/crosapi/browser_data_migrator_util.cc index 31105ac..b5dc697 100644 --- a/chrome/browser/ash/crosapi/browser_data_migrator_util.cc +++ b/chrome/browser/ash/crosapi/browser_data_migrator_util.cc
@@ -21,6 +21,7 @@ #include "base/system/sys_info.h" #include "base/values.h" #include "components/sync/base/model_type.h" +#include "components/sync/base/storage_type.h" #include "components/sync/model/blocking_model_type_store_impl.h" #include "third_party/leveldatabase/src/include/leveldb/write_batch.h" @@ -628,9 +629,12 @@ bool IsAshOnlySyncDataType(base::StringPiece key) { for (auto type : kAshOnlySyncDataTypes) { - if ((base::StartsWith(key, FormatDataPrefix(type)) || - base::StartsWith(key, FormatMetaPrefix(type)) || - key == FormatGlobalMetadataKey(type))) { + if ((base::StartsWith( + key, FormatDataPrefix(type, syncer::StorageType::kUnspecified)) || + base::StartsWith( + key, FormatMetaPrefix(type, syncer::StorageType::kUnspecified)) || + key == FormatGlobalMetadataKey(type, + syncer::StorageType::kUnspecified))) { return true; } }
diff --git a/chrome/browser/ash/crosapi/browser_data_migrator_util_unittest.cc b/chrome/browser/ash/crosapi/browser_data_migrator_util_unittest.cc index aa139f6dd..f8ed7e4 100644 --- a/chrome/browser/ash/crosapi/browser_data_migrator_util_unittest.cc +++ b/chrome/browser/ash/crosapi/browser_data_migrator_util_unittest.cc
@@ -20,6 +20,7 @@ #include "base/test/metrics/histogram_tester.h" #include "chrome/browser/ash/crosapi/fake_migration_progress_tracker.h" #include "components/sync/base/model_type.h" +#include "components/sync/base/storage_type.h" #include "components/sync/model/blocking_model_type_store_impl.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/leveldatabase/env_chromium.h" @@ -148,18 +149,28 @@ ASSERT_TRUE(status.ok()); leveldb::WriteBatch batch; - batch.Put(syncer::FormatDataPrefix(kAshSyncDataType) + kMoveExtensionId, + batch.Put(syncer::FormatDataPrefix(kAshSyncDataType, + syncer::StorageType::kUnspecified) + + kMoveExtensionId, "ash_data"); - batch.Put(syncer::FormatMetaPrefix(kAshSyncDataType) + kMoveExtensionId, + batch.Put(syncer::FormatMetaPrefix(kAshSyncDataType, + syncer::StorageType::kUnspecified) + + kMoveExtensionId, "ash_metadata"); - batch.Put(syncer::FormatGlobalMetadataKey(kAshSyncDataType), + batch.Put(syncer::FormatGlobalMetadataKey(kAshSyncDataType, + syncer::StorageType::kUnspecified), "ash_globalmetadata"); - batch.Put(syncer::FormatDataPrefix(kLacrosSyncDataType) + kMoveExtensionId, + batch.Put(syncer::FormatDataPrefix(kLacrosSyncDataType, + syncer::StorageType::kUnspecified) + + kMoveExtensionId, "lacros_data"); - batch.Put(syncer::FormatMetaPrefix(kLacrosSyncDataType) + kMoveExtensionId, + batch.Put(syncer::FormatMetaPrefix(kLacrosSyncDataType, + syncer::StorageType::kUnspecified) + + kMoveExtensionId, "lacros_metadata"); - batch.Put(syncer::FormatGlobalMetadataKey(kLacrosSyncDataType), + batch.Put(syncer::FormatGlobalMetadataKey(kLacrosSyncDataType, + syncer::StorageType::kUnspecified), "lacros_globalmetadata"); leveldb::WriteOptions write_options; @@ -440,22 +451,33 @@ // Check resulting Ash database. auto ash_db_map = ReadLevelDB(ash_db_path); std::map<std::string, std::string> expected_ash_db_map = { - {syncer::FormatDataPrefix(kAshSyncDataType) + kMoveExtensionId, + {syncer::FormatDataPrefix(kAshSyncDataType, + syncer::StorageType::kUnspecified) + + kMoveExtensionId, "ash_data"}, - {syncer::FormatMetaPrefix(kAshSyncDataType) + kMoveExtensionId, + {syncer::FormatMetaPrefix(kAshSyncDataType, + syncer::StorageType::kUnspecified) + + kMoveExtensionId, "ash_metadata"}, - {syncer::FormatGlobalMetadataKey(kAshSyncDataType), "ash_globalmetadata"}, + {syncer::FormatGlobalMetadataKey(kAshSyncDataType, + syncer::StorageType::kUnspecified), + "ash_globalmetadata"}, }; EXPECT_EQ(expected_ash_db_map, ash_db_map); // Check resulting Lacros database. auto lacros_db_map = ReadLevelDB(lacros_db_path); std::map<std::string, std::string> expected_lacros_db_map = { - {syncer::FormatDataPrefix(kLacrosSyncDataType) + kMoveExtensionId, + {syncer::FormatDataPrefix(kLacrosSyncDataType, + syncer::StorageType::kUnspecified) + + kMoveExtensionId, "lacros_data"}, - {syncer::FormatMetaPrefix(kLacrosSyncDataType) + kMoveExtensionId, + {syncer::FormatMetaPrefix(kLacrosSyncDataType, + syncer::StorageType::kUnspecified) + + kMoveExtensionId, "lacros_metadata"}, - {syncer::FormatGlobalMetadataKey(kLacrosSyncDataType), + {syncer::FormatGlobalMetadataKey(kLacrosSyncDataType, + syncer::StorageType::kUnspecified), "lacros_globalmetadata"}, }; EXPECT_EQ(expected_lacros_db_map, lacros_db_map);
diff --git a/chrome/browser/ash/crosapi/move_migrator_unittest.cc b/chrome/browser/ash/crosapi/move_migrator_unittest.cc index a9d92e3..8706c14 100644 --- a/chrome/browser/ash/crosapi/move_migrator_unittest.cc +++ b/chrome/browser/ash/crosapi/move_migrator_unittest.cc
@@ -27,6 +27,7 @@ #include "chrome/browser/ash/crosapi/fake_migration_progress_tracker.h" #include "chrome/common/chrome_constants.h" #include "components/prefs/testing_pref_service.h" +#include "components/sync/base/storage_type.h" #include "components/sync/model/blocking_model_type_store_impl.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/leveldatabase/env_chromium.h" @@ -318,19 +319,29 @@ leveldb::WriteBatch batch; if (ash) { - batch.Put(syncer::FormatDataPrefix(kAshSyncDataType) + kMoveExtensionId, + batch.Put(syncer::FormatDataPrefix(kAshSyncDataType, + syncer::StorageType::kUnspecified) + + kMoveExtensionId, "ash_data"); - batch.Put(syncer::FormatMetaPrefix(kAshSyncDataType) + kMoveExtensionId, + batch.Put(syncer::FormatMetaPrefix(kAshSyncDataType, + syncer::StorageType::kUnspecified) + + kMoveExtensionId, "ash_metadata"); - batch.Put(syncer::FormatGlobalMetadataKey(kAshSyncDataType), + batch.Put(syncer::FormatGlobalMetadataKey( + kAshSyncDataType, syncer::StorageType::kUnspecified), "ash_globalmetadata"); } if (lacros) { - batch.Put(syncer::FormatDataPrefix(kLacrosSyncDataType) + kMoveExtensionId, + batch.Put(syncer::FormatDataPrefix(kLacrosSyncDataType, + syncer::StorageType::kUnspecified) + + kMoveExtensionId, "lacros_data"); - batch.Put(syncer::FormatMetaPrefix(kLacrosSyncDataType) + kMoveExtensionId, + batch.Put(syncer::FormatMetaPrefix(kLacrosSyncDataType, + syncer::StorageType::kUnspecified) + + kMoveExtensionId, "lacros_metadata"); - batch.Put(syncer::FormatGlobalMetadataKey(kLacrosSyncDataType), + batch.Put(syncer::FormatGlobalMetadataKey( + kLacrosSyncDataType, syncer::StorageType::kUnspecified), "lacros_globalmetadata"); }
diff --git a/chrome/browser/ash/crostini/crostini_package_notification.cc b/chrome/browser/ash/crostini/crostini_package_notification.cc index f33a771..86b2b2a 100644 --- a/chrome/browser/ash/crostini/crostini_package_notification.cc +++ b/chrome/browser/ash/crostini/crostini_package_notification.cc
@@ -7,12 +7,12 @@ #include "ash/constants/notifier_catalogs.h" #include "ash/public/cpp/notification_utils.h" #include "ash/resources/vector_icons/vector_icons.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" #include "chrome/browser/ash/crostini/crostini_package_service.h" #include "chrome/browser/ash/crostini/crostini_util.h" #include "chrome/browser/ash/guest_os/guest_os_registry_service_factory.h" #include "chrome/browser/ash/guest_os/guest_os_terminal.h" #include "chrome/browser/notifications/notification_display_service.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" #include "chrome/grit/generated_resources.h" #include "ui/base/l10n/l10n_util.h" #include "ui/display/display.h"
diff --git a/chrome/browser/ash/customization/customization_document.cc b/chrome/browser/ash/customization/customization_document.cc index 9eb2fb81..0b077ee 100644 --- a/chrome/browser/ash/customization/customization_document.cc +++ b/chrome/browser/ash/customization/customization_document.cc
@@ -27,6 +27,8 @@ #include "base/task/thread_pool.h" #include "base/threading/scoped_blocking_call.h" #include "base/time/time.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" #include "chrome/browser/ash/customization/customization_wallpaper_downloader.h" #include "chrome/browser/ash/customization/customization_wallpaper_util.h" #include "chrome/browser/ash/extensions/default_app_order.h" @@ -36,8 +38,6 @@ #include "chrome/browser/extensions/external_loader.h" #include "chrome/browser/extensions/external_provider_impl.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" #include "chrome/common/chrome_paths.h" #include "chrome/common/pref_names.h" #include "chromeos/system/statistics_provider.h"
diff --git a/chrome/browser/ash/customization/customization_document_unittest.cc b/chrome/browser/ash/customization/customization_document_unittest.cc index b744fc1..c608cee 100644 --- a/chrome/browser/ash/customization/customization_document_unittest.cc +++ b/chrome/browser/ash/customization/customization_document_unittest.cc
@@ -9,13 +9,13 @@ #include "base/bind.h" #include "base/run_loop.h" #include "base/strings/stringprintf.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" #include "chrome/browser/ash/net/network_portal_detector_test_impl.h" #include "chrome/browser/ash/settings/scoped_cros_settings_test_helper.h" #include "chrome/browser/extensions/external_provider_impl.h" #include "chrome/browser/prefs/browser_prefs.h" #include "chrome/browser/profiles/profile_manager.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" #include "chrome/test/base/testing_browser_process.h" #include "chrome/test/base/testing_profile.h" #include "chromeos/ash/components/network/network_handler.h"
diff --git a/chrome/browser/ash/guest_os/guest_os_registry_service.cc b/chrome/browser/ash/guest_os/guest_os_registry_service.cc index b7bce0bbb..bd6fd1c 100644 --- a/chrome/browser/ash/guest_os/guest_os_registry_service.cc +++ b/chrome/browser/ash/guest_os/guest_os_registry_service.cc
@@ -21,6 +21,8 @@ #include "base/time/time.h" #include "chrome/browser/apps/app_service/app_icon/app_icon_factory.h" #include "chrome/browser/apps/app_service/app_icon/dip_px_util.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" #include "chrome/browser/ash/borealis/borealis_features.h" #include "chrome/browser/ash/borealis/borealis_service.h" #include "chrome/browser/ash/crostini/crostini_features.h" @@ -32,8 +34,6 @@ #include "chrome/browser/browser_process.h" #include "chrome/browser/icon_transcoder/svg_icon_transcoder.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" #include "chrome/grit/app_icon_resources.h" #include "chrome/grit/generated_resources.h" #include "chromeos/ash/components/dbus/vm_applications/apps.pb.h"
diff --git a/chrome/browser/ash/login/login_constants.h b/chrome/browser/ash/login/login_constants.h index 43b24ec..303afb1 100644 --- a/chrome/browser/ash/login/login_constants.h +++ b/chrome/browser/ash/login/login_constants.h
@@ -29,9 +29,9 @@ constexpr int kDefaultSAMLOfflineSigninTimeLimit = base::Days(14).InSeconds(); constexpr int kDefaultGaiaLockScreenOfflineSigninTimeLimitDays = - kLockScreenOfflineSigninTimeLimitDaysMatchLogin; + kOfflineSigninTimeLimitNotSet; constexpr int kDefaultSamlLockScreenOfflineSigninTimeLimitDays = - kLockScreenOfflineSigninTimeLimitDaysMatchLogin; + kOfflineSigninTimeLimitNotSet; // In-session password-change feature (includes password expiry notifications). const bool kDefaultSamlInSessionPasswordChangeEnabled = false;
diff --git a/chrome/browser/ash/login/screens/update_screen.cc b/chrome/browser/ash/login/screens/update_screen.cc index d72569b..be8940a 100644 --- a/chrome/browser/ash/login/screens/update_screen.cc +++ b/chrome/browser/ash/login/screens/update_screen.cc
@@ -50,11 +50,6 @@ // Time in seconds after which we initiate reboot. constexpr const base::TimeDelta kWaitBeforeRebootTime = base::Seconds(2); -// Delay before showing error message if captive portal is detected. -// We wait for this delay to let captive portal to perform redirect and show -// its login page before error message appears. -constexpr const base::TimeDelta kDelayErrorMessage = base::Seconds(10); - constexpr const base::TimeDelta kDefaultShowDelay = base::Microseconds(400); // When battery percent is lower and DISCHARGING warn user about it. @@ -283,7 +278,7 @@ if (error_message_timer_.IsRunning()) return; - error_message_timer_.Start(FROM_HERE, kDelayErrorMessage, this, + error_message_timer_.Start(FROM_HERE, delay_error_message_, this, &UpdateScreen::ShowErrorMessage); }
diff --git a/chrome/browser/ash/login/screens/update_screen.h b/chrome/browser/ash/login/screens/update_screen.h index dd548858..3b76a57 100644 --- a/chrome/browser/ash/login/screens/update_screen.h +++ b/chrome/browser/ash/login/screens/update_screen.h
@@ -80,6 +80,10 @@ base::OneShotTimer* GetErrorMessageTimerForTesting(); VersionUpdater* GetVersionUpdaterForTesting(); + void set_delay_for_delayed_timer_for_testing(base::TimeDelta delay) { + delay_error_message_ = delay; + } + // VersionUpdater::Delegate: void OnWaitForRebootTimeElapsed() override; void PrepareForUpdateCheck() override; @@ -239,6 +243,11 @@ base::CallbackListSubscription accessibility_subscription_; + // Delay before showing error message if captive portal is detected. + // We wait for this delay to let captive portal to perform redirect and show + // its login page before error message appears. + base::TimeDelta delay_error_message_ = base::Seconds(10); + // PowerManagerClient::Observer is used only when screen is shown. base::ScopedObservation<chromeos::PowerManagerClient, chromeos::PowerManagerClient::Observer>
diff --git a/chrome/browser/ash/login/screens/update_screen_browsertest.cc b/chrome/browser/ash/login/screens/update_screen_browsertest.cc index 7608fb82..c812769 100644 --- a/chrome/browser/ash/login/screens/update_screen_browsertest.cc +++ b/chrome/browser/ash/login/screens/update_screen_browsertest.cc
@@ -154,6 +154,12 @@ version_updater_->set_tick_clock_for_testing(&tick_clock_); update_screen_->set_tick_clock_for_testing(&tick_clock_); + // Waiting for update screen to be shown might take a long time on some test + // build and the timer might be fired already. Increase the delay and call + // fire from the test instead. + update_screen_->set_delay_for_delayed_timer_for_testing( + base::TimeDelta::Max()); + LoginDisplayHost::default_host() ->GetWizardContextForTesting() ->is_branded_build = true; @@ -215,6 +221,7 @@ // Postconditions: // - Timer to delay showing the `ErrorScreen` is started. void WaitForDelayedErrorTimerToStart() { + LOG(INFO) << "Waiting for delayed error timer to start"; // Wait for the delayed timer to start running. auto* delayed_error_timer = update_screen_->GetErrorMessageTimerForTesting();
diff --git a/chrome/browser/ash/login/session/chrome_session_manager.cc b/chrome/browser/ash/login/session/chrome_session_manager.cc index 1491473..5fbb42c 100644 --- a/chrome/browser/ash/login/session/chrome_session_manager.cc +++ b/chrome/browser/ash/login/session/chrome_session_manager.cc
@@ -14,6 +14,7 @@ #include "base/command_line.h" #include "base/logging.h" #include "chrome/browser/ash/account_manager/account_manager_util.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" #include "chrome/browser/ash/app_mode/app_launch_utils.h" #include "chrome/browser/ash/app_mode/kiosk_cryptohome_remover.h" #include "chrome/browser/ash/boot_times_recorder.h" @@ -31,7 +32,6 @@ #include "chrome/browser/policy/profile_policy_connector.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/signin/identity_manager_factory.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" #include "chrome/browser/ui/webui/ash/login/app_launch_splash_screen_handler.h" #include "chrome/browser/ui/webui/ash/login/lacros_data_backward_migration_screen_handler.h" #include "chrome/browser/ui/webui/ash/login/lacros_data_migration_screen_handler.h"
diff --git a/chrome/browser/ash/login/session/user_session_manager.cc b/chrome/browser/ash/login/session/user_session_manager.cc index d576dd8..9d194b5 100644 --- a/chrome/browser/ash/login/session/user_session_manager.cc +++ b/chrome/browser/ash/login/session/user_session_manager.cc
@@ -38,6 +38,7 @@ #include "chrome/browser/about_flags.h" #include "chrome/browser/app_mode/app_mode_utils.h" #include "chrome/browser/ash/account_manager/account_manager_util.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" #include "chrome/browser/ash/app_list/arc/arc_app_utils.h" #include "chrome/browser/ash/app_restore/full_restore_service.h" #include "chrome/browser/ash/arc/arc_migration_guide_notification.h" @@ -112,7 +113,6 @@ #include "chrome/browser/supervised_user/child_accounts/child_account_service_factory.h" #include "chrome/browser/sync/desk_sync_service_factory.h" #include "chrome/browser/sync/sync_service_factory.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" #include "chrome/browser/ui/startup/launch_mode_recorder.h" #include "chrome/browser/ui/startup/startup_browser_creator.h" #include "chrome/common/channel_info.h"
diff --git a/chrome/browser/ash/login/signin/offline_signin_limiter.cc b/chrome/browser/ash/login/signin/offline_signin_limiter.cc index 18c54bc..6c5eafa3 100644 --- a/chrome/browser/ash/login/signin/offline_signin_limiter.cc +++ b/chrome/browser/ash/login/signin/offline_signin_limiter.cc
@@ -111,6 +111,10 @@ return offline_signin_limit_timer_.get(); } +base::WallClockTimer* OfflineSigninLimiter::GetLockscreenTimerForTesting() { + return offline_lock_screen_signin_limit_timer_.get(); +} + void OfflineSigninLimiter::Shutdown() { offline_signin_limit_timer_->Stop(); offline_lock_screen_signin_limit_timer_->Stop();
diff --git a/chrome/browser/ash/login/signin/offline_signin_limiter.h b/chrome/browser/ash/login/signin/offline_signin_limiter.h index 9a99f81..f8f66d2 100644 --- a/chrome/browser/ash/login/signin/offline_signin_limiter.h +++ b/chrome/browser/ash/login/signin/offline_signin_limiter.h
@@ -40,6 +40,8 @@ base::WallClockTimer* GetTimerForTesting(); + base::WallClockTimer* GetLockscreenTimerForTesting(); + // KeyedService: void Shutdown() override;
diff --git a/chrome/browser/ash/login/signin/offline_signin_limiter_unittest.cc b/chrome/browser/ash/login/signin/offline_signin_limiter_unittest.cc index 1f3428c5..a68fd453 100644 --- a/chrome/browser/ash/login/signin/offline_signin_limiter_unittest.cc +++ b/chrome/browser/ash/login/signin/offline_signin_limiter_unittest.cc
@@ -75,6 +75,7 @@ std::unique_ptr<TestingProfile> profile_; base::WallClockTimer* timer_ = nullptr; // Not owned. + base::WallClockTimer* lockscreen_timer_ = nullptr; // Not owned. OfflineSigninLimiter* limiter_ = nullptr; // Owned. base::test::ScopedPowerMonitorTestSource test_power_monitor_source_; @@ -109,6 +110,7 @@ delete limiter_; limiter_ = nullptr; timer_ = nullptr; + lockscreen_timer_ = nullptr; } } @@ -117,6 +119,7 @@ limiter_ = new OfflineSigninLimiter(profile_.get(), task_environment_.GetMockClock()); timer_ = limiter_->GetTimerForTesting(); + lockscreen_timer_ = limiter_->GetLockscreenTimerForTesting(); } void OfflineSigninLimiterTest::SetUp() { @@ -1317,4 +1320,22 @@ EXPECT_FALSE(timer_->IsRunning()); } +TEST_F(OfflineSigninLimiterTest, SAMLLockscreenReauthDefaultLimit) { + AddSAMLUser(); + PrefService* prefs = profile_->GetPrefs(); + + // Set the time of last login with SAML, time limit defaults to -1 which is no + // limit. + prefs->SetTime(prefs::kSAMLLastGAIASignInTime, + task_environment_.GetMockClock()->Now()); + + // Advance time by four weeks. + task_environment_.FastForwardBy(base::Days(28)); // 4 weeks. + + // Authenticate offline and check if lockscreen timer is not running. + CreateLimiter(); + limiter_->SignedIn(UserContext::AUTH_FLOW_OFFLINE); + EXPECT_FALSE(lockscreen_timer_->IsRunning()); +} + } // namespace ash
diff --git a/chrome/browser/ash/policy/remote_commands/crd_remote_command_utils.cc b/chrome/browser/ash/policy/remote_commands/crd_remote_command_utils.cc index 5fcf83a..2173f5900 100644 --- a/chrome/browser/ash/policy/remote_commands/crd_remote_command_utils.cc +++ b/chrome/browser/ash/policy/remote_commands/crd_remote_command_utils.cc
@@ -190,6 +190,20 @@ #undef CASE } +const char* CrdSessionTypeToString(CrdSessionType value) { +#define CASE(type_) \ + case CrdSessionType::type_: \ + return #type_; + + switch (value) { + CASE(CRD_SESSION_TYPE_UNKNOWN); + CASE(REMOTE_ACCESS_SESSION); + CASE(REMOTE_SUPPORT_SESSION); + } + +#undef CASE +} + void CalculateIsInManagedEnvironmentAsync( ManagedEnvironmentResultCallback result_callback) { auto network_service = std::make_unique<mojo::Remote<CrosNetworkConfig>>();
diff --git a/chrome/browser/ash/policy/remote_commands/crd_remote_command_utils.h b/chrome/browser/ash/policy/remote_commands/crd_remote_command_utils.h index 30f458b..3c88fbf 100644 --- a/chrome/browser/ash/policy/remote_commands/crd_remote_command_utils.h +++ b/chrome/browser/ash/policy/remote_commands/crd_remote_command_utils.h
@@ -19,6 +19,9 @@ // is currently logged in. using ::enterprise_management::UserSessionType; +// The type of the CRD session. +using ::enterprise_management::CrdSessionType; + // Returns the time since the last user activity on this device. base::TimeDelta GetDeviceIdleTime(); @@ -34,6 +37,7 @@ bool UserSessionSupportsRemoteAccess(UserSessionType user_session); const char* UserSessionTypeToString(UserSessionType value); +const char* CrdSessionTypeToString(CrdSessionType value); // Returns asynchronously if the ChromeOS device is in a managed environment. // We consider the device's environment to be managed if there is a
diff --git a/chrome/browser/ash/policy/remote_commands/device_command_fetch_crd_availability_info_job.cc b/chrome/browser/ash/policy/remote_commands/device_command_fetch_crd_availability_info_job.cc new file mode 100644 index 0000000..84d507b --- /dev/null +++ b/chrome/browser/ash/policy/remote_commands/device_command_fetch_crd_availability_info_job.cc
@@ -0,0 +1,79 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/ash/policy/remote_commands/device_command_fetch_crd_availability_info_job.h" + +#include <algorithm> + +#include "base/functional/bind.h" +#include "base/time/time.h" +#include "chrome/browser/ash/policy/remote_commands/crd_logging.h" +#include "chrome/browser/ash/policy/remote_commands/crd_remote_command_utils.h" +#include "extensions/common/value_builder.h" + +namespace policy { + +namespace { + +using enterprise_management::RemoteCommand; +using extensions::DictionaryBuilder; + +constexpr char kIdleTime[] = "deviceIdleTimeInSeconds"; +constexpr char kUserSessionType[] = "userSessionType"; +constexpr char kSupportedCrdSessionTypes[] = "supportedCrdSessionTypes"; +constexpr char kIsInManagedEnvironment[] = "isInManagedEnvironment"; + +base::Value::List GetSupportedSessionTypes(bool is_in_managed_environment) { + base::Value::List result; + + if (UserSessionSupportsRemoteSupport(GetCurrentUserSessionType())) { + result.Append(static_cast<int>(CrdSessionType::REMOTE_SUPPORT_SESSION)); + } + + if (UserSessionSupportsRemoteAccess(GetCurrentUserSessionType()) && + is_in_managed_environment) { + result.Append(static_cast<int>(CrdSessionType::REMOTE_ACCESS_SESSION)); + } + + return result; +} + +} // namespace + +DeviceCommandFetchCrdAvailabilityInfoJob:: + DeviceCommandFetchCrdAvailabilityInfoJob() = default; +DeviceCommandFetchCrdAvailabilityInfoJob:: + ~DeviceCommandFetchCrdAvailabilityInfoJob() = default; + +enterprise_management::RemoteCommand_Type +DeviceCommandFetchCrdAvailabilityInfoJob::GetType() const { + return RemoteCommand::FETCH_CRD_AVAILABILITY_INFO; +} + +void DeviceCommandFetchCrdAvailabilityInfoJob::RunImpl( + CallbackWithResult succeed_callback, + CallbackWithResult failed_callback) { + CalculateIsInManagedEnvironmentAsync(base::BindOnce( + &DeviceCommandFetchCrdAvailabilityInfoJob::SendPayload, + weak_ptr_factory_.GetWeakPtr(), std::move(succeed_callback))); +} + +void DeviceCommandFetchCrdAvailabilityInfoJob::SendPayload( + CallbackWithResult callback, + bool is_in_managed_environment) { + std::string payload = + extensions::DictionaryBuilder() + .Set(kIdleTime, static_cast<int>(GetDeviceIdleTime().InSeconds())) + .Set(kUserSessionType, static_cast<int>(GetCurrentUserSessionType())) + .Set(kIsInManagedEnvironment, is_in_managed_environment) + .Set(kSupportedCrdSessionTypes, + GetSupportedSessionTypes(is_in_managed_environment)) + .ToJSON(); + + CRD_DVLOG(1) << "Finished FETCH_CRD_AVAILABILITY_INFO remote command: " + << payload; + std::move(callback).Run(std::move(payload)); +} + +} // namespace policy
diff --git a/chrome/browser/ash/policy/remote_commands/device_command_fetch_crd_availability_info_job.h b/chrome/browser/ash/policy/remote_commands/device_command_fetch_crd_availability_info_job.h new file mode 100644 index 0000000..83c1a3e --- /dev/null +++ b/chrome/browser/ash/policy/remote_commands/device_command_fetch_crd_availability_info_job.h
@@ -0,0 +1,38 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_ASH_POLICY_REMOTE_COMMANDS_DEVICE_COMMAND_FETCH_CRD_AVAILABILITY_INFO_JOB_H_ +#define CHROME_BROWSER_ASH_POLICY_REMOTE_COMMANDS_DEVICE_COMMAND_FETCH_CRD_AVAILABILITY_INFO_JOB_H_ + +#include "base/memory/weak_ptr.h" +#include "components/policy/core/common/remote_commands/remote_command_job.h" + +namespace policy { + +// Remote command that fetches the information that determines what Chrome +// Remote Desktop session types are available (if any). +class DeviceCommandFetchCrdAvailabilityInfoJob : public RemoteCommandJob { + public: + DeviceCommandFetchCrdAvailabilityInfoJob(); + DeviceCommandFetchCrdAvailabilityInfoJob( + const DeviceCommandFetchCrdAvailabilityInfoJob&) = delete; + DeviceCommandFetchCrdAvailabilityInfoJob& operator=( + const DeviceCommandFetchCrdAvailabilityInfoJob&) = delete; + ~DeviceCommandFetchCrdAvailabilityInfoJob() override; + + // `RemoteCommandJob` implementation: + enterprise_management::RemoteCommand_Type GetType() const override; + void RunImpl(CallbackWithResult succeed_callback, + CallbackWithResult failed_callback) override; + + private: + void SendPayload(CallbackWithResult callback, bool is_in_managed_network); + + base::WeakPtrFactory<DeviceCommandFetchCrdAvailabilityInfoJob> + weak_ptr_factory_{this}; +}; + +} // namespace policy + +#endif // CHROME_BROWSER_ASH_POLICY_REMOTE_COMMANDS_DEVICE_COMMAND_FETCH_CRD_AVAILABILITY_INFO_JOB_H_
diff --git a/chrome/browser/ash/policy/remote_commands/device_command_fetch_crd_availability_info_job_unittest.cc b/chrome/browser/ash/policy/remote_commands/device_command_fetch_crd_availability_info_job_unittest.cc new file mode 100644 index 0000000..45579667 --- /dev/null +++ b/chrome/browser/ash/policy/remote_commands/device_command_fetch_crd_availability_info_job_unittest.cc
@@ -0,0 +1,437 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/ash/policy/remote_commands/device_command_fetch_crd_availability_info_job.h" + +#include <iomanip> +#include <set> + +#include "base/strings/stringprintf.h" +#include "base/test/test_future.h" +#include "base/test/values_test_util.h" +#include "base/values.h" +#include "chrome/browser/ash/app_mode/arc/arc_kiosk_app_manager.h" +#include "chrome/browser/ash/app_mode/kiosk_app_manager.h" +#include "chrome/browser/ash/app_mode/web_app/web_kiosk_app_manager.h" +#include "chrome/browser/ash/policy/remote_commands/crd_remote_command_utils.h" +#include "chrome/browser/ash/policy/remote_commands/fake_cros_network_config.h" +#include "chrome/browser/ash/settings/device_settings_test_helper.h" +#include "components/policy/proto/device_management_backend.pb.h" +#include "extensions/common/value_builder.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "ui/base/user_activity/user_activity_detector.h" + +namespace policy { + +namespace { + +using base::test::DictionaryHasValue; +using base::test::ParseJson; +using base::test::ParseJsonDict; +using chromeos::network_config::mojom::NetworkType; +using chromeos::network_config::mojom::OncSource; +using enterprise_management::RemoteCommand; +using extensions::DictionaryBuilder; +using testing::Not; + +constexpr char kTestAccountEmail[] = "test.email@example.com"; +constexpr long kUniqueID = 111222333444; + +RemoteCommand GenerateCommandProto(const std::string& payload) { + RemoteCommand command_proto; + command_proto.set_type(RemoteCommand::FETCH_CRD_AVAILABILITY_INFO); + command_proto.set_command_id(kUniqueID); + command_proto.set_age_of_command(0); + command_proto.set_payload(payload); + return command_proto; +} + +struct Result { + RemoteCommandJob::Status status; + std::string payload; +}; + +// All possible session types we need to test - including permutations of +// manually and auto launched kiosk sessions. +enum class TestSessionType { + // Kiosk sessions + kManuallyLaunchedArcKioskSession, + kManuallyLaunchedWebKioskSession, + kManuallyLaunchedKioskSession, + kAutoLaunchedArcKioskSession, + kAutoLaunchedWebKioskSession, + kAutoLaunchedKioskSession, + + // Guest sessions + kManagedGuestSession, + kGuestSession, + + // User sessions + kAffiliatedUserSession, + kUnaffiliatedUserSession, + + // No user sessions + kNoSession, +}; + +const char* ToString(TestSessionType session_type) { +#define CASE(type) \ + case TestSessionType::type: \ + return #type + + switch (session_type) { + CASE(kManuallyLaunchedArcKioskSession); + CASE(kManuallyLaunchedWebKioskSession); + CASE(kManuallyLaunchedKioskSession); + CASE(kAutoLaunchedArcKioskSession); + CASE(kAutoLaunchedWebKioskSession); + CASE(kAutoLaunchedKioskSession); + CASE(kManagedGuestSession); + CASE(kGuestSession); + CASE(kAffiliatedUserSession); + CASE(kUnaffiliatedUserSession); + CASE(kNoSession); + } + +#undef CASE +} + +AccountId CreateUserOfType(TestSessionType session_type, + ash::FakeChromeUserManager& user_manager) { + AccountId account_id(AccountId::FromUserEmail(kTestAccountEmail)); + + switch (session_type) { + case TestSessionType::kManuallyLaunchedArcKioskSession: + user_manager.AddArcKioskAppUser(account_id); + ash::ArcKioskAppManager::Get() + ->set_current_app_was_auto_launched_with_zero_delay_for_testing( + false); + break; + case TestSessionType::kManuallyLaunchedWebKioskSession: + user_manager.AddWebKioskAppUser(account_id); + ash::WebKioskAppManager::Get() + ->set_current_app_was_auto_launched_with_zero_delay_for_testing( + false); + break; + case TestSessionType::kManuallyLaunchedKioskSession: + user_manager.AddKioskAppUser(account_id); + ash::KioskAppManager::Get() + ->set_current_app_was_auto_launched_with_zero_delay_for_testing( + false); + break; + case TestSessionType::kAutoLaunchedArcKioskSession: + user_manager.AddArcKioskAppUser(account_id); + ash::ArcKioskAppManager::Get() + ->set_current_app_was_auto_launched_with_zero_delay_for_testing(true); + break; + case TestSessionType::kAutoLaunchedWebKioskSession: + user_manager.AddWebKioskAppUser(account_id); + ash::WebKioskAppManager::Get() + ->set_current_app_was_auto_launched_with_zero_delay_for_testing(true); + break; + case TestSessionType::kAutoLaunchedKioskSession: + user_manager.AddKioskAppUser(account_id); + ash::KioskAppManager::Get() + ->set_current_app_was_auto_launched_with_zero_delay_for_testing(true); + break; + case TestSessionType::kManagedGuestSession: + user_manager.AddPublicAccountUser(account_id); + break; + case TestSessionType::kGuestSession: + account_id = user_manager.AddGuestUser()->GetAccountId(); + break; + case TestSessionType::kAffiliatedUserSession: + user_manager.AddUserWithAffiliation(account_id, + /*is_affiliated=*/true); + break; + case TestSessionType::kUnaffiliatedUserSession: + user_manager.AddUserWithAffiliation(account_id, + /*is_affiliated=*/false); + break; + case TestSessionType::kNoSession: + ADD_FAILURE(); + break; + } + + return account_id; +} + +void StartSessionOfType(TestSessionType session_type, + ash::FakeChromeUserManager& user_manager) { + if (session_type == TestSessionType::kNoSession) { + // Nothing to do if we don't need a session. + return; + } + + user_manager.LoginUser(CreateUserOfType(session_type, user_manager)); +} + +test::NetworkBuilder CreateNetwork(NetworkType type = NetworkType::kWiFi) { + return test::NetworkBuilder(type); +} + +base::Value::List ToList(std::vector<CrdSessionType> input) { + base::Value::List result; + for (CrdSessionType type : input) { + result.Append(static_cast<int>(type)); + } + return result; +} + +MATCHER_P(ListContains, expected_type, "") { + base::Value expected_value(expected_type); + base::Value::List* list = arg; + + if (!list) { + *result_listener << "List is null"; + return false; + } + + for (const base::Value& element : *list) { + if (element == expected_value) + return true; + } + + *result_listener << "Actual list content: " << list->DebugString(); + return false; +} + +} // namespace + +class DeviceCommandFetchCrdAvailabilityInfoJobTest + : public ash::DeviceSettingsTestBase { + public: + DeviceCommandFetchCrdAvailabilityInfoJobTest() + // We use `TimeSource::MOCK_TIME` because both `SetDeviceIdleTime` and + // `GetDeviceIdleTime` use `base::TimeTicks::Now()`, and our tests rely on + // this being the same time twice. + : ash::DeviceSettingsTestBase( + base::test::TaskEnvironment::TimeSource::MOCK_TIME) {} + + // `ash::DeviceSettingsTestBase` implementation: + void SetUp() override { + DeviceSettingsTestBase::SetUp(); + + user_activity_detector_ = std::make_unique<ui::UserActivityDetector>(); + arc_kiosk_app_manager_ = std::make_unique<ash::ArcKioskAppManager>(); + web_kiosk_app_manager_ = std::make_unique<ash::WebKioskAppManager>(); + } + + void TearDown() override { + web_kiosk_app_manager_.reset(); + arc_kiosk_app_manager_.reset(); + user_activity_detector_.reset(); + DeviceSettingsTestBase::TearDown(); + } + + Result CreateAndRunJob( + const DictionaryBuilder& payload = DictionaryBuilder()) { + DeviceCommandFetchCrdAvailabilityInfoJob job; + + bool initialized = + job.Init(base::TimeTicks::Now(), GenerateCommandProto(payload.ToJSON()), + enterprise_management::SignedData()); + if (!initialized) { + ADD_FAILURE() << "Failed to initialize job"; + return Result{}; + } + + base::test::TestFuture<void> done_signal_; + bool launched = job.Run(base::Time::Now(), base::TimeTicks::Now(), + done_signal_.GetCallback()); + if (!launched) { + ADD_FAILURE() << "Failed to launch job"; + return Result{}; + } + EXPECT_TRUE(done_signal_.Wait()); + + std::string response_payload = + job.GetResultPayload() ? *job.GetResultPayload() : "{}"; + return Result{job.status(), response_payload}; + } + + void SetDeviceIdleTime(int idle_time_in_sec) { + user_activity_detector_->set_last_activity_time_for_test( + base::TimeTicks::Now() - base::Seconds(idle_time_in_sec)); + } + + ash::FakeChromeUserManager& user_manager() { return *user_manager_; } + + test::FakeCrosNetworkConfig& fake_cros_network_config() { + return fake_cros_network_config_; + } + + void AddActiveManagedNetwork() { + fake_cros_network_config().AddActiveNetwork( + CreateNetwork(NetworkType::kWiFi) + .SetOncSource(OncSource::kDevicePolicy)); + } + + private: + std::unique_ptr<ash::ArcKioskAppManager> arc_kiosk_app_manager_; + std::unique_ptr<ash::WebKioskAppManager> web_kiosk_app_manager_; + + // Automatically installed as a singleton upon creation. + std::unique_ptr<ui::UserActivityDetector> user_activity_detector_; + + test::ScopedFakeCrosNetworkConfig fake_cros_network_config_; +}; + +// Fixture for tests parameterized over the possible session types +// (`TestSessionType`). +class DeviceCommandFetchCrdAvailabilityInfoJobTestParameterizedOverSessionType + : public DeviceCommandFetchCrdAvailabilityInfoJobTest, + public ::testing::WithParamInterface<TestSessionType> {}; + +TEST_F(DeviceCommandFetchCrdAvailabilityInfoJobTest, GetType) { + DeviceCommandFetchCrdAvailabilityInfoJob job; + EXPECT_EQ(job.GetType(), RemoteCommand::FETCH_CRD_AVAILABILITY_INFO); +} + +TEST_F(DeviceCommandFetchCrdAvailabilityInfoJobTest, + ShouldReturnDeviceIdleTime) { + const int device_idle_time_in_sec = 8; + + SetDeviceIdleTime(device_idle_time_in_sec); + Result result = CreateAndRunJob(); + + EXPECT_THAT(ParseJson(result.payload), + DictionaryHasValue("deviceIdleTimeInSeconds", + base::Value(device_idle_time_in_sec))); +} + +TEST_F(DeviceCommandFetchCrdAvailabilityInfoJobTest, + ShouldReturnIsInManagedEnvironmentTrue) { + fake_cros_network_config().SetActiveNetworks( + {CreateNetwork().SetOncSource(OncSource::kDevicePolicy)}); + + Result result = CreateAndRunJob(); + + EXPECT_THAT(ParseJson(result.payload), + DictionaryHasValue("isInManagedEnvironment", base::Value(true))); +} + +TEST_F(DeviceCommandFetchCrdAvailabilityInfoJobTest, + ShouldReturnIsInManagedEnvironmentFalse) { + fake_cros_network_config().SetActiveNetworks( + {CreateNetwork().SetOncSource(OncSource::kNone)}); + + Result result = CreateAndRunJob(); + + EXPECT_THAT(ParseJson(result.payload), + DictionaryHasValue("isInManagedEnvironment", base::Value(false))); +} + +TEST_P(DeviceCommandFetchCrdAvailabilityInfoJobTestParameterizedOverSessionType, + ShouldReturnUserSessionType) { + TestSessionType session_type = GetParam(); + SCOPED_TRACE( + base::StringPrintf("Testing session type %s", ToString(session_type))); + + StartSessionOfType(session_type, user_manager()); + + Result result = CreateAndRunJob(); + + UserSessionType expected = [&]() { + switch (session_type) { + case TestSessionType::kManuallyLaunchedArcKioskSession: + case TestSessionType::kManuallyLaunchedWebKioskSession: + case TestSessionType::kManuallyLaunchedKioskSession: + return UserSessionType::MANUALLY_LAUNCHED_KIOSK_SESSION; + case TestSessionType::kAutoLaunchedArcKioskSession: + case TestSessionType::kAutoLaunchedWebKioskSession: + case TestSessionType::kAutoLaunchedKioskSession: + return UserSessionType::AUTO_LAUNCHED_KIOSK_SESSION; + case TestSessionType::kManagedGuestSession: + return UserSessionType::MANAGED_GUEST_SESSION; + case TestSessionType::kGuestSession: + return UserSessionType::GUEST_SESSION; + case TestSessionType::kAffiliatedUserSession: + return UserSessionType::AFFILIATED_USER_SESSION; + case TestSessionType::kUnaffiliatedUserSession: + return UserSessionType::UNAFFILIATED_USER_SESSION; + case TestSessionType::kNoSession: + return UserSessionType::NO_SESSION; + } + }(); + + EXPECT_THAT(ParseJson(result.payload), + DictionaryHasValue("userSessionType", + base::Value(static_cast<int>(expected)))); +} + +TEST_P(DeviceCommandFetchCrdAvailabilityInfoJobTestParameterizedOverSessionType, + ShouldReturnSupportedCrdSessionTypes) { + TestSessionType session_type = GetParam(); + SCOPED_TRACE( + base::StringPrintf("Testing session type %s", ToString(session_type))); + + StartSessionOfType(session_type, user_manager()); + + AddActiveManagedNetwork(); + Result result = CreateAndRunJob(); + + const base::Value::List expected = [&]() { + switch (session_type) { + case TestSessionType::kNoSession: + return ToList({CrdSessionType::REMOTE_ACCESS_SESSION}); + + case TestSessionType::kManuallyLaunchedArcKioskSession: + case TestSessionType::kManuallyLaunchedWebKioskSession: + case TestSessionType::kManuallyLaunchedKioskSession: + case TestSessionType::kAutoLaunchedArcKioskSession: + case TestSessionType::kAutoLaunchedWebKioskSession: + case TestSessionType::kAutoLaunchedKioskSession: + case TestSessionType::kManagedGuestSession: + case TestSessionType::kAffiliatedUserSession: + return ToList({CrdSessionType::REMOTE_SUPPORT_SESSION}); + + case TestSessionType::kGuestSession: + case TestSessionType::kUnaffiliatedUserSession: + return ToList({}); + } + }(); + + const base::Value::List actual = ParseJsonDict(result.payload) + .EnsureList("supportedCrdSessionTypes") + ->Clone(); + + EXPECT_EQ(actual, expected); +} + +TEST_P(DeviceCommandFetchCrdAvailabilityInfoJobTestParameterizedOverSessionType, + ShouldNotSupportRemoteAccessWithoutManagedNetworks) { + TestSessionType session_type = GetParam(); + SCOPED_TRACE( + base::StringPrintf("Testing session type %s", ToString(session_type))); + + fake_cros_network_config().SetActiveNetworks( + {CreateNetwork().SetOncSource(OncSource::kNone)}); + + StartSessionOfType(session_type, user_manager()); + + Result result = CreateAndRunJob(); + + EXPECT_THAT( + ParseJsonDict(result.payload).FindList("supportedCrdSessionTypes"), + Not(ListContains( + static_cast<int>(CrdSessionType::REMOTE_ACCESS_SESSION)))); +} + +INSTANTIATE_TEST_SUITE_P( + All, + DeviceCommandFetchCrdAvailabilityInfoJobTestParameterizedOverSessionType, + ::testing::Values(TestSessionType::kManuallyLaunchedArcKioskSession, + TestSessionType::kManuallyLaunchedWebKioskSession, + TestSessionType::kManuallyLaunchedKioskSession, + TestSessionType::kAutoLaunchedArcKioskSession, + TestSessionType::kAutoLaunchedWebKioskSession, + TestSessionType::kAutoLaunchedKioskSession, + TestSessionType::kManagedGuestSession, + TestSessionType::kGuestSession, + TestSessionType::kAffiliatedUserSession, + TestSessionType::kUnaffiliatedUserSession, + TestSessionType::kNoSession)); +} // namespace policy
diff --git a/chrome/browser/ash/policy/remote_commands/device_commands_factory_ash.cc b/chrome/browser/ash/policy/remote_commands/device_commands_factory_ash.cc index 45de73c..b0a80f5 100644 --- a/chrome/browser/ash/policy/remote_commands/device_commands_factory_ash.cc +++ b/chrome/browser/ash/policy/remote_commands/device_commands_factory_ash.cc
@@ -7,6 +7,7 @@ #include "base/notreached.h" #include "chrome/browser/ash/policy/core/device_cloud_policy_manager_ash.h" #include "chrome/browser/ash/policy/remote_commands/crd_host_delegate.h" +#include "chrome/browser/ash/policy/remote_commands/device_command_fetch_crd_availability_info_job.h" #include "chrome/browser/ash/policy/remote_commands/device_command_fetch_status_job.h" #include "chrome/browser/ash/policy/remote_commands/device_command_get_available_routines_job.h" #include "chrome/browser/ash/policy/remote_commands/device_command_get_routine_update_job.h" @@ -24,10 +25,10 @@ #include "components/policy/core/common/remote_commands/remote_command_job.h" #include "components/policy/proto/device_management_backend.pb.h" -namespace em = enterprise_management; - namespace policy { +using enterprise_management::RemoteCommand; + DeviceCommandsFactoryAsh::DeviceCommandsFactoryAsh( DeviceCloudPolicyManagerAsh* policy_manager) : policy_manager_(policy_manager) {} @@ -35,39 +36,45 @@ DeviceCommandsFactoryAsh::~DeviceCommandsFactoryAsh() = default; std::unique_ptr<RemoteCommandJob> DeviceCommandsFactoryAsh::BuildJobForType( - em::RemoteCommand_Type type, + RemoteCommand::Type type, RemoteCommandsService* service) { switch (type) { - case em::RemoteCommand_Type_DEVICE_REBOOT: + case RemoteCommand::DEVICE_REBOOT: return std::make_unique<DeviceCommandRebootJob>( chromeos::PowerManagerClient::Get()); - case em::RemoteCommand_Type_DEVICE_SCREENSHOT: + case RemoteCommand::DEVICE_SCREENSHOT: return std::make_unique<DeviceCommandScreenshotJob>( std::make_unique<ScreenshotDelegate>()); - case em::RemoteCommand_Type_DEVICE_SET_VOLUME: + case RemoteCommand::DEVICE_SET_VOLUME: return std::make_unique<DeviceCommandSetVolumeJob>(); - case em::RemoteCommand_Type_DEVICE_START_CRD_SESSION: + case RemoteCommand::DEVICE_START_CRD_SESSION: return std::make_unique<DeviceCommandStartCrdSessionJob>( GetCrdHostDelegate()); - case em::RemoteCommand_Type_DEVICE_FETCH_STATUS: + case RemoteCommand::DEVICE_FETCH_STATUS: return std::make_unique<DeviceCommandFetchStatusJob>(); - case em::RemoteCommand_Type_DEVICE_WIPE_USERS: + case RemoteCommand::DEVICE_WIPE_USERS: return std::make_unique<DeviceCommandWipeUsersJob>(service); - case em::RemoteCommand_Type_DEVICE_REFRESH_ENTERPRISE_MACHINE_CERTIFICATE: + case RemoteCommand::DEVICE_REFRESH_ENTERPRISE_MACHINE_CERTIFICATE: return std::make_unique<DeviceCommandRefreshMachineCertificateJob>( policy_manager_->GetMachineCertificateUploader()); - case em::RemoteCommand_Type_DEVICE_REMOTE_POWERWASH: + case RemoteCommand::DEVICE_REMOTE_POWERWASH: return std::make_unique<DeviceCommandRemotePowerwashJob>(service); - case em::RemoteCommand_Type_DEVICE_GET_AVAILABLE_DIAGNOSTIC_ROUTINES: + case RemoteCommand::DEVICE_GET_AVAILABLE_DIAGNOSTIC_ROUTINES: return std::make_unique<DeviceCommandGetAvailableRoutinesJob>(); - case em::RemoteCommand_Type_DEVICE_RUN_DIAGNOSTIC_ROUTINE: + case RemoteCommand::DEVICE_RUN_DIAGNOSTIC_ROUTINE: return std::make_unique<DeviceCommandRunRoutineJob>(); - case em::RemoteCommand_Type_DEVICE_GET_DIAGNOSTIC_ROUTINE_UPDATE: + case RemoteCommand::DEVICE_GET_DIAGNOSTIC_ROUTINE_UPDATE: return std::make_unique<DeviceCommandGetRoutineUpdateJob>(); - case em::RemoteCommand_Type_DEVICE_RESET_EUICC: + case RemoteCommand::DEVICE_RESET_EUICC: return std::make_unique<DeviceCommandResetEuiccJob>(); - default: - // Other types of commands should be sent to UserCommandsFactoryAsh + case RemoteCommand::FETCH_CRD_AVAILABILITY_INFO: + return std::make_unique<DeviceCommandFetchCrdAvailabilityInfoJob>(); + + case RemoteCommand::COMMAND_ECHO_TEST: + case RemoteCommand::USER_ARC_COMMAND: + case RemoteCommand::BROWSER_CLEAR_BROWSING_DATA: + case RemoteCommand::BROWSER_ROTATE_ATTESTATION_CREDENTIAL: + // These types of commands should be sent to `UserCommandsFactoryAsh` // instead of here. NOTREACHED(); return nullptr;
diff --git a/chrome/browser/ash/preferences.cc b/chrome/browser/ash/preferences.cc index ee09ca1..fdc83ae 100644 --- a/chrome/browser/ash/preferences.cc +++ b/chrome/browser/ash/preferences.cc
@@ -547,6 +547,8 @@ registry->RegisterBooleanPref( prefs::kFilesAppTrashEnabled, true, user_prefs::PrefRegistrySyncable::SYNCABLE_OS_PREF); + + registry->RegisterBooleanPref(prefs::kUsbDetectorNotificationEnabled, true); } void Preferences::InitUserPrefs(sync_preferences::PrefServiceSyncable* prefs) {
diff --git a/chrome/browser/ash/remote_apps/remote_apps_manager.cc b/chrome/browser/ash/remote_apps/remote_apps_manager.cc index ba57220..09d5612 100644 --- a/chrome/browser/ash/remote_apps/remote_apps_manager.cc +++ b/chrome/browser/ash/remote_apps/remote_apps_manager.cc
@@ -14,14 +14,14 @@ #include "cc/paint/paint_flags.h" #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" #include "chrome/browser/apps/app_service/menu_util.h" +#include "chrome/browser/ash/app_list/app_list_model_updater.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" +#include "chrome/browser/ash/app_list/chrome_app_list_item.h" +#include "chrome/browser/ash/app_list/chrome_app_list_model_updater.h" #include "chrome/browser/ash/remote_apps/remote_apps_impl.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_model_updater.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" #include "chrome/browser/ui/app_list/app_list_util.h" -#include "chrome/browser/ui/app_list/chrome_app_list_item.h" -#include "chrome/browser/ui/app_list/chrome_app_list_model_updater.h" #include "chrome/common/apps/platform_apps/api/enterprise_remote_apps.h" #include "chrome/grit/generated_resources.h" #include "components/services/app_service/public/cpp/menu.h"
diff --git a/chrome/browser/ash/remote_apps/remote_apps_manager.h b/chrome/browser/ash/remote_apps/remote_apps_manager.h index 2d4e6dc..23fdeaa 100644 --- a/chrome/browser/ash/remote_apps/remote_apps_manager.h +++ b/chrome/browser/ash/remote_apps/remote_apps_manager.h
@@ -14,12 +14,12 @@ #include "base/observer_list.h" #include "base/scoped_observation.h" #include "chrome/browser/apps/app_service/publishers/remote_apps.h" +#include "chrome/browser/ash/app_list/app_list_model_updater_observer.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/chrome_app_list_model_updater.h" #include "chrome/browser/ash/remote_apps/remote_apps_impl.h" #include "chrome/browser/ash/remote_apps/remote_apps_model.h" #include "chrome/browser/ash/remote_apps/remote_apps_types.h" -#include "chrome/browser/ui/app_list/app_list_model_updater_observer.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" -#include "chrome/browser/ui/app_list/chrome_app_list_model_updater.h" #include "chromeos/components/remote_apps/mojom/remote_apps.mojom.h" #include "components/keyed_service/core/keyed_service.h" #include "mojo/public/cpp/bindings/pending_receiver.h"
diff --git a/chrome/browser/ash/remote_apps/remote_apps_manager_browsertest.cc b/chrome/browser/ash/remote_apps/remote_apps_manager_browsertest.cc index 3ade04d..4fdcf80 100644 --- a/chrome/browser/ash/remote_apps/remote_apps_manager_browsertest.cc +++ b/chrome/browser/ash/remote_apps/remote_apps_manager_browsertest.cc
@@ -29,6 +29,8 @@ #include "chrome/browser/apps/app_service/app_icon/app_icon_factory.h" #include "chrome/browser/apps/app_service/app_service_proxy.h" #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" #include "chrome/browser/ash/login/test/embedded_policy_test_server_mixin.h" #include "chrome/browser/ash/login/test/session_manager_state_waiter.h" #include "chrome/browser/ash/login/wizard_controller.h" @@ -39,8 +41,6 @@ #include "chrome/browser/ash/remote_apps/remote_apps_model.h" #include "chrome/browser/extensions/chrome_test_extension_loader.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" #include "chrome/browser/ui/ash/shelf/chrome_shelf_controller.h" #include "chrome/common/chrome_paths.h" #include "chrome/common/pref_names.h"
diff --git a/chrome/browser/ash/remote_apps/remote_apps_manager_factory.cc b/chrome/browser/ash/remote_apps/remote_apps_manager_factory.cc index 2c660ea..ce51079 100644 --- a/chrome/browser/ash/remote_apps/remote_apps_manager_factory.cc +++ b/chrome/browser/ash/remote_apps/remote_apps_manager_factory.cc
@@ -5,9 +5,9 @@ #include "chrome/browser/ash/remote_apps/remote_apps_manager_factory.h" #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" #include "chrome/browser/ash/profiles/profile_helper.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" #include "components/user_manager/user.h" #include "components/user_manager/user_type.h" #include "content/public/browser/browser_context.h"
diff --git a/chrome/browser/ash/system_web_apps/system_web_app_manager_browsertest.cc b/chrome/browser/ash/system_web_apps/system_web_app_manager_browsertest.cc index 04fbbf4..bf2dd84 100644 --- a/chrome/browser/ash/system_web_apps/system_web_app_manager_browsertest.cc +++ b/chrome/browser/ash/system_web_apps/system_web_app_manager_browsertest.cc
@@ -32,6 +32,8 @@ #include "chrome/browser/apps/app_service/launch_utils.h" #include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/ash/accessibility/speech_monitor.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" +#include "chrome/browser/ash/app_list/app_list_model_updater.h" #include "chrome/browser/ash/app_list/test/chrome_app_list_test_support.h" #include "chrome/browser/ash/extensions/default_app_order.h" #include "chrome/browser/ash/file_manager/file_manager_test_util.h" @@ -43,8 +45,6 @@ #include "chrome/browser/policy/system_features_disable_list_policy_handler.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/renderer_context_menu/render_view_context_menu_test_util.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" -#include "chrome/browser/ui/app_list/app_list_model_updater.h" #include "chrome/browser/ui/ash/shelf/chrome_shelf_controller_util.h" #include "chrome/browser/ui/ash/system_web_apps/system_web_app_ui_utils.h" #include "chrome/browser/ui/browser_finder.h"
diff --git a/chrome/browser/ash/system_web_apps/system_web_app_manager_unittest.cc b/chrome/browser/ash/system_web_apps/system_web_app_manager_unittest.cc index 6cf4d5c..39b50cf5 100644 --- a/chrome/browser/ash/system_web_apps/system_web_app_manager_unittest.cc +++ b/chrome/browser/ash/system_web_apps/system_web_app_manager_unittest.cc
@@ -223,17 +223,42 @@ class SystemWebAppManagerTest_PrefMigrationEnabled : public SystemWebAppManagerTest, - public testing::WithParamInterface<bool> { + public testing::WithParamInterface< + web_app::test::ExternalPrefMigrationTestCases> { public: SystemWebAppManagerTest_PrefMigrationEnabled() { - bool enable_migration = GetParam(); - if (enable_migration) { - scoped_feature_list_.InitWithFeatures( - {::features::kUseWebAppDBInsteadOfExternalPrefs}, {}); - } else { - scoped_feature_list_.InitWithFeatures( - {}, {::features::kUseWebAppDBInsteadOfExternalPrefs}); + std::vector<base::test::FeatureRef> enabled_features; + std::vector<base::test::FeatureRef> disabled_features; + + switch (GetParam()) { + case web_app::test::ExternalPrefMigrationTestCases:: + kDisableMigrationReadPref: + disabled_features.push_back( + ::features::kMigrateExternalPrefsToWebAppDB); + disabled_features.push_back( + ::features::kUseWebAppDBInsteadOfExternalPrefs); + break; + case web_app::test::ExternalPrefMigrationTestCases:: + kDisableMigrationReadDB: + disabled_features.push_back( + ::features::kMigrateExternalPrefsToWebAppDB); + enabled_features.push_back( + ::features::kUseWebAppDBInsteadOfExternalPrefs); + break; + case web_app::test::ExternalPrefMigrationTestCases:: + kEnableMigrationReadPref: + enabled_features.push_back(::features::kMigrateExternalPrefsToWebAppDB); + disabled_features.push_back( + ::features::kUseWebAppDBInsteadOfExternalPrefs); + break; + case web_app::test::ExternalPrefMigrationTestCases:: + kEnableMigrationReadDB: + enabled_features.push_back(::features::kMigrateExternalPrefsToWebAppDB); + enabled_features.push_back( + ::features::kUseWebAppDBInsteadOfExternalPrefs); + break; } + scoped_feature_list_.InitWithFeatures(enabled_features, disabled_features); } bool IsExternalDataReadFromDBEnabled() { @@ -301,9 +326,16 @@ } } -INSTANTIATE_TEST_SUITE_P(All, - SystemWebAppManagerTest_PrefMigrationEnabled, - ::testing::Bool()); +INSTANTIATE_TEST_SUITE_P( + All, + SystemWebAppManagerTest_PrefMigrationEnabled, + ::testing::Values( + web_app::test::ExternalPrefMigrationTestCases:: + kDisableMigrationReadPref, + web_app::test::ExternalPrefMigrationTestCases::kDisableMigrationReadDB, + web_app::test::ExternalPrefMigrationTestCases::kEnableMigrationReadPref, + web_app::test::ExternalPrefMigrationTestCases::kEnableMigrationReadDB), + web_app::test::GetExternalPrefMigrationTestName); // Test that System Apps do install with the pref migration enabled. TEST_F(SystemWebAppManagerTest, Enabled) {
diff --git a/chrome/browser/ash/usb/cros_usb_detector.cc b/chrome/browser/ash/usb/cros_usb_detector.cc index 2380878..5d0530a 100644 --- a/chrome/browser/ash/usb/cros_usb_detector.cc +++ b/chrome/browser/ash/usb/cros_usb_detector.cc
@@ -11,6 +11,7 @@ #include "ash/components/arc/arc_util.h" #include "ash/constants/ash_features.h" +#include "ash/constants/ash_pref_names.h" #include "ash/constants/notifier_catalogs.h" #include "ash/public/cpp/notification_utils.h" #include "base/callback_helpers.h" @@ -542,6 +543,11 @@ } bool CrosUsbDetector::ShouldShowNotification(const UsbDevice& device) { + PrefService* prefs = profile()->GetPrefs(); + if (!prefs->GetBoolean(ash::prefs::kUsbDetectorNotificationEnabled)) { + return false; + } + if (!crostini::CrostiniFeatures::Get()->IsEnabled(profile()) && !plugin_vm::PluginVmFeatures::Get()->IsEnabled(profile()) && !IsPlayStoreEnabledWithArcVmForProfile(profile())) {
diff --git a/chrome/browser/ash/usb/cros_usb_detector_unittest.cc b/chrome/browser/ash/usb/cros_usb_detector_unittest.cc index cdf9cdb..79444f2 100644 --- a/chrome/browser/ash/usb/cros_usb_detector_unittest.cc +++ b/chrome/browser/ash/usb/cros_usb_detector_unittest.cc
@@ -11,6 +11,7 @@ #include <vector> #include "ash/components/arc/arc_util.h" +#include "ash/constants/ash_pref_names.h" #include "ash/constants/ash_switches.h" #include "base/command_line.h" #include "base/strings/stringprintf.h" @@ -425,6 +426,50 @@ base::RunLoop().RunUntilIdle(); } +TEST_F(CrosUsbDetectorTest, NotificationControlledByPolicy) { + ConnectToDeviceManager(); + base::RunLoop().RunUntilIdle(); + + auto device = base::MakeRefCounted<device::FakeUsbDeviceInfo>( + 0, 1, kManufacturerName, kProductName_1, "002"); + std::string notification_id = + CrosUsbDetector::MakeNotificationId(device->guid()); + + // Notifications should be shown if UsbDetectorNotificationEnabled policy is + // unset. + crostini::FakeCrostiniFeatures crostini_features; + crostini_features.set_enabled(true); + device_manager_.AddDevice(device); + base::RunLoop().RunUntilIdle(); + absl::optional<message_center::Notification> notification = + display_service_->GetNotification(notification_id); + EXPECT_TRUE(notification); + device_manager_.RemoveDevice(device); + base::RunLoop().RunUntilIdle(); + + // Notifications should not be shown if UsbDetectorNotificationEnabled policy + // is false. + profile()->GetPrefs()->SetBoolean(prefs::kUsbDetectorNotificationEnabled, + false); + device_manager_.AddDevice(device); + base::RunLoop().RunUntilIdle(); + notification = display_service_->GetNotification(notification_id); + EXPECT_FALSE(notification); + device_manager_.RemoveDevice(device); + base::RunLoop().RunUntilIdle(); + + // Notifications should be shown if UsbDetectorNotificationEnabled policy is + // true. + profile()->GetPrefs()->SetBoolean(prefs::kUsbDetectorNotificationEnabled, + true); + device_manager_.AddDevice(device); + base::RunLoop().RunUntilIdle(); + notification = display_service_->GetNotification(notification_id); + EXPECT_TRUE(notification); + device_manager_.RemoveDevice(device); + base::RunLoop().RunUntilIdle(); +} + TEST_F(CrosUsbDetectorTest, UsbNotificationClicked) { ConnectToDeviceManager(); base::RunLoop().RunUntilIdle();
diff --git a/chrome/browser/autofill/test/BUILD.gn b/chrome/browser/autofill/test/BUILD.gn index 473d3c2..a0f7e83 100644 --- a/chrome/browser/autofill/test/BUILD.gn +++ b/chrome/browser/autofill/test/BUILD.gn
@@ -29,6 +29,7 @@ public_deps = [ "//base:base_java_test_support", "//chrome/browser/autofill/android:java", + "//components/autofill/android:main_autofill_java", "//content/public/test/android:content_java_test_support", ] }
diff --git a/chrome/browser/autofill/test/android/java/src/org/chromium/chrome/browser/autofill/AutofillTestHelper.java b/chrome/browser/autofill/test/android/java/src/org/chromium/chrome/browser/autofill/AutofillTestHelper.java index fc3e506..32bb8cd3 100644 --- a/chrome/browser/autofill/test/android/java/src/org/chromium/chrome/browser/autofill/AutofillTestHelper.java +++ b/chrome/browser/autofill/test/android/java/src/org/chromium/chrome/browser/autofill/AutofillTestHelper.java
@@ -10,6 +10,7 @@ import org.chromium.base.test.util.CallbackHelper; import org.chromium.chrome.browser.autofill.PersonalDataManager.AutofillProfile; import org.chromium.chrome.browser.autofill.PersonalDataManager.CreditCard; +import org.chromium.components.autofill.VirtualCardEnrollmentState; import java.util.Calendar; import java.util.List; @@ -296,6 +297,24 @@ return new CreditCard("", "", true, false, name, number, "", month, year, "", 0, "", ""); } + public static CreditCard createCreditCard(String name, String number, String month, String year, + boolean isLocal, String nameForAutofillDisplay, String obfuscatedLastFourDigits, + int iconId) { + return new CreditCard(/* guid= */ "", + /* origin= */ "", + /* isLocal= */ isLocal, /* isCached= */ false, /* name= */ name, + /* number= */ number, + /* obfuscatedNumber= */ "", /* month= */ month, year, + /* basicCardIssuerNetwork =*/"", + /* issuerIconDrawableId= */ iconId, /* billingAddressId= */ "", + /* serverId= */ "", /* instrumentId= */ 0, /* cardLabel= */ "", /* nickname= */ "", + /* cardArtUrl= */ null, + /* virtualCardEnrollmentState= */ VirtualCardEnrollmentState.UNSPECIFIED, + /* productDescription= */ "", + /* cardNameForAutofillDisplay= */ nameForAutofillDisplay, + /* obfuscatedLastFourDigits= */ obfuscatedLastFourDigits); + } + private void registerDataObserver() { try { int callCount = mOnPersonalDataChangedHelper.getCallCount();
diff --git a/chrome/browser/chromeos/arc/icon_decode_request.cc b/chrome/browser/chromeos/arc/icon_decode_request.cc index 5140aad5..6e4e912 100644 --- a/chrome/browser/chromeos/arc/icon_decode_request.cc +++ b/chrome/browser/chromeos/arc/icon_decode_request.cc
@@ -9,7 +9,6 @@ #include <vector> #include "base/no_destructor.h" -#include "chrome/browser/ui/app_list/md_icon_normalizer.h" #include "chrome/grit/component_extension_resources.h" #include "content/public/browser/browser_thread.h" #include "services/data_decoder/public/cpp/data_decoder.h"
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_copy_or_move_hook_delegate.cc b/chrome/browser/chromeos/policy/dlp/dlp_copy_or_move_hook_delegate.cc index a2bbb9e..b438618 100644 --- a/chrome/browser/chromeos/policy/dlp/dlp_copy_or_move_hook_delegate.cc +++ b/chrome/browser/chromeos/policy/dlp/dlp_copy_or_move_hook_delegate.cc
@@ -11,8 +11,10 @@ #include "base/check.h" #include "base/files/file.h" #include "base/functional/bind.h" +#include "base/location.h" #include "base/memory/ptr_util.h" #include "base/memory/weak_ptr.h" +#include "base/task/bind_post_task.h" #include "base/threading/thread_checker.h" #include "chrome/browser/ash/policy/dlp/dlp_files_controller.h" #include "chrome/browser/chromeos/policy/dlp/dlp_rules_manager.h" @@ -63,10 +65,12 @@ const storage::FileSystemURL& source_url, const storage::FileSystemURL& destination_url, StatusCallback callback) { + StatusCallback continuation = base::BindPostTask( + base::SequencedTaskRunner::GetCurrentDefault(), std::move(callback)); content::GetUIThreadTaskRunner({})->PostTask( FROM_HERE, base::BindOnce(&DlpCopyOrMoveHookDelegate::RequestCopyAccess, base::Unretained(this), source_url, - destination_url, std::move(callback))); + destination_url, std::move(continuation))); } void DlpCopyOrMoveHookDelegate::OnEndCopy(
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_copy_or_move_hook_delegate_unittest.cc b/chrome/browser/chromeos/policy/dlp/dlp_copy_or_move_hook_delegate_unittest.cc index 6d0eacc..c546db2 100644 --- a/chrome/browser/chromeos/policy/dlp/dlp_copy_or_move_hook_delegate_unittest.cc +++ b/chrome/browser/chromeos/policy/dlp/dlp_copy_or_move_hook_delegate_unittest.cc
@@ -11,10 +11,12 @@ #include "base/functional/bind.h" #include "base/functional/callback.h" #include "base/functional/callback_forward.h" +#include "base/run_loop.h" #include "base/test/bind.h" #include "base/test/gmock_callback_support.h" -#include "base/test/task_environment.h" +#include "base/test/mock_callback.h" #include "base/test/test_future.h" +#include "base/threading/thread_checker.h" #include "chrome/browser/ash/policy/dlp/dlp_files_controller.h" #include "chrome/browser/chromeos/policy/dlp/dlp_rules_manager.h" #include "chrome/browser/chromeos/policy/dlp/dlp_rules_manager_factory.h" @@ -98,7 +100,8 @@ } content::BrowserTaskEnvironment task_environment_{ - content::BrowserTaskEnvironment::ThreadPoolExecutionMode::QUEUED}; + content::BrowserTaskEnvironment::ThreadPoolExecutionMode::QUEUED, + content::BrowserTaskEnvironment::REAL_IO_THREAD}; MockDlpRulesManager* manager_; std::unique_ptr<DlpCopyOrMoveHookDelegate> hook_{ std::make_unique<DlpCopyOrMoveHookDelegate>()}; @@ -117,7 +120,11 @@ }; TEST_F(DlpCopyOrMoveHookDelegateTest, OnBeginProcessFileAllow) { - base::test::TestFuture<void> continuation; + base::RunLoop continuation_run_loop; + base::RunLoop status_callback_run_loop; + base::MockCallback<base::OnceCallback<void()>> destructor_continuation; + EXPECT_CALL(destructor_continuation, Run) + .WillOnce([&continuation_run_loop]() { continuation_run_loop.Quit(); }); EXPECT_CALL(*manager_, GetDlpFilesController) .WillOnce(testing::Return(controller_.get())); @@ -125,15 +132,21 @@ base::test::IsNotNullCallback())) .WillOnce(base::test::RunOnceCallback<2>( std::make_unique<file_access::ScopedFileAccessCopy>( - true, base::ScopedFD(), continuation.GetCallback()))); + true, base::ScopedFD(), destructor_continuation.Get()))); auto task_runner = content::GetIOThreadTaskRunner({}); - base::test::TestFuture<base::File::Error> status; + base::MockCallback<base::OnceCallback<void(base::File::Error)>> status; + EXPECT_CALL(status, Run) + .WillOnce([&status_callback_run_loop](base::File::Error status) { + DCHECK_CURRENTLY_ON(content::BrowserThread::IO); + EXPECT_EQ(base::File::FILE_OK, status); + status_callback_run_loop.Quit(); + }); task_runner->PostTask( FROM_HERE, base::BindOnce(&DlpCopyOrMoveHookDelegate::OnBeginProcessFile, base::Unretained(hook_.get()), source, - destination, status.GetCallback())); - EXPECT_EQ(base::File::FILE_OK, status.Get()); + destination, status.Get())); + status_callback_run_loop.Run(); EXPECT_EQ(1ul, GetAccessMap().size()); EXPECT_TRUE(GetAccessMap().contains( std::make_pair(source.path(), destination.path()))); @@ -141,7 +154,7 @@ FROM_HERE, base::BindOnce(&DlpCopyOrMoveHookDelegate::OnEndCopy, base::Unretained(hook_.get()), source, destination)); - EXPECT_TRUE(continuation.Wait()); + continuation_run_loop.Run(); EXPECT_EQ(0ul, GetAccessMap().size()); } @@ -156,12 +169,19 @@ base::ScopedFD()))); auto task_runner = content::GetIOThreadTaskRunner({}); - base::test::TestFuture<base::File::Error> status; + base::RunLoop status_callback_run_loop; + base::MockCallback<base::OnceCallback<void(base::File::Error)>> status; + EXPECT_CALL(status, Run) + .WillOnce([&status_callback_run_loop](base::File::Error status) { + DCHECK_CURRENTLY_ON(content::BrowserThread::IO); + EXPECT_EQ(base::File::FILE_ERROR_SECURITY, status); + status_callback_run_loop.Quit(); + }); task_runner->PostTask( FROM_HERE, base::BindOnce(&DlpCopyOrMoveHookDelegate::OnBeginProcessFile, base::Unretained(hook_.get()), source, - destination, status.GetCallback())); - EXPECT_EQ(base::File::FILE_ERROR_SECURITY, status.Get()); + destination, status.Get())); + status_callback_run_loop.Run(); } TEST_F(DlpCopyOrMoveHookDelegateTest, OnBeginProcessFileNoManager) { @@ -172,24 +192,38 @@ return nullptr; })); auto task_runner = content::GetIOThreadTaskRunner({}); - base::test::TestFuture<base::File::Error> status; + base::RunLoop status_callback_run_loop; + base::MockCallback<base::OnceCallback<void(base::File::Error)>> status; + EXPECT_CALL(status, Run) + .WillOnce([&status_callback_run_loop](base::File::Error status) { + DCHECK_CURRENTLY_ON(content::BrowserThread::IO); + EXPECT_EQ(base::File::FILE_OK, status); + status_callback_run_loop.Quit(); + }); task_runner->PostTask( FROM_HERE, base::BindOnce(&DlpCopyOrMoveHookDelegate::OnBeginProcessFile, base::Unretained(hook_.get()), source, - destination, status.GetCallback())); - EXPECT_EQ(base::File::FILE_OK, status.Get()); + destination, status.Get())); + status_callback_run_loop.Run(); } TEST_F(DlpCopyOrMoveHookDelegateTest, OnBeginProcessFileNoController) { EXPECT_CALL(*manager_, GetDlpFilesController) .WillOnce(testing::Return(nullptr)); auto task_runner = content::GetIOThreadTaskRunner({}); - base::test::TestFuture<base::File::Error> status; + base::RunLoop status_callback_run_loop; + base::MockCallback<base::OnceCallback<void(base::File::Error)>> status; + EXPECT_CALL(status, Run) + .WillOnce([&status_callback_run_loop](base::File::Error status) { + DCHECK_CURRENTLY_ON(content::BrowserThread::IO); + EXPECT_EQ(base::File::FILE_OK, status); + status_callback_run_loop.Quit(); + }); task_runner->PostTask( FROM_HERE, base::BindOnce(&DlpCopyOrMoveHookDelegate::OnBeginProcessFile, base::Unretained(hook_.get()), source, - destination, status.GetCallback())); - EXPECT_EQ(base::File::FILE_OK, status.Get()); + destination, status.Get())); + status_callback_run_loop.Run(); } } // namespace policy
diff --git a/chrome/browser/component_updater/metadata_table_chromeos.cc b/chrome/browser/component_updater/metadata_table_chromeos.cc index 8c56c56..7b70259 100644 --- a/chrome/browser/component_updater/metadata_table_chromeos.cc +++ b/chrome/browser/component_updater/metadata_table_chromeos.cc
@@ -159,8 +159,8 @@ DCHECK(pref_service_); DCHECK_CURRENTLY_ON(content::BrowserThread::UI); - DictionaryPrefUpdate update(pref_service_, kMetadataPrefPath); - update->GetDict().Set(kMetadataContentKey, installed_items_.Clone()); + ScopedDictPrefUpdate update(pref_service_, kMetadataPrefPath); + update->Set(kMetadataContentKey, installed_items_.Clone()); } void MetadataTable::AddItem(const std::string& hashed_user_id,
diff --git a/chrome/browser/content_settings/generated_cookie_prefs.cc b/chrome/browser/content_settings/generated_cookie_prefs.cc index 4e8451e..63c6f702 100644 --- a/chrome/browser/content_settings/generated_cookie_prefs.cc +++ b/chrome/browser/content_settings/generated_cookie_prefs.cc
@@ -10,6 +10,7 @@ #include "chrome/common/extensions/api/settings_private.h" #include "components/content_settings/core/browser/cookie_settings.h" #include "components/content_settings/core/browser/host_content_settings_map.h" +#include "components/content_settings/core/common/content_settings.h" #include "components/content_settings/core/common/pref_names.h" #include "components/prefs/pref_service.h" @@ -78,6 +79,8 @@ const char kCookiePrimarySetting[] = "generated.cookie_primary_setting"; const char kCookieSessionOnly[] = "generated.cookie_session_only"; +const char kCookieDefaultContentSetting[] = + "generated.cookie_default_content_setting"; GeneratedCookiePrefBase::GeneratedCookiePrefBase(Profile* profile, const std::string& pref_name) @@ -350,4 +353,65 @@ return pref_object; } +GeneratedCookieDefaultContentSettingPref:: + GeneratedCookieDefaultContentSettingPref(Profile* profile) + : GeneratedCookiePrefBase(profile, kCookieDefaultContentSetting) {} + +extensions::settings_private::SetPrefResult +GeneratedCookieDefaultContentSettingPref::SetPref(const base::Value* value) { + if (!value->is_int()) + return extensions::settings_private::SetPrefResult::PREF_TYPE_MISMATCH; + + int setting = value->GetInt(); + if (setting != CONTENT_SETTING_ALLOW && + setting != CONTENT_SETTING_SESSION_ONLY && + setting != CONTENT_SETTING_BLOCK) { + return extensions::settings_private::SetPrefResult::PREF_TYPE_MISMATCH; + } + + if (!IsDefaultCookieContentSettingUserControlled(host_content_settings_map_)) + return extensions::settings_private::SetPrefResult::PREF_NOT_MODIFIABLE; + + host_content_settings_map_->SetDefaultContentSetting( + ContentSettingsType::COOKIES, static_cast<ContentSetting>(setting)); + + return extensions::settings_private::SetPrefResult::SUCCESS; +} + +std::unique_ptr<settings_api::PrefObject> +GeneratedCookieDefaultContentSettingPref::GetPrefObject() const { + auto pref_object = std::make_unique<settings_api::PrefObject>(); + pref_object->key = pref_name_; + pref_object->type = settings_api::PREF_TYPE_NUMBER; + + std::string content_setting_provider; + auto content_setting = host_content_settings_map_->GetDefaultContentSetting( + ContentSettingsType::COOKIES, &content_setting_provider); + + pref_object->value = base::Value(content_setting); + + // Cookies content setting can be managed via policy, extension or + // supervision, but cannot be recommended. + auto content_setting_source = + HostContentSettingsMap::GetSettingSourceFromProviderName( + content_setting_provider); + if (content_setting_source == SettingSource::SETTING_SOURCE_POLICY) { + pref_object->controlled_by = + settings_api::ControlledBy::CONTROLLED_BY_DEVICE_POLICY; + pref_object->enforcement = settings_api::Enforcement::ENFORCEMENT_ENFORCED; + } + if (content_setting_source == SettingSource::SETTING_SOURCE_EXTENSION) { + pref_object->controlled_by = + settings_api::ControlledBy::CONTROLLED_BY_EXTENSION; + pref_object->enforcement = settings_api::Enforcement::ENFORCEMENT_ENFORCED; + } + if (content_setting_source == SettingSource::SETTING_SOURCE_SUPERVISED) { + pref_object->controlled_by = + settings_api::ControlledBy::CONTROLLED_BY_CHILD_RESTRICTION; + pref_object->enforcement = settings_api::Enforcement::ENFORCEMENT_ENFORCED; + } + + return pref_object; +} + } // namespace content_settings
diff --git a/chrome/browser/content_settings/generated_cookie_prefs.h b/chrome/browser/content_settings/generated_cookie_prefs.h index 080ae85..433302d 100644 --- a/chrome/browser/content_settings/generated_cookie_prefs.h +++ b/chrome/browser/content_settings/generated_cookie_prefs.h
@@ -17,6 +17,7 @@ extern const char kCookieSessionOnly[]; extern const char kCookiePrimarySetting[]; +extern const char kCookieDefaultContentSetting[]; // Must be kept in sync with the enum of the same name located in // chrome/browser/resources/settings/privacy_page/cookies_page.js @@ -82,6 +83,20 @@ const override; }; +// A generated preference that represents cookies content setting and supports +// three states: allow, session only and block. +class GeneratedCookieDefaultContentSettingPref + : public GeneratedCookiePrefBase { + public: + explicit GeneratedCookieDefaultContentSettingPref(Profile* profile); + + // Generated Preference Interface. + extensions::settings_private::SetPrefResult SetPref( + const base::Value* value) override; + std::unique_ptr<extensions::api::settings_private::PrefObject> GetPrefObject() + const override; +}; + } // namespace content_settings #endif // CHROME_BROWSER_CONTENT_SETTINGS_GENERATED_COOKIE_PREFS_H_
diff --git a/chrome/browser/content_settings/generated_cookie_prefs_unittest.cc b/chrome/browser/content_settings/generated_cookie_prefs_unittest.cc index 61a940d0..1623061 100644 --- a/chrome/browser/content_settings/generated_cookie_prefs_unittest.cc +++ b/chrome/browser/content_settings/generated_cookie_prefs_unittest.cc
@@ -12,6 +12,7 @@ #include "chrome/test/base/testing_profile.h" #include "components/content_settings/core/browser/cookie_settings.h" #include "components/content_settings/core/browser/host_content_settings_map.h" +#include "components/content_settings/core/common/content_settings.h" #include "components/content_settings/core/common/pref_names.h" #include "components/content_settings/core/test/content_settings_mock_provider.h" #include "components/content_settings/core/test/content_settings_test_utils.h" @@ -538,4 +539,118 @@ ContentSetting::CONTENT_SETTING_ALLOW); } +TEST_F(GeneratedCookiePrefsTest, DefaultContentSettingPref) { + auto pref = std::make_unique< + content_settings::GeneratedCookieDefaultContentSettingPref>(profile()); + HostContentSettingsMap* map = + HostContentSettingsMapFactory::GetForProfile(profile()); + + // Ensure that the preference represents the content setting value. + map->SetDefaultContentSetting(ContentSettingsType::COOKIES, + CONTENT_SETTING_ALLOW); + auto pref_object = pref->GetPrefObject(); + EXPECT_EQ(pref_object->value->GetInt(), CONTENT_SETTING_ALLOW); + + // Ensure setting the preference correctly updates content settings and the + // preference state. + EXPECT_EQ( + pref->SetPref( + std::make_unique<base::Value>(CONTENT_SETTING_SESSION_ONLY).get()), + extensions::settings_private::SetPrefResult::SUCCESS); + EXPECT_EQ( + map->GetDefaultContentSetting(ContentSettingsType::COOKIES, nullptr), + CONTENT_SETTING_SESSION_ONLY); + pref_object = pref->GetPrefObject(); + EXPECT_EQ(pref_object->value->GetInt(), CONTENT_SETTING_SESSION_ONLY); + + EXPECT_EQ( + pref->SetPref(std::make_unique<base::Value>(CONTENT_SETTING_ALLOW).get()), + extensions::settings_private::SetPrefResult::SUCCESS); + EXPECT_EQ( + map->GetDefaultContentSetting(ContentSettingsType::COOKIES, nullptr), + CONTENT_SETTING_ALLOW); + pref_object = pref->GetPrefObject(); + EXPECT_EQ(pref_object->value->GetInt(), CONTENT_SETTING_ALLOW); + + EXPECT_EQ( + pref->SetPref(std::make_unique<base::Value>(CONTENT_SETTING_BLOCK).get()), + extensions::settings_private::SetPrefResult::SUCCESS); + EXPECT_EQ( + map->GetDefaultContentSetting(ContentSettingsType::COOKIES, nullptr), + CONTENT_SETTING_BLOCK); + pref_object = pref->GetPrefObject(); + EXPECT_EQ(pref_object->value->GetInt(), CONTENT_SETTING_BLOCK); +} + +TEST_F(GeneratedCookiePrefsTest, DefaultContentSettingPref_TypeMismatch) { + auto pref = std::make_unique< + content_settings::GeneratedCookieDefaultContentSettingPref>(profile()); + + // Confirm that a type mismatch is reported as such. + EXPECT_EQ(pref->SetPref(std::make_unique<base::Value>(false).get()), + extensions::settings_private::SetPrefResult::PREF_TYPE_MISMATCH); + EXPECT_EQ( + pref->SetPref(std::make_unique<base::Value>(CONTENT_SETTING_ASK).get()), + extensions::settings_private::SetPrefResult::PREF_TYPE_MISMATCH); + EXPECT_EQ(pref->SetPref( + std::make_unique<base::Value>(CONTENT_SETTING_DEFAULT).get()), + extensions::settings_private::SetPrefResult::PREF_TYPE_MISMATCH); + EXPECT_EQ(pref->SetPref(std::make_unique<base::Value>(100).get()), + extensions::settings_private::SetPrefResult::PREF_TYPE_MISMATCH); +} + +TEST_F(GeneratedCookiePrefsTest, DefaultContentSettingPref_Enforced) { + auto pref = std::make_unique< + content_settings::GeneratedCookieDefaultContentSettingPref>(profile()); + HostContentSettingsMap* map = + HostContentSettingsMapFactory::GetForProfile(profile()); + + // Ensure management state is correctly reported for all possible content + // setting management sources. + auto provider = std::make_unique<content_settings::MockProvider>(); + provider->SetWebsiteSetting( + ContentSettingsPattern::Wildcard(), ContentSettingsPattern::Wildcard(), + ContentSettingsType::COOKIES, base::Value(CONTENT_SETTING_ALLOW)); + content_settings::TestUtils::OverrideProvider( + map, std::move(provider), + HostContentSettingsMap::CUSTOM_EXTENSION_PROVIDER); + auto pref_object = pref->GetPrefObject(); + EXPECT_EQ(pref_object->controlled_by, + settings_api::ControlledBy::CONTROLLED_BY_EXTENSION); + EXPECT_EQ(pref_object->enforcement, + settings_api::Enforcement::ENFORCEMENT_ENFORCED); + + provider = std::make_unique<content_settings::MockProvider>(); + provider->SetWebsiteSetting( + ContentSettingsPattern::Wildcard(), ContentSettingsPattern::Wildcard(), + ContentSettingsType::COOKIES, base::Value(CONTENT_SETTING_ALLOW)); + content_settings::TestUtils::OverrideProvider( + map, std::move(provider), HostContentSettingsMap::SUPERVISED_PROVIDER); + pref_object = pref->GetPrefObject(); + EXPECT_EQ(pref_object->controlled_by, + settings_api::ControlledBy::CONTROLLED_BY_CHILD_RESTRICTION); + EXPECT_EQ(pref_object->enforcement, + settings_api::Enforcement::ENFORCEMENT_ENFORCED); + + provider = std::make_unique<content_settings::MockProvider>(); + provider->SetWebsiteSetting( + ContentSettingsPattern::Wildcard(), ContentSettingsPattern::Wildcard(), + ContentSettingsType::COOKIES, base::Value(CONTENT_SETTING_ALLOW)); + content_settings::TestUtils::OverrideProvider( + map, std::move(provider), HostContentSettingsMap::POLICY_PROVIDER); + pref_object = pref->GetPrefObject(); + EXPECT_EQ(pref_object->controlled_by, + settings_api::ControlledBy::CONTROLLED_BY_DEVICE_POLICY); + EXPECT_EQ(pref_object->enforcement, + settings_api::Enforcement::ENFORCEMENT_ENFORCED); + + // Ensure the preference cannot be changed when it is enforced. + EXPECT_EQ( + pref->SetPref(std::make_unique<base::Value>(CONTENT_SETTING_BLOCK).get()), + extensions::settings_private::SetPrefResult::PREF_NOT_MODIFIABLE); + EXPECT_EQ( + map->GetDefaultContentSetting(ContentSettingsType::COOKIES, nullptr), + CONTENT_SETTING_ALLOW); +} + } // namespace content_settings
diff --git a/chrome/browser/extensions/api/passwords_private/password_check_delegate.cc b/chrome/browser/extensions/api/passwords_private/password_check_delegate.cc index cd7b718..21d0f20 100644 --- a/chrome/browser/extensions/api/passwords_private/password_check_delegate.cc +++ b/chrome/browser/extensions/api/passwords_private/password_check_delegate.cc
@@ -44,7 +44,6 @@ #include "components/password_manager/core/browser/password_change_success_tracker.h" #include "components/password_manager/core/browser/password_form.h" #include "components/password_manager/core/browser/password_manager_client.h" -#include "components/password_manager/core/browser/password_manager_metrics_util.h" #include "components/password_manager/core/browser/password_manager_util.h" #include "components/password_manager/core/browser/ui/credential_ui_entry.h" #include "components/password_manager/core/browser/ui/credential_utils.h" @@ -70,7 +69,6 @@ using password_manager::LeakCheckCredential; using password_manager::PasswordChangeSuccessTracker; using password_manager::PasswordForm; -using password_manager::metrics_util::PasswordCheckScriptsCacheState; using ui::TimeFormat; using State = password_manager::BulkLeakCheckService::State;
diff --git a/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl.cc b/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl.cc index a55f27c..c73e3d64 100644 --- a/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl.cc +++ b/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl.cc
@@ -21,7 +21,6 @@ #include "chrome/browser/password_manager/account_password_store_factory.h" #include "chrome/browser/password_manager/affiliation_service_factory.h" #include "chrome/browser/password_manager/chrome_password_manager_client.h" -#include "chrome/browser/password_manager/password_manager_util_chromeos.h" #include "chrome/browser/password_manager/password_store_factory.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/signin/identity_manager_factory.h" @@ -71,6 +70,7 @@ #if BUILDFLAG(IS_CHROMEOS) #include "chrome/browser/extensions/api/passwords_private/passwords_private_utils_chromeos.h" +#include "chrome/browser/password_manager/password_manager_util_chromeos.h" #endif namespace {
diff --git a/chrome/browser/extensions/api/settings_private/generated_prefs.cc b/chrome/browser/extensions/api/settings_private/generated_prefs.cc index 3575be0b..2b730b9 100644 --- a/chrome/browser/extensions/api/settings_private/generated_prefs.cc +++ b/chrome/browser/extensions/api/settings_private/generated_prefs.cc
@@ -97,6 +97,8 @@ prefs_[content_settings::kCookieSessionOnly] = std::make_unique<content_settings::GeneratedCookieSessionOnlyPref>( profile_); + prefs_[content_settings::kCookieDefaultContentSetting] = std::make_unique< + content_settings::GeneratedCookieDefaultContentSettingPref>(profile_); prefs_[kGeneratedPasswordLeakDetectionPref] = std::make_unique<GeneratedPasswordLeakDetectionPref>(profile_); prefs_[safe_browsing::kGeneratedSafeBrowsingPref] =
diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chrome/browser/extensions/api/settings_private/prefs_util.cc index 8b2296b..807a1fe3 100644 --- a/chrome/browser/extensions/api/settings_private/prefs_util.cc +++ b/chrome/browser/extensions/api/settings_private/prefs_util.cc
@@ -324,12 +324,14 @@ settings_api::PrefType::PREF_TYPE_BOOLEAN; // Cookies page + (*s_allowlist)[::prefs::kCookieControlsMode] = + settings_api::PrefType::PREF_TYPE_NUMBER; + (*s_allowlist)[::content_settings::kCookieDefaultContentSetting] = + settings_api::PrefType::PREF_TYPE_NUMBER; (*s_allowlist)[::content_settings::kCookiePrimarySetting] = settings_api::PrefType::PREF_TYPE_NUMBER; (*s_allowlist)[::content_settings::kCookieSessionOnly] = settings_api::PrefType::PREF_TYPE_BOOLEAN; - (*s_allowlist)[::prefs::kCookieControlsMode] = - settings_api::PrefType::PREF_TYPE_NUMBER; (*s_allowlist)[::prefs::kPrivacySandboxFirstPartySetsEnabled] = settings_api::PrefType::PREF_TYPE_BOOLEAN;
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index 1af0c1d..a15bdb2e 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -6428,6 +6428,11 @@ "expiry_milestone": 116 }, { + "name": "storage-buckets", + "owners": [ "ayui", "estade", "chrome-owp-storage@google.com" ], + "expiry_milestone": 116 + }, + { "name": "strict-origin-isolation", "owners": [ "wjmaclean", "alexmos", "creis" ], // This can be used to opt in to origin isolation which isolates full
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index b6d2183..ebaf861 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -1618,6 +1618,12 @@ const char kStartSurfaceReturnTimeDescription[] = "Enable showing start surface at startup after specified time has elapsed"; +const char kStorageBucketsName[] = "Storage Buckets API"; +const char kStorageBucketsDescription[] = + "Enable experimental Storage Buckets API, allowing websites to create " + "multiple buckets of storage to organize their data, allowing user agents " + "to delete each bucket independently of other buckets."; + const char kHttpsOnlyModeName[] = "HTTPS-First Mode Setting"; const char kHttpsOnlyModeDescription[] = "Adds a setting under chrome://settings/security to opt-in to HTTPS-First "
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index add207e..bcc9cd4 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h
@@ -901,6 +901,9 @@ extern const char kStartSurfaceReturnTimeName[]; extern const char kStartSurfaceReturnTimeDescription[]; +extern const char kStorageBucketsName[]; +extern const char kStorageBucketsDescription[]; + extern const char kHiddenNetworkMigrationName[]; extern const char kHiddenNetworkMigrationDescription[];
diff --git a/chrome/browser/lacros/lacros_extension_apps_publisher.cc b/chrome/browser/lacros/lacros_extension_apps_publisher.cc index cd316db7..0af857e 100644 --- a/chrome/browser/lacros/lacros_extension_apps_publisher.cc +++ b/chrome/browser/lacros/lacros_extension_apps_publisher.cc
@@ -18,7 +18,6 @@ #include "chrome/browser/extensions/launch_util.h" #include "chrome/browser/lacros/lacros_extensions_util.h" #include "chrome/browser/profiles/profile_manager.h" -#include "chrome/browser/ui/app_list/extension_app_utils.h" #include "chrome/browser/ui/lacros/window_utility.h" #include "chromeos/crosapi/mojom/app_window_tracker.mojom.h" #include "chromeos/lacros/lacros_service.h"
diff --git a/chrome/browser/lifetime/browser_shutdown.cc b/chrome/browser/lifetime/browser_shutdown.cc index e09b41d6..6e4704e 100644 --- a/chrome/browser/lifetime/browser_shutdown.cc +++ b/chrome/browser/lifetime/browser_shutdown.cc
@@ -28,7 +28,6 @@ #include "chrome/browser/about_flags.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/buildflags.h" -#include "chrome/browser/lifetime/application_lifetime_chromeos.h" #include "chrome/browser/lifetime/switch_utils.h" #include "chrome/browser/profiles/nuke_profile_directory_utils.h" #include "chrome/common/chrome_paths.h" @@ -57,6 +56,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) #include "chrome/browser/ash/boot_times_recorder.h" +#include "chrome/browser/lifetime/application_lifetime_chromeos.h" #include "chrome/browser/lifetime/termination_notification.h" #endif
diff --git a/chrome/browser/password_manager/affiliations_prefetcher_factory.cc b/chrome/browser/password_manager/affiliations_prefetcher_factory.cc new file mode 100644 index 0000000..d0d8831 --- /dev/null +++ b/chrome/browser/password_manager/affiliations_prefetcher_factory.cc
@@ -0,0 +1,45 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/password_manager/affiliations_prefetcher_factory.h" + +#include "base/no_destructor.h" +#include "chrome/browser/password_manager/affiliation_service_factory.h" +#include "chrome/browser/password_manager/password_store_factory.h" +#include "chrome/browser/profiles/profile.h" +#include "components/password_manager/core/browser/affiliation/affiliations_prefetcher.h" +#include "content/public/browser/browser_context.h" + +AffiliationsPrefetcherFactory::AffiliationsPrefetcherFactory() + : ProfileKeyedServiceFactory("AffiliationsPrefetcher") { + DependsOn(AffiliationServiceFactory::GetInstance()); +} + +AffiliationsPrefetcherFactory::~AffiliationsPrefetcherFactory() = default; + +AffiliationsPrefetcherFactory* AffiliationsPrefetcherFactory::GetInstance() { + static base::NoDestructor<AffiliationsPrefetcherFactory> instance; + return instance.get(); +} + +password_manager::AffiliationsPrefetcher* +AffiliationsPrefetcherFactory::GetForProfile(Profile* profile) { + return static_cast<password_manager::AffiliationsPrefetcher*>( + GetInstance()->GetServiceForBrowserContext( + profile, /*create=*/!profile->ShutdownStarted())); +} + +KeyedService* AffiliationsPrefetcherFactory::BuildServiceInstanceFor( + content::BrowserContext* context) const { + Profile* profile = Profile::FromBrowserContext(context); + // Since Password Manager doesn't work for non-standard profiles, + // AffiliationsPrefetcher shouldn't be created for these profiles too. + DCHECK(!profile->IsOffTheRecord()); + DCHECK(profile->IsRegularProfile()); + + password_manager::AffiliationService* affiliation_service = + AffiliationServiceFactory::GetForProfile(profile); + + return new password_manager::AffiliationsPrefetcher(affiliation_service); +}
diff --git a/chrome/browser/password_manager/affiliations_prefetcher_factory.h b/chrome/browser/password_manager/affiliations_prefetcher_factory.h new file mode 100644 index 0000000..46c76de --- /dev/null +++ b/chrome/browser/password_manager/affiliations_prefetcher_factory.h
@@ -0,0 +1,38 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_PASSWORD_MANAGER_AFFILIATIONS_PREFETCHER_FACTORY_H_ +#define CHROME_BROWSER_PASSWORD_MANAGER_AFFILIATIONS_PREFETCHER_FACTORY_H_ + +#include "base/no_destructor.h" +#include "chrome/browser/profiles/profile_keyed_service_factory.h" + +namespace password_manager { +class AffiliationsPrefetcher; +} // namespace password_manager + +namespace content { +class BrowserContext; +} // namespace content + +class Profile; + +// Creates instances of AffiliationsPrefetcher per Profile. +class AffiliationsPrefetcherFactory : public ProfileKeyedServiceFactory { + public: + static AffiliationsPrefetcherFactory* GetInstance(); + static password_manager::AffiliationsPrefetcher* GetForProfile( + Profile* profile); + + private: + friend class base::NoDestructor<AffiliationsPrefetcherFactory>; + + AffiliationsPrefetcherFactory(); + ~AffiliationsPrefetcherFactory() override; + + KeyedService* BuildServiceInstanceFor( + content::BrowserContext* context) const override; +}; + +#endif // CHROME_BROWSER_PASSWORD_MANAGER_AFFILIATIONS_PREFETCHER_FACTORY_H_
diff --git a/chrome/browser/password_manager/android/password_store_android_backend_bridge_helper_impl.cc b/chrome/browser/password_manager/android/password_store_android_backend_bridge_helper_impl.cc index 41c9477..07848e9 100644 --- a/chrome/browser/password_manager/android/password_store_android_backend_bridge_helper_impl.cc +++ b/chrome/browser/password_manager/android/password_store_android_backend_bridge_helper_impl.cc
@@ -49,7 +49,7 @@ FROM_HERE, base::BindOnce(&PasswordStoreAndroidBackendDispatcherBridge::Init, base::Unretained(dispatcher_bridge_.get()), - std::ref(*receiver_bridge_))); + receiver_bridge_->GetJavaBridge())); } PasswordStoreAndroidBackendBridgeHelperImpl:: @@ -68,7 +68,7 @@ FROM_HERE, base::BindOnce(&PasswordStoreAndroidBackendDispatcherBridge::Init, base::Unretained(dispatcher_bridge_.get()), - std::ref(*receiver_bridge_))); + receiver_bridge_->GetJavaBridge())); } PasswordStoreAndroidBackendBridgeHelperImpl::
diff --git a/chrome/browser/password_manager/android/password_store_android_backend_bridge_helper_impl_unittest.cc b/chrome/browser/password_manager/android/password_store_android_backend_bridge_helper_impl_unittest.cc index f22d4b9..14a6203 100644 --- a/chrome/browser/password_manager/android/password_store_android_backend_bridge_helper_impl_unittest.cc +++ b/chrome/browser/password_manager/android/password_store_android_backend_bridge_helper_impl_unittest.cc
@@ -78,7 +78,7 @@ public: MOCK_METHOD(void, Init, - (const PasswordStoreAndroidBackendReceiverBridge&), + (base::android::ScopedJavaGlobalRef<jobject>), (override)); MOCK_METHOD(void, GetAllLogins, (JobId, Account), (override)); MOCK_METHOD(void, GetAutofillableLogins, (JobId, Account), (override)); @@ -110,8 +110,6 @@ class PasswordStoreAndroidBackendBridgeHelperImplTest>(), CreateMockReceiverBridge(), CreateMockDispatcherBridge()) { - EXPECT_CALL(*dispatcher_bridge(), Init); - EXPECT_CALL(*receiver_bridge(), SetConsumer); helper_.SetConsumer(consumer_weak_factory_.GetWeakPtr()); RunUntilIdle(); } @@ -145,6 +143,9 @@ StrictMock<MockPasswordStoreAndroidBackendReceiverBridge>>(); receiver_bridge_ = unique_receiver_bridge.get(); + EXPECT_CALL(*receiver_bridge(), GetJavaBridge); + EXPECT_CALL(*receiver_bridge(), SetConsumer); + return unique_receiver_bridge; } @@ -153,6 +154,9 @@ auto unique_dispatcher_bridge = std::make_unique< StrictMock<MockPasswordStoreAndroidBackendDispatcherBridge>>(); dispatcher_bridge_ = unique_dispatcher_bridge.get(); + + EXPECT_CALL(*dispatcher_bridge(), Init); + return unique_dispatcher_bridge; }
diff --git a/chrome/browser/password_manager/android/password_store_android_backend_dispatcher_bridge.h b/chrome/browser/password_manager/android/password_store_android_backend_dispatcher_bridge.h index bf103726..e7cf7a09 100644 --- a/chrome/browser/password_manager/android/password_store_android_backend_dispatcher_bridge.h +++ b/chrome/browser/password_manager/android/password_store_android_backend_dispatcher_bridge.h
@@ -33,10 +33,10 @@ // Perform bridge and Java counterpart initialization. This method should be // executed on the same thread where all operations will run. - // `receiver_bridge` will be set to handle callbacks from the Java side and - // should outlive this object. + // `receiver_bridge` is the java counterpart of the + // `PasswordStoreAndroidBackendReceiverBridge` and should outlive this object. virtual void Init( - const PasswordStoreAndroidBackendReceiverBridge& receiver_bridge) = 0; + base::android::ScopedJavaGlobalRef<jobject> receiver_bridge) = 0; // Triggers an asynchronous request to retrieve all stored passwords. The // registered `Consumer` is notified with `OnCompleteWithLogins` via the
diff --git a/chrome/browser/password_manager/android/password_store_android_backend_dispatcher_bridge_impl.cc b/chrome/browser/password_manager/android/password_store_android_backend_dispatcher_bridge_impl.cc index df6fbec..c1aaa94 100644 --- a/chrome/browser/password_manager/android/password_store_android_backend_dispatcher_bridge_impl.cc +++ b/chrome/browser/password_manager/android/password_store_android_backend_dispatcher_bridge_impl.cc
@@ -61,10 +61,10 @@ } void PasswordStoreAndroidBackendDispatcherBridgeImpl::Init( - const PasswordStoreAndroidBackendReceiverBridge& receiver_bridge) { + base::android::ScopedJavaGlobalRef<jobject> receiver_bridge) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); java_object_ = Java_PasswordStoreAndroidBackendDispatcherBridgeImpl_create( - base::android::AttachCurrentThread(), receiver_bridge.GetJavaBridge()); + base::android::AttachCurrentThread(), receiver_bridge); } void PasswordStoreAndroidBackendDispatcherBridgeImpl::GetAllLogins(
diff --git a/chrome/browser/password_manager/android/password_store_android_backend_dispatcher_bridge_impl.h b/chrome/browser/password_manager/android/password_store_android_backend_dispatcher_bridge_impl.h index 331f2c2..33fdd87 100644 --- a/chrome/browser/password_manager/android/password_store_android_backend_dispatcher_bridge_impl.h +++ b/chrome/browser/password_manager/android/password_store_android_backend_dispatcher_bridge_impl.h
@@ -35,8 +35,8 @@ const PasswordStoreAndroidBackendDispatcherBridgeImpl&) = delete; ~PasswordStoreAndroidBackendDispatcherBridgeImpl() override; - void Init(const PasswordStoreAndroidBackendReceiverBridge& receiver_bridge) - override; + void Init( + base::android::ScopedJavaGlobalRef<jobject> receiver_bridge) override; private: // Implements PasswordStoreAndroidBackendDispatcherBridge interface.
diff --git a/chrome/browser/password_manager/chrome_webauthn_credentials_delegate_unittest.cc b/chrome/browser/password_manager/chrome_webauthn_credentials_delegate_unittest.cc index 6a8473a9..763d8a3 100644 --- a/chrome/browser/password_manager/chrome_webauthn_credentials_delegate_unittest.cc +++ b/chrome/browser/password_manager/chrome_webauthn_credentials_delegate_unittest.cc
@@ -122,7 +122,7 @@ dialog_model()->ReplaceCredListForTesting(std::move(creds)); #else delegate_->OnWebAuthnRequestPending( - main_rfh(), creds, + main_rfh(), creds, /*is_conditional_request=*/true, base::BindOnce( &ChromeWebAuthnCredentialsDelegateTest::OnAccountSelected, base::Unretained(this)));
diff --git a/chrome/browser/password_manager/password_store_factory.cc b/chrome/browser/password_manager/password_store_factory.cc index 6908fda..ed84adb 100644 --- a/chrome/browser/password_manager/password_store_factory.cc +++ b/chrome/browser/password_manager/password_store_factory.cc
@@ -12,11 +12,13 @@ #include "build/chromeos_buildflags.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/password_manager/affiliation_service_factory.h" +#include "chrome/browser/password_manager/affiliations_prefetcher_factory.h" #include "chrome/browser/password_manager/credentials_cleaner_runner_factory.h" #include "chrome/browser/password_manager/password_store_utils.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" #include "chrome/common/chrome_paths_internal.h" +#include "components/password_manager/core/browser/affiliation/affiliations_prefetcher.h" #include "components/password_manager/core/browser/password_manager_constants.h" #include "components/password_manager/core/browser/password_manager_util.h" #include "components/password_manager/core/browser/password_store.h" @@ -58,6 +60,7 @@ "PasswordStore", ProfileSelections::BuildRedirectedInIncognito()) { DependsOn(AffiliationServiceFactory::GetInstance()); + DependsOn(AffiliationsPrefetcherFactory::GetInstance()); DependsOn(CredentialsCleanerRunnerFactory::GetInstance()); } @@ -123,6 +126,9 @@ CredentialsCleanerRunnerFactory::GetForProfile(profile), ps, profile->GetPrefs(), base::Seconds(60), network_context_getter); + AffiliationsPrefetcherFactory::GetForProfile(profile)->RegisterPasswordStore( + ps.get()); + DelayReportingPasswordStoreMetrics(profile); return ps;
diff --git a/chrome/browser/policy/configuration_policy_handler_list_factory.cc b/chrome/browser/policy/configuration_policy_handler_list_factory.cc index d9bc559..869ba08 100644 --- a/chrome/browser/policy/configuration_policy_handler_list_factory.cc +++ b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
@@ -1373,6 +1373,9 @@ { key::kTrashEnabled, ash::prefs::kFilesAppTrashEnabled, base::Value::Type::BOOLEAN }, + { key::kUsbDetectorNotificationEnabled, + ash::prefs::kUsbDetectorNotificationEnabled, + base::Value::Type::BOOLEAN }, #endif // BUILDFLAG(IS_CHROMEOS_ASH) #if BUILDFLAG(IS_LINUX)
diff --git a/chrome/browser/prefetch/prefetch_prefs.cc b/chrome/browser/prefetch/prefetch_prefs.cc index fad74b38..be26eade 100644 --- a/chrome/browser/prefetch/prefetch_prefs.cc +++ b/chrome/browser/prefetch/prefetch_prefs.cc
@@ -7,6 +7,7 @@ #include "chrome/browser/prefetch/pref_names.h" #include "components/pref_registry/pref_registry_syncable.h" #include "components/prefs/pref_service.h" +#include "content/public/browser/devtools_agent_host.h" #include "content/public/browser/preloading.h" namespace prefetch { @@ -62,8 +63,12 @@ } content::PreloadingEligibility IsSomePreloadingEnabled( - const PrefService& prefs) { - if (base::FeatureList::IsEnabled(kPreloadingHoldback)) { + const PrefService& prefs, + content::WebContents* web_contents) { + // Override kPreloadingHoldback when DevTools is opened to mitigate the cases + // in which developers are affected by kPreloadingHoldback. + if (!(web_contents && content::DevToolsAgentHost::HasFor(web_contents)) && + base::FeatureList::IsEnabled(kPreloadingHoldback)) { return content::PreloadingEligibility::kPreloadingDisabled; } return IsSomePreloadingEnabledIgnoringFinch(prefs);
diff --git a/chrome/browser/prefetch/prefetch_prefs.h b/chrome/browser/prefetch/prefetch_prefs.h index dd65950..fb36b28 100644 --- a/chrome/browser/prefetch/prefetch_prefs.h +++ b/chrome/browser/prefetch/prefetch_prefs.h
@@ -8,6 +8,10 @@ #include "base/feature_list.h" #include "content/public/browser/preloading.h" +namespace content { +class WebContents; +} // namespace content + namespace user_prefs { class PrefRegistrySyncable; } @@ -60,8 +64,11 @@ // Returns PreloadingEligibility:kEligible if preloading is not entirely // disabled. Returns the first blocking reason encountered otherwise. +// TODO(crbug/1391411): Audit the all callsites whether the default_value = +// nullptr is suitable. content::PreloadingEligibility IsSomePreloadingEnabled( - const PrefService& prefs); + const PrefService& prefs, + content::WebContents* web_contents = nullptr); // Returns PreloadingEligibility:kEligible if preloading is not entirely // disabled. Returns the first blocking reason encountered otherwise.
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc index 9a0e044..8ed000ac 100644 --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc
@@ -310,6 +310,7 @@ #include "chrome/browser/apps/app_service/webapk/webapk_prefs.h" #include "chrome/browser/ash/account_manager/account_apps_availability.h" #include "chrome/browser/ash/account_manager/account_manager_edu_coexistence_controller.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" #include "chrome/browser/ash/app_list/arc/arc_app_list_prefs.h" #include "chrome/browser/ash/app_mode/arc/arc_kiosk_app_manager.h" #include "chrome/browser/ash/app_mode/kiosk_app_manager.h" @@ -397,7 +398,6 @@ #include "chrome/browser/extensions/extension_assets_manager_chromeos.h" #include "chrome/browser/media/protected_media_identifier_permission_context.h" #include "chrome/browser/metrics/chromeos_metrics_provider.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" #include "chrome/browser/ui/ash/shelf/chrome_shelf_prefs.h" #include "chrome/browser/ui/webui/ash/login/enable_debugging_screen_handler.h" #include "chrome/browser/ui/webui/ash/login/signin_screen_handler.h"
diff --git a/chrome/browser/preloading/prerender/prerender_browsertest.cc b/chrome/browser/preloading/prerender/prerender_browsertest.cc index c242fb6..e5799fd 100644 --- a/chrome/browser/preloading/prerender/prerender_browsertest.cc +++ b/chrome/browser/preloading/prerender/prerender_browsertest.cc
@@ -15,6 +15,7 @@ #include "chrome/common/chrome_paths.h" #include "chrome/test/base/chrome_test_utils.h" #include "components/prefs/pref_service.h" +#include "content/public/browser/devtools_agent_host.h" #include "content/public/test/browser_test.h" #include "content/public/test/browser_test_utils.h" #include "content/public/test/prerender_test_util.h" @@ -75,6 +76,16 @@ content::test::PrerenderTestHelper prerender_helper_; }; +class PrerenderHoldbackBrowserTest : public PrerenderBrowserTest { + public: + PrerenderHoldbackBrowserTest() { + feature_list_.InitAndEnableFeature(prefetch::kPreloadingHoldback); + } + + private: + base::test::ScopedFeatureList feature_list_; +}; + // An end-to-end test of prerendering and activating. IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderAndActivate) { base::HistogramTester histogram_tester; @@ -240,4 +251,65 @@ EXPECT_NE(host_id, content::RenderFrameHost::kNoFrameTreeNodeId); } +// Tests that Devtools open overrides PreloadingHoldback on non-Android +// platforms. +// TODO(crbug/1391411): revisit for Android platforms. +#if !BUILDFLAG(IS_ANDROID) +IN_PROC_BROWSER_TEST_F(PrerenderHoldbackBrowserTest, + PreloadingHoldbackOverridden) { + base::HistogramTester histogram_tester; + + // Navigate to an initial page. + GURL url = embedded_test_server()->GetURL("/empty.html"); + ASSERT_TRUE(content::NavigateToURL(GetActiveWebContents(), url)); + // Emulating Devtools attached to make PreloadingHoldback overridden. + ASSERT_NE(content::DevToolsAgentHost::GetOrCreateFor(GetActiveWebContents()), + nullptr); + + PrefService* prefs = chrome_test_utils::GetProfile(this)->GetPrefs(); + ASSERT_EQ(prefetch::IsSomePreloadingEnabled(*prefs), + content::PreloadingEligibility::kPreloadingDisabled); + + // Start a prerender. + GURL prerender_url = embedded_test_server()->GetURL("/simple.html"); + prerender_helper().AddPrerender(prerender_url); + + // Activate. + content::TestActivationManager activation_manager(GetActiveWebContents(), + prerender_url); + ASSERT_TRUE( + content::ExecJs(GetActiveWebContents()->GetPrimaryMainFrame(), + content::JsReplace("location = $1", prerender_url))); + activation_manager.WaitForNavigationFinished(); + EXPECT_TRUE(activation_manager.was_activated()); + + histogram_tester.ExpectUniqueSample( + "Prerender.Experimental.PrerenderHostFinalStatus.SpeculationRule", + kFinalStatusActivated, 1); +} +#endif + +// Tests that Prerender2 cannot be triggered when PreloadingHoldback is not +// overridden by Devtools. +IN_PROC_BROWSER_TEST_F(PrerenderHoldbackBrowserTest, + PreloadingHoldbackNotOverridden) { + // Navigate to an initial page. + GURL url = embedded_test_server()->GetURL("/empty.html"); + ASSERT_TRUE(content::NavigateToURL(GetActiveWebContents(), url)); + + PrefService* prefs = chrome_test_utils::GetProfile(this)->GetPrefs(); + ASSERT_EQ(prefetch::IsSomePreloadingEnabled(*prefs), + content::PreloadingEligibility::kPreloadingDisabled); + content::test::PrerenderHostRegistryObserver registry_observer( + *GetActiveWebContents()); + + // Attempt to trigger prerendering. + GURL prerender_url = embedded_test_server()->GetURL("/simple.html?1"); + prerender_helper().AddPrerenderAsync(prerender_url); + // Since preload setting is disabled, prerender shouldn't be triggered. + registry_observer.WaitForTrigger(prerender_url); + int host_id = prerender_helper().GetHostForUrl(prerender_url); + EXPECT_EQ(host_id, content::RenderFrameHost::kNoFrameTreeNodeId); +} + } // namespace
diff --git a/chrome/browser/privacy_guide/BUILD.gn b/chrome/browser/privacy_guide/BUILD.gn index 739db6f..1aa0e35a 100644 --- a/chrome/browser/privacy_guide/BUILD.gn +++ b/chrome/browser/privacy_guide/BUILD.gn
@@ -3,7 +3,7 @@ # found in the LICENSE file. static_library("privacy_guide") { - sources = [ "privacy_guide_settings_states.h" ] + sources = [ "privacy_guide.h" ] deps = [ "//base" ] } @@ -11,12 +11,12 @@ if (is_android) { import("//build/config/android/rules.gni") - android_library("privacy_guide_settings_states_enum_java") { - srcjar_deps = [ ":privacy_guide_settings_states_enum_javagen" ] + android_library("privacy_guide_enum_java") { + srcjar_deps = [ ":privacy_guide_enum_javagen" ] deps = [ "//third_party/androidx:androidx_annotation_annotation_java" ] } - java_cpp_enum("privacy_guide_settings_states_enum_javagen") { - sources = [ "privacy_guide_settings_states.h" ] + java_cpp_enum("privacy_guide_enum_javagen") { + sources = [ "privacy_guide.h" ] } }
diff --git a/chrome/browser/privacy_guide/android/BUILD.gn b/chrome/browser/privacy_guide/android/BUILD.gn index 89faa0b..9db2e08 100644 --- a/chrome/browser/privacy_guide/android/BUILD.gn +++ b/chrome/browser/privacy_guide/android/BUILD.gn
@@ -23,7 +23,6 @@ deps = [ ":java_resources", "//base:base_java", - "//chrome/browser/privacy_guide:privacy_guide_settings_states_enum_java", "//chrome/browser/profiles/android:java", "//chrome/browser/safe_browsing/android:java", "//chrome/browser/signin/services/android:java", @@ -43,6 +42,7 @@ "//third_party/androidx:androidx_viewpager2_viewpager2_java", "//ui/android:ui_full_java", ] + srcjar_deps = [ "//chrome/browser/privacy_guide:privacy_guide_enum_javagen" ] resources_package = "org.chromium.chrome.browser.privacy_guide" } @@ -61,7 +61,6 @@ "//base:base_java", "//base:base_java_test_support", "//base:base_junit_test_support", - "//chrome/browser/privacy_guide:privacy_guide_settings_states_enum_java", "//chrome/browser/profiles/android:java", "//chrome/browser/safe_browsing/android:java", "//chrome/browser/signin/services/android:java", @@ -90,14 +89,17 @@ "//base:base_java", "//base:base_java_test_support", "//chrome/browser/flags:java", - "//chrome/browser/privacy_guide:privacy_guide_settings_states_enum_java", "//chrome/browser/profiles/android:java", "//chrome/browser/safe_browsing/android:java", "//chrome/browser/settings:test_support_java", "//chrome/browser/signin/services/android:java", "//chrome/browser/sync/android:java", "//chrome/test/android:chrome_java_test_support_common", + "//components/browser_ui/site_settings/android:java", + "//components/content_settings/android:content_settings_enums_java", + "//components/prefs/android:java", "//components/sync/android:sync_java", + "//components/user_prefs/android:java", "//content/public/test/android:content_java_test_support", "//third_party/android_deps:espresso_java", "//third_party/androidx:androidx_test_runner_java",
diff --git a/chrome/browser/privacy_guide/android/java/src/org/chromium/chrome/browser/privacy_guide/PrivacyGuideFragment.java b/chrome/browser/privacy_guide/android/java/src/org/chromium/chrome/browser/privacy_guide/PrivacyGuideFragment.java index 32d30a16..f1c0338 100644 --- a/chrome/browser/privacy_guide/android/java/src/org/chromium/chrome/browser/privacy_guide/PrivacyGuideFragment.java +++ b/chrome/browser/privacy_guide/android/java/src/org/chromium/chrome/browser/privacy_guide/PrivacyGuideFragment.java
@@ -122,6 +122,10 @@ } private void displayDonePage() { + // Record metrics when the user clicks the next button on the final card + mPrivacyGuideMetricsDelegate.recordMetricsOnNextForCard( + mPagerAdapter.getFragmentType(mViewPager.getCurrentItem())); + FrameLayout content = mView.findViewById(R.id.fragment_content); content.removeAllViews(); getLayoutInflater().inflate(R.layout.privacy_guide_done, content);
diff --git a/chrome/browser/privacy_guide/android/java/src/org/chromium/chrome/browser/privacy_guide/PrivacyGuideMetricsDelegate.java b/chrome/browser/privacy_guide/android/java/src/org/chromium/chrome/browser/privacy_guide/PrivacyGuideMetricsDelegate.java index ef4b438..ac4965d 100644 --- a/chrome/browser/privacy_guide/android/java/src/org/chromium/chrome/browser/privacy_guide/PrivacyGuideMetricsDelegate.java +++ b/chrome/browser/privacy_guide/android/java/src/org/chromium/chrome/browser/privacy_guide/PrivacyGuideMetricsDelegate.java
@@ -26,6 +26,10 @@ * Initial state of the Safe Browsing when {@link SafeBrowsingFragment} is created. */ private @SafeBrowsingState int mInitialSafeBrowsingState; + /** + * Initial mode of the Cookies Control when {@link CookiesFragment} is created. + */ + private @CookieControlsMode int mInitialCookiesControlMode; /** * A method to record metrics on the next click of {@link MSBBFragment} @@ -110,9 +114,38 @@ } /** + * A method to record metrics on the next click of {@link CookiesFragment} + */ + private void recordMetricsOnNextForCookiesCard() { + @CookieControlsMode + int currentValue = PrivacyGuideUtils.getCookieControlsMode(); + + boolean isInitialStateBlock3PIncognito = + mInitialCookiesControlMode == CookieControlsMode.INCOGNITO_ONLY; + boolean isEndStateBlock3PIncognito = currentValue == CookieControlsMode.INCOGNITO_ONLY; + + int stateChange; + + if (isInitialStateBlock3PIncognito && isEndStateBlock3PIncognito) { + stateChange = PrivacyGuideSettingsStates.BLOCK3P_INCOGNITO_TO3P_INCOGNITO; + } else if (isInitialStateBlock3PIncognito && !isEndStateBlock3PIncognito) { + stateChange = PrivacyGuideSettingsStates.BLOCK3P_INCOGNITO_TO3P; + } else if (!isInitialStateBlock3PIncognito && isEndStateBlock3PIncognito) { + stateChange = PrivacyGuideSettingsStates.BLOCK3P_TO3P_INCOGNITO; + } else { + stateChange = PrivacyGuideSettingsStates.BLOCK3P_TO3P; + } + + // Record histogram comparing |mInitialCookiesControlMode| and |currentValue| + RecordHistogram.recordEnumeratedHistogram("Settings.PrivacyGuide.SettingsStates", + stateChange, PrivacyGuideSettingsStates.MAX_VALUE); + // Record user action for clicking the next button on the Cookies card + RecordUserAction.record("Settings.PrivacyGuide.NextClickCookies"); + } + + /** * A method to set the initial state of a card {@link PrivacyGuideFragment.FragmentType} in * Privacy Guide. - * TODO(crbug.com/1238896): Support for other fragment types (COOKIES) * * @param fragmentType A privacy guide {@link PrivacyGuideFragment.FragmentType}. */ @@ -130,13 +163,18 @@ mInitialSafeBrowsingState = PrivacyGuideUtils.getSafeBrowsingState(); break; } + case PrivacyGuideFragment.FragmentType.COOKIES: { + mInitialCookiesControlMode = PrivacyGuideUtils.getCookieControlsMode(); + break; + } + default: + assert false : "Unexpected fragmentType " + fragmentType; } } /** * A method to record metrics on the next click of a card {@link * PrivacyGuideFragment.FragmentType} in Privacy Guide. - * TODO(crbug.com/1238896): Support for other fragment types (COOKIES) * * @param fragmentType A privacy guide {@link PrivacyGuideFragment.FragmentType}. */ @@ -154,6 +192,12 @@ recordMetricsOnNextForSafeBrowsingCard(); break; } + case PrivacyGuideFragment.FragmentType.COOKIES: { + recordMetricsOnNextForCookiesCard(); + break; + } + default: + assert false : "Unexpected fragmentType " + fragmentType; } } @@ -231,7 +275,6 @@ /** * A method to record metrics on the back click of a card {@link * PrivacyGuideFragment.FragmentType} in Privacy Guide. - * TODO(crbug.com/1238896): Support for other fragment types (SAFE_BROWSING, COOKIES) * * @param fragmentType A privacy guide {@link PrivacyGuideFragment.FragmentType}. */ @@ -239,7 +282,19 @@ switch (fragmentType) { case PrivacyGuideFragment.FragmentType.SYNC: { RecordUserAction.record("Settings.PrivacyGuide.BackClickHistorySync"); + break; } + case PrivacyGuideFragment.FragmentType.SAFE_BROWSING: { + RecordUserAction.record("Settings.PrivacyGuide.BackClickSafeBrowsing"); + break; + } + case PrivacyGuideFragment.FragmentType.COOKIES: { + RecordUserAction.record("Settings.PrivacyGuide.BackClickCookies"); + break; + } + default: + // The MSBB card doesn't have a back button, and so we won't support a case for it. + assert false : "Unexpected fragmentType " + fragmentType; } } }
diff --git a/chrome/browser/privacy_guide/android/java/src/org/chromium/chrome/browser/privacy_guide/PrivacyGuideUtils.java b/chrome/browser/privacy_guide/android/java/src/org/chromium/chrome/browser/privacy_guide/PrivacyGuideUtils.java index 1d307a2c..e20cd3c 100644 --- a/chrome/browser/privacy_guide/android/java/src/org/chromium/chrome/browser/privacy_guide/PrivacyGuideUtils.java +++ b/chrome/browser/privacy_guide/android/java/src/org/chromium/chrome/browser/privacy_guide/PrivacyGuideUtils.java
@@ -9,7 +9,10 @@ import org.chromium.chrome.browser.safe_browsing.SafeBrowsingState; import org.chromium.chrome.browser.signin.services.UnifiedConsentServiceBridge; import org.chromium.chrome.browser.sync.SyncService; +import org.chromium.components.content_settings.CookieControlsMode; +import org.chromium.components.content_settings.PrefNames; import org.chromium.components.sync.UserSelectableType; +import org.chromium.components.user_prefs.UserPrefs; import java.util.Set; @@ -31,4 +34,8 @@ public static @SafeBrowsingState int getSafeBrowsingState() { return SafeBrowsingBridge.getSafeBrowsingState(); } + public static @CookieControlsMode int getCookieControlsMode() { + return UserPrefs.get(Profile.getLastUsedRegularProfile()) + .getInteger(PrefNames.COOKIE_CONTROLS_MODE); + } }
diff --git a/chrome/browser/privacy_guide/android/javatests/src/org/chromium/chrome/browser/privacy_guide/PrivacyGuideFragmentTest.java b/chrome/browser/privacy_guide/android/javatests/src/org/chromium/chrome/browser/privacy_guide/PrivacyGuideFragmentTest.java index d9f8ace..38c9e1c 100644 --- a/chrome/browser/privacy_guide/android/javatests/src/org/chromium/chrome/browser/privacy_guide/PrivacyGuideFragmentTest.java +++ b/chrome/browser/privacy_guide/android/javatests/src/org/chromium/chrome/browser/privacy_guide/PrivacyGuideFragmentTest.java
@@ -43,7 +43,10 @@ import org.chromium.chrome.browser.signin.services.UnifiedConsentServiceBridge; import org.chromium.chrome.browser.sync.SyncService; import org.chromium.chrome.test.ChromeJUnit4ClassRunner; +import org.chromium.components.content_settings.CookieControlsMode; +import org.chromium.components.content_settings.PrefNames; import org.chromium.components.sync.UserSelectableType; +import org.chromium.components.user_prefs.UserPrefs; import org.chromium.content_public.browser.test.NativeLibraryTestUtils; import org.chromium.content_public.browser.test.util.TestThreadUtils; import org.chromium.ui.test.util.ViewUtils; @@ -97,6 +100,7 @@ @After public void tearDown() { TestThreadUtils.runOnUiThreadBlocking(() -> { SyncService.resetForTests(); }); + if (mActionTester != null) mActionTester.tearDown(); } private void launchPrivacyGuide() { @@ -104,6 +108,12 @@ ViewUtils.onViewWaiting(withText(R.string.prefs_privacy_guide_title)); } + private void navigateToMSBBCard() { + // Welcome page -> MSBB page + onView(withText(R.string.privacy_guide_welcome_title)).check(matches(isDisplayed())); + onView(withText(R.string.privacy_guide_start_button)).perform(click()); + } + private void navigateToSyncCard() { // Welcome page -> MSBB page onView(withText(R.string.privacy_guide_welcome_title)).check(matches(isDisplayed())); @@ -128,6 +138,24 @@ onView(withText(R.string.next)).perform(click()); } + private void navigateToCookiesCard() { + // Welcome page -> MSBB page + onView(withText(R.string.privacy_guide_welcome_title)).check(matches(isDisplayed())); + onView(withText(R.string.privacy_guide_start_button)).perform(click()); + + // MSBB page -> Sync page + ViewUtils.waitForView(withText(R.string.url_keyed_anonymized_data_title)); + onView(withText(R.string.next)).perform(click()); + + // Sync page -> SB page + ViewUtils.waitForView(withText(R.string.privacy_guide_sync_toggle)); + onView(withText(R.string.next)).perform(click()); + + // SB page -> Cookies page + ViewUtils.waitForView(withText(R.string.privacy_guide_safe_browsing_intro)); + onView(withText(R.string.next)).perform(click()); + } + private void setMSBBState(boolean isMSBBon) { TestThreadUtils.runOnUiThreadBlocking( () @@ -144,6 +172,13 @@ () -> SafeBrowsingBridge.setSafeBrowsingState(safeBrowsingState)); } + private void setCookieControlsMode(@CookieControlsMode int cookieControlsMode) { + TestThreadUtils.runOnUiThreadBlocking( + () + -> UserPrefs.get(Profile.getLastUsedRegularProfile()) + .setInteger(PrefNames.COOKIE_CONTROLS_MODE, cookieControlsMode)); + } + private void testButtonVisibility(int buttonTextId, boolean isVisible) { if (isVisible) { onView(withText(buttonTextId)).check(matches(isDisplayed())); @@ -284,9 +319,7 @@ public void testMSBBCard_nextClickMSBBUserAction() { launchPrivacyGuide(); mActionTester = new UserActionTester(); - // Welcome page -> MSBB page - onView(withText(R.string.privacy_guide_welcome_title)).check(matches(isDisplayed())); - onView(withText(R.string.privacy_guide_start_button)).perform(click()); + navigateToMSBBCard(); // MSBB page -> Sync page ViewUtils.waitForView(withText(R.string.url_keyed_anonymized_data_title)); @@ -301,9 +334,7 @@ public void testMSBBCard_offToOffSettingsStatesHistogram() { launchPrivacyGuide(); setMSBBState(false); - // Welcome page -> MSBB page - onView(withText(R.string.privacy_guide_welcome_title)).check(matches(isDisplayed())); - onView(withText(R.string.privacy_guide_start_button)).perform(click()); + navigateToMSBBCard(); assertEquals(0, mHistogramTestRule.getHistogramValueCount( @@ -324,9 +355,7 @@ public void testMSBBCard_offToOnSettingsStatesHistogram() { launchPrivacyGuide(); setMSBBState(false); - // Welcome page -> MSBB page - onView(withText(R.string.privacy_guide_welcome_title)).check(matches(isDisplayed())); - onView(withText(R.string.privacy_guide_start_button)).perform(click()); + navigateToMSBBCard(); assertEquals(0, mHistogramTestRule.getHistogramValueCount( @@ -348,9 +377,7 @@ public void testMSBBCard_onToOffSettingsStatesHistogram() { launchPrivacyGuide(); setMSBBState(true); - // Welcome page -> MSBB page - onView(withText(R.string.privacy_guide_welcome_title)).check(matches(isDisplayed())); - onView(withText(R.string.privacy_guide_start_button)).perform(click()); + navigateToMSBBCard(); assertEquals(0, mHistogramTestRule.getHistogramValueCount( @@ -372,9 +399,7 @@ public void testMSBBCard_onToOnSettingsStatesHistogram() { launchPrivacyGuide(); setMSBBState(true); - // Welcome page -> MSBB page - onView(withText(R.string.privacy_guide_welcome_title)).check(matches(isDisplayed())); - onView(withText(R.string.privacy_guide_start_button)).perform(click()); + navigateToMSBBCard(); assertEquals(0, mHistogramTestRule.getHistogramValueCount( @@ -396,10 +421,7 @@ launchPrivacyGuide(); mSettingsActivityTestRule.getFragment().setPrivacyGuideMetricsDelegateForTesting( mPrivacyGuideMetricsDelegateMock); - - // Welcome page -> MSBB page - onView(withText(R.string.privacy_guide_welcome_title)).check(matches(isDisplayed())); - onView(withText(R.string.privacy_guide_start_button)).perform(click()); + navigateToMSBBCard(); // MSBB page ViewUtils.waitForView(withText(R.string.url_keyed_anonymized_data_title)); @@ -417,10 +439,7 @@ launchPrivacyGuide(); mSettingsActivityTestRule.getFragment().setPrivacyGuideMetricsDelegateForTesting( mPrivacyGuideMetricsDelegateMock); - - // Welcome page -> MSBB page - onView(withText(R.string.privacy_guide_welcome_title)).check(matches(isDisplayed())); - onView(withText(R.string.privacy_guide_start_button)).perform(click()); + navigateToMSBBCard(); // MSBB page -> Sync page ViewUtils.waitForView(withText(R.string.url_keyed_anonymized_data_title)); @@ -734,6 +753,125 @@ @Test @SmallTest @Feature({"PrivacyGuide"}) + public void testCookiesCard_nextClickCookiesUserAction() { + launchPrivacyGuide(); + mActionTester = new UserActionTester(); + navigateToCookiesCard(); + + // Cookies page -> Complete page + ViewUtils.waitForView(withText(R.string.privacy_guide_cookies_intro)); + onView(withText(R.string.privacy_guide_finish_button)).perform(click()); + + assertTrue(mActionTester.getActions().contains("Settings.PrivacyGuide.NextClickCookies")); + } + + @Test + @SmallTest + @Feature({"PrivacyGuide"}) + public void testCookiesCard_block3PIncognitoTo3PIncognitoSettingsStatesHistogram() { + launchPrivacyGuide(); + setCookieControlsMode(CookieControlsMode.INCOGNITO_ONLY); + navigateToCookiesCard(); + + assertEquals(0, + mHistogramTestRule.getHistogramValueCount(SETTINGS_STATES_HISTOGRAM, + PrivacyGuideSettingsStates.BLOCK3P_INCOGNITO_TO3P_INCOGNITO)); + + // Cookies page -> Complete page + ViewUtils.waitForView(withText(R.string.privacy_guide_cookies_intro)); + onView(withText(R.string.privacy_guide_finish_button)).perform(click()); + + assertEquals(1, + mHistogramTestRule.getHistogramValueCount(SETTINGS_STATES_HISTOGRAM, + PrivacyGuideSettingsStates.BLOCK3P_INCOGNITO_TO3P_INCOGNITO)); + } + + @Test + @SmallTest + @Feature({"PrivacyGuide"}) + public void testCookiesCard_block3PIncognitoTo3PSettingsStatesHistogram() { + launchPrivacyGuide(); + setCookieControlsMode(CookieControlsMode.INCOGNITO_ONLY); + navigateToCookiesCard(); + + assertEquals(0, + mHistogramTestRule.getHistogramValueCount(SETTINGS_STATES_HISTOGRAM, + PrivacyGuideSettingsStates.BLOCK3P_INCOGNITO_TO3P)); + + // Cookies page -> Complete page | with click on block third party radio button + ViewUtils.waitForView(withText(R.string.privacy_guide_cookies_intro)); + onView(withId(R.id.block_third_party)).perform(click()); + onView(withText(R.string.privacy_guide_finish_button)).perform(click()); + + assertEquals(1, + mHistogramTestRule.getHistogramValueCount(SETTINGS_STATES_HISTOGRAM, + PrivacyGuideSettingsStates.BLOCK3P_INCOGNITO_TO3P)); + } + + @Test + @SmallTest + @Feature({"PrivacyGuide"}) + public void testCookiesCard_block3PTo3PIncognitoSettingsStatesHistogram() { + launchPrivacyGuide(); + setCookieControlsMode(CookieControlsMode.BLOCK_THIRD_PARTY); + navigateToCookiesCard(); + + assertEquals(0, + mHistogramTestRule.getHistogramValueCount(SETTINGS_STATES_HISTOGRAM, + PrivacyGuideSettingsStates.BLOCK3P_TO3P_INCOGNITO)); + + // Cookies page -> Complete page | with click on block incognito radio button + ViewUtils.waitForView(withText(R.string.privacy_guide_cookies_intro)); + onView(withId(R.id.block_third_party_incognito)).perform(click()); + onView(withText(R.string.privacy_guide_finish_button)).perform(click()); + + assertEquals(1, + mHistogramTestRule.getHistogramValueCount(SETTINGS_STATES_HISTOGRAM, + PrivacyGuideSettingsStates.BLOCK3P_TO3P_INCOGNITO)); + } + + @Test + @SmallTest + @Feature({"PrivacyGuide"}) + public void testCookiesCard_block3PTo3PSettingsStatesHistogram() { + launchPrivacyGuide(); + setCookieControlsMode(CookieControlsMode.BLOCK_THIRD_PARTY); + navigateToCookiesCard(); + + assertEquals(0, + mHistogramTestRule.getHistogramValueCount( + SETTINGS_STATES_HISTOGRAM, PrivacyGuideSettingsStates.BLOCK3P_TO3P)); + + // Cookies page -> Complete page + ViewUtils.waitForView(withText(R.string.privacy_guide_cookies_intro)); + onView(withText(R.string.privacy_guide_finish_button)).perform(click()); + + assertEquals(1, + mHistogramTestRule.getHistogramValueCount( + SETTINGS_STATES_HISTOGRAM, PrivacyGuideSettingsStates.BLOCK3P_TO3P)); + } + + @Test + @SmallTest + @Feature({"PrivacyGuide"}) + public void testCookiesCard_nextButtonInitialCookiesStateIsSet() { + launchPrivacyGuide(); + mSettingsActivityTestRule.getFragment().setPrivacyGuideMetricsDelegateForTesting( + mPrivacyGuideMetricsDelegateMock); + navigateToCookiesCard(); + + // Cookies page + ViewUtils.waitForView(withText(R.string.privacy_guide_cookies_intro)); + + verify(mPrivacyGuideMetricsDelegateMock) + .setInitialStateForCard(PrivacyGuideFragment.FragmentType.COOKIES); + + mSettingsActivityTestRule.getFragment().setPrivacyGuideMetricsDelegateForTesting(null); + } + + @Test + @SmallTest + @Feature({"PrivacyGuide"}) public void testSyncCard_backClickHistorySyncUserAction() { launchPrivacyGuide(); mActionTester = new UserActionTester(); @@ -748,4 +886,39 @@ assertTrue( mActionTester.getActions().contains("Settings.PrivacyGuide.BackClickHistorySync")); } + + @Test + @SmallTest + @Feature({"PrivacyGuide"}) + public void testSafeBrowsingCard_backClickSafeBrowsingUserAction() { + launchPrivacyGuide(); + mActionTester = new UserActionTester(); + navigateToSafeBrowsingCard(); + + // Sync page <- SB page + ViewUtils.waitForView(withText(R.string.privacy_guide_safe_browsing_intro)); + onView(withText(R.string.back)).perform(click()); + + // Verify that the user action is emitted when the back button is clicked on the safe + // browsing card + assertTrue( + mActionTester.getActions().contains("Settings.PrivacyGuide.BackClickSafeBrowsing")); + } + + @Test + @SmallTest + @Feature({"PrivacyGuide"}) + public void testCookiesCard_backClickCookiesUserAction() { + launchPrivacyGuide(); + mActionTester = new UserActionTester(); + navigateToCookiesCard(); + + // SB page <- Cookies page + ViewUtils.waitForView(withText(R.string.privacy_guide_cookies_intro)); + onView(withText(R.string.back)).perform(click()); + + // Verify that the user action is emitted when the back button is clicked on the Cookies + // card + assertTrue(mActionTester.getActions().contains("Settings.PrivacyGuide.BackClickCookies")); + } }
diff --git a/chrome/browser/privacy_guide/android/junit/src/org/chromium/chrome/browser/privacy_guide/CookiesFragmentTest.java b/chrome/browser/privacy_guide/android/junit/src/org/chromium/chrome/browser/privacy_guide/CookiesFragmentTest.java index ff7b66d..afb766f 100644 --- a/chrome/browser/privacy_guide/android/junit/src/org/chromium/chrome/browser/privacy_guide/CookiesFragmentTest.java +++ b/chrome/browser/privacy_guide/android/junit/src/org/chromium/chrome/browser/privacy_guide/CookiesFragmentTest.java
@@ -76,6 +76,7 @@ if (mScenario != null) { mScenario.close(); } + mActionTester.tearDown(); } public void initFragmentWithCookiesState(
diff --git a/chrome/browser/privacy_guide/android/junit/src/org/chromium/chrome/browser/privacy_guide/MSBBFragmentTest.java b/chrome/browser/privacy_guide/android/junit/src/org/chromium/chrome/browser/privacy_guide/MSBBFragmentTest.java index a017fe4..4efa72f 100644 --- a/chrome/browser/privacy_guide/android/junit/src/org/chromium/chrome/browser/privacy_guide/MSBBFragmentTest.java +++ b/chrome/browser/privacy_guide/android/junit/src/org/chromium/chrome/browser/privacy_guide/MSBBFragmentTest.java
@@ -12,6 +12,7 @@ import androidx.appcompat.widget.SwitchCompat; import androidx.fragment.app.testing.FragmentScenario; +import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -53,6 +54,11 @@ mocker.mock(UnifiedConsentServiceBridgeJni.TEST_HOOKS, mNativeMock); } + @After + public void tearDown() { + mActionTester.tearDown(); + } + private void initFragmentWithMSBBState(boolean isMSBBOn) { Mockito.when(mNativeMock.isUrlKeyedAnonymizedDataCollectionEnabled(mProfile)) .thenReturn(isMSBBOn);
diff --git a/chrome/browser/privacy_guide/android/junit/src/org/chromium/chrome/browser/privacy_guide/PrivacyGuideMetricsDelegateTest.java b/chrome/browser/privacy_guide/android/junit/src/org/chromium/chrome/browser/privacy_guide/PrivacyGuideMetricsDelegateTest.java index 5c95842..a3765f2 100644 --- a/chrome/browser/privacy_guide/android/junit/src/org/chromium/chrome/browser/privacy_guide/PrivacyGuideMetricsDelegateTest.java +++ b/chrome/browser/privacy_guide/android/junit/src/org/chromium/chrome/browser/privacy_guide/PrivacyGuideMetricsDelegateTest.java
@@ -10,6 +10,7 @@ import androidx.test.filters.SmallTest; +import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -30,7 +31,11 @@ import org.chromium.chrome.browser.signin.services.UnifiedConsentServiceBridgeJni; import org.chromium.chrome.browser.sync.SyncService; import org.chromium.components.content_settings.CookieControlsMode; +import org.chromium.components.content_settings.PrefNames; +import org.chromium.components.prefs.PrefService; import org.chromium.components.sync.UserSelectableType; +import org.chromium.components.user_prefs.UserPrefs; +import org.chromium.components.user_prefs.UserPrefsJni; import java.util.Set; @@ -56,6 +61,10 @@ private Set<Integer> mSyncTypes; @Mock private SafeBrowsingBridge.Natives mSafeBrowsingNativeMock; + @Mock + private PrefService mPrefServiceMock; + @Mock + private UserPrefs.Natives mUserPrefsNativesMock; private final PrivacyGuideMetricsDelegate mPrivacyGuideMetricsDelegate = new PrivacyGuideMetricsDelegate(); @@ -68,6 +77,13 @@ SyncService.overrideForTests(mSyncService); when(mSyncService.getSelectedTypes()).thenReturn(mSyncTypes); mocker.mock(SafeBrowsingBridgeJni.TEST_HOOKS, mSafeBrowsingNativeMock); + mocker.mock(UserPrefsJni.TEST_HOOKS, mUserPrefsNativesMock); + when(mUserPrefsNativesMock.get(mProfile)).thenReturn(mPrefServiceMock); + } + + @After + public void tearDown() { + mActionTester.tearDown(); } private void mockMSBBState(boolean initialMSBBState, boolean finalMSBBState) { @@ -86,6 +102,12 @@ .thenReturn(initialHistorySyncState, finalHistorySyncState); } + private void mockCookieControlsMode( + @CookieControlsMode int initialCookiesMode, @CookieControlsMode int finalCookiesMode) { + when(mPrefServiceMock.getInteger(PrefNames.COOKIE_CONTROLS_MODE)) + .thenReturn(initialCookiesMode, finalCookiesMode); + } + private void triggerMetricsOnNext(@PrivacyGuideFragment.FragmentType int fragmentType) { mPrivacyGuideMetricsDelegate.setInitialStateForCard(fragmentType); mPrivacyGuideMetricsDelegate.recordMetricsOnNextForCard(fragmentType); @@ -280,6 +302,71 @@ @Test @SmallTest + public void testCookies_block3PIncognitoTo3PIncognitoSettingsStatesHistogram() { + mockCookieControlsMode( + CookieControlsMode.INCOGNITO_ONLY, CookieControlsMode.INCOGNITO_ONLY); + assertEquals(0, + RecordHistogram.getHistogramValueCountForTesting(SETTINGS_STATES_HISTOGRAM, + PrivacyGuideSettingsStates.BLOCK3P_INCOGNITO_TO3P_INCOGNITO)); + triggerMetricsOnNext(PrivacyGuideFragment.FragmentType.COOKIES); + assertEquals(1, + RecordHistogram.getHistogramValueCountForTesting(SETTINGS_STATES_HISTOGRAM, + PrivacyGuideSettingsStates.BLOCK3P_INCOGNITO_TO3P_INCOGNITO)); + } + + @Test + @SmallTest + public void testCookies_block3PIncognitoTo3PSettingsStatesHistogram() { + mockCookieControlsMode( + CookieControlsMode.INCOGNITO_ONLY, CookieControlsMode.BLOCK_THIRD_PARTY); + assertEquals(0, + RecordHistogram.getHistogramValueCountForTesting(SETTINGS_STATES_HISTOGRAM, + PrivacyGuideSettingsStates.BLOCK3P_INCOGNITO_TO3P)); + triggerMetricsOnNext(PrivacyGuideFragment.FragmentType.COOKIES); + assertEquals(1, + RecordHistogram.getHistogramValueCountForTesting(SETTINGS_STATES_HISTOGRAM, + PrivacyGuideSettingsStates.BLOCK3P_INCOGNITO_TO3P)); + } + + @Test + @SmallTest + public void testCookies_block3PTo3PIncognitoSettingsStatesHistogram() { + mockCookieControlsMode( + CookieControlsMode.BLOCK_THIRD_PARTY, CookieControlsMode.INCOGNITO_ONLY); + assertEquals(0, + RecordHistogram.getHistogramValueCountForTesting(SETTINGS_STATES_HISTOGRAM, + PrivacyGuideSettingsStates.BLOCK3P_TO3P_INCOGNITO)); + triggerMetricsOnNext(PrivacyGuideFragment.FragmentType.COOKIES); + assertEquals(1, + RecordHistogram.getHistogramValueCountForTesting(SETTINGS_STATES_HISTOGRAM, + PrivacyGuideSettingsStates.BLOCK3P_TO3P_INCOGNITO)); + } + + @Test + @SmallTest + public void testCookies_block3PTo3PSettingsStatesHistogram() { + mockCookieControlsMode( + CookieControlsMode.BLOCK_THIRD_PARTY, CookieControlsMode.BLOCK_THIRD_PARTY); + assertEquals(0, + RecordHistogram.getHistogramValueCountForTesting( + SETTINGS_STATES_HISTOGRAM, PrivacyGuideSettingsStates.BLOCK3P_TO3P)); + triggerMetricsOnNext(PrivacyGuideFragment.FragmentType.COOKIES); + assertEquals(1, + RecordHistogram.getHistogramValueCountForTesting( + SETTINGS_STATES_HISTOGRAM, PrivacyGuideSettingsStates.BLOCK3P_TO3P)); + } + + @Test + @SmallTest + public void testCookies_nextClickUserAction() { + mockCookieControlsMode( + CookieControlsMode.INCOGNITO_ONLY, CookieControlsMode.INCOGNITO_ONLY); + triggerMetricsOnNext(PrivacyGuideFragment.FragmentType.COOKIES); + assertTrue(mActionTester.getActions().contains("Settings.PrivacyGuide.NextClickCookies")); + } + + @Test + @SmallTest public void testMSBB_changeMSBBOnUserAction() { PrivacyGuideMetricsDelegate.recordMetricsOnMSBBChange(true); assertTrue(mActionTester.getActions().contains("Settings.PrivacyGuide.ChangeMSBBOn")); @@ -365,4 +452,21 @@ assertTrue( mActionTester.getActions().contains("Settings.PrivacyGuide.BackClickHistorySync")); } + + @Test + @SmallTest + public void testSafeBrowsing_backClickUserAction() { + PrivacyGuideMetricsDelegate.recordMetricsOnBackForCard( + PrivacyGuideFragment.FragmentType.SAFE_BROWSING); + assertTrue( + mActionTester.getActions().contains("Settings.PrivacyGuide.BackClickSafeBrowsing")); + } + + @Test + @SmallTest + public void testCookies_backClickUserAction() { + PrivacyGuideMetricsDelegate.recordMetricsOnBackForCard( + PrivacyGuideFragment.FragmentType.COOKIES); + assertTrue(mActionTester.getActions().contains("Settings.PrivacyGuide.BackClickCookies")); + } }
diff --git a/chrome/browser/privacy_guide/android/junit/src/org/chromium/chrome/browser/privacy_guide/SafeBrowsingFragmentTest.java b/chrome/browser/privacy_guide/android/junit/src/org/chromium/chrome/browser/privacy_guide/SafeBrowsingFragmentTest.java index b5e6087..93eb2c4 100644 --- a/chrome/browser/privacy_guide/android/junit/src/org/chromium/chrome/browser/privacy_guide/SafeBrowsingFragmentTest.java +++ b/chrome/browser/privacy_guide/android/junit/src/org/chromium/chrome/browser/privacy_guide/SafeBrowsingFragmentTest.java
@@ -62,6 +62,7 @@ if (mScenario != null) { mScenario.close(); } + mActionTester.tearDown(); } private void initFragmentWithSBState(@SafeBrowsingState int state) {
diff --git a/chrome/browser/privacy_guide/android/junit/src/org/chromium/chrome/browser/privacy_guide/SyncFragmentTest.java b/chrome/browser/privacy_guide/android/junit/src/org/chromium/chrome/browser/privacy_guide/SyncFragmentTest.java index a4d7bbd92..928aa19 100644 --- a/chrome/browser/privacy_guide/android/junit/src/org/chromium/chrome/browser/privacy_guide/SyncFragmentTest.java +++ b/chrome/browser/privacy_guide/android/junit/src/org/chromium/chrome/browser/privacy_guide/SyncFragmentTest.java
@@ -69,6 +69,7 @@ if (mScenario != null) { mScenario.close(); } + mActionTester.tearDown(); } private void initFragmentWithSyncState(boolean syncAll, boolean historySync) {
diff --git a/chrome/browser/privacy_guide/privacy_guide_settings_states.h b/chrome/browser/privacy_guide/privacy_guide.h similarity index 84% rename from chrome/browser/privacy_guide/privacy_guide_settings_states.h rename to chrome/browser/privacy_guide/privacy_guide.h index 98ff067..b6965eb 100644 --- a/chrome/browser/privacy_guide/privacy_guide_settings_states.h +++ b/chrome/browser/privacy_guide/privacy_guide.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_PRIVACY_GUIDE_PRIVACY_GUIDE_SETTINGS_STATES_H_ -#define CHROME_BROWSER_PRIVACY_GUIDE_PRIVACY_GUIDE_SETTINGS_STATES_H_ +#ifndef CHROME_BROWSER_PRIVACY_GUIDE_PRIVACY_GUIDE_H_ +#define CHROME_BROWSER_PRIVACY_GUIDE_PRIVACY_GUIDE_H_ namespace privacy_guide_metrics { @@ -38,4 +38,4 @@ } // namespace privacy_guide_metrics -#endif // CHROME_BROWSER_PRIVACY_GUIDE_PRIVACY_GUIDE_SETTINGS_STATES_H_ +#endif // CHROME_BROWSER_PRIVACY_GUIDE_PRIVACY_GUIDE_H_
diff --git a/chrome/browser/privacy_sandbox/android/java/res/layout/privacy_sandbox_consent_eea_v4.xml b/chrome/browser/privacy_sandbox/android/java/res/layout/privacy_sandbox_consent_eea_v4.xml index 9abef73..4be5754 100644 --- a/chrome/browser/privacy_sandbox/android/java/res/layout/privacy_sandbox_consent_eea_v4.xml +++ b/chrome/browser/privacy_sandbox/android/java/res/layout/privacy_sandbox_consent_eea_v4.xml
@@ -44,7 +44,7 @@ app:maxWidthPortrait="@dimen/privacy_sandbox_dialog_max_width"> <org.chromium.components.browser_ui.widget.FadingEdgeScrollView - android:id="@+id/privacy_sandbox_consent_eea_scroll_view" + android:id="@+id/privacy_sandbox_dialog_scroll_view" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1">
diff --git a/chrome/browser/privacy_sandbox/android/java/res/layout/privacy_sandbox_notice_eea_v4.xml b/chrome/browser/privacy_sandbox/android/java/res/layout/privacy_sandbox_notice_eea_v4.xml index 3a1344c2..996e3c6 100644 --- a/chrome/browser/privacy_sandbox/android/java/res/layout/privacy_sandbox_notice_eea_v4.xml +++ b/chrome/browser/privacy_sandbox/android/java/res/layout/privacy_sandbox_notice_eea_v4.xml
@@ -22,18 +22,19 @@ app:maxWidthPortrait="@dimen/privacy_sandbox_dialog_max_width"> <org.chromium.components.browser_ui.widget.FadingEdgeScrollView - android:id="@+id/privacy_sandbox_notice_eea_scroll_view" + android:id="@+id/privacy_sandbox_dialog_scroll_view" android:layout_width="match_parent" android:layout_height="0dp" - android:layout_weight="1"> + android:fillViewport="true" + android:layout_weight="1" + android:visibility="invisible"> <LinearLayout android:id="@+id/privacy_sandbox_notice_eea_content" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginHorizontal="@dimen/list_item_default_margin" - android:layout_gravity="center_vertical" - android:gravity="center_horizontal" + android:gravity="center_vertical" android:orientation="vertical"> <ImageView @@ -41,6 +42,7 @@ android:layout_marginBottom="@dimen/privacy_sandbox_dialog_illustration_margin_bottom" android:layout_height="wrap_content" android:layout_width="wrap_content" + android:layout_gravity="center" app:srcCompat="@drawable/privacy_sandbox_notice_eea_illustration_v4" android:importantForAccessibility="no" /> @@ -50,7 +52,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/privacy_sandbox_m1_notice_eea_title" - android:gravity="center" + android:layout_gravity="center" style="@style/TextAppearance.Headline.Primary" /> <TextView @@ -79,7 +81,6 @@ android:id="@+id/dropdown_element" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_gravity="center" android:orientation="horizontal"> <TextView @@ -108,6 +109,7 @@ android:layout_marginBottom="@dimen/privacy_sandbox_notice_margin_bottom" android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_gravity="center_vertical" android:text="@string/privacy_sandbox_m1_notice_eea_description_2" style="@style/TextAppearance.TextMedium.Secondary" /> @@ -115,12 +117,28 @@ </org.chromium.components.browser_ui.widget.FadingEdgeScrollView> + <org.chromium.ui.widget.ButtonCompat + android:id="@+id/more_button" + android:focusable="true" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/privacy_sandbox_m1_dialog_more_button" + android:visibility="gone" + android:layout_marginHorizontal="24dp" + android:layout_marginVertical="@dimen/promo_dialog_padding" + style="@style/FilledButton.Flat" /> + <LinearLayout + android:id="@+id/action_buttons" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:weightSum="2" - android:layout_marginHorizontal="24dp"> + android:layout_marginTop="@dimen/promo_dialog_padding" + android:layout_marginBottom="@dimen/promo_dialog_padding" + android:layout_marginHorizontal="24dp" + android:visibility="invisible" > + <org.chromium.ui.widget.ButtonCompat android:id="@+id/ack_button"
diff --git a/chrome/browser/privacy_sandbox/android/java/res/layout/privacy_sandbox_notice_row_v4.xml b/chrome/browser/privacy_sandbox/android/java/res/layout/privacy_sandbox_notice_row_v4.xml index fcce606..3a7fc24 100644 --- a/chrome/browser/privacy_sandbox/android/java/res/layout/privacy_sandbox_notice_row_v4.xml +++ b/chrome/browser/privacy_sandbox/android/java/res/layout/privacy_sandbox_notice_row_v4.xml
@@ -22,16 +22,17 @@ app:maxWidthPortrait="@dimen/privacy_sandbox_dialog_max_width"> <org.chromium.components.browser_ui.widget.FadingEdgeScrollView - android:id="@+id/privacy_sandbox_notice_row_scroll_view" + android:id="@+id/privacy_sandbox_dialog_scroll_view" android:layout_width="match_parent" android:layout_height="0dp" + android:fillViewport="true" android:layout_weight="1"> <LinearLayout android:id="@+id/privacy_sandbox_notice_row_content" android:layout_width="match_parent" android:layout_height="match_parent" - android:gravity="center_horizontal" + android:gravity="center_vertical" android:orientation="vertical"> <ImageView @@ -40,6 +41,7 @@ android:layout_marginHorizontal="@dimen/list_item_default_margin" android:layout_height="@dimen/privacy_sandbox_chrome_logo_height" android:layout_width="@dimen/privacy_sandbox_chrome_logo_width" + android:layout_gravity="center" app:srcCompat="@drawable/chrome_sync_logo" android:importantForAccessibility="no" /> @@ -49,6 +51,7 @@ android:layout_marginHorizontal="@dimen/list_item_default_margin" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_gravity="center" android:text="@string/privacy_sandbox_m1_notice_row_title" android:gravity="center" style="@style/TextAppearance.Headline.Primary" /> @@ -128,13 +131,26 @@ </org.chromium.components.browser_ui.widget.FadingEdgeScrollView> + <org.chromium.ui.widget.ButtonCompat + android:id="@+id/more_button" + android:focusable="true" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/privacy_sandbox_m1_dialog_more_button" + android:visibility="gone" + android:layout_marginHorizontal="24dp" + android:layout_marginVertical="@dimen/promo_dialog_padding" + style="@style/FilledButton.Flat" /> + <LinearLayout + android:id="@+id/action_buttons" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:weightSum="2" - android:layout_marginTop="@dimen/privacy_sandbox_dialog_buttons_margin_top" - android:layout_marginHorizontal="24dp"> + android:layout_marginVertical="@dimen/promo_dialog_padding" + android:layout_marginHorizontal="24dp" + android:visibility="invisible"> <org.chromium.ui.widget.ButtonCompat android:id="@+id/ack_button"
diff --git a/chrome/browser/privacy_sandbox/android/java/res/values/dimens.xml b/chrome/browser/privacy_sandbox/android/java/res/values/dimens.xml index 7fee6f6c..edd30b0 100644 --- a/chrome/browser/privacy_sandbox/android/java/res/values/dimens.xml +++ b/chrome/browser/privacy_sandbox/android/java/res/values/dimens.xml
@@ -17,7 +17,6 @@ <dimen name="privacy_sandbox_notice_dialog_dropdown_button_height">24dp</dimen> <dimen name="privacy_sandbox_notice_margin_bottom">32dp</dimen> <dimen name="privacy_sandbox_dialog_title_margin">20dp</dimen> - <dimen name="privacy_sandbox_dialog_buttons_margin_top">24dp</dimen> <dimen name="privacy_sandbox_chrome_logo_width">60dp</dimen> <dimen name="privacy_sandbox_chrome_logo_height">61dp</dimen> <dimen name="privacy_sandbox_interests_illustration_height">185dp</dimen>
diff --git a/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/v4/PrivacySandboxDialogConsentEEAV4.java b/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/v4/PrivacySandboxDialogConsentEEAV4.java index 008f43e..28f9e58 100644 --- a/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/v4/PrivacySandboxDialogConsentEEAV4.java +++ b/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/v4/PrivacySandboxDialogConsentEEAV4.java
@@ -60,7 +60,7 @@ noButton.setOnClickListener(this); mMoreButton = mContentView.findViewById(R.id.more_button); mActionButtons = mContentView.findViewById(R.id.action_buttons); - mScrollView = mContentView.findViewById(R.id.privacy_sandbox_consent_eea_scroll_view); + mScrollView = mContentView.findViewById(R.id.privacy_sandbox_dialog_scroll_view); mProgressBarContainer = mContentView.findViewById(R.id.progress_bar_container); mConsentViewContainer = mContentView.findViewById(R.id.privacy_sandbox_consent_eea_view);
diff --git a/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/v4/PrivacySandboxDialogNoticeEEAV4.java b/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/v4/PrivacySandboxDialogNoticeEEAV4.java index fb4d5bfe8..1365cc7a 100644 --- a/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/v4/PrivacySandboxDialogNoticeEEAV4.java +++ b/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/v4/PrivacySandboxDialogNoticeEEAV4.java
@@ -6,10 +6,9 @@ import android.app.Dialog; import android.content.Context; -import android.view.Gravity; +import android.content.DialogInterface; import android.view.LayoutInflater; import android.view.View; -import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.ScrollView; @@ -27,10 +26,16 @@ /** * Dialog in the form of a notice shown for the Privacy Sandbox. */ -public class PrivacySandboxDialogNoticeEEAV4 extends Dialog implements View.OnClickListener { +public class PrivacySandboxDialogNoticeEEAV4 + extends Dialog implements View.OnClickListener, DialogInterface.OnShowListener { private SettingsLauncher mSettingsLauncher; private View mContentView; + private ButtonCompat mMoreButton; + private LinearLayout mActionButtons; + private ScrollView mScrollView; + private LinearLayout mDropdownElement; + private final CheckableImageView mExpandArrowView; private LinearLayout mDropdownContainer; @@ -48,15 +53,30 @@ ButtonCompat settingsButton = mContentView.findViewById(R.id.settings_button); settingsButton.setOnClickListener(this); + mMoreButton = mContentView.findViewById(R.id.more_button); + mActionButtons = mContentView.findViewById(R.id.action_buttons); + mScrollView = mContentView.findViewById(R.id.privacy_sandbox_dialog_scroll_view); + // Controls for the expanding section. - LinearLayout dropdownElement = mContentView.findViewById(R.id.dropdown_element); - dropdownElement.setOnClickListener(this); + mDropdownElement = mContentView.findViewById(R.id.dropdown_element); + mDropdownElement.setOnClickListener(this); mDropdownContainer = mContentView.findViewById(R.id.dropdown_container); mExpandArrowView = mContentView.findViewById(R.id.expand_arrow); mExpandArrowView.setImageDrawable(PrivacySandboxDialogUtils.createExpandDrawable(context)); mExpandArrowView.setChecked(isDropdownExpanded()); setBulletsDescription(); + + mMoreButton.setOnClickListener(this); + setOnShowListener(this); + + mScrollView.getViewTreeObserver().addOnScrollChangedListener(() -> { + if (!mScrollView.canScrollVertically(ScrollView.FOCUS_DOWN)) { + mMoreButton.setVisibility(View.GONE); + mActionButtons.setVisibility(View.VISIBLE); + mScrollView.post(() -> { mScrollView.pageScroll(ScrollView.FOCUS_DOWN); }); + } + }); } @Override @@ -77,18 +97,19 @@ dismiss(); PrivacySandboxSettingsBaseFragment.launchPrivacySandboxSettings( getContext(), mSettingsLauncher, PrivacySandboxReferrer.PRIVACY_SANDBOX_NOTICE); + } else if (id == R.id.more_button) { + if (mScrollView.canScrollVertically(ScrollView.FOCUS_DOWN)) { + mScrollView.post(() -> { mScrollView.pageScroll(ScrollView.FOCUS_DOWN); }); + } else { + mMoreButton.setVisibility(View.GONE); + mActionButtons.setVisibility(View.VISIBLE); + mScrollView.post(() -> { mScrollView.pageScroll(ScrollView.FOCUS_DOWN); }); + } } else if (id == R.id.dropdown_element) { - var content = mContentView.findViewById(R.id.privacy_sandbox_notice_eea_content); - ScrollView scrollView = - mContentView.findViewById(R.id.privacy_sandbox_notice_eea_scroll_view); - if (isDropdownExpanded()) { PrivacySandboxBridge.promptActionOccurred(PromptAction.NOTICE_MORE_INFO_CLOSED); mDropdownContainer.setVisibility(View.GONE); mDropdownContainer.removeAllViews(); - - ((FrameLayout.LayoutParams) content.getLayoutParams()).gravity = - Gravity.CENTER_VERTICAL; } else { mDropdownContainer.setVisibility(View.VISIBLE); PrivacySandboxBridge.promptActionOccurred(PromptAction.NOTICE_MORE_INFO_OPENED); @@ -109,12 +130,7 @@ R.id.privacy_sandbox_m1_notice_eea_learn_more_bullet_three, R.string.privacy_sandbox_m1_notice_eea_learn_more_bullet_3); - ((FrameLayout.LayoutParams) content.getLayoutParams()).gravity = Gravity.TOP; - - scrollView.post(() -> { - scrollView.setSmoothScrollingEnabled(true); - scrollView.fullScroll(ScrollView.FOCUS_DOWN); - }); + mScrollView.post(() -> { mScrollView.scrollTo(0, mDropdownElement.getTop()); }); } mExpandArrowView.setChecked(isDropdownExpanded()); @@ -127,6 +143,18 @@ } } + @Override + public void onShow(DialogInterface dialogInterface) { + if (mScrollView.canScrollVertically(ScrollView.FOCUS_DOWN)) { + mMoreButton.setVisibility(View.VISIBLE); + mActionButtons.setVisibility(View.GONE); + } else { + mMoreButton.setVisibility(View.GONE); + mActionButtons.setVisibility(View.VISIBLE); + } + mScrollView.setVisibility(View.VISIBLE); + } + private void setBulletsDescription() { PrivacySandboxDialogUtils.setBulletText(getContext(), mContentView, R.id.privacy_sandbox_m1_notice_eea_bullet_one,
diff --git a/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/v4/PrivacySandboxDialogNoticeROWV4.java b/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/v4/PrivacySandboxDialogNoticeROWV4.java index acae9d1..f2fcde1 100644 --- a/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/v4/PrivacySandboxDialogNoticeROWV4.java +++ b/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/v4/PrivacySandboxDialogNoticeROWV4.java
@@ -6,6 +6,7 @@ import android.app.Dialog; import android.content.Context; +import android.content.DialogInterface; import android.view.LayoutInflater; import android.view.View; import android.widget.LinearLayout; @@ -25,13 +26,17 @@ /** * Dialog in the form of a notice shown for the Privacy Sandbox. */ -public class PrivacySandboxDialogNoticeROWV4 extends Dialog implements View.OnClickListener { +public class PrivacySandboxDialogNoticeROWV4 + extends Dialog implements View.OnClickListener, DialogInterface.OnShowListener { private SettingsLauncher mSettingsLauncher; private View mContentView; private final CheckableImageView mExpandArrowView; private LinearLayout mDropdownContainer; private LinearLayout mDropdownElement; + private ButtonCompat mMoreButton; + private LinearLayout mActionButtons; + private ScrollView mScrollView; public PrivacySandboxDialogNoticeROWV4( Context context, @NonNull SettingsLauncher settingsLauncher) { @@ -46,6 +51,10 @@ ButtonCompat settingsButton = mContentView.findViewById(R.id.settings_button); settingsButton.setOnClickListener(this); + mMoreButton = mContentView.findViewById(R.id.more_button); + mActionButtons = mContentView.findViewById(R.id.action_buttons); + mScrollView = mContentView.findViewById(R.id.privacy_sandbox_dialog_scroll_view); + // Controls for the expanding section. mDropdownElement = mContentView.findViewById(R.id.dropdown_element); mDropdownElement.setOnClickListener(this); @@ -53,6 +62,17 @@ mExpandArrowView = mContentView.findViewById(R.id.expand_arrow); mExpandArrowView.setImageDrawable(PrivacySandboxDialogUtils.createExpandDrawable(context)); mExpandArrowView.setChecked(isDropdownExpanded()); + + mMoreButton.setOnClickListener(this); + setOnShowListener(this); + + mScrollView.getViewTreeObserver().addOnScrollChangedListener(() -> { + if (!mScrollView.canScrollVertically(ScrollView.FOCUS_DOWN)) { + mMoreButton.setVisibility(View.GONE); + mActionButtons.setVisibility(View.VISIBLE); + mScrollView.post(() -> { mScrollView.pageScroll(ScrollView.FOCUS_DOWN); }); + } + }); } @Override @@ -73,16 +93,19 @@ dismiss(); PrivacySandboxSettingsBaseFragment.launchPrivacySandboxSettings( getContext(), mSettingsLauncher, PrivacySandboxReferrer.PRIVACY_SANDBOX_NOTICE); + } else if (id == R.id.more_button) { + if (mScrollView.canScrollVertically(ScrollView.FOCUS_DOWN)) { + mScrollView.post(() -> { mScrollView.pageScroll(ScrollView.FOCUS_DOWN); }); + } else { + mMoreButton.setVisibility(View.GONE); + mActionButtons.setVisibility(View.VISIBLE); + mScrollView.post(() -> { mScrollView.pageScroll(ScrollView.FOCUS_DOWN); }); + } } else if (id == R.id.dropdown_element) { - var content = mContentView.findViewById(R.id.privacy_sandbox_notice_row_content); - ScrollView scrollView = - mContentView.findViewById(R.id.privacy_sandbox_notice_row_scroll_view); - if (isDropdownExpanded()) { PrivacySandboxBridge.promptActionOccurred(PromptAction.NOTICE_MORE_INFO_CLOSED); mDropdownContainer.setVisibility(View.GONE); mDropdownContainer.removeAllViews(); - scrollView.post(() -> { scrollView.fullScroll(ScrollView.FOCUS_UP); }); } else { mDropdownContainer.setVisibility(View.VISIBLE); PrivacySandboxBridge.promptActionOccurred(PromptAction.NOTICE_MORE_INFO_OPENED); @@ -97,7 +120,7 @@ R.id.privacy_sandbox_m1_notice_row_learn_more_bullet_two, R.string.privacy_sandbox_m1_notice_row_learn_more_bullet_2); - scrollView.post(() -> { scrollView.scrollTo(0, mDropdownElement.getTop()); }); + mScrollView.post(() -> { mScrollView.scrollTo(0, mDropdownElement.getTop()); }); } mExpandArrowView.setChecked(isDropdownExpanded()); @@ -110,6 +133,18 @@ } } + @Override + public void onShow(DialogInterface dialogInterface) { + if (mScrollView.canScrollVertically(ScrollView.FOCUS_DOWN)) { + mMoreButton.setVisibility(View.VISIBLE); + mActionButtons.setVisibility(View.GONE); + } else { + mMoreButton.setVisibility(View.GONE); + mActionButtons.setVisibility(View.VISIBLE); + } + mScrollView.setVisibility(View.VISIBLE); + } + private boolean isDropdownExpanded() { return mDropdownContainer != null && mDropdownContainer.getVisibility() == View.VISIBLE; }
diff --git a/chrome/browser/privacy_sandbox/android/javatests/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxDialogTest.java b/chrome/browser/privacy_sandbox/android/javatests/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxDialogTest.java index c523826..d2539f9a1 100644 --- a/chrome/browser/privacy_sandbox/android/javatests/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxDialogTest.java +++ b/chrome/browser/privacy_sandbox/android/javatests/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxDialogTest.java
@@ -9,7 +9,6 @@ import static androidx.test.espresso.action.ViewActions.scrollTo; import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist; import static androidx.test.espresso.assertion.ViewAssertions.matches; -import static androidx.test.espresso.contrib.RecyclerViewActions.scrollToPosition; import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; import static androidx.test.espresso.matcher.ViewMatchers.withId; import static androidx.test.espresso.matcher.ViewMatchers.withText; @@ -25,8 +24,8 @@ import android.content.Context; import android.os.Bundle; import android.view.View; -import android.widget.ScrollView; +import androidx.test.espresso.PerformException; import androidx.test.filters.SmallTest; import org.hamcrest.Matcher; @@ -161,19 +160,23 @@ } private void tryClickOn(Matcher<View> viewMatcher) { - ScrollView scrollView = getScrollView(); - while (scrollView.canScrollVertically(ScrollView.FOCUS_DOWN)) { - clickMoreButton(); + try { + onView(viewMatcher).perform(click()); + } catch (PerformException p) { + clickMoreButtonUntilFullyScrolledDown(); + onViewWaiting(viewMatcher).perform(click()); } - onViewWaiting(viewMatcher).perform(click()); } - private ScrollView getScrollView() { - ScrollView[] scrollViews = {null}; - onView(withId(R.id.privacy_sandbox_consent_eea_scroll_view)).check(((v, e) -> { - scrollViews[0] = ((ScrollView) v); - })); - return scrollViews[0]; + private void clickMoreButtonUntilFullyScrolledDown() { + boolean fullyScrolledDown = false; + while (!fullyScrolledDown) { + try { + onView(withId(R.id.more_button)).perform(click()); + } catch (PerformException e) { + fullyScrolledDown = true; + } + } } private void clickMoreButton() { @@ -465,7 +468,7 @@ assertEquals("Last dialog action", PromptAction.NOTICE_SHOWN, (int) mFakePrivacySandboxBridge.getLastPromptAction()); // Ack the notice and verify it worked correctly. - onView(withId(R.id.ack_button)).perform(click()); + tryClickOn(withId(R.id.ack_button)); assertEquals("Last dialog action", PromptAction.NOTICE_ACKNOWLEDGE, (int) mFakePrivacySandboxBridge.getLastPromptAction()); onView(withId(R.id.privacy_sandbox_notice_title)).check(doesNotExist()); @@ -485,7 +488,7 @@ onView(withId(R.id.privacy_sandbox_notice_eea_dropdown)).check(doesNotExist()); // Click on the settings button and verify it worked correctly. - onView(withId(R.id.settings_button)).perform(click()); + tryClickOn(withId(R.id.settings_button)); onView(withId(R.id.privacy_sandbox_notice_title)).check(doesNotExist()); assertEquals("Last dialog action", PromptAction.NOTICE_OPEN_SETTINGS, (int) mFakePrivacySandboxBridge.getLastPromptAction()); @@ -505,7 +508,7 @@ assertEquals("Last dialog action", PromptAction.NOTICE_SHOWN, (int) mFakePrivacySandboxBridge.getLastPromptAction()); // Ack the notice and verify it worked correctly. - onView(withId(R.id.ack_button)).perform(click()); + tryClickOn(withId(R.id.ack_button)); assertEquals("Last dialog action", PromptAction.NOTICE_ACKNOWLEDGE, (int) mFakePrivacySandboxBridge.getLastPromptAction()); onView(withId(R.id.privacy_sandbox_notice_title)).check(doesNotExist()); @@ -517,7 +520,6 @@ assertEquals("Last dialog action", PromptAction.NOTICE_MORE_INFO_OPENED, (int) mFakePrivacySandboxBridge.getLastPromptAction()); - scrollToPosition(0); onView(withId(R.id.privacy_sandbox_notice_row_dropdown)).check(matches(isDisplayed())); onView(withId(R.id.dropdown_element)).perform(scrollTo(), click()); assertEquals("Last dialog action", PromptAction.NOTICE_MORE_INFO_CLOSED, @@ -525,7 +527,7 @@ onView(withId(R.id.privacy_sandbox_notice_row_dropdown)).check(doesNotExist()); // Click on the settings button and verify it worked correctly. - onView(withId(R.id.settings_button)).perform(click()); + tryClickOn(withId(R.id.settings_button)); assertEquals("Last dialog action", PromptAction.NOTICE_OPEN_SETTINGS, (int) mFakePrivacySandboxBridge.getLastPromptAction()); onView(withId(R.id.privacy_sandbox_notice_title)).check(doesNotExist());
diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_service_unittest.cc b/chrome/browser/privacy_sandbox/privacy_sandbox_service_unittest.cc index a7f0c966..d57ba57 100644 --- a/chrome/browser/privacy_sandbox/privacy_sandbox_service_unittest.cc +++ b/chrome/browser/privacy_sandbox/privacy_sandbox_service_unittest.cc
@@ -2415,9 +2415,8 @@ // this profile. mock_first_party_sets_handler().SetContextConfig( net::FirstPartySetsContextConfig( - net::FirstPartySetsContextConfig::OverrideSets{ - {net::SchemefulSite(GURL("https://associate2.test")), - net::FirstPartySetEntryOverride()}})); + {{net::SchemefulSite(GURL("https://associate2.test")), + net::FirstPartySetEntryOverride()}})); first_party_sets_policy_service()->InitForTesting(); @@ -2540,11 +2539,10 @@ // this profile. mock_first_party_sets_handler().SetContextConfig( net::FirstPartySetsContextConfig( - net::FirstPartySetsContextConfig::OverrideSets{ - {net::SchemefulSite(GURL("https://google.de")), - net::FirstPartySetEntryOverride(net::FirstPartySetEntry( - net::SchemefulSite(GURL("https://new-primary.test")), - net::SiteType::kAssociated, 0))}})); + {{net::SchemefulSite(GURL("https://google.de")), + net::FirstPartySetEntryOverride(net::FirstPartySetEntry( + net::SchemefulSite(GURL("https://new-primary.test")), + net::SiteType::kAssociated, 0))}})); first_party_sets_policy_service()->InitForTesting();
diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_settings_factory.cc b/chrome/browser/privacy_sandbox/privacy_sandbox_settings_factory.cc index 955c0864..0f396c4 100644 --- a/chrome/browser/privacy_sandbox/privacy_sandbox_settings_factory.cc +++ b/chrome/browser/privacy_sandbox/privacy_sandbox_settings_factory.cc
@@ -26,7 +26,16 @@ PrivacySandboxSettingsFactory::PrivacySandboxSettingsFactory() : ProfileKeyedServiceFactory( "PrivacySandboxSettings", - ProfileSelections::BuildForRegularAndIncognito()) {} + ProfileSelections::BuildForRegularAndIncognito()) { + // This service implicitly DependsOn the CookieSettingsFactory, + // HostContentSettingsMapFactory, and through the delegate, the + // IdentityManagerFactory but for reasons, cannot explicitly depend on them + // here. Instead, a scoped_refptr is held on CookieSettings, which itself + // holds a scoped_refptr for the HostContentSettingsMap (and so this service + // holds a raw ptr). + // TODO (crbug.com/1400663): Unwind these "reasons" and improve this so that + // the services can be explicitly depended on. +} KeyedService* PrivacySandboxSettingsFactory::BuildServiceInstanceFor( content::BrowserContext* context) const {
diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc index 21b91ca8..abfeb52 100644 --- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc +++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
@@ -10,6 +10,7 @@ #include "build/build_config.h" #include "build/chromeos_buildflags.h" #include "chrome/browser/accessibility/page_colors_factory.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" #include "chrome/browser/autocomplete/autocomplete_classifier_factory.h" #include "chrome/browser/autocomplete/in_memory_url_index_factory.h" #include "chrome/browser/autocomplete/shortcuts_backend_factory.h" @@ -105,7 +106,6 @@ #include "chrome/browser/sync/user_event_service_factory.h" #include "chrome/browser/themes/theme_service_factory.h" #include "chrome/browser/translate/translate_ranker_factory.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" #include "chrome/browser/ui/find_bar/find_bar_state_factory.h" #include "chrome/browser/ui/prefs/prefs_tab_helper.h" #include "chrome/browser/ui/read_later/reading_list_model_factory.h"
diff --git a/chrome/browser/resources/app_home/app_list.ts b/chrome/browser/resources/app_home/app_list.ts index 3c29b79..1e27ec8 100644 --- a/chrome/browser/resources/app_home/app_list.ts +++ b/chrome/browser/resources/app_home/app_list.ts
@@ -50,6 +50,8 @@ private apps_: AppInfo[]; private mojoEventTarget_: PageCallbackRouter; private listenerIds_: number[]; + // The app context menu that's currently click opened by user. + private selectedActionMenuModel_: ActionMenuModel|null = null; constructor() { super(); @@ -114,7 +116,11 @@ } private onUninstallItemClick_() { - this.$.menu.close(); + if (this.selectedActionMenuModel_?.data.id) { + BrowserProxy.getInstance().handler.uninstallApp( + this.selectedActionMenuModel_?.data.id); + } + this.closeMenu_(); } private onAppSettingsItemClick_() { @@ -122,11 +128,17 @@ } private onOpenMenu_(event: OpenMenuEvent) { + this.selectedActionMenuModel_ = event.detail; this.$.menu.showAtPosition({ top: event.detail.event.clientY, left: event.detail.event.clientX, }); } + + private closeMenu_() { + this.selectedActionMenuModel_ = null; + this.$.menu.close(); + } } declare global {
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_it.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_it.xtb index 151f684..bd8ad6f8a 100644 --- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_it.xtb +++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_it.xtb
@@ -359,7 +359,7 @@ <translation id="3270069636408109001">Nessuna tabella successiva</translation> <translation id="3273791280096244679">Salva etichetta</translation> <translation id="3283583562490372694">deselezionato</translation> -<translation id="3286372614333682499">verticale</translation> +<translation id="3286372614333682499">ritratto</translation> <translation id="3286390186030710347">Dispositivo di scorrimento</translation> <translation id="3300348286427369683">Supporto per RTF. Adesso ChromeVox supporta campi in formato Rich text (RTF), inclusi i comandi di spostamento, lo spostamento del puntatore nel display braille, la selezione e altro ancora.</translation> <translation id="3300733168898541351">annulla</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_te.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_te.xtb index a1bb292..4a43e33 100644 --- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_te.xtb +++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_te.xtb
@@ -46,7 +46,7 @@ <translation id="1213216066620407844">ChromeVox - Chromeకు వాయిస్ను ఇస్తోంది</translation> <translation id="1225969361094801578">ముదురు మేఘవర్ణ బూడిద రంగు</translation> <translation id="122928249241119550">మునుపటి వాక్యానికి వెళ్లండి</translation> -<translation id="1230503547248836149">ఎంపికను ప్రారంభించు</translation> +<translation id="1230503547248836149">ఎంపికను ప్రారంభించండి</translation> <translation id="1236794971743289975">ఎండ్నోట్</translation> <translation id="1237797094773582699">అదే విధంగా, మునుపటి విభాగానికి వెళ్లడానికి కుడి నుండి ఎడమ వైపునకు నాలుగు వేళ్లతో స్వైప్ చేయవచ్చు. దీన్ని ఇప్పుడే ట్రై చేయండి!</translation> <translation id="1237866625126425153">rdgrp</translation> @@ -368,7 +368,7 @@ <translation id="3312997241656799641">తర్వాత సందర్శించిన లింక్</translation> <translation id="3313245066383501820">ChromeVox మాడిఫైయర్ కీ</translation> <translation id="3317212938060708859">స్లయిడర్</translation> -<translation id="3321460131042519426">పదాల సర్దుబాటును ప్రారంభించు</translation> +<translation id="3321460131042519426">పదాల సర్దుబాటును ప్రారంభించండి</translation> <translation id="3322936298410871309">మునుపటి స్థాయి 1 శీర్షిక</translation> <translation id="3323447499041942178">టెక్స్ట్ బాక్స్</translation> <translation id="3324983252691184275">ముదురు ఎరుపు రంగు</translation> @@ -500,14 +500,14 @@ <translation id="4221012616705981690">మునుపటి లిస్ట్ లేదు</translation> <translation id="4225355998815256469">ఫారమ్ నియంత్రణలు</translation> <translation id="4230834257931120629">లేత మేఘవర్ణపు బూడిద రంగు</translation> -<translation id="4231102694147661229">డెవలపర్ ఎంపికలను ప్రారంభించు</translation> +<translation id="4231102694147661229">డెవలపర్ ఎంపికలను ప్రారంభించండి</translation> <translation id="423428485095722850">టోగుల్ చేయడం కోసం శోధన+స్పేస్ నొక్కండి</translation> <translation id="4243624244759495699"><ph name="LOCALE" />, <ph name="GRADE" />వ గ్రేడ్</translation> <translation id="4246217262268234757">ఉక్కు నీలి రంగు</translation> <translation id="4253168017788158739">గమనిక</translation> <translation id="4254798249533888099">ట్రీ</translation> <translation id="4271220233568730077">తరువాత గణితం</translation> -<translation id="4275397969489577657">ఈవెంట్ ప్రసార లాగింగ్ను ప్రారంభించు</translation> +<translation id="4275397969489577657">ఈవెంట్ ప్రసార లాగింగ్ను ప్రారంభించండి</translation> <translation id="4278486392851938658">మునుపు సందర్శించిన లింక్ లేదు</translation> <translation id="4281245629646759298">లేత పసుపు రంగు</translation> <translation id="4289540628985791613">స్థూలదృష్టి</translation> @@ -660,7 +660,7 @@ <translation id="5402791055281059602">నమూనా హెచ్చరిక</translation> <translation id="5407530583102765689">{COUNT,plural, =1{సెమీకోలన్ గుర్తు}other{# సెమీకోలన్ గుర్తులు}}</translation> <translation id="5420259671171615858">మెనూలలో వెతకండి</translation> -<translation id="5435274640623994081">ఇయర్కాన్ లాగింగ్ను ప్రారంభించు</translation> +<translation id="5435274640623994081">ఇయర్కాన్ లాగింగ్ను ప్రారంభించండి</translation> <translation id="5436105723448703439">{COUNT,plural, =1{న్యూన గుర్తు}other{# న్యూన గుర్తులు}}</translation> <translation id="5444587279251314700">(యాక్టివ్గా ఉంది)</translation> <translation id="5451268436205074266">చుక్కలు <ph name="DOT" /></translation> @@ -1115,7 +1115,7 @@ <translation id="8640369214276455272">తెల్లని పొగ రంగు</translation> <translation id="8651481478098336970">వాల్యూమ్ను మ్యూట్ చేస్తుంది</translation> <translation id="8653646212587894517">లింక్ల లిస్ట్ను చూపండి</translation> -<translation id="8656888282555543604">బ్రెయిలీ లాగింగ్ను ప్రారంభించు</translation> +<translation id="8656888282555543604">బ్రెయిలీ లాగింగ్ను ప్రారంభించండి</translation> <translation id="8659501358298941449">డ్రాప్-డౌన్ లిస్ట్లు</translation> <translation id="8666733765751421568"><ph name="TYPE" /> ముగింపు</translation> <translation id="867187640362843212">శీర్షిక 5</translation>
diff --git a/chrome/browser/resources/password_manager/BUILD.gn b/chrome/browser/resources/password_manager/BUILD.gn index 06d1c21..3fdcdb8d 100644 --- a/chrome/browser/resources/password_manager/BUILD.gn +++ b/chrome/browser/resources/password_manager/BUILD.gn
@@ -39,6 +39,7 @@ "prefs/pref_mixin.ts", "prefs/prefs_browser_proxy.ts", "router.ts", + "show_password_mixin.ts", ] # Files that are passed as input to css_to_wrapper().
diff --git a/chrome/browser/resources/password_manager/password_details_card.html b/chrome/browser/resources/password_manager/password_details_card.html index 212c35f..1a7aeadd 100644 --- a/chrome/browser/resources/password_manager/password_details_card.html +++ b/chrome/browser/resources/password_manager/password_details_card.html
@@ -81,12 +81,14 @@ <div class="column-container"> <cr-input id="passwordValue" label="[[getPasswordLabel_(password)]]" value="[[getPasswordValue_(password)]]" class="input-field" - type="[[getPasswordType_(password, isPasswordVisible_)]]" + type="[[getPasswordType_(password, isPasswordVisible)]]" readonly> <div id="passwordButtons" slot="inline-suffix" hidden="[[isFederated_(password)]]"> - <cr-icon-button id="showPasswordButton" class="icon-visibility" - title="$i18n{showPassword}"> + <cr-icon-button id="showPasswordButton" + class$="[[getShowHideButtonIconClass(isPasswordVisible)]]" + title="[[getShowHideButtonLabel(isPasswordVisible)]]" + on-click="onShowHidePasswordButtonClick"> </cr-icon-button> <cr-icon-button id="copyPasswordButton" class="icon-copy-content" title="$i18n{copyPassword}" on-click="onCopyPasswordClick_">
diff --git a/chrome/browser/resources/password_manager/password_details_card.ts b/chrome/browser/resources/password_manager/password_details_card.ts index df167f9..214595d 100644 --- a/chrome/browser/resources/password_manager/password_details_card.ts +++ b/chrome/browser/resources/password_manager/password_details_card.ts
@@ -18,6 +18,7 @@ import {getTemplate} from './password_details_card.html.js'; import {PasswordManagerImpl} from './password_manager_proxy.js'; +import {ShowPasswordMixin} from './show_password_mixin.js'; export interface PasswordDetailsCardElement { $: { @@ -32,9 +33,10 @@ }; } +const PasswordDetailsCardElementBase = + ShowPasswordMixin(I18nMixin(PolymerElement)); -export class PasswordDetailsCardElement extends I18nMixin -(PolymerElement) { +export class PasswordDetailsCardElement extends PasswordDetailsCardElementBase { static get is() { return 'password-details-card'; } @@ -46,18 +48,11 @@ static get properties() { return { password: Object, - - isPasswordVisible_: { - type: Boolean, - value: false, - }, - toastMessage_: String, }; } password: chrome.passwordsPrivate.PasswordUiEntry; - private isPasswordVisible_: boolean; private toastMessage_: string; private isFederated_(): boolean { @@ -75,7 +70,7 @@ } private getPasswordType_(): string { - return this.isFederated_() || this.isPasswordVisible_ ? 'text' : 'password'; + return this.isFederated_() ? 'text' : this.getPasswordInputType(); } private onCopyPasswordClick_() {
diff --git a/chrome/browser/resources/password_manager/passwords_section.html b/chrome/browser/resources/password_manager/passwords_section.html index 47adccc..43673ff 100644 --- a/chrome/browser/resources/password_manager/passwords_section.html +++ b/chrome/browser/resources/password_manager/passwords_section.html
@@ -22,12 +22,12 @@ <div class="cr-secondary-text" inner-h-t-m-l="[[i18nAdvanced('passwordsSectionDescription')]]"> </div> -<div class="card" id="passwords" hidden$="[[!groups_.length]]"> - <iron-list id="passwordsList" preserve-focus - items="[[groups_]]" risk-selection> - <template> - <password-list-item item="[[item]]" first="[[!index]]"> - </password-list-item> - </template> - </iron-list> +<div class="card" id="passwords" + hidden$="[[hideGroupsList_(groups_, searchTerm_)]]"> + <template id="passwordsList" is="dom-repeat" + items="[[groups_]]" filter="[[groupFilter_(searchTerm_)]]" + initial-count="50"> + <password-list-item item="[[item]]" first="[[!index]]"> + </password-list-item> + </template> </div>
diff --git a/chrome/browser/resources/password_manager/passwords_section.ts b/chrome/browser/resources/password_manager/passwords_section.ts index 88415318..5fc6dcff 100644 --- a/chrome/browser/resources/password_manager/passwords_section.ts +++ b/chrome/browser/resources/password_manager/passwords_section.ts
@@ -15,6 +15,7 @@ import {PasswordManagerImpl} from './password_manager_proxy.js'; import {getTemplate} from './passwords_section.html.js'; +import {Route, RouteObserverMixin, UrlParam} from './router.js'; export interface PasswordsSectionElement { $: { @@ -22,7 +23,8 @@ }; } -const PasswordsSectionElementBase = I18nMixin(PolymerElement); +const PasswordsSectionElementBase = + RouteObserverMixin(I18nMixin(PolymerElement)); export class PasswordsSectionElement extends PasswordsSectionElementBase { static get is() { @@ -42,10 +44,17 @@ type: Array, value: () => [], }, + + /** Filter on the saved passwords and exceptions. */ + searchTerm_: { + type: String, + value: '', + }, }; } private groups_: chrome.passwordsPrivate.CredentialGroup[] = []; + private searchTerm_: string; private setSavedPasswordsListener_: ( (entries: chrome.passwordsPrivate.PasswordUiEntry[]) => void)|null = null; @@ -73,6 +82,38 @@ this.setSavedPasswordsListener_); this.setSavedPasswordsListener_ = null; } + + override currentRouteChanged(newRoute: Route, _oldRoute: Route): void { + const searchTerm = newRoute.queryParameters.get(UrlParam.SEARCH_TERM) || ''; + if (searchTerm !== this.searchTerm_) { + this.searchTerm_ = searchTerm; + } + } + + private hideGroupsList_(): boolean { + return this.groups_.filter(this.groupFilter_()).length === 0; + } + + private groupFilter_(): + ((entry: chrome.passwordsPrivate.CredentialGroup) => boolean) { + const term = this.searchTerm_.trim().toLowerCase(); + // Group is matching if: + // * group name includes term, + // * any credential's username within a group includes a term, + // * any credential within a group includes a term in a domain. + return group => group.name.toLowerCase().includes(term) || + group.entries.some( + credential => credential.username.toLowerCase().includes(term) || + credential.affiliatedDomains?.some( + domain => domain.name.toLowerCase().includes(term))); + } + + private async announceSearchResults_() { + if (!this.searchTerm_.trim()) { + return; + } + // TODO(crbug.com/1400289): Announce search result. + } } declare global {
diff --git a/chrome/browser/resources/password_manager/router.ts b/chrome/browser/resources/password_manager/router.ts index 8969009..0211bfa 100644 --- a/chrome/browser/resources/password_manager/router.ts +++ b/chrome/browser/resources/password_manager/router.ts
@@ -118,15 +118,15 @@ * Notifies routeObservers_. */ updateRouterParams(params: URLSearchParams) { - let url: string = this.currentRoute_.page; + let path: string = this.currentRoute_.path(); const queryString = params.toString(); if (queryString) { - url += '?' + queryString; + path += '?' + queryString; } - window.history.replaceState(window.history.state, '', url); + window.history.replaceState(window.history.state, '', path); const oldRoute = this.currentRoute_; - this.currentRoute_ = new Route(oldRoute.page, params); + this.currentRoute_ = new Route(oldRoute.page, params, oldRoute.details); this.notifyObservers_(oldRoute); }
diff --git a/chrome/browser/resources/password_manager/show_password_mixin.ts b/chrome/browser/resources/password_manager/show_password_mixin.ts new file mode 100644 index 0000000..bcfb7348 --- /dev/null +++ b/chrome/browser/resources/password_manager/show_password_mixin.ts
@@ -0,0 +1,76 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import {loadTimeData} from 'chrome://resources/js/load_time_data.js'; +import {dedupingMixin, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; + +type Constructor<T> = new (...args: any[]) => T; + +/** + * This mixin bundles functionality required to show a password to the user. + */ +export const ShowPasswordMixin = dedupingMixin( + <T extends Constructor<PolymerElement>>(superClass: T): T& + Constructor<ShowPasswordMixinInterface> => { + class ShowPasswordMixin extends superClass { + static get properties() { + return { + isPasswordVisible: { + type: Boolean, + value: false, + }, + }; + } + isPasswordVisible: boolean; + + getPasswordInputType() { + return this.isPasswordVisible ? 'text' : 'password'; + } + + getShowHideButtonLabel() { + return this.isPasswordVisible ? + loadTimeData.getString('hidePassword') : + loadTimeData.getString('showPassword'); + } + + getShowHideButtonIconClass() { + return this.isPasswordVisible ? 'icon-visibility-off' : + 'icon-visibility'; + } + + /** + * Handler for showing/hiding the passwords. This method should be + * attached to on-click event of show/hide password button. + */ + onShowHidePasswordButtonClick() { + this.isPasswordVisible = !this.isPasswordVisible; + } + } + + return ShowPasswordMixin; + }); + + +export interface ShowPasswordMixinInterface { + isPasswordVisible: boolean; + + /** + * Gets the password input's type. Should be 'text' when password is visible + * or when there's federated text otherwise 'password'. + */ + getPasswordInputType(): string; + + /** + * Gets the a11y label for the show/hide button. + */ + getShowHideButtonLabel(): string; + + /** + * Get the right icon to display when hiding/showing a password. + */ + getShowHideButtonIconClass(): string; + + /** Handler for clicking the show/hide button. */ + onShowHidePasswordButtonClick(): void; +}
diff --git a/chrome/browser/resources/password_manager/toolbar.ts b/chrome/browser/resources/password_manager/toolbar.ts index b665a1365..556f047 100644 --- a/chrome/browser/resources/password_manager/toolbar.ts +++ b/chrome/browser/resources/password_manager/toolbar.ts
@@ -10,7 +10,7 @@ import {CrToolbarSearchFieldElement} from 'chrome://resources/cr_elements/cr_toolbar/cr_toolbar_search_field.js'; import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; -import {Route, RouteObserverMixin, Router, UrlParam} from './router.js'; +import {Page, Route, RouteObserverMixin, Router, UrlParam} from './router.js'; import {getTemplate} from './toolbar.html.js'; export interface PasswordManagerToolbarElement { @@ -49,6 +49,8 @@ const newParams = Router.getInstance().currentRoute.queryParameters; if (event.detail) { newParams.set(UrlParam.SEARCH_TERM, event.detail); + // Switch to passwords page, since search is supported only on passwords. + Router.getInstance().navigateTo(Page.PASSWORDS); } else { newParams.delete(UrlParam.SEARCH_TERM); }
diff --git a/chrome/browser/resources/settings/chromeos/internet_page/BUILD.gn b/chrome/browser/resources/settings/chromeos/internet_page/BUILD.gn index 2f14b974c..6ed68ea 100644 --- a/chrome/browser/resources/settings/chromeos/internet_page/BUILD.gn +++ b/chrome/browser/resources/settings/chromeos/internet_page/BUILD.gn
@@ -172,7 +172,6 @@ "//ash/webui/common/resources:web_ui_listener_behavior", "//ash/webui/common/resources/cellular_setup:cellular_types", "//ash/webui/common/resources/cellular_setup:esim_manager_utils", - "//ash/webui/common/resources/network:apn_detail_dialog", "//ash/webui/common/resources/network:cellular_utils", "//ash/webui/common/resources/network:mojo_interface_provider", "//ash/webui/common/resources/network:network_listener_behavior", @@ -184,6 +183,7 @@ "//chrome/browser/resources/settings/chromeos:route_observer_behavior", "//chrome/browser/resources/settings/chromeos:router", "//third_party/polymer/v3_0/components-chromium/iron-icon:iron-icon", + "//third_party/polymer/v3_0/components-chromium/paper-tooltip:paper-tooltip", "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled", ] externs_list = [
diff --git a/chrome/browser/resources/settings/chromeos/internet_page/apn_subpage.html b/chrome/browser/resources/settings/chromeos/internet_page/apn_subpage.html index 56cbcbc..98239dcd 100644 --- a/chrome/browser/resources/settings/chromeos/internet_page/apn_subpage.html +++ b/chrome/browser/resources/settings/chromeos/internet_page/apn_subpage.html
@@ -1,6 +1,7 @@ <style include="settings-shared"> </style> -<apn-list +<apn-list + id="apnList" managed-cellular-properties="[[managedProperties_.typeProperties.cellular]]" guid="[[guid_]]"> </apn-list> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/internet_page/apn_subpage.js b/chrome/browser/resources/settings/chromeos/internet_page/apn_subpage.js index 3e69c58..12e1ad2 100644 --- a/chrome/browser/resources/settings/chromeos/internet_page/apn_subpage.js +++ b/chrome/browser/resources/settings/chromeos/internet_page/apn_subpage.js
@@ -10,18 +10,18 @@ import './internet_shared_css.js'; import 'chrome://resources/ash/common/network/apn_list.js'; +import {assert} from 'chrome://resources/ash/common/assert.js'; import {processDeviceState} from 'chrome://resources/ash/common/network/cellular_utils.js'; import {MojoInterfaceProviderImpl} from 'chrome://resources/ash/common/network/mojo_interface_provider.js'; import {NetworkListenerBehavior, NetworkListenerBehaviorInterface} from 'chrome://resources/ash/common/network/network_listener_behavior.js'; import {OncMojo} from 'chrome://resources/ash/common/network/onc_mojo.js'; -import {assert} from 'chrome://resources/ash/common/assert.js'; -import {CrosNetworkConfigRemote, ManagedCellularProperties, ManagedProperties, NetworkStateProperties} from 'chrome://resources/mojo/chromeos/services/network_config/public/mojom/cros_network_config.mojom-webui.js'; +import {CrosNetworkConfigRemote, ManagedCellularProperties, ManagedProperties, MAX_NUM_CUSTOM_APNS, NetworkStateProperties} from 'chrome://resources/mojo/chromeos/services/network_config/public/mojom/cros_network_config.mojom-webui.js'; import {NetworkType} from 'chrome://resources/mojo/chromeos/services/network_config/public/mojom/network_types.mojom-webui.js'; import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; -import {Route, Router} from '../router.js'; import {routes} from '../os_route.js'; import {RouteObserverBehavior, RouteObserverBehaviorInterface} from '../route_observer_behavior.js'; +import {Route, Router} from '../router.js'; /** * @constructor @@ -37,7 +37,7 @@ PolymerElement); /** @polymer */ -class ApnSubpageElement extends ApnSubpageElementBase { +export class ApnSubpageElement extends ApnSubpageElementBase { static get is() { return 'apn-subpage'; } @@ -61,6 +61,13 @@ type: Object, value: null, }, + + isNumCustomApnsLimitReached: { + type: Boolean, + notify: true, + value: false, + computed: 'computeIsNumCustomApnsLimitReached_(managedProperties_)', + }, }; } @@ -132,6 +139,16 @@ this.getDeviceState_(); } + /** + * Helper method that can be used by parent elements to open the APN + * creation dialog. + */ + openApnDetailDialogInCreateMode() { + assert(!!this.guid_); + assert(!!this.$.apnList); + this.$.apnList.openApnDetailDialogInCreateMode(); + } + /** @private */ getNetworkDetails_() { assert(this.guid_); @@ -202,6 +219,17 @@ return !!managedProperties && managedProperties.type === NetworkType.kCellular; } + + /** + * @return {boolean} + * @private + */ + computeIsNumCustomApnsLimitReached_() { + return this.isCellular_(this.managedProperties_) && + !!this.managedProperties_.typeProperties.cellular.customApnList && + this.managedProperties_.typeProperties.cellular.customApnList.length >= + MAX_NUM_CUSTOM_APNS; + } } customElements.define(ApnSubpageElement.is, ApnSubpageElement); \ No newline at end of file
diff --git a/chrome/browser/resources/settings/chromeos/internet_page/internet_page.html b/chrome/browser/resources/settings/chromeos/internet_page/internet_page.html index 13d7cde..e0ec706 100644 --- a/chrome/browser/resources/settings/chromeos/internet_page/internet_page.html +++ b/chrome/browser/resources/settings/chromeos/internet_page/internet_page.html
@@ -11,16 +11,27 @@ margin-inline-end: 16px; } - cr-button iron-icon[icon='cr:add'] { + #createCustomApnButton iron-icon { --iron-icon-fill-color: var(--text-color); margin-inline-end: 8px; } + + #createCustomApnButton[disabled] iron-icon { + --iron-icon-fill-color: var(--disabled); + } + + #apnTooltip { + --paper-tooltip-background: var(--cros-tooltip-background-color); + --paper-tooltip-text-color: var(--cros-tooltip-label-color); + text-align: center; + } + #hotspotSubtitle { color: var(--cr-secondary-text-color); font-size: inherit; + left: 56px; padding-inline-end: 210px; position: relative; - left: 56px; top: -22px; } </style> @@ -123,14 +134,25 @@ <template is="dom-if" route-path="/apn" restamp> <os-settings-subpage page-title="$i18n{internetApnPageTitle}"> <div slot="subpage-title-extra"> - <cr-button id="createCustomApnButton" - on-click="onCreateCustomApnClicked_" - class="cancel-button"> - <iron-icon icon="cr:add"></iron-icon> - $i18n{apnPageAddNewApn} - </cr-button> + <div id="apnButtonTitle"> + <cr-button id="createCustomApnButton" + on-click="onCreateCustomApnClicked_" + class="cancel-button" + disabled="[[isCreateCustomApnButtonDisabled_]]"> + <iron-icon icon="cr:add"></iron-icon> + $i18n{apnPageAddNewApn} + </cr-button> + </div> + <!-- TODO(b/162365553) Add a11y support--> + <template is="dom-if" if="[[isCreateCustomApnButtonDisabled_]]" restamp> + <paper-tooltip id="apnTooltip" for="apnButtonTitle"> + $i18n{customApnLimitReached} + </paper-tooltip> + </template> </div> - <apn-subpage on-show-apn-detail-dialog="onShowApnDetailDialog_"> + <apn-subpage id="apnSubpage" + is-num-custom-apns-limit-reached="{{isCreateCustomApnButtonDisabled_}}" + > </apn-subpage> </os-settings-subpage> </template> @@ -170,11 +192,6 @@ </internet-config> </template> -<template is="dom-if" if="[[shouldShowApnDetailDialog_]]" restamp> - <apn-detail-dialog id="apnDetailDialog" on-close="onApnDetailDialogClose_"> - </apn-detail-dialog> -</template> - <template is="dom-if" if="[[showCellularSetupDialog_]]" restamp> <os-settings-cellular-setup-dialog id="cellularSetupDialog" on-close="onCloseCellularSetupDialog_"
diff --git a/chrome/browser/resources/settings/chromeos/internet_page/internet_page.js b/chrome/browser/resources/settings/chromeos/internet_page/internet_page.js index f91089c8..f3616b2d 100644 --- a/chrome/browser/resources/settings/chromeos/internet_page/internet_page.js +++ b/chrome/browser/resources/settings/chromeos/internet_page/internet_page.js
@@ -10,13 +10,13 @@ import 'chrome://resources/ash/common/cellular_setup/cellular_setup_icons.html.js'; import 'chrome://resources/ash/common/network/sim_lock_dialogs.js'; -import 'chrome://resources/ash/common/network/apn_detail_dialog.js'; import 'chrome://resources/cr_elements/cr_expand_button/cr_expand_button.js'; import 'chrome://resources/cr_elements/cr_icon_button/cr_icon_button.js'; import 'chrome://resources/cr_elements/cr_toast/cr_toast.js'; import 'chrome://resources/cr_elements/icons.html.js'; import 'chrome://resources/cr_elements/policy/cr_policy_indicator.js'; import 'chrome://resources/polymer/v3_0/iron-icon/iron-icon.js'; +import 'chrome://resources/polymer/v3_0/paper-tooltip/paper-tooltip.js'; import '../../prefs/prefs.js'; import '../os_settings_page/os_settings_animated_pages.js'; import '../os_settings_page/os_settings_subpage.js'; @@ -31,18 +31,17 @@ import './esim_rename_dialog.js'; import './esim_remove_profile_dialog.js'; +import {assert, assertNotReached} from 'chrome://resources/ash/common/assert.js'; import {CellularSetupPageName} from 'chrome://resources/ash/common/cellular_setup/cellular_types.js'; import {getNumESimProfiles} from 'chrome://resources/ash/common/cellular_setup/esim_manager_utils.js'; import {I18nBehavior, I18nBehaviorInterface} from 'chrome://resources/ash/common/i18n_behavior.js'; import {loadTimeData} from 'chrome://resources/ash/common/load_time_data.m.js'; -import {ApnDetailDialog} from 'chrome://resources/ash/common/network/apn_detail_dialog.js'; -import {ApnDetailDialogMode, ApnEventData, hasActiveCellularNetwork, isConnectedToNonCellularNetwork} from 'chrome://resources/ash/common/network/cellular_utils.js'; +import {hasActiveCellularNetwork, isConnectedToNonCellularNetwork} from 'chrome://resources/ash/common/network/cellular_utils.js'; import {MojoInterfaceProvider, MojoInterfaceProviderImpl} from 'chrome://resources/ash/common/network/mojo_interface_provider.js'; import {NetworkListenerBehavior, NetworkListenerBehaviorInterface} from 'chrome://resources/ash/common/network/network_listener_behavior.js'; import {OncMojo} from 'chrome://resources/ash/common/network/onc_mojo.js'; import {WebUIListenerBehavior, WebUIListenerBehaviorInterface} from 'chrome://resources/ash/common/web_ui_listener_behavior.js'; -import {assert, assertNotReached} from 'chrome://resources/ash/common/assert.js'; -import {ApnProperties, CrosNetworkConfigRemote, GlobalPolicy, NetworkStateProperties, StartConnectResult, VpnProvider} from 'chrome://resources/mojo/chromeos/services/network_config/public/mojom/cros_network_config.mojom-webui.js'; +import {CrosNetworkConfigRemote, GlobalPolicy, NetworkStateProperties, StartConnectResult, VpnProvider} from 'chrome://resources/mojo/chromeos/services/network_config/public/mojom/cros_network_config.mojom-webui.js'; import {DeviceStateType, NetworkType} from 'chrome://resources/mojo/chromeos/services/network_config/public/mojom/network_types.mojom-webui.js'; import {afterNextRender, html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; @@ -53,6 +52,7 @@ import {RouteObserverBehavior, RouteObserverBehaviorInterface} from '../route_observer_behavior.js'; import {Route, Router} from '../router.js'; +import {ApnSubpageElement} from './apn_subpage'; import {InternetConfigElement} from './internet_config.js'; import {InternetPageBrowserProxy, InternetPageBrowserProxyImpl} from './internet_page_browser_proxy.js'; @@ -196,12 +196,6 @@ }, }, - /** @private */ - shouldShowApnDetailDialog_: { - type: Boolean, - value: false, - }, - /** * Page name, if defined, indicating that the next deviceStates update * should call attemptShowCellularSetupDialog_(). @@ -310,6 +304,13 @@ loadTimeData.getBoolean('isHotspotEnabled'); }, }, + + /** + * Whether the 'Add custom APN' button is disabled. + */ + isCreateCustomApnButtonDisabled_: { + type: Boolean, + }, }; } @@ -698,34 +699,6 @@ } /** - * @param {!string} guid - * @param {!ApnDetailDialogMode} mode - * @param {ApnProperties|undefined} apn - * @private - */ - showApnDetailDialog_(guid, mode, apn) { - if (!this.isApnRevampEnabled_) { - return; - } - this.shouldShowApnDetailDialog_ = true; - // Added to ensure dom-if stamping. - afterNextRender(this, () => { - const apnDetailDialog = /** @type {ApnDetailDialog} */ ( - this.shadowRoot.querySelector('#apnDetailDialog')); - assert(!!apnDetailDialog); - - apnDetailDialog.guid = guid; - apnDetailDialog.mode = mode; - apnDetailDialog.apnProperties = apn; - }); - } - - /** @private */ - onApnDetailDialogClose_() { - this.shouldShowApnDetailDialog_ = false; - } - - /** * @param {!CustomEvent<!OncMojo.NetworkStateProperties>} event * @private */ @@ -1063,27 +1036,13 @@ * @private */ onCreateCustomApnClicked_() { - if (this.shouldShowApnDetailDialog_) { + if (this.isCreateCustomApnButtonDisabled_) { return; } - const guid = Router.getInstance().getQueryParameters().get('guid'); - assert(!!guid); - this.showApnDetailDialog_( - guid, ApnDetailDialogMode.CREATE, - undefined /* apn */); - } - - /** - * - * @param {!Event} event - */ - onShowApnDetailDialog_(event) { - event.stopPropagation(); - if (this.shouldShowApnDetailDialog_) { - return; - } - const eventData = /** @type {!ApnEventData} */ (event.detail); - this.showApnDetailDialog_(eventData.guid, eventData.mode, eventData.apn); + const apnSubpage = /** @type {ApnSubpageElement} */ ( + this.shadowRoot.querySelector('#apnSubpage')); + assert(!!apnSubpage); + apnSubpage.openApnDetailDialogInCreateMode(); } }
diff --git a/chrome/browser/resources/settings/metrics_browser_proxy.ts b/chrome/browser/resources/settings/metrics_browser_proxy.ts index df54a64..a953e35 100644 --- a/chrome/browser/resources/settings/metrics_browser_proxy.ts +++ b/chrome/browser/resources/settings/metrics_browser_proxy.ts
@@ -140,7 +140,7 @@ * numeric values should never be reused. * * Must be kept in sync with SettingsPrivacyGuideSettingsStates in enums.xml and - * PrivacyGuideSettingsStates in privacy_guide/privacy_guide_settings_states.h. + * PrivacyGuideSettingsStates in privacy_guide/privacy_guide.h. */ export enum PrivacyGuideSettingsStates { MSBB_ON_TO_ON = 0,
diff --git a/chrome/browser/resources/settings/privacy_page/privacy_sandbox/privacy_sandbox_topics_subpage.html b/chrome/browser/resources/settings/privacy_page/privacy_sandbox/privacy_sandbox_topics_subpage.html index 2d67ab1..bf29717b 100644 --- a/chrome/browser/resources/settings/privacy_page/privacy_sandbox/privacy_sandbox_topics_subpage.html +++ b/chrome/browser/resources/settings/privacy_page/privacy_sandbox/privacy_sandbox_topics_subpage.html
@@ -1,6 +1,63 @@ +<style include="cr-shared-style"> + #currentTopicsSection { + align-items: center; + display: flex; + padding: 0 var(--cr-section-padding); + } + + #currentTopicsSectionWrapper { + width: 100%; + } + + #currentTopicsHeading { + color: var(--cr-secondary-text-color); + font-size: 100%; + font-weight: 500; + margin: 0; + padding-block-start: var(--cr-section-vertical-padding); + } + + #currentTopicsDescription { + padding-block-end: var(--cr-section-vertical-padding); + } + + .no-topics { + padding-block-end: 32px; + padding-block-start: 16px; + padding-inline-start: 40px; + } +</style> + <settings-toggle-button id="topicsToggle" pref="{{prefs.privacy_sandbox.m1.topics_enabled}}" label="$i18n{topicsPageToggleLabel}" sub-label="$i18n{topicsPageToggleSubLabel}"> </settings-toggle-button> +<div id="currentTopicsSection"> + <div id="currentTopicsSectionWrapper" class="hr"> + <h2 id="currentTopicsHeading"> + $i18n{topicsPageCurrentTopicsHeading} + </h2> + <template is="dom-if" if="[[isTopicsEnabledAndLoaded_( + prefs.privacy_sandbox.m1.topics_enabled.value, isTopicsListLoaded_)]]" + restamp> + <!-- TODO(b/254413439): Add "Learn more" link. --> + <div id="currentTopicsDescription" class="cr-secondary-text" + hidden="[[isTopicsListEmpty_(topicsList_.length)]]"> + $i18n{topicsPageCurrentTopicsDescription} + </div> + <!-- TODO(b/254412594): Add Topics list. --> + <div id="currentTopicsDescriptionEmpty" + class="no-topics cr-secondary-text" + hidden="[[!isTopicsListEmpty_(topicsList_.length)]]"> + $i18n{topicsPageCurrentTopicsDescriptionEmpty} + </div> + </template> + <div id="currentTopicsDescriptionDisabled" + class="no-topics cr-secondary-text" + hidden="[[prefs.privacy_sandbox.m1.topics_enabled.value]]"> + $i18n{topicsPageCurrentTopicsDescriptionDisabled} + </div> + </div> +</div>
diff --git a/chrome/browser/resources/settings/privacy_page/privacy_sandbox/privacy_sandbox_topics_subpage.ts b/chrome/browser/resources/settings/privacy_page/privacy_sandbox/privacy_sandbox_topics_subpage.ts index 1727edc0..f6d0015 100644 --- a/chrome/browser/resources/settings/privacy_page/privacy_sandbox/privacy_sandbox_topics_subpage.ts +++ b/chrome/browser/resources/settings/privacy_page/privacy_sandbox/privacy_sandbox_topics_subpage.ts
@@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import 'chrome://resources/cr_elements/cr_shared_style.css.js'; import '../../controls/settings_toggle_button.js'; import '../../prefs/prefs.js'; @@ -9,6 +10,7 @@ import {SettingsToggleButtonElement} from '../../controls/settings_toggle_button.js'; import {PrefsMixin} from '../../prefs/prefs_mixin.js'; +import {PrivacySandboxBrowserProxy, PrivacySandboxBrowserProxyImpl, PrivacySandboxInterest, TopicsState} from '../../privacy_sandbox/privacy_sandbox_browser_proxy.js'; import {getTemplate} from './privacy_sandbox_topics_subpage.html.js'; @@ -40,8 +42,55 @@ type: Object, notify: true, }, + + topicsList_: { + type: Array, + value() { + return []; + }, + }, + + /** + * Used to determine that the Topics list was already fetched and to + * display the current topics description only after the list is loaded, + * to avoid displaying first the description for an empty list since the + * array is empty at first when the page is loaded and switching to the + * default description once the list is fetched. + */ + isTopicsListLoaded_: { + type: Boolean, + value: false, + }, }; } + + private topicsList_: PrivacySandboxInterest[]; + private isTopicsListLoaded_: boolean; + private privacySandboxBrowserProxy_: PrivacySandboxBrowserProxy = + PrivacySandboxBrowserProxyImpl.getInstance(); + + override ready() { + super.ready(); + + this.privacySandboxBrowserProxy_.getTopicsState().then( + state => this.onTopicsStateChanged_(state)); + } + + private onTopicsStateChanged_(state: TopicsState) { + this.topicsList_ = state.topTopics.map(topic => { + return {topic, removed: false}; + }); + this.isTopicsListLoaded_ = true; + } + + private isTopicsEnabledAndLoaded_(): boolean { + return this.getPref('privacy_sandbox.m1.topics_enabled').value && + this.isTopicsListLoaded_; + } + + private isTopicsListEmpty_(): boolean { + return this.topicsList_.length === 0; + } } declare global {
diff --git a/chrome/browser/signin/services/android/java/src/org/chromium/chrome/browser/signin/services/DisplayableProfileData.java b/chrome/browser/signin/services/android/java/src/org/chromium/chrome/browser/signin/services/DisplayableProfileData.java index bf2dd82..a02ab1f6 100644 --- a/chrome/browser/signin/services/android/java/src/org/chromium/chrome/browser/signin/services/DisplayableProfileData.java +++ b/chrome/browser/signin/services/android/java/src/org/chromium/chrome/browser/signin/services/DisplayableProfileData.java
@@ -16,15 +16,17 @@ private final Drawable mImage; private final @Nullable String mFullName; private final @Nullable String mGivenName; + private final boolean mHasDisplayableEmailAddress; public DisplayableProfileData(String accountEmail, Drawable image, @Nullable String fullName, - @Nullable String givenName) { + @Nullable String givenName, boolean hasDisplayableEmailAddress) { assert accountEmail != null; assert image != null; mAccountEmail = accountEmail; mImage = image; mFullName = fullName; mGivenName = givenName; + mHasDisplayableEmailAddress = hasDisplayableEmailAddress; } /** @@ -74,4 +76,11 @@ } return getFullNameOrEmail(); } + + /** + * @return Whether the account email address can be displayed. + */ + public boolean hasDisplayableEmailAddress() { + return mHasDisplayableEmailAddress; + } }
diff --git a/chrome/browser/signin/services/android/java/src/org/chromium/chrome/browser/signin/services/ProfileDataCache.java b/chrome/browser/signin/services/android/java/src/org/chromium/chrome/browser/signin/services/ProfileDataCache.java index 24df855a..fa7d6da 100644 --- a/chrome/browser/signin/services/android/java/src/org/chromium/chrome/browser/signin/services/ProfileDataCache.java +++ b/chrome/browser/signin/services/android/java/src/org/chromium/chrome/browser/signin/services/ProfileDataCache.java
@@ -30,7 +30,9 @@ import org.chromium.base.ObserverList; import org.chromium.base.ThreadUtils; import org.chromium.components.browser_ui.util.AvatarGenerator; +import org.chromium.components.signin.AccountEmailDomainDisplayability; import org.chromium.components.signin.AccountManagerFacadeProvider; +import org.chromium.components.signin.Tribool; import org.chromium.components.signin.base.AccountInfo; import org.chromium.components.signin.identitymanager.AccountInfoService; import org.chromium.components.signin.identitymanager.AccountInfoServiceProvider; @@ -164,7 +166,8 @@ public DisplayableProfileData getProfileDataOrDefault(String accountEmail) { DisplayableProfileData profileData = mCachedProfileData.get(accountEmail); if (profileData == null) { - return new DisplayableProfileData(accountEmail, mPlaceholderImage, null, null); + return new DisplayableProfileData(accountEmail, mPlaceholderImage, null, null, + AccountEmailDomainDisplayability.checkIfDisplayableEmailAddress(accountEmail)); } return profileData; } @@ -245,6 +248,23 @@ } /** + * Converts canHaveEmailAddressDisplayed() capability Tribool value to boolean. + * If the capability is not available (Tribool.UNKNOWN), uses fallback. + */ + private boolean hasDisplayableEmailAddress(@NonNull AccountInfo accountInfo) { + switch (accountInfo.getAccountCapabilities().canHaveEmailAddressDisplayed()) { + case Tribool.FALSE: { + return false; + } + case Tribool.TRUE: { + return true; + } + } + return AccountEmailDomainDisplayability.checkIfDisplayableEmailAddress( + accountInfo.getEmail()); + } + + /** * Implements {@link AccountInfoService.Observer}. */ @Override @@ -255,7 +275,8 @@ && (accountInfo.hasDisplayableInfo() || getBadgeConfigForAccount(accountInfo.getEmail()) != null)) { updateCacheAndNotifyObservers(accountInfo.getEmail(), accountInfo.getAccountImage(), - accountInfo.getFullName(), accountInfo.getGivenName()); + accountInfo.getFullName(), accountInfo.getGivenName(), + hasDisplayableEmailAddress(accountInfo)); } } @@ -279,8 +300,8 @@ accountInfoService.getAccountInfoByEmail(account.name).then(this::onAccountInfoUpdated); } - private void updateCacheAndNotifyObservers( - String email, Bitmap avatar, String fullName, String givenName) { + private void updateCacheAndNotifyObservers(String email, Bitmap avatar, String fullName, + String givenName, boolean hasDisplayableEmailAddress) { Drawable croppedAvatar = avatar != null ? AvatarGenerator.makeRoundAvatar(mContext.getResources(), avatar, mImageSize) : mPlaceholderImage; @@ -288,8 +309,9 @@ if (badgeConfig != null) { croppedAvatar = overlayBadgeOnUserPicture(badgeConfig, croppedAvatar); } - mCachedProfileData.put( - email, new DisplayableProfileData(email, croppedAvatar, fullName, givenName)); + mCachedProfileData.put(email, + new DisplayableProfileData( + email, croppedAvatar, fullName, givenName, hasDisplayableEmailAddress)); notifyObservers(email); }
diff --git a/chrome/browser/supervised_user/supervised_user_error_page/resources/supervised_user_block_interstitial_v2.html b/chrome/browser/supervised_user/supervised_user_error_page/resources/supervised_user_block_interstitial_v2.html index 82723cc..18d443a9 100644 --- a/chrome/browser/supervised_user/supervised_user_error_page/resources/supervised_user_block_interstitial_v2.html +++ b/chrome/browser/supervised_user/supervised_user_error_page/resources/supervised_user_block_interstitial_v2.html
@@ -39,8 +39,8 @@ <p id="request-sent-description" hidden>$i18n{requestSentDescription}</p> </div> <div id="block-reason-container"> - <p id="block-reason-show-details-link">$i18n{showDetailsLink}</p> - <p id="block-reason-hide-details-link">$i18n{hideDetailsLink}</p> + <p id="block-reason-show-details-link" tabindex="-1">$i18n{showDetailsLink}</p> + <p id="block-reason-hide-details-link" tabindex="-1">$i18n{hideDetailsLink}</p> <div id="block-reason"> <div> <h2 id="block-reason-header">$i18n{siteBlockHeader}</h2> @@ -59,8 +59,8 @@ <div id="second-custodian-information" class="custodian-information" hidden> <img id="second-custodian-avatar-img" class="avatar-img" hidden alt=""> <div id="second-custodian-contact" class="custodian-contact"> - <div id="second-custodian-name" class="custodian-name"></div> - <div id="second-custodian-email" class="custodian-email"></div> + <div id="second-custodian-name" tabindex="-1" class="custodian-name"></div> + <div id="second-custodian-email" tabindex="-1" class="custodian-email"></div> </div> </div> </div>
diff --git a/chrome/browser/supervised_user/supervised_user_error_page/resources/supervised_user_block_interstitial_v2.js b/chrome/browser/supervised_user/supervised_user_error_page/resources/supervised_user_block_interstitial_v2.js index d11f09d..2d3cdfb 100644 --- a/chrome/browser/supervised_user/supervised_user_error_page/resources/supervised_user_block_interstitial_v2.js +++ b/chrome/browser/supervised_user/supervised_user_error_page/resources/supervised_user_block_interstitial_v2.js
@@ -119,12 +119,14 @@ $('block-reason-show-details-link').style.display = 'none'; $('block-reason-hide-details-link').style.display = 'block'; $('block-reason').style.display = 'flex'; + $('block-reason-hide-details-link').focus(); }; $('block-reason-hide-details-link').onclick = function(event) { $('block-reason-show-details-link').style.display = 'block'; $('block-reason-hide-details-link').style.display = 'none'; $('block-reason').style.display = 'none'; + $('block-reason-show-details-link').focus(); }; // Focus the top-level div for screen readers.
diff --git a/chrome/browser/sync/chrome_sync_client.cc b/chrome/browser/sync/chrome_sync_client.cc index c814bf1..f5dd115 100644 --- a/chrome/browser/sync/chrome_sync_client.cc +++ b/chrome/browser/sync/chrome_sync_client.cc
@@ -138,6 +138,8 @@ #include "ash/constants/ash_features.h" #include "ash/constants/ash_switches.h" #include "ash/public/cpp/app_list/app_list_switches.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" #include "chrome/browser/ash/app_list/arc/arc_package_sync_model_type_controller.h" #include "chrome/browser/ash/app_list/arc/arc_package_syncable_service.h" #include "chrome/browser/ash/arc/arc_util.h" @@ -152,8 +154,6 @@ #include "chrome/browser/ash/sync/os_syncable_service_model_type_controller.h" #include "chrome/browser/sync/desk_sync_service_factory.h" #include "chrome/browser/sync/wifi_configuration_sync_service_factory.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" #include "chromeos/ash/components/sync_wifi/wifi_configuration_sync_service.h" #endif // BUILDFLAG(IS_CHROMEOS_ASH) @@ -675,7 +675,7 @@ DCHECK(provider); DCHECK(web_app::AreWebAppsEnabled(profile_)); - return provider->sync_bridge() + return provider->sync_bridge_unsafe() .change_processor() ->GetControllerDelegate(); }
diff --git a/chrome/browser/sync/sync_service_factory_unittest.cc b/chrome/browser/sync/sync_service_factory_unittest.cc index 8561f99c..cfdc017 100644 --- a/chrome/browser/sync/sync_service_factory_unittest.cc +++ b/chrome/browser/sync/sync_service_factory_unittest.cc
@@ -31,9 +31,9 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) #include "ash/constants/ash_features.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" #include "chrome/browser/ash/arc/arc_util.h" #include "chrome/browser/sync/wifi_configuration_sync_service_factory.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" #include "chromeos/ash/components/dbus/shill/shill_clients.h" #include "chromeos/ash/components/dbus/shill/shill_manager_client.h" #include "chromeos/ash/components/network/network_handler.h"
diff --git a/chrome/browser/sync/test/integration/single_client_app_list_sync_test.cc b/chrome/browser/sync/test/integration/single_client_app_list_sync_test.cc index d006a90..8a82589 100644 --- a/chrome/browser/sync/test/integration/single_client_app_list_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_app_list_sync_test.cc
@@ -6,6 +6,9 @@ #include "ash/constants/ash_features.h" #include "base/run_loop.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" +#include "chrome/browser/ash/app_list/chrome_app_list_item.h" #include "chrome/browser/ash/app_list/internal_app/internal_app_metadata.h" #include "chrome/browser/sync/sync_service_factory.h" #include "chrome/browser/sync/test/integration/apps_helper.h" @@ -14,9 +17,6 @@ #include "chrome/browser/sync/test/integration/sync_service_impl_harness.h" #include "chrome/browser/sync/test/integration/sync_test.h" #include "chrome/browser/sync/test/integration/updated_progress_marker_checker.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" -#include "chrome/browser/ui/app_list/chrome_app_list_item.h" #include "components/sync/base/user_selectable_type.h" #include "components/sync/driver/sync_service.h" #include "components/sync/driver/sync_user_settings.h"
diff --git a/chrome/browser/sync/test/integration/sync_app_list_helper.cc b/chrome/browser/sync/test/integration/sync_app_list_helper.cc index 4ad030b..a5540b7 100644 --- a/chrome/browser/sync/test/integration/sync_app_list_helper.cc +++ b/chrome/browser/sync/test/integration/sync_app_list_helper.cc
@@ -8,13 +8,13 @@ #include <vector> #include "base/strings/stringprintf.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" +#include "chrome/browser/ash/app_list/chrome_app_list_item.h" +#include "chrome/browser/ash/app_list/chrome_app_list_model_updater.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/sync/test/integration/sync_datatype_helper.h" #include "chrome/browser/sync/test/integration/sync_test.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" -#include "chrome/browser/ui/app_list/chrome_app_list_item.h" -#include "chrome/browser/ui/app_list/chrome_app_list_model_updater.h" #include "chrome/common/extensions/sync_helper.h" #include "extensions/browser/app_sorting.h" #include "extensions/browser/extension_system.h"
diff --git a/chrome/browser/sync/test/integration/sync_test.h b/chrome/browser/sync/test/integration/sync_test.h index 77e3b3f..611bdf8 100644 --- a/chrome/browser/sync/test/integration/sync_test.h +++ b/chrome/browser/sync/test/integration/sync_test.h
@@ -31,7 +31,7 @@ #include "services/network/test/test_url_loader_factory.h" #if BUILDFLAG(IS_CHROMEOS_ASH) -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" #endif // BUILDFLAG(IS_CHROMEOS_ASH) #if BUILDFLAG(IS_ANDROID)
diff --git a/chrome/browser/sync/test/integration/two_client_app_list_sync_test.cc b/chrome/browser/sync/test/integration/two_client_app_list_sync_test.cc index 450aa9b..9877b25e 100644 --- a/chrome/browser/sync/test/integration/two_client_app_list_sync_test.cc +++ b/chrome/browser/sync/test/integration/two_client_app_list_sync_test.cc
@@ -7,6 +7,8 @@ #include "base/one_shot_event.h" #include "base/run_loop.h" #include "build/build_config.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/sync/test/integration/apps_helper.h" @@ -15,8 +17,6 @@ #include "chrome/browser/sync/test/integration/sync_service_impl_harness.h" #include "chrome/browser/sync/test/integration/sync_test.h" #include "chrome/browser/sync/test/integration/updated_progress_marker_checker.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" #include "components/prefs/pref_service.h" #include "components/sync/base/pref_names.h" #include "components/sync/base/user_selectable_type.h"
diff --git a/chrome/browser/sync/test/integration/two_client_web_apps_bmo_sync_test.cc b/chrome/browser/sync/test/integration/two_client_web_apps_bmo_sync_test.cc index 8f9be29..0db2295 100644 --- a/chrome/browser/sync/test/integration/two_client_web_apps_bmo_sync_test.cc +++ b/chrome/browser/sync/test/integration/two_client_web_apps_bmo_sync_test.cc
@@ -286,7 +286,7 @@ EXPECT_EQ(install_observer.Wait(), app_id); } WebAppProvider::GetForTest(GetProfile(1)) - ->sync_bridge() + ->sync_bridge_unsafe() .SetAppUserDisplayMode(app_id, UserDisplayMode::kBrowser, /*is_user_action=*/false); @@ -378,7 +378,7 @@ // The app should have synced from profile 0 to profile 1, which enables sync // on profile 0. So changes should propagate from profile 0 to profile 1 now. WebAppProvider::GetForTest(GetProfile(0)) - ->sync_bridge() + ->sync_bridge_unsafe() .SetAppUserDisplayMode(app_id, UserDisplayMode::kBrowser, /*is_user_action=*/false);
diff --git a/chrome/browser/sync/test/integration/two_client_web_apps_sync_test.cc b/chrome/browser/sync/test/integration/two_client_web_apps_sync_test.cc index 08cd12ff..d78f0aa 100644 --- a/chrome/browser/sync/test/integration/two_client_web_apps_sync_test.cc +++ b/chrome/browser/sync/test/integration/two_client_web_apps_sync_test.cc
@@ -431,9 +431,9 @@ UserDisplayMode::kStandalone); DisplayModeChangeWaiter display_mode_change_waiter(registrar1); - provider1->sync_bridge().SetAppUserDisplayMode(app_id, - UserDisplayMode::kTabbed, - /*is_user_action=*/true); + provider1->sync_bridge_unsafe().SetAppUserDisplayMode( + app_id, UserDisplayMode::kTabbed, + /*is_user_action=*/true); display_mode_change_waiter.Wait(); EXPECT_EQ(registrar1.GetAppUserDisplayMode(app_id), UserDisplayMode::kTabbed);
diff --git a/chrome/browser/touch_to_fill/android/internal/BUILD.gn b/chrome/browser/touch_to_fill/android/internal/BUILD.gn index 6c81065b..fea4556 100644 --- a/chrome/browser/touch_to_fill/android/internal/BUILD.gn +++ b/chrome/browser/touch_to_fill/android/internal/BUILD.gn
@@ -18,6 +18,7 @@ "//chrome/browser/password_manager/android:java", "//chrome/browser/profiles/android:java", "//chrome/browser/touch_to_fill/android:public_java", + "//chrome/browser/touch_to_fill/common/android:java_resources", "//chrome/browser/ui/android/favicon:java", "//chrome/browser/util:java", "//components/browser_ui/bottomsheet/android:java", @@ -74,7 +75,6 @@ "java/res/layout/touch_to_fill_credential_item.xml", "java/res/layout/touch_to_fill_credential_item_modern.xml", "java/res/layout/touch_to_fill_fill_button.xml", - "java/res/layout/touch_to_fill_fill_button_modern.xml", "java/res/layout/touch_to_fill_header_item.xml", "java/res/layout/touch_to_fill_header_item_modern.xml", "java/res/layout/touch_to_fill_sheet.xml",
diff --git a/chrome/browser/touch_to_fill/common/android/BUILD.gn b/chrome/browser/touch_to_fill/common/android/BUILD.gn new file mode 100644 index 0000000..cea85cd7 --- /dev/null +++ b/chrome/browser/touch_to_fill/common/android/BUILD.gn
@@ -0,0 +1,10 @@ +# Copyright 2022 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//build/config/android/rules.gni") + +android_resources("java_resources") { + deps = [ "//ui/android:ui_java_resources" ] + sources = [ "java/res/layout/touch_to_fill_fill_button_modern.xml" ] +}
diff --git a/chrome/browser/touch_to_fill/android/internal/java/res/layout/touch_to_fill_fill_button_modern.xml b/chrome/browser/touch_to_fill/common/android/java/res/layout/touch_to_fill_fill_button_modern.xml similarity index 100% rename from chrome/browser/touch_to_fill/android/internal/java/res/layout/touch_to_fill_fill_button_modern.xml rename to chrome/browser/touch_to_fill/common/android/java/res/layout/touch_to_fill_fill_button_modern.xml
diff --git a/chrome/browser/touch_to_fill/payments/android/internal/BUILD.gn b/chrome/browser/touch_to_fill/payments/android/internal/BUILD.gn index 9e00bc7c..e5ce340 100644 --- a/chrome/browser/touch_to_fill/payments/android/internal/BUILD.gn +++ b/chrome/browser/touch_to_fill/payments/android/internal/BUILD.gn
@@ -14,6 +14,7 @@ "//chrome/browser/autofill/android:java", "//chrome/browser/autofill/android:java", "//chrome/browser/touch_to_fill/android/internal:java", + "//chrome/browser/touch_to_fill/common/android:java_resources", "//chrome/browser/touch_to_fill/payments/android:public_java", "//components/browser_ui/bottomsheet/android:java", "//components/payments/content/android:minimal_java_resources",
diff --git a/chrome/browser/touch_to_fill/payments/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/payments/TouchToFillCreditCardControllerRobolectricTest.java b/chrome/browser/touch_to_fill/payments/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/payments/TouchToFillCreditCardControllerRobolectricTest.java index 2d16b0f2..a40d15dc 100644 --- a/chrome/browser/touch_to_fill/payments/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/payments/TouchToFillCreditCardControllerRobolectricTest.java +++ b/chrome/browser/touch_to_fill/payments/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/payments/TouchToFillCreditCardControllerRobolectricTest.java
@@ -5,16 +5,21 @@ package org.chromium.chrome.browser.touch_to_fill.payments; import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.Mockito.verify; -import static org.chromium.chrome.browser.autofill.AutofillTestHelper.createLocalCreditCard; +import static org.chromium.chrome.browser.autofill.AutofillTestHelper.createCreditCard; import static org.chromium.chrome.browser.touch_to_fill.payments.TouchToFillCreditCardProperties.CreditCardProperties.CARD_NAME; import static org.chromium.chrome.browser.touch_to_fill.payments.TouchToFillCreditCardProperties.CreditCardProperties.CARD_NUMBER; import static org.chromium.chrome.browser.touch_to_fill.payments.TouchToFillCreditCardProperties.CreditCardProperties.ON_CLICK_ACTION; import static org.chromium.chrome.browser.touch_to_fill.payments.TouchToFillCreditCardProperties.DISMISS_HANDLER; import static org.chromium.chrome.browser.touch_to_fill.payments.TouchToFillCreditCardProperties.ItemType.CREDIT_CARD; +import static org.chromium.chrome.browser.touch_to_fill.payments.TouchToFillCreditCardProperties.ItemType.FILL_BUTTON; import static org.chromium.chrome.browser.touch_to_fill.payments.TouchToFillCreditCardProperties.ItemType.HEADER; import static org.chromium.chrome.browser.touch_to_fill.payments.TouchToFillCreditCardProperties.SCAN_CREDIT_CARD_CALLBACK; import static org.chromium.chrome.browser.touch_to_fill.payments.TouchToFillCreditCardProperties.SHEET_ITEMS; @@ -29,38 +34,42 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.Mockito; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; +import org.mockito.quality.Strictness; import org.robolectric.Robolectric; import org.chromium.base.test.BaseRobolectricTestRunner; import org.chromium.base.test.util.Batch; -import org.chromium.chrome.browser.autofill.PersonalDataManager; import org.chromium.chrome.browser.autofill.PersonalDataManager.CreditCard; import org.chromium.chrome.test.util.browser.Features.EnableFeatures; import org.chromium.components.autofill.AutofillFeatures; +import org.chromium.components.browser_ui.bottomsheet.BottomSheetContent; import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.ui.modelutil.MVCListAdapter.ModelList; import org.chromium.ui.modelutil.PropertyModel; +import java.util.List; +import java.util.Optional; import java.util.concurrent.TimeoutException; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; /** Tests for {@link TouchToFillCreditCardCoordinator} and {@link TouchToFillCreditCardMediator} */ @RunWith(BaseRobolectricTestRunner.class) @Batch(Batch.PER_CLASS) public class TouchToFillCreditCardControllerRobolectricTest { - private static final CreditCard VISA = - createLocalCreditCard("Visa", "4111111111111111", "5", "2050"); - private static final CreditCard MASTER_CARD = - createLocalCreditCard("MasterCard", "5555555555554444", "8", "2050"); + private static final CreditCard VISA = createCreditCard( + "Visa", "4111111111111111", "5", "2050", true, "Visa", "• • • • 1111", 0); + private static final CreditCard MASTER_CARD = createCreditCard( + "MasterCard", "5555555555554444", "8", "2050", true, "MasterCard", "• • • • 4444", 0); @Rule - public MockitoRule mMockitoRule = MockitoJUnit.rule(); + public MockitoRule mMockitoRule = MockitoJUnit.rule().strictness(Strictness.STRICT_STUBS); private TouchToFillCreditCardCoordinator mCoordinator; private PropertyModel mTouchToFillCreditCardModel; - private final TouchToFillCreditCardMediator mMediator = new TouchToFillCreditCardMediator(); Context mContext; @Mock @@ -76,10 +85,12 @@ @Before public void setUp() { - MockitoAnnotations.initMocks(this); + Mockito.when(mBottomSheetController.requestShowContent( + any(BottomSheetContent.class), anyBoolean())) + .thenReturn(true); + mCoordinator.initialize(mContext, mBottomSheetController, mDelegateMock); - mTouchToFillCreditCardModel = mCoordinator.createModel(mMediator); - mMediator.initialize(mContext, mDelegateMock, mTouchToFillCreditCardModel); + mTouchToFillCreditCardModel = mCoordinator.getModelForTesting(); } @Before @@ -92,37 +103,37 @@ @Test @EnableFeatures({AutofillFeatures.AUTOFILL_TOUCH_TO_FILL_FOR_CREDIT_CARDS_ANDROID}) public void testShowCreditCardsWithOneEntry() throws TimeoutException { - mMediator.showSheet(new CreditCard[] {VISA}, false); + mCoordinator.showSheet(new CreditCard[] {VISA}, false); ModelList itemList = mTouchToFillCreditCardModel.get(SHEET_ITEMS); - assertThat(itemList.size(), is(2)); + assertThat(getModelsOfType(itemList, CREDIT_CARD).size(), is(1)); - assertThat(itemList.get(0).type, is(HEADER)); + assertThat(getModelsOfType(itemList, HEADER).size(), is(1)); - assertThat(itemList.get(1).type, is(CREDIT_CARD)); - assertThat(itemList.get(1).model.get(CARD_NAME), is(VISA.getCardNameForAutofillDisplay())); - assertThat(itemList.get(1).model.get(CARD_NUMBER), is(VISA.getObfuscatedLastFourDigits())); + Optional<PropertyModel> cardModel = getCardModelByAutofillName(itemList, VISA); + assertTrue(cardModel.isPresent()); + assertThat(cardModel.get().get(CARD_NAME), is(VISA.getCardNameForAutofillDisplay())); + assertThat(cardModel.get().get(CARD_NUMBER), is(VISA.getObfuscatedLastFourDigits())); } @Test @EnableFeatures({AutofillFeatures.AUTOFILL_TOUCH_TO_FILL_FOR_CREDIT_CARDS_ANDROID}) public void testShowCreditCardsWithTwoEntries() throws TimeoutException { - mMediator.showSheet(new CreditCard[] {VISA, MASTER_CARD}, false); + mCoordinator.showSheet(new CreditCard[] {VISA, MASTER_CARD}, false); ModelList itemList = mTouchToFillCreditCardModel.get(SHEET_ITEMS); - assertThat(itemList.size(), is(3)); + assertThat(getModelsOfType(itemList, CREDIT_CARD).size(), is(2)); - assertThat(itemList.get(0).type, is(HEADER)); + assertThat(getModelsOfType(itemList, HEADER).size(), is(1)); - assertThat(itemList.get(1).type, is(CREDIT_CARD)); - assertThat(itemList.get(1).model.get(CARD_NAME), is(VISA.getCardNameForAutofillDisplay())); - assertThat(itemList.get(1).model.get(CARD_NUMBER), is(VISA.getObfuscatedLastFourDigits())); + Optional<PropertyModel> cardModel = getCardModelByAutofillName(itemList, VISA); + assertTrue(cardModel.isPresent()); + assertThat(cardModel.get().get(CARD_NAME), is(VISA.getCardNameForAutofillDisplay())); + assertThat(cardModel.get().get(CARD_NUMBER), is(VISA.getObfuscatedLastFourDigits())); - assertThat(itemList.get(2).type, is(CREDIT_CARD)); - assertThat(itemList.get(2).model.get(CARD_NAME), - is(MASTER_CARD.getCardNameForAutofillDisplay())); - assertThat(itemList.get(2).model.get(CARD_NUMBER), - is(MASTER_CARD.getObfuscatedLastFourDigits())); + cardModel = getCardModelByAutofillName(itemList, MASTER_CARD); + assertThat(cardModel.get().get(CARD_NAME), is(MASTER_CARD.getCardNameForAutofillDisplay())); + assertThat(cardModel.get().get(CARD_NUMBER), is(MASTER_CARD.getObfuscatedLastFourDigits())); } @Test @@ -144,17 +155,48 @@ AutofillFeatures.AUTOFILL_ACROSS_IFRAMES}) public void testCallsCallbackOnSelectingItem() { - mMediator.showSheet(new CreditCard[] {VISA}, false); + mCoordinator.showSheet(new CreditCard[] {VISA}, false); assertThat(mTouchToFillCreditCardModel.get(VISIBLE), is(true)); - assertNotNull( - mTouchToFillCreditCardModel.get(SHEET_ITEMS).get(1).model.get(ON_CLICK_ACTION)); - mTouchToFillCreditCardModel.get(SHEET_ITEMS).get(1).model.get(ON_CLICK_ACTION).run(); + Optional<PropertyModel> cardModel = + getCardModelByAutofillName(mTouchToFillCreditCardModel.get(SHEET_ITEMS), VISA); + assertNotNull(cardModel.get().get(ON_CLICK_ACTION)); + + cardModel.get().get(ON_CLICK_ACTION).run(); verify(mDelegateMock).suggestionSelected(VISA.getGUID()); } - private static PersonalDataManager.CreditCard createLocalCreditCard( - String name, String number, String month, String year) { - return new CreditCard("", "", true, false, name, number, "", month, year, "", 0, "", ""); + @Test + public void testShowsContinueButtonWhenOneItem() { + mCoordinator.showSheet(new CreditCard[] {VISA}, true); + + ModelList itemList = mTouchToFillCreditCardModel.get(SHEET_ITEMS); + assertEquals(getModelsOfType(itemList, FILL_BUTTON).size(), 1); + } + + @Test + public void testNoContinueButtonWhenManyItems() { + mCoordinator.showSheet(new CreditCard[] {VISA, MASTER_CARD}, true); + + ModelList itemList = mTouchToFillCreditCardModel.get(SHEET_ITEMS); + assertEquals(getModelsOfType(itemList, FILL_BUTTON).size(), 0); + } + + private static List<PropertyModel> getModelsOfType(ModelList items, int type) { + return StreamSupport.stream(items.spliterator(), false) + .filter(item -> item.type == type) + .map(item -> item.model) + .collect(Collectors.toList()); + } + + private static Optional<PropertyModel> getCardModelByAutofillName( + ModelList items, CreditCard card) { + return StreamSupport.stream(items.spliterator(), false) + .filter(item + -> item.type == CREDIT_CARD + && item.model.get(CARD_NAME).equals( + card.getCardNameForAutofillDisplay())) + .findFirst() + .map(item -> item.model); } }
diff --git a/chrome/browser/touch_to_fill/payments/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/payments/TouchToFillCreditCardCoordinator.java b/chrome/browser/touch_to_fill/payments/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/payments/TouchToFillCreditCardCoordinator.java index 4fb52a48..041d52b 100644 --- a/chrome/browser/touch_to_fill/payments/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/payments/TouchToFillCreditCardCoordinator.java +++ b/chrome/browser/touch_to_fill/payments/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/payments/TouchToFillCreditCardCoordinator.java
@@ -6,6 +6,7 @@ import static org.chromium.chrome.browser.touch_to_fill.payments.TouchToFillCreditCardProperties.DISMISS_HANDLER; import static org.chromium.chrome.browser.touch_to_fill.payments.TouchToFillCreditCardProperties.ItemType.CREDIT_CARD; +import static org.chromium.chrome.browser.touch_to_fill.payments.TouchToFillCreditCardProperties.ItemType.FILL_BUTTON; import static org.chromium.chrome.browser.touch_to_fill.payments.TouchToFillCreditCardProperties.ItemType.HEADER; import static org.chromium.chrome.browser.touch_to_fill.payments.TouchToFillCreditCardProperties.SCAN_CREDIT_CARD_CALLBACK; import static org.chromium.chrome.browser.touch_to_fill.payments.TouchToFillCreditCardProperties.SHEET_ITEMS; @@ -34,7 +35,7 @@ @Override public void initialize(Context context, BottomSheetController sheetController, TouchToFillCreditCardComponent.Delegate delegate) { - PropertyModel mTouchToFillCreditCardModel = createModel(mMediator); + mTouchToFillCreditCardModel = createModel(mMediator); mMediator.initialize(context, delegate, mTouchToFillCreditCardModel); setUpModelChangeProcessors(mTouchToFillCreditCardModel, @@ -68,6 +69,8 @@ TouchToFillCreditCardViewBinder::bindCardItemView); adapter.registerType(HEADER, TouchToFillCreditCardViewBinder::createHeaderItemView, TouchToFillCreditCardViewBinder::bindHeaderView); + adapter.registerType(FILL_BUTTON, TouchToFillCreditCardViewBinder::createFillButtonView, + TouchToFillCreditCardViewBinder::bindFillButtonView); view.setSheetItemListAdapter(adapter); } @@ -80,4 +83,9 @@ .with(SHOW_CREDIT_CARD_SETTINGS_CALLBACK, mMediator::showCreditCardSettings) .build(); } + + @VisibleForTesting + PropertyModel getModelForTesting() { + return mTouchToFillCreditCardModel; + } }
diff --git a/chrome/browser/touch_to_fill/payments/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/payments/TouchToFillCreditCardMediator.java b/chrome/browser/touch_to_fill/payments/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/payments/TouchToFillCreditCardMediator.java index 4ffa41cf..8def142 100644 --- a/chrome/browser/touch_to_fill/payments/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/payments/TouchToFillCreditCardMediator.java +++ b/chrome/browser/touch_to_fill/payments/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/payments/TouchToFillCreditCardMediator.java
@@ -7,6 +7,7 @@ import static org.chromium.chrome.browser.touch_to_fill.payments.TouchToFillCreditCardProperties.CreditCardProperties.ON_CLICK_ACTION; import static org.chromium.chrome.browser.touch_to_fill.payments.TouchToFillCreditCardProperties.HeaderProperties.IMAGE_DRAWABLE_ID; import static org.chromium.chrome.browser.touch_to_fill.payments.TouchToFillCreditCardProperties.ItemType.CREDIT_CARD; +import static org.chromium.chrome.browser.touch_to_fill.payments.TouchToFillCreditCardProperties.ItemType.FILL_BUTTON; import static org.chromium.chrome.browser.touch_to_fill.payments.TouchToFillCreditCardProperties.SHEET_ITEMS; import static org.chromium.chrome.browser.touch_to_fill.payments.TouchToFillCreditCardProperties.SHOULD_SHOW_SCAN_CREDIT_CARD; import static org.chromium.chrome.browser.touch_to_fill.payments.TouchToFillCreditCardProperties.VISIBLE; @@ -42,9 +43,6 @@ void showSheet(CreditCard[] cards, boolean shouldShowScanCreditCard) { assert cards != null; - // TODO(1247698): Show GPay logo if there is at least one card coming from - // GPay, if there are only local cards show Chrome logo. - boolean hasOnlyLocalCards = true; ModelList sheetItems = mModel.get(SHEET_ITEMS); sheetItems.clear(); @@ -53,7 +51,13 @@ sheetItems.add(new ListItem(CREDIT_CARD, model)); } - sheetItems.add(0, buildHeader(hasOnlyLocalCards)); + if (cards.length == 1) { + // Use the credit card model as the property model for the fill button too + assert sheetItems.get(0).type == CREDIT_CARD; + sheetItems.add(new ListItem(FILL_BUTTON, sheetItems.get(0).model)); + } + + sheetItems.add(0, buildHeader(hasOnlyLocalCards(cards))); mModel.set(VISIBLE, true); mModel.set(SHOULD_SHOW_SCAN_CREDIT_CARD, shouldShowScanCreditCard); @@ -77,7 +81,7 @@ mDelegate.showCreditCardSettings(); } - private void onSelectedCreditCard(String uniqueId) { + public void onSelectedCreditCard(String uniqueId) { mDelegate.suggestionSelected(uniqueId); } @@ -106,4 +110,11 @@ : R.drawable.google_pay) .build()); } + + private static boolean hasOnlyLocalCards(CreditCard[] cards) { + for (CreditCard card : cards) { + if (!card.getIsLocal()) return false; + } + return true; + } }
diff --git a/chrome/browser/touch_to_fill/payments/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/payments/TouchToFillCreditCardProperties.java b/chrome/browser/touch_to_fill/payments/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/payments/TouchToFillCreditCardProperties.java index 0e1f9ae..f51cd21 100644 --- a/chrome/browser/touch_to_fill/payments/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/payments/TouchToFillCreditCardProperties.java +++ b/chrome/browser/touch_to_fill/payments/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/payments/TouchToFillCreditCardProperties.java
@@ -38,6 +38,9 @@ // A section containing the credit card data. int CREDIT_CARD = 1; + + // A "Continue" button, which is shown when there is 1 credit card only. + int FILL_BUTTON = 2; } /**
diff --git a/chrome/browser/touch_to_fill/payments/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/payments/TouchToFillCreditCardRenderTest.java b/chrome/browser/touch_to_fill/payments/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/payments/TouchToFillCreditCardRenderTest.java index ab5168a2f..0020ccd2 100644 --- a/chrome/browser/touch_to_fill/payments/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/payments/TouchToFillCreditCardRenderTest.java +++ b/chrome/browser/touch_to_fill/payments/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/payments/TouchToFillCreditCardRenderTest.java
@@ -5,6 +5,7 @@ package org.chromium.chrome.browser.touch_to_fill.payments; import static org.chromium.base.test.util.ApplicationTestUtils.finishActivity; +import static org.chromium.chrome.browser.autofill.AutofillTestHelper.createCreditCard; import static org.chromium.chrome.browser.night_mode.ChromeNightModeTestUtils.tearDownNightModeAfterChromeActivityDestroyed; import static org.chromium.content_public.browser.test.util.TestThreadUtils.runOnUiThreadBlocking; import static org.chromium.ui.base.LocalizationUtils.setRtlForTesting; @@ -35,7 +36,6 @@ import org.chromium.chrome.browser.night_mode.ChromeNightModeTestUtils; import org.chromium.chrome.test.ChromeTabbedActivityTestRule; import org.chromium.chrome.test.util.ChromeRenderTestRule; -import org.chromium.components.autofill.VirtualCardEnrollmentState; import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.components.browser_ui.bottomsheet.BottomSheetTestSupport; import org.chromium.ui.test.util.RenderTestRule.Component; @@ -73,30 +73,14 @@ @Mock private TouchToFillCreditCardComponent.Delegate mDelegateMock; - private static final CreditCard VISA = new CreditCard(/* guid= */ "", - /* origin= */ "", - /* isLocal= */ false, /* isCached= */ false, /* name= */ "MasterCard", - /* number= */ "4111111111111111", - /* obfuscatedNumber= */ "", /* month= */ "5", AutofillTestHelper.nextYear(), - /* basicCardIssuerNetwork =*/"visa", - /* issuerIconDrawableId= */ R.drawable.visa_card, /* billingAddressId= */ "", - /* serverId= */ "", /* instrumentId= */ 0, /* cardLabel= */ "", /* nickname= */ "", - /* cardArtUrl= */ null, - /* virtualCardEnrollmentState= */ VirtualCardEnrollmentState.UNSPECIFIED, - /* productDescription= */ "", /* cardNameForAutofillDisplay= */ "Visa", - /* obfuscatedLastFourDigits= */ "• • • • 1111"); - private static final CreditCard MASTER_CARD = new CreditCard(/* guid= */ "", - /* origin= */ "", - /* isLocal= */ false, /* isCached= */ false, /* name= */ "MasterCard", - /* number= */ "5555555555554444", - /* obfuscatedNumber= */ "", /* month= */ "8", AutofillTestHelper.nextYear(), - /* basicCardIssuerNetwork =*/"mastercard", - /* issuerIconDrawableId= */ R.drawable.mc_card, /* billingAddressId= */ "", - /* serverId= */ "", /* instrumentId= */ 0, /* cardLabel= */ "", /* nickname= */ "", - /* cardArtUrl= */ null, - /* virtualCardEnrollmentState= */ VirtualCardEnrollmentState.UNSPECIFIED, - /* productDescription= */ "", /* cardNameForAutofillDisplay= */ "Mastercard", - /* obfuscatedLastFourDigits= */ "• • • • 4444"); + private static final CreditCard VISA = createCreditCard("Visa", "4111111111111111", "5", + AutofillTestHelper.nextYear(), true, "Visa", "• • • • 1111", R.drawable.visa_card); + private static final CreditCard MASTER_CARD = + createCreditCard("MasterCard", "5555555555554444", "8", AutofillTestHelper.nextYear(), + true, "Mastercard", "• • • • 4444", R.drawable.mc_card); + private static final CreditCard SERVER_MASTER_CARD = createCreditCard("MasterCard-GPay", + "5454545454545454", "11", AutofillTestHelper.nextYear(), false, "MasterCard-GPay", + "• • • • 5454", R.drawable.mc_card); private BottomSheetController mBottomSheetController; private TouchToFillCreditCardCoordinator mCoordinator; @@ -144,4 +128,17 @@ View bottomSheetView = mActivityTestRule.getActivity().findViewById(R.id.bottom_sheet); mRenderTestRule.render(bottomSheetView, "touch_to_fill_credit_card_sheet"); } + + @Test + @MediumTest + @Feature({"RenderTest"}) + public void testShowsLocalAndServerCards() throws IOException { + runOnUiThreadBlocking(() -> { + mCoordinator.showSheet(new CreditCard[] {VISA, SERVER_MASTER_CARD}, true); + }); + BottomSheetTestSupport.waitForOpen(mBottomSheetController); + + View bottomSheetView = mActivityTestRule.getActivity().findViewById(R.id.bottom_sheet); + mRenderTestRule.render(bottomSheetView, "touch_to_fill_credit_card_sheet"); + } }
diff --git a/chrome/browser/touch_to_fill/payments/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/payments/TouchToFillCreditCardViewBinder.java b/chrome/browser/touch_to_fill/payments/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/payments/TouchToFillCreditCardViewBinder.java index e870aa3..0330d67 100644 --- a/chrome/browser/touch_to_fill/payments/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/payments/TouchToFillCreditCardViewBinder.java +++ b/chrome/browser/touch_to_fill/payments/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/payments/TouchToFillCreditCardViewBinder.java
@@ -124,4 +124,22 @@ assert false : "Unhandled update to property:" + propertyKey; } } + + static View createFillButtonView(ViewGroup parent) { + return LayoutInflater.from(parent.getContext()) + .inflate(R.layout.touch_to_fill_fill_button_modern, parent, false); + } + + static void bindFillButtonView(PropertyModel model, View view, PropertyKey propertyKey) { + if (propertyKey == ON_CLICK_ACTION) { + view.setOnClickListener(unusedView -> model.get(ON_CLICK_ACTION).run()); + TextView buttonTitleText = view.findViewById(R.id.touch_to_fill_button_title); + buttonTitleText.setText(R.string.autofill_credit_card_continue_button); + } else if (propertyKey == CARD_ICON_ID || propertyKey == CARD_NAME + || propertyKey == CARD_NUMBER || propertyKey == CARD_EXPIRATION) { + // Skip, because none of these changes affect the button + } else { + assert false : "Unhandled update to property:" + propertyKey; + } + } }
diff --git a/chrome/browser/touch_to_fill/payments/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/payments/TouchToFillCreditCardViewTest.java b/chrome/browser/touch_to_fill/payments/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/payments/TouchToFillCreditCardViewTest.java index 2c0a636..8ff4353 100644 --- a/chrome/browser/touch_to_fill/payments/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/payments/TouchToFillCreditCardViewTest.java +++ b/chrome/browser/touch_to_fill/payments/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/payments/TouchToFillCreditCardViewTest.java
@@ -183,6 +183,18 @@ verify(mDelegateMock).showCreditCardSettings(); } + @Test + @MediumTest + public void testContinueButtonClick() { + runOnUiThreadBlocking(() -> mCoordinator.showSheet(new CreditCard[] {VISA}, true)); + BottomSheetTestSupport.waitForOpen(mBottomSheetController); + runOnUiThreadBlocking(() -> mSheetSupport.setSheetState(SheetState.FULL, false)); + + onView(withId(R.id.touch_to_fill_button_title)).perform(click()); + + verify(mDelegateMock).suggestionSelected(VISA.getGUID()); + } + private RecyclerView getCreditCards() { return mTouchToFillCreditCardView.getContentView().findViewById(R.id.sheet_item_list); }
diff --git a/chrome/browser/touch_to_fill/touch_to_fill_controller.cc b/chrome/browser/touch_to_fill/touch_to_fill_controller.cc index 49b3401..a66067d6 100644 --- a/chrome/browser/touch_to_fill/touch_to_fill_controller.cc +++ b/chrome/browser/touch_to_fill/touch_to_fill_controller.cc
@@ -104,6 +104,13 @@ return delegate_->GetNativeView(); } +void TouchToFillController::Close() { + view_.reset(); + // Unretained is safe here because TouchToFillController owns the delegate. + delegate_->OnDismiss(base::BindOnce(&TouchToFillController::ActionCompleted, + base::Unretained(this))); +} + void TouchToFillController::ActionCompleted() { delegate_.reset(); }
diff --git a/chrome/browser/touch_to_fill/touch_to_fill_controller.h b/chrome/browser/touch_to_fill/touch_to_fill_controller.h index 4172ebe..b0411ae9 100644 --- a/chrome/browser/touch_to_fill/touch_to_fill_controller.h +++ b/chrome/browser/touch_to_fill/touch_to_fill_controller.h
@@ -55,6 +55,10 @@ // The web page view containing the focused field. gfx::NativeView GetNativeView(); + // Called by the owner to dismiss the sheet without waiting for user + // interaction. + void Close(); + #if defined(UNIT_TEST) void set_view(std::unique_ptr<TouchToFillView> view) { view_ = std::move(view);
diff --git a/chrome/browser/touch_to_fill/touch_to_fill_controller_autofill_delegate.h b/chrome/browser/touch_to_fill/touch_to_fill_controller_autofill_delegate.h index a2c6d176..f55a02b 100644 --- a/chrome/browser/touch_to_fill/touch_to_fill_controller_autofill_delegate.h +++ b/chrome/browser/touch_to_fill/touch_to_fill_controller_autofill_delegate.h
@@ -5,6 +5,7 @@ #ifndef CHROME_BROWSER_TOUCH_TO_FILL_TOUCH_TO_FILL_CONTROLLER_AUTOFILL_DELEGATE_H_ #define CHROME_BROWSER_TOUCH_TO_FILL_TOUCH_TO_FILL_CONTROLLER_AUTOFILL_DELEGATE_H_ +#include "base/containers/span.h" #include "base/functional/callback_forward.h" #include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h"
diff --git a/chrome/browser/touch_to_fill/touch_to_fill_controller_autofill_delegate_unittest.cc b/chrome/browser/touch_to_fill/touch_to_fill_controller_autofill_delegate_unittest.cc index a4d5606..7e4f3d6 100644 --- a/chrome/browser/touch_to_fill/touch_to_fill_controller_autofill_delegate_unittest.cc +++ b/chrome/browser/touch_to_fill/touch_to_fill_controller_autofill_delegate_unittest.cc
@@ -74,11 +74,13 @@ }; struct MockPasswordManagerDriver : password_manager::StubPasswordManagerDriver { - MOCK_METHOD2(FillSuggestion, - void(const std::u16string&, const std::u16string&)); - MOCK_METHOD1(TouchToFillClosed, void(ShowVirtualKeyboard)); - MOCK_METHOD0(TriggerFormSubmission, void()); - MOCK_CONST_METHOD0(GetLastCommittedURL, const GURL&()); + MOCK_METHOD(void, + FillSuggestion, + (const std::u16string&, const std::u16string&), + (override)); + MOCK_METHOD(void, TouchToFillClosed, (ShowVirtualKeyboard), (override)); + MOCK_METHOD(void, TriggerFormSubmission, (), (override)); + MOCK_METHOD(const GURL&, GetLastCommittedURL, (), (const override)); }; struct MockTouchToFillView : TouchToFillView { @@ -90,8 +92,8 @@ base::span<const TouchToFillWebAuthnCredential>, bool), (override)); - MOCK_METHOD1(OnCredentialSelected, void(const UiCredential&)); - MOCK_METHOD0(OnDismiss, void()); + MOCK_METHOD(void, OnCredentialSelected, (const UiCredential&)); + MOCK_METHOD(void, OnDismiss, ()); }; struct MakeUiCredentialParams {
diff --git a/chrome/browser/touch_to_fill/touch_to_fill_controller_webauthn_delegate.cc b/chrome/browser/touch_to_fill/touch_to_fill_controller_webauthn_delegate.cc new file mode 100644 index 0000000..1afa1a92 --- /dev/null +++ b/chrome/browser/touch_to_fill/touch_to_fill_controller_webauthn_delegate.cc
@@ -0,0 +1,70 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/touch_to_fill/touch_to_fill_controller_webauthn_delegate.h" + +#include <vector> + +#include "base/base64.h" +#include "base/containers/span.h" +#include "base/functional/callback.h" +#include "base/notreached.h" +#include "chrome/browser/password_manager/android/password_manager_launcher_android.h" +#include "chrome/browser/touch_to_fill/touch_to_fill_webauthn_credential.h" +#include "chrome/browser/webauthn/android/webauthn_request_delegate_android.h" +#include "components/password_manager/core/browser/manage_passwords_referrer.h" +#include "components/password_manager/core/browser/origin_credential_store.h" +#include "content/public/browser/web_contents.h" +#include "url/gurl.h" + +TouchToFillControllerWebAuthnDelegate::TouchToFillControllerWebAuthnDelegate( + WebAuthnRequestDelegateAndroid* request_delegate) + : request_delegate_(request_delegate) {} + +TouchToFillControllerWebAuthnDelegate:: + ~TouchToFillControllerWebAuthnDelegate() = default; + +void TouchToFillControllerWebAuthnDelegate::OnShow( + base::span<const password_manager::UiCredential> credentials, + base::span<TouchToFillWebAuthnCredential> webauthn_credentials) {} + +void TouchToFillControllerWebAuthnDelegate::OnCredentialSelected( + const password_manager::UiCredential& credential, + base::OnceClosure action_complete) { + NOTIMPLEMENTED(); +} + +void TouchToFillControllerWebAuthnDelegate::OnWebAuthnCredentialSelected( + const TouchToFillWebAuthnCredential& credential, + base::OnceClosure action_complete) { + request_delegate_->OnWebAuthnAccountSelected( + *base::Base64Decode(credential.id().value())); + std::move(action_complete).Run(); +} + +void TouchToFillControllerWebAuthnDelegate::OnManagePasswordsSelected( + base::OnceClosure action_complete) { + password_manager_launcher::ShowPasswordSettings( + request_delegate_->web_contents(), + password_manager::ManagePasswordsReferrer::kTouchToFill); + std::move(action_complete).Run(); +} + +void TouchToFillControllerWebAuthnDelegate::OnDismiss( + base::OnceClosure action_complete) { + request_delegate_->OnWebAuthnAccountSelected(std::vector<uint8_t>()); + std::move(action_complete).Run(); +} + +const GURL& TouchToFillControllerWebAuthnDelegate::GetFrameUrl() { + return request_delegate_->web_contents()->GetLastCommittedURL(); +} + +bool TouchToFillControllerWebAuthnDelegate::ShouldTriggerSubmission() { + return false; +} + +gfx::NativeView TouchToFillControllerWebAuthnDelegate::GetNativeView() { + return request_delegate_->web_contents()->GetNativeView(); +}
diff --git a/chrome/browser/touch_to_fill/touch_to_fill_controller_webauthn_delegate.h b/chrome/browser/touch_to_fill/touch_to_fill_controller_webauthn_delegate.h new file mode 100644 index 0000000..fe15b2b --- /dev/null +++ b/chrome/browser/touch_to_fill/touch_to_fill_controller_webauthn_delegate.h
@@ -0,0 +1,59 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_TOUCH_TO_FILL_TOUCH_TO_FILL_CONTROLLER_WEBAUTHN_DELEGATE_H_ +#define CHROME_BROWSER_TOUCH_TO_FILL_TOUCH_TO_FILL_CONTROLLER_WEBAUTHN_DELEGATE_H_ + +#include "base/containers/span.h" +#include "base/functional/callback_forward.h" +#include "base/memory/raw_ptr.h" +#include "chrome/browser/touch_to_fill/touch_to_fill_controller_delegate.h" +#include "ui/gfx/native_widget_types.h" + +namespace password_manager { +class UiCredential; +} // namespace password_manager + +class WebAuthnRequestDelegateAndroid; +class TouchToFillWebAuthnCredential; + +// Derived TouchToFillController class specific for use with non-conditional +// WebAuthn sign-in. It does not integrate with the password manager because it +// is in response to an immediate WebAuthn invocation, without necessarily any +// forms or input fields being present on the page. +// This is owned by WebAuthnRequestDelegateAndroid. +class TouchToFillControllerWebAuthnDelegate + : public TouchToFillControllerDelegate { + public: + explicit TouchToFillControllerWebAuthnDelegate( + WebAuthnRequestDelegateAndroid* delegate); + + TouchToFillControllerWebAuthnDelegate( + const TouchToFillControllerWebAuthnDelegate&) = delete; + TouchToFillControllerWebAuthnDelegate& operator=( + const TouchToFillControllerWebAuthnDelegate&) = delete; + + ~TouchToFillControllerWebAuthnDelegate() override; + + // TouchToFillControllerDelegate: + void OnShow( + base::span<const password_manager::UiCredential> credentials, + base::span<TouchToFillWebAuthnCredential> webauthn_credentials) override; + void OnCredentialSelected(const password_manager::UiCredential& credential, + base::OnceClosure action_completed) override; + void OnWebAuthnCredentialSelected( + const TouchToFillWebAuthnCredential& credential, + base::OnceClosure action_completed) override; + void OnManagePasswordsSelected(base::OnceClosure action_completed) override; + void OnDismiss(base::OnceClosure action_completed) override; + const GURL& GetFrameUrl() override; + bool ShouldTriggerSubmission() override; + gfx::NativeView GetNativeView() override; + + private: + // Raw pointer to the request delegate that owns this. + raw_ptr<WebAuthnRequestDelegateAndroid> request_delegate_ = nullptr; +}; + +#endif // CHROME_BROWSER_TOUCH_TO_FILL_TOUCH_TO_FILL_CONTROLLER_WEBAUTHN_DELEGATE_H_
diff --git a/chrome/browser/touch_to_fill/touch_to_fill_controller_webauthn_delegate_unittest.cc b/chrome/browser/touch_to_fill/touch_to_fill_controller_webauthn_delegate_unittest.cc new file mode 100644 index 0000000..a927c7a --- /dev/null +++ b/chrome/browser/touch_to_fill/touch_to_fill_controller_webauthn_delegate_unittest.cc
@@ -0,0 +1,192 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/touch_to_fill/touch_to_fill_controller_webauthn_delegate.h" + +#include <memory> + +#include "base/base64.h" +#include "base/strings/utf_string_conversions.h" +#include "chrome/browser/touch_to_fill/touch_to_fill_controller.h" +#include "chrome/browser/touch_to_fill/touch_to_fill_webauthn_credential.h" +#include "chrome/browser/webauthn/android/webauthn_request_delegate_android.h" +#include "chrome/test/base/chrome_render_view_host_test_harness.h" +#include "components/password_manager/core/browser/origin_credential_store.h" +#include "content/public/browser/site_instance.h" +#include "content/public/browser/web_contents.h" +#include "content/public/test/web_contents_tester.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "url/gurl.h" + +namespace { + +using password_manager::UiCredential; +using IsOriginSecure = TouchToFillView::IsOriginSecure; +using ::testing::ElementsAreArray; +using ::testing::Eq; + +constexpr char kExampleCom[] = "https://example.com/"; +constexpr uint8_t kUserId1[] = {'1', '2', '3', '4'}; +constexpr uint8_t kUserId2[] = {'5', '6', '7', '8'}; +constexpr char kUserName1[] = "John.Doe@example.com"; +constexpr char kUserName2[] = "Jane.Doe@example.com"; + +std::vector<uint8_t> UserId1AsVector() { + return std::vector<uint8_t>(std::begin(kUserId1), std::end(kUserId1)); +} +std::vector<uint8_t> UserId2AsVector() { + return std::vector<uint8_t>(std::begin(kUserId2), std::end(kUserId2)); +} +std::string UserId1AsString() { + return base::Base64Encode(kUserId1); +} +std::string UserId2AsString() { + return base::Base64Encode(kUserId2); +} +std::u16string UserName1() { + return base::UTF8ToUTF16(std::string(kUserName1)); +} +std::u16string UserName2() { + return base::UTF8ToUTF16(std::string(kUserName2)); +} + +class MockWebAuthnRequestDelegateAndroid + : public WebAuthnRequestDelegateAndroid { + public: + explicit MockWebAuthnRequestDelegateAndroid( + content::WebContents* web_contents) + : WebAuthnRequestDelegateAndroid(web_contents) {} + ~MockWebAuthnRequestDelegateAndroid() override = default; + + MOCK_METHOD(void, + OnWebAuthnAccountSelected, + (const std::vector<uint8_t>& id), + (override)); +}; + +struct MockTouchToFillView : public TouchToFillView { + MOCK_METHOD(void, + Show, + (const GURL&, + IsOriginSecure, + base::span<const UiCredential>, + base::span<const TouchToFillWebAuthnCredential>, + bool), + (override)); + MOCK_METHOD(void, OnCredentialSelected, (const UiCredential&)); + MOCK_METHOD(void, OnDismiss, ()); +}; + +class TouchToFillControllerWebAuthnTest + : public ChromeRenderViewHostTestHarness { + protected: + TouchToFillControllerWebAuthnTest() = default; + ~TouchToFillControllerWebAuthnTest() override = default; + + void SetUp() override { + ChromeRenderViewHostTestHarness::SetUp(); + + auto mock_view = std::make_unique<MockTouchToFillView>(); + mock_view_ = mock_view.get(); + touch_to_fill_controller().set_view(std::move(mock_view)); + + web_contents_ = content::WebContentsTester::CreateTestWebContents( + profile(), content::SiteInstance::Create(profile())); + web_contents_tester()->NavigateAndCommit(GURL(kExampleCom)); + + request_delegate_ = std::make_unique<MockWebAuthnRequestDelegateAndroid>( + web_contents_.get()); + } + + void TearDown() override { + request_delegate_.reset(); + web_contents_.reset(); + ChromeRenderViewHostTestHarness::TearDown(); + } + + MockWebAuthnRequestDelegateAndroid& request_delegate() { + return *request_delegate_; + } + + MockTouchToFillView& view() { return *mock_view_; } + + TouchToFillController& touch_to_fill_controller() { + return touch_to_fill_controller_; + } + + content::WebContentsTester* web_contents_tester() { + return content::WebContentsTester::For(web_contents_.get()); + } + + std::unique_ptr<TouchToFillControllerWebAuthnDelegate> + MakeTouchToFillControllerDelegate() { + return std::make_unique<TouchToFillControllerWebAuthnDelegate>( + request_delegate_.get()); + } + + private: + std::unique_ptr<content::WebContents> web_contents_; + std::unique_ptr<MockWebAuthnRequestDelegateAndroid> request_delegate_; + TouchToFillController touch_to_fill_controller_; + raw_ptr<MockTouchToFillView> mock_view_ = nullptr; +}; + +TEST_F(TouchToFillControllerWebAuthnTest, ShowAndSelectCredential) { + TouchToFillWebAuthnCredential credential( + (TouchToFillWebAuthnCredential::Username(UserName1())), + TouchToFillWebAuthnCredential::BackendId(UserId1AsString())); + std::vector<TouchToFillWebAuthnCredential> credentials({credential}); + + EXPECT_CALL(view(), Show(Eq(GURL(kExampleCom)), IsOriginSecure(true), + ElementsAreArray(std::vector<UiCredential>()), + ElementsAreArray(credentials), + /*trigger_submission=*/false)); + touch_to_fill_controller().Show({}, credentials, + MakeTouchToFillControllerDelegate()); + + EXPECT_CALL(request_delegate(), OnWebAuthnAccountSelected(UserId1AsVector())); + touch_to_fill_controller().OnWebAuthnCredentialSelected(credentials[0]); +} + +TEST_F(TouchToFillControllerWebAuthnTest, ShowAndSelectWithMultipleCredential) { + TouchToFillWebAuthnCredential credential1( + (TouchToFillWebAuthnCredential::Username(UserName1())), + TouchToFillWebAuthnCredential::BackendId(UserId1AsString())); + TouchToFillWebAuthnCredential credential2( + (TouchToFillWebAuthnCredential::Username(UserName2())), + TouchToFillWebAuthnCredential::BackendId(UserId2AsString())); + std::vector<TouchToFillWebAuthnCredential> credentials( + {credential1, credential2}); + + EXPECT_CALL(view(), Show(Eq(GURL(kExampleCom)), IsOriginSecure(true), + ElementsAreArray(std::vector<UiCredential>()), + ElementsAreArray(credentials), + /*trigger_submission=*/false)); + touch_to_fill_controller().Show({}, credentials, + MakeTouchToFillControllerDelegate()); + + EXPECT_CALL(request_delegate(), OnWebAuthnAccountSelected(UserId2AsVector())); + touch_to_fill_controller().OnWebAuthnCredentialSelected(credentials[1]); +} + +TEST_F(TouchToFillControllerWebAuthnTest, ShowAndCancel) { + TouchToFillWebAuthnCredential credential( + (TouchToFillWebAuthnCredential::Username(UserName1())), + TouchToFillWebAuthnCredential::BackendId(UserId1AsString())); + std::vector<TouchToFillWebAuthnCredential> credentials({credential}); + + EXPECT_CALL(view(), Show(Eq(GURL(kExampleCom)), IsOriginSecure(true), + ElementsAreArray(std::vector<UiCredential>()), + ElementsAreArray(credentials), + /*trigger_submission=*/false)); + touch_to_fill_controller().Show({}, credentials, + MakeTouchToFillControllerDelegate()); + + EXPECT_CALL(request_delegate(), + OnWebAuthnAccountSelected(std::vector<uint8_t>())); + touch_to_fill_controller().Close(); +} + +} // namespace
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn index 978c1f3..19a1103 100644 --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn
@@ -37,7 +37,7 @@ "app_list/app_list_util.cc", "app_list/app_list_util.h", - # All other browser/ui/app_list files go under is_chromeos_ash below. + # All other app_list/ files go under is_chromeos_ash below. "autofill/autofill_bubble_handler.h", "autofill/autofill_keyboard_accessory_adapter.cc", "autofill/autofill_keyboard_accessory_adapter.h", @@ -1949,6 +1949,26 @@ assert(enable_supervised_users) assert(toolkit_views) sources += [ + "../ash/app_list/app_context_menu.cc", + "../ash/app_list/app_context_menu.h", + "../ash/app_list/app_context_menu_delegate.h", + "../ash/app_list/app_list_client_impl.cc", + "../ash/app_list/app_list_client_impl.h", + "../ash/app_list/app_list_controller_delegate.cc", + "../ash/app_list/app_list_controller_delegate.h", + "../ash/app_list/app_list_model_builder.cc", + "../ash/app_list/app_list_model_builder.h", + "../ash/app_list/app_list_model_updater.cc", + "../ash/app_list/app_list_model_updater.h", + "../ash/app_list/app_list_model_updater_observer.h", + "../ash/app_list/app_list_notifier_impl.cc", + "../ash/app_list/app_list_notifier_impl.h", + "../ash/app_list/app_list_sync_model_sanitizer.cc", + "../ash/app_list/app_list_sync_model_sanitizer.h", + "../ash/app_list/app_list_syncable_service.cc", + "../ash/app_list/app_list_syncable_service.h", + "../ash/app_list/app_list_syncable_service_factory.cc", + "../ash/app_list/app_list_syncable_service_factory.h", "../ash/app_list/app_service/app_service_app_icon_loader.cc", "../ash/app_list/app_service/app_service_app_icon_loader.h", "../ash/app_list/app_service/app_service_app_item.cc", @@ -1957,6 +1977,14 @@ "../ash/app_list/app_service/app_service_app_model_builder.h", "../ash/app_list/app_service/app_service_context_menu.cc", "../ash/app_list/app_service/app_service_context_menu.h", + "../ash/app_list/app_sync_ui_state.cc", + "../ash/app_list/app_sync_ui_state.h", + "../ash/app_list/app_sync_ui_state_factory.cc", + "../ash/app_list/app_sync_ui_state_factory.h", + "../ash/app_list/app_sync_ui_state_observer.cc", + "../ash/app_list/app_sync_ui_state_observer.h", + "../ash/app_list/app_sync_ui_state_watcher.cc", + "../ash/app_list/app_sync_ui_state_watcher.h", "../ash/app_list/arc/arc_app_dialog.h", "../ash/app_list/arc/arc_app_icon.cc", "../ash/app_list/arc/arc_app_icon.h", @@ -1999,8 +2027,18 @@ "../ash/app_list/arc/arc_vpn_provider_manager_factory.h", "../ash/app_list/arc/intent.cc", "../ash/app_list/arc/intent.h", + "../ash/app_list/chrome_app_list_item.cc", + "../ash/app_list/chrome_app_list_item.h", + "../ash/app_list/chrome_app_list_item_manager.cc", + "../ash/app_list/chrome_app_list_item_manager.h", + "../ash/app_list/chrome_app_list_model_updater.cc", + "../ash/app_list/chrome_app_list_model_updater.h", + "../ash/app_list/extension_app_utils.cc", + "../ash/app_list/extension_app_utils.h", "../ash/app_list/internal_app/internal_app_metadata.cc", "../ash/app_list/internal_app/internal_app_metadata.h", + "../ash/app_list/md_icon_normalizer.cc", + "../ash/app_list/md_icon_normalizer.h", "../ash/app_list/reorder/app_list_reorder_core.cc", "../ash/app_list/reorder/app_list_reorder_core.h", "../ash/app_list/reorder/app_list_reorder_delegate.h", @@ -2161,44 +2199,6 @@ "../ash/app_list/search/util/score_normalizer.cc", "../ash/app_list/search/util/score_normalizer.h", "app_icon_loader_delegate.h", - "app_list/app_context_menu.cc", - "app_list/app_context_menu.h", - "app_list/app_context_menu_delegate.h", - "app_list/app_list_client_impl.cc", - "app_list/app_list_client_impl.h", - "app_list/app_list_controller_delegate.cc", - "app_list/app_list_controller_delegate.h", - "app_list/app_list_model_builder.cc", - "app_list/app_list_model_builder.h", - "app_list/app_list_model_updater.cc", - "app_list/app_list_model_updater.h", - "app_list/app_list_model_updater_observer.h", - "app_list/app_list_notifier_impl.cc", - "app_list/app_list_notifier_impl.h", - "app_list/app_list_sync_model_sanitizer.cc", - "app_list/app_list_sync_model_sanitizer.h", - "app_list/app_list_syncable_service.cc", - "app_list/app_list_syncable_service.h", - "app_list/app_list_syncable_service_factory.cc", - "app_list/app_list_syncable_service_factory.h", - "app_list/app_sync_ui_state.cc", - "app_list/app_sync_ui_state.h", - "app_list/app_sync_ui_state_factory.cc", - "app_list/app_sync_ui_state_factory.h", - "app_list/app_sync_ui_state_observer.cc", - "app_list/app_sync_ui_state_observer.h", - "app_list/app_sync_ui_state_watcher.cc", - "app_list/app_sync_ui_state_watcher.h", - "app_list/chrome_app_list_item.cc", - "app_list/chrome_app_list_item.h", - "app_list/chrome_app_list_item_manager.cc", - "app_list/chrome_app_list_item_manager.h", - "app_list/chrome_app_list_model_updater.cc", - "app_list/chrome_app_list_model_updater.h", - "app_list/extension_app_utils.cc", - "app_list/extension_app_utils.h", - "app_list/md_icon_normalizer.cc", - "app_list/md_icon_normalizer.h", "ash/accessibility/accessibility_controller_client.cc", "ash/accessibility/accessibility_controller_client.h", "ash/ambient/ambient_client_impl.cc",
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb index eb4ec446..8143ae11 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb
@@ -760,6 +760,7 @@ <translation id="510275257476243843">১ঘণ্টা বাকী আছে</translation> <translation id="5115811374190515607"><ph name="PRODUCT_NAME" />লৈ</translation> <translation id="5118713593561876160">আগ্ৰহ</translation> +<translation id="5122378528687922675">আপোনাক সহায়ৰ প্ৰয়োজন হ’লে আপোনাৰ অভিভাৱক (<ph name="PARENT_NAME_1" /> অথবা <ph name="PARENT_NAME_2" />)ক কওক</translation> <translation id="5123685120097942451">ইনক’গনিট’ টেব</translation> <translation id="5126510351761255129">আপোনাৰ কাৰ্ডখন সত্যাপন কৰক</translation> <translation id="5132942445612118989">আপোনাৰ পাছৱর্ড, ইতিহাস আৰু অধিক সকলো ডিভাইচতে ছিংক কৰক</translation> @@ -1331,6 +1332,7 @@ <translation id="8084285576995584326">আপোনাৰ Google একাউণ্টৰ ডেটা নিয়ন্ত্ৰণ কৰক</translation> <translation id="808747664143081553">ডিভাইচৰ সৈতে সংযোগ কৰা হ’ল</translation> <translation id="8088176524274673045">আশে-পাশে থকা লোকসকলৰ সৈতে শ্বেয়াৰ কৰিবলৈ তেওঁলোকক এই কিউআৰ ক’ডটো স্কেন কৰিবলৈ দিয়ক</translation> +<translation id="8090732854597034573">আপোনাক সহায়ৰ প্ৰয়োজন হ’লে আপোনাৰ অভিভাৱকক কওক</translation> <translation id="8100969750121413114">Chrome ব্যক্তিগতকৰণ কৰিবলৈ ছাইন ইন কৰক</translation> <translation id="8103578431304235997">ইনক’গনিট’ টেব</translation> <translation id="8105613260829665809">অব্যাহত ৰাখি, আপুনি <ph name="BEGIN_TOS_LINK" />সেৱাৰ চৰ্তাৱলী<ph name="END_TOS_LINK" />ত সন্মত হৈছে।\nএপ্টো উন্নত কৰাত সহায় কৰিবলৈ, Chromeএ Googleলৈ ব্যৱহাৰ আৰু ক্ৰেশ্ব সম্পৰ্কীয় ডেটা পঠিয়ায়। <ph name="BEGIN_UMA_LINK" />পৰিচালনা কৰক<ph name="END_UMA_LINK" /></translation> @@ -1339,6 +1341,7 @@ <translation id="8109613176066109935">আপোনাৰ বুকমাৰ্কসমূহ নিজৰ সকলো ডিভাইচতে পাবলৈ ছিংক অন কৰক</translation> <translation id="8110024788458304985">Chromeৰ সুবিধাসমূহ আৰু কাৰ্যদক্ষতা উন্নত কৰাত সহায় কৰক</translation> <translation id="8110087112193408731">আপুনি Chromeত কৰা কাৰ্যকলাপ ডিজিটেল ৱেলবিইঙ-ত দেখুৱাবনে?</translation> +<translation id="8118117428362942925">আপোনাক সহায়ৰ প্ৰয়োজন হ’লে আপোনাৰ অভিভাৱক (<ph name="PARENT_NAME" />)ক কওক</translation> <translation id="8127542551745560481">গৃহপৃষ্ঠা সম্পাদনা কৰক</translation> <translation id="8130309322784422030">আপুনি ষ্ট’ৰ কৰি থোৱা ছাইন ইন কৰাৰ তথ্যখিনিৰ ম্যাদ উকলিব পাৰে</translation> <translation id="813082847718468539">ছাইটৰ তথ্য চাওক</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb index 1ca1c91..09afc25 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb
@@ -760,6 +760,7 @@ <translation id="510275257476243843">Остава 1 час</translation> <translation id="5115811374190515607">до <ph name="PRODUCT_NAME" /></translation> <translation id="5118713593561876160">Интереси</translation> +<translation id="5122378528687922675">Ако се нуждаете от помощ, попитайте родителя си (<ph name="PARENT_NAME_1" /> или <ph name="PARENT_NAME_2" />)</translation> <translation id="5123685120097942451">Раздел в режим „инкогнито“</translation> <translation id="5126510351761255129">Потвърдете картата</translation> <translation id="5132942445612118989">Синхронизиране на паролите, историята ви и др. на всички устройства</translation> @@ -1331,6 +1332,7 @@ <translation id="8084285576995584326">Управление на данните в профила ви в Google</translation> <translation id="808747664143081553">Установена е връзка с устройството</translation> <translation id="8088176524274673045">За да споделите с хората в близост, те трябва да сканират този QR код</translation> +<translation id="8090732854597034573">Ако се нуждаете от помощ, попитайте родителя си</translation> <translation id="8100969750121413114">Влезте в профила си, за да персонализирате Chrome според вкуса си</translation> <translation id="8103578431304235997">Раздел в режим „инкогнито“</translation> <translation id="8105613260829665809">Продължавайки, приемате <ph name="BEGIN_TOS_LINK" />Общите условия<ph name="END_TOS_LINK" />.\nС цел подобряване на приложението Chrome изпраща до Google данни за употребата и сривовете. <ph name="BEGIN_UMA_LINK" />Управление<ph name="END_UMA_LINK" /></translation> @@ -1339,6 +1341,7 @@ <translation id="8109613176066109935">Включете синхронизирането, за да получите отметките си на всичките си устройства</translation> <translation id="8110024788458304985">Помощ за подобряването на функциите и ефективността на Chrome</translation> <translation id="8110087112193408731">Искате ли активността ви в Chrome да се показва в „Дигитално благополучие“?</translation> +<translation id="8118117428362942925">Ако се нуждаете от помощ, попитайте родителя си (<ph name="PARENT_NAME" />)</translation> <translation id="8127542551745560481">Редактиране на началната страница</translation> <translation id="8130309322784422030">Съхранената ви информация за вход може да не е актуална</translation> <translation id="813082847718468539">Преглед на информацията за сайта</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb index 42443ef8..08c75bbf 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb
@@ -760,6 +760,7 @@ <translation id="510275257476243843">1 time tilbage</translation> <translation id="5115811374190515607">til <ph name="PRODUCT_NAME" /></translation> <translation id="5118713593561876160">Interesser</translation> +<translation id="5122378528687922675">Spørg en af dine forældre, (<ph name="PARENT_NAME_1" /> eller <ph name="PARENT_NAME_2" />), hvis du har brug for hjælp</translation> <translation id="5123685120097942451">Inkognitofane</translation> <translation id="5126510351761255129">Bekræft dit kort</translation> <translation id="5132942445612118989">Synkroniser dine adgangskoder, din historik og meget mere på alle enheder</translation> @@ -1331,6 +1332,7 @@ <translation id="8084285576995584326">Administrer dine Google-kontodata</translation> <translation id="808747664143081553">Der er oprettet forbindelse til enheden</translation> <translation id="8088176524274673045">Du kan dele med brugere i nærheden ved at få dem til at scanne denne QR-kode</translation> +<translation id="8090732854597034573">Spørg din forælder, hvis du har brug for hjælp</translation> <translation id="8100969750121413114">Log ind for at tilpasse Chrome</translation> <translation id="8103578431304235997">Inkognitofane</translation> <translation id="8105613260829665809">Ved at fortsætte accepterer du <ph name="BEGIN_TOS_LINK" />servicevilkårene<ph name="END_TOS_LINK" />.\nChrome sender data om brug og nedbrud til Google for at hjælpe med at forbedre appen. <ph name="BEGIN_UMA_LINK" />Administrer<ph name="END_UMA_LINK" /></translation> @@ -1339,6 +1341,7 @@ <translation id="8109613176066109935">Aktivér synkronisering for at få vist dine bogmærker på alle dine enheder</translation> <translation id="8110024788458304985">Vær med til at forbedre funktioner og ydeevne i Chrome</translation> <translation id="8110087112193408731">Vil du se din Chrome-aktivitet i Digital balance?</translation> +<translation id="8118117428362942925">Spørg din forælder (<ph name="PARENT_NAME" />), hvis du har brug for hjælp</translation> <translation id="8127542551745560481">Rediger startside</translation> <translation id="8130309322784422030">Dine gemte loginoplysninger kan være forældede</translation> <translation id="813082847718468539">Se websiteoplysninger</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb index 5c24524..9aa8fec5 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb
@@ -760,6 +760,7 @@ <translation id="510275257476243843">1 Stunde übrig</translation> <translation id="5115811374190515607">zu <ph name="PRODUCT_NAME" /></translation> <translation id="5118713593561876160">Interessen</translation> +<translation id="5122378528687922675">Wenn du Hilfe benötigst, sprich mit deinen Eltern (<ph name="PARENT_NAME_1" /> oder <ph name="PARENT_NAME_2" />)</translation> <translation id="5123685120097942451">Inkognitotab</translation> <translation id="5126510351761255129">Karte bestätigen</translation> <translation id="5132942445612118989">Passwörter, Verlauf und mehr auf allen Geräten synchronisieren</translation> @@ -1331,6 +1332,7 @@ <translation id="8084285576995584326">Google-Kontodaten verwalten</translation> <translation id="808747664143081553">Mit Gerät verbunden</translation> <translation id="8088176524274673045">Um diesen Inhalt mit Personen in deiner Nähe zu teilen, bitte sie, den QR-Code zu scannen</translation> +<translation id="8090732854597034573">Wenn du Hilfe brauchst, sprich mit deinen Eltern</translation> <translation id="8100969750121413114">Anmelden, um Chrome zu personalisieren</translation> <translation id="8103578431304235997">Inkognitotab</translation> <translation id="8105613260829665809">Wenn du fortfährst, akzeptierst du damit die <ph name="BEGIN_TOS_LINK" />Nutzungsbedingungen<ph name="END_TOS_LINK" />.\nChrome sendet Nutzungsstatistiken und Absturzberichte an Google, damit wir die App verbessern können. <ph name="BEGIN_UMA_LINK" />Verwalten<ph name="END_UMA_LINK" /></translation> @@ -1339,6 +1341,7 @@ <translation id="8109613176066109935">Aktiviere die Synchronisierung, um deine Lesezeichen auf allen deinen Geräten zu sehen</translation> <translation id="8110024788458304985">Helfen, die Funktionen und die Leistung von Chrome zu verbessern</translation> <translation id="8110087112193408731">Deine Chrome-Aktivitäten in Digital Wellbeing anzeigen?</translation> +<translation id="8118117428362942925">Wenn du Hilfe brauchst, sprich mit deinem Elternteil (<ph name="PARENT_NAME" />)</translation> <translation id="8127542551745560481">Startseite bearbeiten</translation> <translation id="8130309322784422030">Deine gespeicherten Anmeldedaten sind möglicherweise veraltet</translation> <translation id="813082847718468539">Website-Informationen anzeigen</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb index 310f2b8..dece141 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
@@ -760,6 +760,7 @@ <translation id="510275257476243843">1 hour left</translation> <translation id="5115811374190515607">to <ph name="PRODUCT_NAME" /></translation> <translation id="5118713593561876160">Interests</translation> +<translation id="5122378528687922675">If you need help, ask your parent (<ph name="PARENT_NAME_1" /> or <ph name="PARENT_NAME_2" />)</translation> <translation id="5123685120097942451">Incognito tab</translation> <translation id="5126510351761255129">Verify your card</translation> <translation id="5132942445612118989">Sync your passwords, history and more on all devices</translation> @@ -1331,6 +1332,7 @@ <translation id="8084285576995584326">Control your Google Account data</translation> <translation id="808747664143081553">Connected to device</translation> <translation id="8088176524274673045">To share with people nearby, let them scan this QR code</translation> +<translation id="8090732854597034573">If you need help, ask your parent</translation> <translation id="8100969750121413114">Sign in to make Chrome your own</translation> <translation id="8103578431304235997">Incognito Tab</translation> <translation id="8105613260829665809">By continuing, you agree to the <ph name="BEGIN_TOS_LINK" />Terms of Service<ph name="END_TOS_LINK" />.\nTo help improve the app, Chrome sends usage and crash data to Google. <ph name="BEGIN_UMA_LINK" />Manage<ph name="END_UMA_LINK" /></translation> @@ -1339,6 +1341,7 @@ <translation id="8109613176066109935">To get your bookmarks on all your devices, turn on sync</translation> <translation id="8110024788458304985">Help improve Chrome\u2019s features and performance</translation> <translation id="8110087112193408731">Show your Chrome activity in Digital Wellbeing?</translation> +<translation id="8118117428362942925">If you need help, ask your parent (<ph name="PARENT_NAME" />)</translation> <translation id="8127542551745560481">Edit homepage</translation> <translation id="8130309322784422030">Your stored sign-in info might be out of date</translation> <translation id="813082847718468539">View site information</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb index c521ff0f..da6f069 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb
@@ -760,6 +760,7 @@ <translation id="510275257476243843">1 કલાક બાકી</translation> <translation id="5115811374190515607"><ph name="PRODUCT_NAME" /> પર</translation> <translation id="5118713593561876160">રુચિઓ</translation> +<translation id="5122378528687922675">જો તમને સહાયની કોઈ જરૂર હોય, તો માતાપિતા (<ph name="PARENT_NAME_1" /> કે <ph name="PARENT_NAME_2" />)ને પૂછો</translation> <translation id="5123685120097942451">છૂપા મોડમાંની ટૅબ</translation> <translation id="5126510351761255129">તમારું કાર્ડ ચકાસો</translation> <translation id="5132942445612118989">બધા ડિવાઇસ પર તમારા પાસવર્ડ, ઇતિહાસ અને વધુ સિંક કરો</translation> @@ -1331,6 +1332,7 @@ <translation id="8084285576995584326">તમારા Google એકાઉન્ટનો ડેટા નિયંત્રિત કરો</translation> <translation id="808747664143081553">ડિવાઇસ સાથે કનેક્ટ કરેલો છે</translation> <translation id="8088176524274673045">નજીકના લોકો સાથે શેર કરવા માટે, તેમને આ QR કોડ સ્કૅન કરવા દો</translation> +<translation id="8090732854597034573">જો તમને સહાયની કોઈ જરૂર હોય, તો માતાપિતાને પૂછો</translation> <translation id="8100969750121413114">Chromeને તમારું પોતાનું બનાવવા માટે, સાઇન ઇન કરો</translation> <translation id="8103578431304235997">છૂપું ટૅબ</translation> <translation id="8105613260829665809">આગળ વધીને, તમે <ph name="BEGIN_TOS_LINK" />સેવાની શરતો<ph name="END_TOS_LINK" /> સાથે સંમત થાઓ છો.\nઍપને બહેતર બનાવવામાં સહાય કરવા માટે, Chrome વપરાશ અને ક્રૅશ થવા સંબંધિત ડેટા Googleને મોકલે છે. <ph name="BEGIN_UMA_LINK" />મેનેજ કરો<ph name="END_UMA_LINK" /></translation> @@ -1339,6 +1341,7 @@ <translation id="8109613176066109935">તમારા બધા ડિવાઇસ પર તમારા બુકમાર્ક મેળવવા માટે, સિંક કરવાનું ચાલુ કરો</translation> <translation id="8110024788458304985">Chromeની સુવિધાઓ અને કાર્યપ્રદર્શનને સુધારવામાં સહાય કરો</translation> <translation id="8110087112193408731">શું તમારી Chromeની પ્રવૃત્તિ ડિજિટલ લાઇફસ્ટાઇલમાં બતાવીએ?</translation> +<translation id="8118117428362942925">જો તમને સહાયની કોઈ જરૂર હોય, તો માતાપિતા (<ph name="PARENT_NAME" />)ને પૂછો</translation> <translation id="8127542551745560481">હોમપેજમાં ફેરફાર કરો</translation> <translation id="8130309322784422030">તમારી સ્ટોર કરેલી સાઇન ઇનની માહિતી જૂની હોઈ શકે છે</translation> <translation id="813082847718468539">સ્થાન માહિતી જુઓ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb index 865f1e56..d549b1fe0 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb
@@ -749,6 +749,7 @@ <translation id="510275257476243843">1 घंटा शेष</translation> <translation id="5115811374190515607"><ph name="PRODUCT_NAME" /> में ले जाया गया</translation> <translation id="5118713593561876160">रुचि</translation> +<translation id="5122378528687922675">अगर आपको मदद चाहिए, तो अपने माता-पिता (<ph name="PARENT_NAME_1" /> या <ph name="PARENT_NAME_2" />) से पूछें</translation> <translation id="5123685120097942451">गुप्त टैब</translation> <translation id="5126510351761255129">कार्ड की पुष्टि करें</translation> <translation id="5132942445612118989">सभी डिवाइस पर अपने पासवर्ड, इतिहास और दूसरी कई चीज़ें सिंक करें</translation> @@ -1319,6 +1320,7 @@ <translation id="8084285576995584326">तय करें कि आपके Google खाते का डेटा कैसे इस्तेमाल किया जा सकता है</translation> <translation id="808747664143081553">डिवाइस से कनेक्ट किया गया</translation> <translation id="8088176524274673045">आस-पास के लोगों से शेयर करने के लिए, उन्हें यह क्यूआर कोड स्कैन करने दें</translation> +<translation id="8090732854597034573">अगर आपको मदद चाहिए, तो अपने माता-पिता से पूछें</translation> <translation id="8100969750121413114">साइन इन करके, Chrome को मनमुताबिक बनाएं</translation> <translation id="8103578431304235997">गुप्त टैब</translation> <translation id="8105613260829665809">जारी रखने का मतलब है कि आप <ph name="BEGIN_TOS_LINK" />सेवा की शर्तों<ph name="END_TOS_LINK" /> से सहमत हैं.\nऐप्लिकेशन को बेहतर बनाने के लिए Chrome, ऐप्लिकेशन के इस्तेमाल और क्रैश होने से जुड़ा डेटा Google को भेजता है. <ph name="BEGIN_UMA_LINK" />मैनेज करें<ph name="END_UMA_LINK" /></translation> @@ -1327,6 +1329,7 @@ <translation id="8109613176066109935">अपने सभी डिवाइस पर अपने बुकमार्क पाने के लिए, 'सिंक करें' को चालू करें</translation> <translation id="8110024788458304985">Chrome की सुविधाओं और परफ़ॉर्मेंस को बेहतर बनाने में मदद करें</translation> <translation id="8110087112193408731">'डिजिटल वेलबीइंग' में अपनी Chrome गतिविधि दिखाना चाहते हैं?</translation> +<translation id="8118117428362942925">अगर आपको मदद चाहिए, तो अपने माता-पिता (<ph name="PARENT_NAME" />) से पूछें</translation> <translation id="8127542551745560481">होम पेज में बदलाव करें</translation> <translation id="8130309322784422030">हो सकता है कि आपकी सेव की गई, साइन इन से जुड़ी जानकारी पुरानी हो</translation> <translation id="813082847718468539">साइट जानकारी देखें</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb index 004e326c..01ab91d 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb
@@ -760,6 +760,7 @@ <translation id="510275257476243843">1 jam lagi</translation> <translation id="5115811374190515607">ke <ph name="PRODUCT_NAME" /></translation> <translation id="5118713593561876160">Minat</translation> +<translation id="5122378528687922675">Jika kamu perlu bantuan, minta kepada orang tuamu (<ph name="PARENT_NAME_1" /> atau <ph name="PARENT_NAME_2" />)</translation> <translation id="5123685120097942451">Tab samaran</translation> <translation id="5126510351761255129">Verifikasi kartu</translation> <translation id="5132942445612118989">Sinkronkan sandi, histori, dan lainnya di semua perangkat</translation> @@ -1331,6 +1332,7 @@ <translation id="8084285576995584326">Mengontrol data Akun Google Anda</translation> <translation id="808747664143081553">Terhubung ke perangkat</translation> <translation id="8088176524274673045">Untuk berbagi dengan orang-orang di sekitar, izinkan mereka memindai Kode QR ini</translation> +<translation id="8090732854597034573">Jika kamu perlu bantuan, minta kepada orang tuamu</translation> <translation id="8100969750121413114">Login untuk mempersonalisasi Chrome Anda</translation> <translation id="8103578431304235997">Tab Samaran</translation> <translation id="8105613260829665809">Dengan melanjutkan, Anda menyetujui <ph name="BEGIN_TOS_LINK" />Persyaratan Layanan<ph name="END_TOS_LINK" />.\nUntuk membantu meningkatkan kualitas aplikasi, Chrome akan mengirimkan data penggunaan dan error ke Google. <ph name="BEGIN_UMA_LINK" />Kelola<ph name="END_UMA_LINK" /></translation> @@ -1339,6 +1341,7 @@ <translation id="8109613176066109935">Untuk dapat mengakses bookmark Anda di semua perangkat, aktifkan sinkronisasi</translation> <translation id="8110024788458304985">Bantu tingkatkan fitur dan performa Chrome</translation> <translation id="8110087112193408731">Tampilkan aktivitas Chrome Anda di Kesehatan Digital?</translation> +<translation id="8118117428362942925">Jika kamu perlu bantuan, minta kepada orang tuamu (<ph name="PARENT_NAME" />)</translation> <translation id="8127542551745560481">Edit halaman beranda</translation> <translation id="8130309322784422030">Info login tersimpan Anda mungkin sudah tidak berlaku</translation> <translation id="813082847718468539">Lihat informasi situs</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb index 65b9303..e5befd6 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb
@@ -760,6 +760,7 @@ <translation id="510275257476243843">1시간 남음</translation> <translation id="5115811374190515607">이동 위치: <ph name="PRODUCT_NAME" /></translation> <translation id="5118713593561876160">관심분야</translation> +<translation id="5122378528687922675">도움이 필요하면 부모님(<ph name="PARENT_NAME_1" /> 또는 <ph name="PARENT_NAME_2" />)께 요청하세요</translation> <translation id="5123685120097942451">시크릿 탭</translation> <translation id="5126510351761255129">카드 인증</translation> <translation id="5132942445612118989">모든 기기의 비밀번호, 방문 기록 등 동기화</translation> @@ -1331,6 +1332,7 @@ <translation id="8084285576995584326">Google 계정 데이터 관리</translation> <translation id="808747664143081553">기기에 연결되었습니다.</translation> <translation id="8088176524274673045">근처에 있는 사람과 공유하려면 상대방이 QR 코드를 스캔하도록 하세요.</translation> +<translation id="8090732854597034573">도움이 필요하면 부모님께 요청하세요</translation> <translation id="8100969750121413114">로그인하여 Chrome을 맞춤설정하세요</translation> <translation id="8103578431304235997">시크릿 탭</translation> <translation id="8105613260829665809">계속하면 <ph name="BEGIN_TOS_LINK" />서비스 약관<ph name="END_TOS_LINK" />에 동의하는 것으로 간주됩니다.\n앱 개선을 위해 Chrome에서 사용 및 비정상 종료 데이터를 Google에 전송합니다. <ph name="BEGIN_UMA_LINK" />관리<ph name="END_UMA_LINK" /></translation> @@ -1339,6 +1341,7 @@ <translation id="8109613176066109935">어느 기기에서나 내 북마크를 사용하려면 동기화를 사용 설정하세요.</translation> <translation id="8110024788458304985">Chrome의 기능 및 성능 개선에 참여</translation> <translation id="8110087112193408731">디지털 웰빙에서 Chrome 활동을 표시할까요?</translation> +<translation id="8118117428362942925">도움이 필요하면 부모님(<ph name="PARENT_NAME" />)께 요청하세요</translation> <translation id="8127542551745560481">홈페이지 수정</translation> <translation id="8130309322784422030">저장된 로그인 정보가 오래되었을 수 있습니다</translation> <translation id="813082847718468539">사이트 정보 보기</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb index bce3cb9..d07bdd8 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb
@@ -760,6 +760,7 @@ <translation id="510275257476243843">ຍັງເຫຼືອ 1 ຊົ່ວໂມງ</translation> <translation id="5115811374190515607">ຫາ <ph name="PRODUCT_NAME" /></translation> <translation id="5118713593561876160">ຄວາມສົນໃຈ</translation> +<translation id="5122378528687922675">ກະລຸນາຂໍຄວາມຊ່ວຍເຫຼືອຈາກຜູ້ປົກຄອງ (<ph name="PARENT_NAME_1" /> ຫຼື <ph name="PARENT_NAME_2" />) ຂອງທ່ານ, ຫາກທ່ານຕ້ອງການ</translation> <translation id="5123685120097942451">ແຖບທີ່ບໍ່ເຜີຍຕົວຕົນ</translation> <translation id="5126510351761255129">ຢືນຢັນບັດຂອງທ່ານ</translation> <translation id="5132942445612118989">ຊິ້ງຂໍ້ມູນລະຫັດຜ່ານ, ປະຫວັດຂອງທ່ານ ແລະ ອື່ນໆອີກຢູ່ໃນທຸກອຸປະກອນ</translation> @@ -1331,6 +1332,7 @@ <translation id="8084285576995584326">ຄວບຄຸມຂໍ້ມູນບັນຊີ Google ຂອງທ່ານ</translation> <translation id="808747664143081553">ເຊື່ອມຕໍ່ກັບອຸປະກອນແລ້ວ</translation> <translation id="8088176524274673045">ເພື່ອແບ່ງປັນກັບຄົນທີ່ຢູ່ໃກ້ຄຽງ, ໃຫ້ເຂົາເຈົ້າສະແກນລະຫັດ QR ນີ້ກ່ອນ</translation> +<translation id="8090732854597034573">ກະລຸນາຂໍຄວາມຊ່ວຍເຫຼືອຈາກຜູ້ປົກຄອງຂອງທ່ານ, ຫາກທ່ານຕ້ອງການ</translation> <translation id="8100969750121413114">ເຂົ້າສູ່ລະບົບເພື່ອປັບແຕ່ງ Chrome ໃນແບບຂອງທ່ານເອງ</translation> <translation id="8103578431304235997">ແຖບທີ່ Incognito</translation> <translation id="8105613260829665809">ໂດຍການສືບຕໍ່, ແມ່ນຖືວ່າທ່ານຍອມຮັບ <ph name="BEGIN_TOS_LINK" />ຂໍ້ກຳນົດບໍລິການ<ph name="END_TOS_LINK" />.\nເພື່ອຊ່ວຍປັບປຸງແອັບ, Chrome ຈະສົ່ງຂໍ້ມູນການນຳໃຊ້ ແລະ ການຫຼົ້ມໄປໃຫ້ Google. <ph name="BEGIN_UMA_LINK" />ຈັດການ<ph name="END_UMA_LINK" /></translation> @@ -1339,6 +1341,7 @@ <translation id="8109613176066109935">ເພື່ອໃຊ້ບຸກມາກຂອງທ່ານຢູ່ໃນທຸກອຸປະກອນຂອງທ່ານ, ກະລຸນາເປີດການຊິ້ງຂໍ້ມູນກ່ອນ</translation> <translation id="8110024788458304985">ຊ່ວຍປັບປຸງຄຸນສົມບັດ ແລະ ປະສິດທິພາບຂອງ Chrome</translation> <translation id="8110087112193408731">ສະແດງການເຄື່ອນໄຫວໃນ Chrome ຂອງທ່ານຢູ່ໃນ Digital Wellbeing ບໍ?</translation> +<translation id="8118117428362942925">ກະລຸນາຂໍຄວາມຊ່ວຍເຫຼືອຈາກຜູ້ປົກຄອງ (<ph name="PARENT_NAME" />) ຂອງທ່ານ, ຫາກທ່ານຕ້ອງການ</translation> <translation id="8127542551745560481">ແກ້ໄຂໜ້າຫຼັກ</translation> <translation id="8130309322784422030">ຂໍ້ມູນການເຂົ້າສູ່ລະບົບທີ່ທ່ານຈັດເກັບໄວ້ອາດເກົ່າແລ້ວ</translation> <translation id="813082847718468539">ເບິ່ງຂໍ້ມູນເວັບໄຊທ໌</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb index f69e3e0..ec47c395 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
@@ -760,6 +760,7 @@ <translation id="510275257476243843">Še 1 h</translation> <translation id="5115811374190515607">za <ph name="PRODUCT_NAME" /></translation> <translation id="5118713593561876160">Zanimanja</translation> +<translation id="5122378528687922675">Če potrebuješ pomoč, se obrni na starša (<ph name="PARENT_NAME_1" /> ali <ph name="PARENT_NAME_2" />).</translation> <translation id="5123685120097942451">Anonimni zavihek</translation> <translation id="5126510351761255129">Preverjanje kartice</translation> <translation id="5132942445612118989">Sinhronizirajte gesla, zgodovino in drugo v vseh napravah</translation> @@ -1331,6 +1332,7 @@ <translation id="8084285576995584326">Nadziranje podatkov v računu Google.</translation> <translation id="808747664143081553">Povezava z napravo je vzpostavljena.</translation> <translation id="8088176524274673045">Če želite deliti z osebami v bližini, naj optično preberejo to kodo QR.</translation> +<translation id="8090732854597034573">Če potrebuješ pomoč, se obrni na starša.</translation> <translation id="8100969750121413114">Prijavite se, če želite prilagoditi Chrome</translation> <translation id="8103578431304235997">Anonimni zavihek</translation> <translation id="8105613260829665809">Če nadaljujete, se strinjate s <ph name="BEGIN_TOS_LINK" />pogoji storitve<ph name="END_TOS_LINK" />.\nZaradi izboljšanja aplikacije Chrome Googlu pošlje podatke o uporabi in zrušitvah. <ph name="BEGIN_UMA_LINK" />Upravljanje<ph name="END_UMA_LINK" /></translation> @@ -1339,6 +1341,7 @@ <translation id="8109613176066109935">Če želite dostopati do zaznamkov v vseh napravah, vklopite sinhronizacijo</translation> <translation id="8110024788458304985">Pomagajte izboljšati Chromove funkcije in njegovo delovanje</translation> <translation id="8110087112193408731">Ali želite svojo dejavnost v Chromu prikazati v Digitalni dobrobiti?</translation> +<translation id="8118117428362942925">Če potrebuješ pomoč, se obrni na starša (<ph name="PARENT_NAME" />).</translation> <translation id="8127542551745560481">Urejanje domače strani</translation> <translation id="8130309322784422030">Shranjeni podatki za prijavo so morda zastareli.</translation> <translation id="813082847718468539">Ogled podatkov o mestu</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb index 1650eae9..bf46346 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr-Latn.xtb
@@ -330,7 +330,7 @@ <translation id="2839327205551510876">Opozvali ste praćenje sajta <ph name="SITE_NAME" /></translation> <translation id="2840810876587895427">{TAB_COUNT,plural, =1{<ph name="TAB_COUNT_ONE" /> kartica bez arhiviranja će biti zatvorena}one{<ph name="TAB_COUNT_MANY" /> kartica bez arhiviranja će biti zatvorena}few{<ph name="TAB_COUNT_MANY" /> kartice bez arhiviranja će biti zatvorene}other{<ph name="TAB_COUNT_MANY" /> kartica bez arhiviranja će biti zatvoreno}}</translation> <translation id="2841216154655874070">{NUM_DAYS,plural, =1{Provereno pre 1 dan}one{Provereno pre # dan}few{Provereno pre # dana}other{Provereno pre # dana}}</translation> -<translation id="2842985007712546952">Nadređeni direktorijum</translation> +<translation id="2842985007712546952">Nadređeni folder</translation> <translation id="2856503607207334158">Prijavljivanje nije uspelo</translation> <translation id="2860954141821109167">Uverite se da je neka aplikacija za telefon omogućena na ovom uređaju</translation> <translation id="2861923151411510142">Neke Chrome funkcije više neće biti dostupne</translation> @@ -522,7 +522,7 @@ <translation id="3861633093716975811">Popularni video snimci</translation> <translation id="3874520961715512166">Sajt je uklonjen</translation> <translation id="3892148308691398805">Kopiraj tekst</translation> -<translation id="3894427358181296146">Dodajte direktorijum</translation> +<translation id="3894427358181296146">Dodajte folder</translation> <translation id="3899682235662194879">Zatvori sve kartice bez arhiviranja</translation> <translation id="3908308510347173149">Ažurirajte <ph name="PRODUCT_NAME" /></translation> <translation id="3912508018559818924">Traže se najbolji podaci sa veba…</translation> @@ -638,7 +638,7 @@ Google nalog možda ima druge oblike istorije pregledanja, poput pretraga i aktivnosti u drugim Google uslugama na <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="452750746583162491">Pregledajte sinhronizovane podatke</translation> -<translation id="4532845899244822526">Izaberite direktorijum</translation> +<translation id="4532845899244822526">Izaberite folder</translation> <translation id="4547551584605870320">{TAB_COUNT,plural, =1{<ph name="TAB_COUNT_ONE" /> kartica}one{<ph name="TAB_COUNT_MANY" /> kartica, <ph name="TAB_COUNT_INCOGNITO" /> bez arhiviranja}few{<ph name="TAB_COUNT_MANY" /> kartice, <ph name="TAB_COUNT_INCOGNITO" /> bez arhiviranja}other{<ph name="TAB_COUNT_MANY" /> kartica, <ph name="TAB_COUNT_INCOGNITO" /> bez arhiviranja}}</translation> <translation id="4549903594034243526">chrome_emotion_gif_<ph name="CURRENT_TIMESTAMP_MS" /></translation> <translation id="4554077758708533499">Povezani ste pomoću USB kabla</translation> @@ -1041,7 +1041,7 @@ <translation id="661266467055912436">Poboljšava bezbednost za vas i druge na vebu.</translation> <translation id="6618554661997243500">Da biste videli sajtove koje najčešće posećujete i vesti koje najčešće čitate, dodirnite dugme Početak</translation> <translation id="6621391692573306628">Da biste poslali ovu karticu na drugi uređaj, prijavite se u Chrome na oba uređaja</translation> -<translation id="6627583120233659107">Izmeni direktorijum</translation> +<translation id="6627583120233659107">Izmeni folder</translation> <translation id="6633067410344541938">Otključaj kartice bez arhiviranja</translation> <translation id="6636623428211296678">Istražite još podešavanja u nastavku ili završite</translation> <translation id="663674369910034433">Više podešavanja u vezi sa privatnošću, bezbednošću i prikupljanjem podataka potražite u odeljku <ph name="BEGIN_LINK1" />Sinhronizacija<ph name="END_LINK1" /> i <ph name="BEGIN_LINK2" />Google usluge<ph name="END_LINK2" /></translation> @@ -1313,7 +1313,7 @@ <translation id="8027863900915310177">Odaberite gde želite da preuzmete</translation> <translation id="8030852056903932865">Odobri</translation> <translation id="8032569120109842252">Pratite</translation> -<translation id="8035133914807600019">Novi direktorijum...</translation> +<translation id="8035133914807600019">Novi folder...</translation> <translation id="8037750541064988519">Još <ph name="DAYS" /> dana</translation> <translation id="8037801708772278989">Provereno malopre</translation> <translation id="804335162455518893">SD kartica nije pronađena</translation> @@ -1502,7 +1502,7 @@ <translation id="8967427617812342790">Dodaj na listu za čitanje</translation> <translation id="8968085728801125376">{TAB_COUNT,plural, =1{Kartice bez arhiviranja (<ph name="INCOGNITO_TAB_COUNT" />) i još <ph name="TAB_COUNT_ONE" /> kartica će biti zatvorene}one{Kartice bez arhiviranja (<ph name="INCOGNITO_TAB_COUNT" />) i još <ph name="TAB_COUNT_MANY" /> kartica će biti zatvorene}few{Kartice bez arhiviranja (<ph name="INCOGNITO_TAB_COUNT" />) i još <ph name="TAB_COUNT_MANY" /> kartice će biti zatvorene}other{Kartice bez arhiviranja (<ph name="INCOGNITO_TAB_COUNT" />) i još <ph name="TAB_COUNT_MANY" /> kartica će biti zatvorene}}</translation> <translation id="8970887620466824814">Došlo je do greške.</translation> -<translation id="8972098258593396643">Preuzimate u podrazumevani direktorijum?</translation> +<translation id="8972098258593396643">Preuzimate u podrazumevani folder?</translation> <translation id="8987641763863173640">Upravljajte podešavanjima pregleda videa</translation> <translation id="898854820045159673">Reakcija je dodata</translation> <translation id="8989968390305463310">Istorija pregledanja utiče na oglase koji vam se prikazuju i interesovanja procenjena u nastavku. Radi zaštite privatnosti Chrome automatski briše interesovanja svakog meseca čim postanu dostupna. Interesovanja mogu da se osvežavaju ako ih ne uklonite.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb index 1bb3643..34636d6e 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb
@@ -330,7 +330,7 @@ <translation id="2839327205551510876">Опозвали сте праћење сајта <ph name="SITE_NAME" /></translation> <translation id="2840810876587895427">{TAB_COUNT,plural, =1{<ph name="TAB_COUNT_ONE" /> картица без архивирања ће бити затворена}one{<ph name="TAB_COUNT_MANY" /> картица без архивирања ће бити затворена}few{<ph name="TAB_COUNT_MANY" /> картице без архивирања ће бити затворене}other{<ph name="TAB_COUNT_MANY" /> картица без архивирања ће бити затворено}}</translation> <translation id="2841216154655874070">{NUM_DAYS,plural, =1{Проверено пре 1 дан}one{Проверено пре # дан}few{Проверено пре # дана}other{Проверено пре # дана}}</translation> -<translation id="2842985007712546952">Надређени директоријум</translation> +<translation id="2842985007712546952">Надређени фолдер</translation> <translation id="2856503607207334158">Пријављивање није успело</translation> <translation id="2860954141821109167">Уверите се да је нека апликација за телефон омогућена на овом уређају</translation> <translation id="2861923151411510142">Неке Chrome функције више неће бити доступне</translation> @@ -522,7 +522,7 @@ <translation id="3861633093716975811">Популарни видео снимци</translation> <translation id="3874520961715512166">Сајт је уклоњен</translation> <translation id="3892148308691398805">Копирај текст</translation> -<translation id="3894427358181296146">Додајте директоријум</translation> +<translation id="3894427358181296146">Додајте фолдер</translation> <translation id="3899682235662194879">Затвори све картице без архивирања</translation> <translation id="3908308510347173149">Ажурирајте <ph name="PRODUCT_NAME" /></translation> <translation id="3912508018559818924">Траже се најбољи подаци са веба…</translation> @@ -638,7 +638,7 @@ Google налог можда има друге облике историје прегледања, попут претрага и активности у другим Google услугама на <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation> <translation id="452750746583162491">Прегледајте синхронизоване податке</translation> -<translation id="4532845899244822526">Изаберите директоријум</translation> +<translation id="4532845899244822526">Изаберите фолдер</translation> <translation id="4547551584605870320">{TAB_COUNT,plural, =1{<ph name="TAB_COUNT_ONE" /> картица}one{<ph name="TAB_COUNT_MANY" /> картица, <ph name="TAB_COUNT_INCOGNITO" /> без архивирања}few{<ph name="TAB_COUNT_MANY" /> картице, <ph name="TAB_COUNT_INCOGNITO" /> без архивирања}other{<ph name="TAB_COUNT_MANY" /> картица, <ph name="TAB_COUNT_INCOGNITO" /> без архивирања}}</translation> <translation id="4549903594034243526">chrome_emotion_gif_<ph name="CURRENT_TIMESTAMP_MS" /></translation> <translation id="4554077758708533499">Повезани сте помоћу USB кабла</translation> @@ -1041,7 +1041,7 @@ <translation id="661266467055912436">Побољшава безбедност за вас и друге на вебу.</translation> <translation id="6618554661997243500">Да бисте видели сајтове које најчешће посећујете и вести које најчешће читате, додирните дугме Почетак</translation> <translation id="6621391692573306628">Да бисте послали ову картицу на други уређај, пријавите се у Chrome на оба уређаја</translation> -<translation id="6627583120233659107">Измени директоријум</translation> +<translation id="6627583120233659107">Измени фолдер</translation> <translation id="6633067410344541938">Откључај картице без архивирања</translation> <translation id="6636623428211296678">Истражите још подешавања у наставку или завршите</translation> <translation id="663674369910034433">Више подешавања у вези са приватношћу, безбедношћу и прикупљањем података потражите у одељку <ph name="BEGIN_LINK1" />Синхронизација<ph name="END_LINK1" /> и <ph name="BEGIN_LINK2" />Google услуге<ph name="END_LINK2" /></translation> @@ -1313,7 +1313,7 @@ <translation id="8027863900915310177">Одаберите где желите да преузмете</translation> <translation id="8030852056903932865">Одобри</translation> <translation id="8032569120109842252">Пратите</translation> -<translation id="8035133914807600019">Нови директоријум...</translation> +<translation id="8035133914807600019">Нови фолдер...</translation> <translation id="8037750541064988519">Још <ph name="DAYS" /> дана</translation> <translation id="8037801708772278989">Проверено малопре</translation> <translation id="804335162455518893">SD картица није пронађена</translation> @@ -1502,7 +1502,7 @@ <translation id="8967427617812342790">Додај на листу за читање</translation> <translation id="8968085728801125376">{TAB_COUNT,plural, =1{Картице без архивирања (<ph name="INCOGNITO_TAB_COUNT" />) и још <ph name="TAB_COUNT_ONE" /> картица ће бити затворене}one{Картице без архивирања (<ph name="INCOGNITO_TAB_COUNT" />) и још <ph name="TAB_COUNT_MANY" /> картица ће бити затворене}few{Картице без архивирања (<ph name="INCOGNITO_TAB_COUNT" />) и још <ph name="TAB_COUNT_MANY" /> картице ће бити затворене}other{Картице без архивирања (<ph name="INCOGNITO_TAB_COUNT" />) и још <ph name="TAB_COUNT_MANY" /> картица ће бити затворене}}</translation> <translation id="8970887620466824814">Дошло је до грешке.</translation> -<translation id="8972098258593396643">Преузимате у подразумевани директоријум?</translation> +<translation id="8972098258593396643">Преузимате у подразумевани фолдер?</translation> <translation id="8987641763863173640">Управљајте подешавањима прегледа видеа</translation> <translation id="898854820045159673">Реакција је додата</translation> <translation id="8989968390305463310">Историја прегледања утиче на огласе који вам се приказују и интересовања процењена у наставку. Ради заштите приватности Chrome аутоматски брише интересовања сваког месеца чим постану доступна. Интересовања могу да се освежавају ако их не уклоните.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb index ff58fef..216d093 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb
@@ -208,7 +208,7 @@ <translation id="2132122640199389833">అన్ని లింక్ చేయబడిన పరికరాలను తీసివేయండి</translation> <translation id="213279576345780926"><ph name="TAB_TITLE" /> మూసివేయబడింది</translation> <translation id="2134927169889348449">Chromeను ఉపయోగించడం ద్వారా, మీరు <ph name="BEGIN_TOS_LINK" />Google సర్వీస్ నియమాలు<ph name="END_TOS_LINK" />, అలాగే <ph name="BEGIN_ATOS_LINK" />Google Chrome, ChromeOS అదనపు సర్వీస్ నియమాలను<ph name="END_ATOS_LINK" /> అంగీకరిస్తున్నారు.</translation> -<translation id="2139186145475833000">హోమ్ స్క్రీన్కు జోడించు</translation> +<translation id="2139186145475833000">హోమ్ స్క్రీన్కు జోడించండి</translation> <translation id="2141396931810938595">మీ వినియోగం ఆధారంగా</translation> <translation id="214888715418183969">మీరు Chromeతో సౌకర్యవంతంగా షేర్ చేసుకోగలిగేవి ఎంచుకోండి. మీరు షేర్ చేసే కొలమానాలు, Chrome ఫీచర్లు, పనితీరు, ఇంకా స్థిరత్వాన్ని మెరుగుపరచడంలో సహాయపడతాయి.</translation> <translation id="2149973817440762519">బుక్మార్క్ను ఎడిట్ చేయండి</translation> @@ -293,7 +293,7 @@ <translation id="2612676031748830579">కార్డ్ నంబర్</translation> <translation id="2625189173221582860">పాస్వర్డ్ కాపీ చేయబడింది</translation> <translation id="2642087927315268160">సైన్ ఇన్ చేయదగిన దిగువున ఉన్న షీట్ మూసివేయబడింది.</translation> -<translation id="2647434099613338025">భాషను జోడించు</translation> +<translation id="2647434099613338025">భాషను జోడించండి</translation> <translation id="2649068648233607930">మీ బ్రౌజర్ <ph name="DOMAIN" /> ద్వారా మేనేజ్ చేయబడుతుంది</translation> <translation id="2650348088770008516">గోప్యతా గైడ్ వివరణ షీట్ మూసివేయబడింది</translation> <translation id="2650751991977523696">ఫైల్ను మళ్లీ డౌన్లోడ్ చేయాలా?</translation> @@ -470,7 +470,7 @@ <translation id="3527085408025491307">ఫోల్డర్</translation> <translation id="3542235761944717775"><ph name="KILOBYTES" /> KB అందుబాటులో ఉంది</translation> <translation id="3549657413697417275">మీ హిస్టరీని వెతకండి</translation> -<translation id="3557336313807607643">కాంటాక్ట్లకు జోడించు</translation> +<translation id="3557336313807607643">కాంటాక్ట్లకు జోడించండి</translation> <translation id="3560491354538957576">ఆసక్తులను సైట్ నిర్వచించవచ్చు</translation> <translation id="3563767357928833671">క్లిప్ బోర్డ్ కంటెంట్లను చూపబడ్డాయి</translation> <translation id="3566639033325271639">సెట్టింగ్లను అప్డేట్ చేయండి</translation> @@ -760,6 +760,7 @@ <translation id="510275257476243843">1 గంట మిగిలి ఉంది</translation> <translation id="5115811374190515607"><ph name="PRODUCT_NAME" />కు</translation> <translation id="5118713593561876160">ఆసక్తులు</translation> +<translation id="5122378528687922675">మీకు సహాయం అవసరమైతే, మీ తల్లి/తండ్రి (<ph name="PARENT_NAME_1" /> లేదా <ph name="PARENT_NAME_2" />)ని అడగండి</translation> <translation id="5123685120097942451">అజ్ఞాత ట్యాబ్</translation> <translation id="5126510351761255129">మీ కార్డ్ను ధృవీకరించండి</translation> <translation id="5132942445612118989">అన్ని పరికరాల్లో మీ పాస్వర్డ్లు, హిస్టరీ, మరిన్నింటిని సింక్ చేయండి</translation> @@ -1252,14 +1253,14 @@ <translation id="7757787379047923882"><ph name="DEVICE_NAME" /> నుండి షేర్ చేయబడిన వచనం</translation> <translation id="7762668264895820836">SD కార్డ్ <ph name="SD_CARD_NUMBER" /></translation> <translation id="7762928140712606393">అదనపు ఫీచర్లు, Chrome అత్యంత శక్తివంతమైన రక్షణ కోసం సైన్ ఇన్ చేయండి</translation> -<translation id="7764225426217299476">అడ్రస్ను జోడించు</translation> +<translation id="7764225426217299476">అడ్రస్ను జోడించండి</translation> <translation id="7772032839648071052">రహస్య పదబంధాన్ని నిర్ధారించండి</translation> <translation id="7772375229873196092"><ph name="APP_NAME" />ను మూసివేయి</translation> <translation id="7774809984919390718">{PAYMENT_METHOD,plural, =1{<ph name="PAYMENT_METHOD_PREVIEW" />\u2026 మరియు మరో <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}other{<ph name="PAYMENT_METHOD_PREVIEW" />\u2026 మరియు మరో <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}}</translation> <translation id="7778840695157240389">కొత్త కథనాల కోసం తర్వాత మళ్లీ చెక్ చేయండి</translation> <translation id="7780645209293383778">మీరు సైన్ ఇన్ చేసి ఉన్నప్పుడు, మిమ్మల్ని అన్ని Google యాప్లలో కాపాడటానికి ఈ డేటాను తాత్కాలికంగా మీ Google ఖాతాకు లింక్ చేస్తుంది</translation> <translation id="7786595606756654269">వెబ్లో సెర్చ్ చేయడం కోసం, అలాగే మీరు తెరిచిన సైట్లతో ఎంగేజ్ అయ్యి ఉండటం కోసం Google Assistant మెరుగైన వాయిస్ అనుభవాన్ని అందిస్తుంది. Google Assistant మీరు దానితో ఉపయోగించే సైట్ల URL, అలాగే కంటెంట్లను అందుకుంటుంది.</translation> -<translation id="7791543448312431591">జోడించు</translation> +<translation id="7791543448312431591">జోడించండి</translation> <translation id="7798392620021911922"><ph name="TAB_COUNT" /> ట్యాబ్లు రీస్టోర్ చేయబడ్డాయి</translation> <translation id="780301667611848630">వద్దు , ధన్యవాదాలు</translation> <translation id="7805768142964895445">స్థితి</translation> @@ -1331,6 +1332,7 @@ <translation id="8084285576995584326">మీ Google ఖాతా డేటాను కంట్రోల్ చేయండి</translation> <translation id="808747664143081553">పరికరానికి కనెక్ట్ చేయబడింది</translation> <translation id="8088176524274673045">సమీపంలోని వ్యక్తులతో షేర్ చేయడం కోసం, ఈ QR కోడ్ను స్కాన్ చేయడానికి వారిని అనుమతించండి</translation> +<translation id="8090732854597034573">మీకు సహాయం అవసరమైతే, మీ తల్లి/తండ్రిని అడగండి</translation> <translation id="8100969750121413114">Chromeను వ్యక్తిగతీకరించడానికి సైన్ ఇన్ చేయండి</translation> <translation id="8103578431304235997">అజ్ఞాత ట్యాబ్</translation> <translation id="8105613260829665809">కొనసాగడం ద్వారా, మీరు <ph name="BEGIN_TOS_LINK" />సర్వీస్ నియమాల<ph name="END_TOS_LINK" />ను అంగీకరిస్తున్నారు.\nయాప్ను మెరుగుపరచడంలో సహాయపడటానికి Chrome, వినియోగ, అలాగే క్రాష్ డేటాను Googleకు పంపుతుంది. <ph name="BEGIN_UMA_LINK" />మేనేజ్ చేయండి<ph name="END_UMA_LINK" /></translation> @@ -1339,6 +1341,7 @@ <translation id="8109613176066109935">ఇక ఎప్పుడు ఎక్కడ బుక్మార్క్లను సెట్ చేసినా ఆటోమాటిక్గా మీ అన్ని పరికరాలలో పొందాలనుకుంటే, సింక్ ఎంపికని ఆన్ చేయండి</translation> <translation id="8110024788458304985">Chrome OS ఫీచర్లు, పనితీరును మెరుగుపరచడంలో సహాయపడండి</translation> <translation id="8110087112193408731">డిజిటల్ సంక్షేమంలో మీ Chrome యాక్టివిటీని చూపించాలా?</translation> +<translation id="8118117428362942925">మీకు సహాయం అవసరమైతే, మీ తల్లి/తండ్రి (<ph name="PARENT_NAME" />)ని అడగండి</translation> <translation id="8127542551745560481">హోమ్ పేజీని ఎడిట్ చేయండి</translation> <translation id="8130309322784422030">మీ స్టోర్ చేయబడిన సైన్ ఇన్ సమాచారం గడువు ముగిసి ఉండవచ్చు</translation> <translation id="813082847718468539">సైట్ సమాచారాన్ని చూడండి</translation> @@ -1348,7 +1351,7 @@ <translation id="8189750580333936930">గోప్యతా పరిరక్షణ టెక్నాలజీల సెట్</translation> <translation id="8190358571722158785">1 రోజు మిగిలి ఉంది</translation> <translation id="8193953846147532858"><ph name="BEGIN_LINK" />మీ పరికరాలు<ph name="END_LINK" /> · <ph name="EMAIL" /></translation> -<translation id="8200772114523450471">మళ్లీ ప్రారంభించు</translation> +<translation id="8200772114523450471">మళ్లీ ప్రారంభించండి</translation> <translation id="8209050860603202033">చిత్రాన్ని తెరువు</translation> <translation id="8216351761227087153">చూడండి</translation> <translation id="8218622182176210845">మీ ఖాతాను నిర్వహించండి</translation> @@ -1496,7 +1499,7 @@ <translation id="8955719471735800169">ఎగువకు తిరిగి వెళ్ళు</translation> <translation id="8964479563882643397">కొత్త అజ్ఞాత ట్యాబ్ను తెరవడానికి, మెనూను తెరవండి</translation> <translation id="8965591936373831584">పెండింగ్లో ఉంది</translation> -<translation id="8967427617812342790">పఠనా లిస్ట్కు జోడించు</translation> +<translation id="8967427617812342790">పఠనా లిస్ట్కు జోడించండి</translation> <translation id="8968085728801125376">{TAB_COUNT,plural, =1{<ph name="INCOGNITO_TAB_COUNT" /> అజ్ఞాత ట్యాబ్, ఇంకా మరో<ph name="TAB_COUNT_ONE" /> ట్యాబ్ మూసివేయబడతాయి}other{<ph name="INCOGNITO_TAB_COUNT" /> అజ్ఞాత ట్యాబ్, ఇంకా మరో<ph name="TAB_COUNT_MANY" /> ట్యాబ్లు మూసివేయబడతాయి}}</translation> <translation id="8970887620466824814">ఏదో తప్పు జరిగింది.</translation> <translation id="8972098258593396643">డిఫాల్ట్ ఫోల్డర్కు డౌన్లోడ్ చేయాలా?</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb index f77a5458..52d0f36 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb
@@ -760,6 +760,7 @@ <translation id="510275257476243843">尚餘 1 小時</translation> <translation id="5115811374190515607">移至<ph name="PRODUCT_NAME" /></translation> <translation id="5118713593561876160">興趣</translation> +<translation id="5122378528687922675">如需協助,請找家長 (<ph name="PARENT_NAME_1" /> 或 <ph name="PARENT_NAME_2" />) 幫忙</translation> <translation id="5123685120097942451">無痕式分頁</translation> <translation id="5126510351761255129">驗證信用卡</translation> <translation id="5132942445612118989">將您的書籤、密碼、記錄等資料同步至所有裝置</translation> @@ -1331,6 +1332,7 @@ <translation id="8084285576995584326">控制 Google 帳戶資料</translation> <translation id="808747664143081553">已連接裝置</translation> <translation id="8088176524274673045">如要與附近的使用者分享,請讓對方掃瞄此 QR 碼</translation> +<translation id="8090732854597034573">如需協助,請找家長幫忙</translation> <translation id="8100969750121413114">登入即可自訂專屬的 Chrome</translation> <translation id="8103578431304235997">無痕式分頁</translation> <translation id="8105613260829665809">繼續即表示您同意《<ph name="BEGIN_TOS_LINK" />服務條款<ph name="END_TOS_LINK" />》。\nChrome 會向 Google 傳送使用情況和當機資料,以協助改善應用程式。<ph name="BEGIN_UMA_LINK" />管理<ph name="END_UMA_LINK" /></translation> @@ -1339,6 +1341,7 @@ <translation id="8109613176066109935">如要將書籤同步到所有裝置,請開啟同步處理功能</translation> <translation id="8110024788458304985">協助改善 Chrome\u2019s 的功能和效能</translation> <translation id="8110087112193408731">要在「健康數碼生活」中顯示您的 Chrome 活動記錄嗎?</translation> +<translation id="8118117428362942925">如需協助,請找家長 (<ph name="PARENT_NAME" />) 幫忙</translation> <translation id="8127542551745560481">編輯首頁</translation> <translation id="8130309322784422030">您儲存的登入資料可能已過期</translation> <translation id="813082847718468539">檢視網站資料</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb index 30ca4adc..a6e1b9a 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
@@ -759,6 +759,7 @@ <translation id="510275257476243843">還剩 1 小時</translation> <translation id="5115811374190515607">移至<ph name="PRODUCT_NAME" /></translation> <translation id="5118713593561876160">興趣喜好</translation> +<translation id="5122378528687922675">如需協助,請找家長 (<ph name="PARENT_NAME_1" /> 或 <ph name="PARENT_NAME_2" />) 幫忙</translation> <translation id="5123685120097942451">無痕式分頁</translation> <translation id="5126510351761255129">請驗證卡片</translation> <translation id="5132942445612118989">同步處理你所有裝置上的密碼、歷史記錄和其他設定</translation> @@ -1330,6 +1331,7 @@ <translation id="8084285576995584326">控管 Google 帳戶資料</translation> <translation id="808747664143081553">已連上裝置</translation> <translation id="8088176524274673045">如要與附近的使用者分享,請讓對方掃描這個 QR 圖碼</translation> +<translation id="8090732854597034573">如需協助,請找家長幫忙</translation> <translation id="8100969750121413114">登入即可打造專屬的 Chrome</translation> <translation id="8103578431304235997">無痕式分頁</translation> <translation id="8105613260829665809">選擇繼續即表示您同意《<ph name="BEGIN_TOS_LINK" />服務條款<ph name="END_TOS_LINK" />》。\n為協助改善應用程式,Chrome 會將使用情形和當機資料傳送給 Google。<ph name="BEGIN_UMA_LINK" />管理設定<ph name="END_UMA_LINK" /></translation> @@ -1338,6 +1340,7 @@ <translation id="8109613176066109935">如要將書籤同步到所有裝置,請開啟同步處理功能</translation> <translation id="8110024788458304985">協助改善 Chrome 的功能與效能</translation> <translation id="8110087112193408731">要在數位健康中顯示你的 Chrome 活動記錄嗎?</translation> +<translation id="8118117428362942925">如需協助,請找家長 (<ph name="PARENT_NAME" />) 幫忙</translation> <translation id="8127542551745560481">編輯首頁</translation> <translation id="8130309322784422030">你儲存的登入資訊可能已過時</translation> <translation id="813082847718468539">查看網站資訊</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb index aa3d03c..e229eb60 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb
@@ -760,6 +760,7 @@ <translation id="510275257476243843">1 ihora elisele</translation> <translation id="5115811374190515607">ku-<ph name="PRODUCT_NAME" /></translation> <translation id="5118713593561876160">Ongaba nentshisekelo kukho</translation> +<translation id="5122378528687922675">Uma udinga usizo, cela umzali wakho (u-<ph name="PARENT_NAME_1" /> noma u-<ph name="PARENT_NAME_2" />)</translation> <translation id="5123685120097942451">Ithebhu ye-Incognito</translation> <translation id="5126510351761255129">Qinisekisa ikhadi lakho</translation> <translation id="5132942445612118989">Vumelanisa amaphasiwedi akho, umlando nokuningi kuwo wonke amadivayisi</translation> @@ -1331,6 +1332,7 @@ <translation id="8084285576995584326">Lawula idatha ye-akhawunti yakho ye-Google</translation> <translation id="808747664143081553">Ixhunywe kudivayisi</translation> <translation id="8088176524274673045">Ukuze wabelane nabantu abaseduze, bavumele ukuthi baskene le khodi ye-QR</translation> +<translation id="8090732854597034573">Uma udinga usizo, cela umzali wakho</translation> <translation id="8100969750121413114">Ngena ngemvume ukuze wenze i-Chrome ibe ngeyakho</translation> <translation id="8103578431304235997">Ithebhu ye-Incognito</translation> <translation id="8105613260829665809">Ngokuqhubeka, wamukela <ph name="BEGIN_TOS_LINK" />Imigomo Yesevisi<ph name="END_TOS_LINK" />.\nUkusiza ekuthuthukiseni i-app, i-Chrome ithumela idatha yokusetshenziswa neyokuphahlazeka ku-Google. <ph name="BEGIN_UMA_LINK" />Phatha<ph name="END_UMA_LINK" /></translation> @@ -1339,6 +1341,7 @@ <translation id="8109613176066109935">Ukuze uthole amabhukhimakhi akho kuwo onke amadivayisi akho, vula ukuvumelanisa</translation> <translation id="8110024788458304985">Siza ukuthuthukisa izakhi nokusebenza kwe-Chrome\u2019</translation> <translation id="8110087112193408731">Bonisa umsebenzi wakho we-Chrome ku-Digital Wellbeing?</translation> +<translation id="8118117428362942925">Uma udinga usizo, cela umzali wakho (u-<ph name="PARENT_NAME" />)</translation> <translation id="8127542551745560481">Hlela ikhasi lasekhaya</translation> <translation id="8130309322784422030">Ulwazi lwakho olugciniwe lokungena ngemvume lungahle lube oluphelelwe yisikhathi</translation> <translation id="813082847718468539">Buka ulwazi lwesayithi</translation>
diff --git a/chrome/browser/ui/app_list/DEPS b/chrome/browser/ui/app_list/DEPS deleted file mode 100644 index 0c6213b..0000000 --- a/chrome/browser/ui/app_list/DEPS +++ /dev/null
@@ -1,32 +0,0 @@ -# TODO(https://crbug.com/1164001): When this file is edited, same file in -# //chrome/browser/ash/app_list should be updated as well. We need -# to sync both files until the migration is done. -include_rules = [ - "+ash/app_list/model", - "+ash/resources", - "+ash/strings", - "+components/app_constants", - "+components/services/app_service/public", -] - -specific_include_rules = { - "app_service_app_item_browsertest\.cc": [ - "+ash/app_list/app_list_controller_impl.h", - "+ash/app_list/app_list_model_provider.h", - "+ash/app_list/model/app_list_item.h", - "+ash/shell.h", - ], - - "app_list_sort_browsertest\.cc": [ - "+ash/app_list/app_list_model_provider.h", - "+ash/app_list/views/app_list_item_view.h", - "+ash/app_list/views/app_list_menu_model_adapter.h", - "+ash/app_list/views/apps_grid_context_menu.h", - "+ash/app_list/views/apps_grid_view.h", - "+ash/shell.h", - ], - - "app_list_syncable_service_unittest\.cc": [ - "+cc/base/math_util.h", - ], -}
diff --git a/chrome/browser/ui/app_list/DIR_METADATA b/chrome/browser/ui/app_list/DIR_METADATA index 935cf66..ec76141 100644 --- a/chrome/browser/ui/app_list/DIR_METADATA +++ b/chrome/browser/ui/app_list/DIR_METADATA
@@ -1,6 +1,3 @@ -# TODO(https://crbug.com/1164001): When this file is edited, same file in -# //chrome/browser/ash/app_list should be updated as well. We need -# to sync both files until the migration is done. monorail { component: "UI>Shell>Launcher" }
diff --git a/chrome/browser/ui/app_list/app_list_util.h b/chrome/browser/ui/app_list/app_list_util.h index 17329b62..756f7d4 100644 --- a/chrome/browser/ui/app_list/app_list_util.h +++ b/chrome/browser/ui/app_list/app_list_util.h
@@ -9,7 +9,7 @@ #include "build/chromeos_buildflags.h" #if BUILDFLAG(IS_CHROMEOS_ASH) -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" namespace ash { struct AppListItemMetadata;
diff --git a/chrome/browser/ui/ash/app_list/app_list_with_recent_apps_browsertest.cc b/chrome/browser/ui/ash/app_list/app_list_with_recent_apps_browsertest.cc index 95e2267..fa942c2 100644 --- a/chrome/browser/ui/ash/app_list/app_list_with_recent_apps_browsertest.cc +++ b/chrome/browser/ui/ash/app_list/app_list_with_recent_apps_browsertest.cc
@@ -4,9 +4,9 @@ #include "ash/public/cpp/test/app_list_test_api.h" #include "ash/public/cpp/test/shell_test_api.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" #include "chrome/browser/ash/app_list/search/search_controller.h" #include "chrome/browser/extensions/extension_browsertest.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" #include "chrome/browser/ui/browser_window.h" #include "content/public/test/browser_test.h" #include "ui/aura/window.h"
diff --git a/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.cc b/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.cc index 2931d75b1..79ac7bd2 100644 --- a/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.cc +++ b/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.cc
@@ -15,6 +15,7 @@ #include "ash/system/video_conference/fake_video_conference_tray_controller.h" #include "base/command_line.h" #include "base/scoped_observation.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" #include "chrome/browser/ash/crosapi/browser_util.h" #include "chrome/browser/ash/game_mode/game_mode_controller.h" #include "chrome/browser/ash/login/signin/signin_error_notifier_factory.h" @@ -30,7 +31,6 @@ #include "chrome/browser/browser_process_platform_part.h" #include "chrome/browser/chromeos/tablet_mode/tablet_mode_page_behavior.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" #include "chrome/browser/ui/ash/accessibility/accessibility_controller_client.h" #include "chrome/browser/ui/ash/ambient/ambient_client_impl.h" #include "chrome/browser/ui/ash/app_access_notifier.h"
diff --git a/chrome/browser/ui/ash/media_client_impl.cc b/chrome/browser/ui/ash/media_client_impl.cc index cc87c70..1c52765 100644 --- a/chrome/browser/ui/ash/media_client_impl.cc +++ b/chrome/browser/ui/ash/media_client_impl.cc
@@ -294,6 +294,10 @@ ->AddCameraPrivacySwitchObserver(this); media::CameraHalDispatcherImpl::GetInstance()->AddActiveClientObserver( this); + media::CameraHalDispatcherImpl::GetInstance() + ->GetCameraSWPrivacySwitchState( + base::BindOnce(&MediaClientImpl::OnGetCameraSWPrivacySwitchState, + weak_ptr_factory_.GetWeakPtr())); content::GetVideoCaptureService().ConnectToVideoSourceProvider( video_source_provider_remote_.BindNewPipeAndPassReceiver()); } @@ -442,10 +446,28 @@ cros::mojom::CameraPrivacySwitchState state) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); video_source_provider_remote_->GetSourceInfos(base::BindOnce( - &MediaClientImpl::OnGetSourceInfosByPrivacySwitchStateChanged, + &MediaClientImpl::OnGetSourceInfosByCameraHWPrivacySwitchStateChanged, weak_ptr_factory_.GetWeakPtr(), device_id, state)); } +void MediaClientImpl::OnCameraSWPrivacySwitchStateChanged( + cros::mojom::CameraPrivacySwitchState state) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + camera_sw_privacy_switch_state_ = state; + if (state == cros::mojom::CameraPrivacySwitchState::OFF) { + // The software switch is OFF. Display hardware switch notifications if any. + video_source_provider_remote_->GetSourceInfos(base::BindOnce( + &MediaClientImpl::OnGetSourceInfosByCameraSWPrivacySwitchStateChanged, + weak_ptr_factory_.GetWeakPtr())); + } else if (state == cros::mojom::CameraPrivacySwitchState::ON) { + // The software switch is ON. Clear all hardware switch notifications. + for (const auto& notification_id : existing_notifications_) { + SystemNotificationHelper::GetInstance()->Close(notification_id); + } + existing_notifications_.clear(); + } +} + void MediaClientImpl::OnActiveClientChange( cros::mojom::CameraClientType type, bool is_new_active_client, @@ -457,6 +479,8 @@ active_camera_client_count_--; } + devices_used_by_client_.insert_or_assign(type, active_device_ids); + video_source_provider_remote_->GetSourceInfos( base::BindOnce(&MediaClientImpl::OnGetSourceInfosByActiveClientChanged, weak_ptr_factory_.GetWeakPtr(), active_device_ids)); @@ -489,7 +513,7 @@ if (!last_device_for_app_.contains(app_name)) return; - const std::string device_name = last_device_for_app_.at(app_name); + const auto [device_id, device_name] = last_device_for_app_.at(app_name); // Remove the current app_name from the map. It will be repopulated in // `ShowCameraOffNotification`. @@ -499,9 +523,9 @@ // observers being called and introduce a blinking effect when the last // application stops using the camera. if (active_camera_client_count_ > 0) { - ShowCameraOffNotification(device_name, /*resurface=*/false); + ShowCameraOffNotification(device_id, device_name, /*resurface=*/false); } else { - SystemNotificationHelper::GetInstance()->Close( + RemoveCameraOffNotificationByID( PrivacySwitchOnNotificationIdForDevice(device_name)); } } @@ -627,8 +651,22 @@ return std::string(); } -void MediaClientImpl::ShowCameraOffNotification(const std::string& device_name, +void MediaClientImpl::ShowCameraOffNotification(const std::string& device_id, + const std::string& device_name, const bool resurface) { + auto it = device_id_to_camera_privacy_switch_state_.find(device_id); + if (it == device_id_to_camera_privacy_switch_state_.end() || + it->second != cros::mojom::CameraPrivacySwitchState::ON || + !IsDeviceActive(device_id)) { + return; + } + + if (ash::features::IsCrosPrivacyHubEnabled() && + camera_sw_privacy_switch_state_ == + cros::mojom::CameraPrivacySwitchState::ON) { + return; + } + base::UmaHistogramEnumeration( kCameraPrivacySwitchEventsHistogramName, CameraPrivacySwitchEvent::kSwitchOnNotificationShown); @@ -643,7 +681,8 @@ IDS_CAMERA_PRIVACY_SWITCH_ON_NOTIFICATION_MESSAGE_WITH_APP_NAME, base::UTF8ToUTF16(app_name), device_name_u16); - last_device_for_app_.insert_or_assign(app_name, device_name); + last_device_for_app_.insert_or_assign( + app_name, std::make_pair(device_id, device_name)); } else { message = l10n_util::GetStringFUTF16( IDS_CAMERA_PRIVACY_SWITCH_ON_NOTIFICATION_MESSAGE, device_name_u16); @@ -655,7 +694,7 @@ message_center::RichNotificationData rich_notification_data; rich_notification_data.remove_on_click = true; if (resurface) { - SystemNotificationHelper::GetInstance()->Close(notification_id); + RemoveCameraOffNotificationByID(notification_id); } else { rich_notification_data.priority = message_center::NotificationPriority::LOW_PRIORITY; @@ -676,9 +715,16 @@ vector_icons::kSettingsIcon, message_center::SystemNotificationWarningLevel::NORMAL); SystemNotificationHelper::GetInstance()->Display(notification); + existing_notifications_.insert(notification_id); } -void MediaClientImpl::OnGetSourceInfosByPrivacySwitchStateChanged( +void MediaClientImpl::RemoveCameraOffNotificationByID( + const std::string& notification_id) { + SystemNotificationHelper::GetInstance()->Close(notification_id); + existing_notifications_.erase(notification_id); +} + +void MediaClientImpl::OnGetSourceInfosByCameraHWPrivacySwitchStateChanged( const std::string& device_id, cros::mojom::CameraPrivacySwitchState state, const std::vector<media::VideoCaptureDeviceInfo>& devices) { @@ -712,7 +758,7 @@ // notification is preferred to showing a toast. if (active_camera_client_count_ > 0 && old_state == cros::mojom::CameraPrivacySwitchState::UNKNOWN) { - ShowCameraOffNotification(device_name); + ShowCameraOffNotification(device_id, device_name); break; } @@ -765,7 +811,7 @@ } if (state == cros::mojom::CameraPrivacySwitchState::OFF) { - SystemNotificationHelper::GetInstance()->Close( + RemoveCameraOffNotificationByID( PrivacySwitchOnNotificationIdForDevice(device_name)); } } @@ -778,19 +824,38 @@ const std::string& device_id = device.descriptor.device_id; const std::string& device_name = device.descriptor.display_name(); - auto it = device_id_to_camera_privacy_switch_state_.find(device_id); - if (it != device_id_to_camera_privacy_switch_state_.end() && - it->second == cros::mojom::CameraPrivacySwitchState::ON) { - if (active_device_ids.find(device_id) != active_device_ids.end()) { - // As the device is being actively used by the client, display a - // notification. - ShowCameraOffNotification(device_name); - } else if (active_camera_client_count_ == 0) { - // Clear the notification for this device as no client is trying to use - // this camera anymore. - SystemNotificationHelper::GetInstance()->Close( - PrivacySwitchOnNotificationIdForDevice(device_name)); - } + if (active_device_ids.find(device_id) != active_device_ids.end()) { + // As the device is being actively used by the client, display a + // notification. + ShowCameraOffNotification(device_id, device_name); + } else if (active_camera_client_count_ == 0) { + // Clear the notification for this device as no client is trying to use + // this camera anymore. + RemoveCameraOffNotificationByID( + PrivacySwitchOnNotificationIdForDevice(device_name)); } } } + +bool MediaClientImpl::IsDeviceActive(const std::string& device_id) { + for (const auto& [client_type, devices_used] : devices_used_by_client_) { + if (devices_used.find(device_id) != devices_used.end()) { + return true; + } + } + return false; +} + +void MediaClientImpl::OnGetSourceInfosByCameraSWPrivacySwitchStateChanged( + const std::vector<media::VideoCaptureDeviceInfo>& devices) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + for (const auto& device : devices) { + ShowCameraOffNotification(device.descriptor.device_id, + device.descriptor.display_name()); + } +} + +void MediaClientImpl::OnGetCameraSWPrivacySwitchState( + cros::mojom::CameraPrivacySwitchState state) { + camera_sw_privacy_switch_state_ = state; +}
diff --git a/chrome/browser/ui/ash/media_client_impl.h b/chrome/browser/ui/ash/media_client_impl.h index e8549af..eb03846 100644 --- a/chrome/browser/ui/ash/media_client_impl.h +++ b/chrome/browser/ui/ash/media_client_impl.h
@@ -79,6 +79,8 @@ void OnCameraHWPrivacySwitchStateChanged( const std::string& device_id, cros::mojom::CameraPrivacySwitchState state) override; + void OnCameraSWPrivacySwitchStateChanged( + cros::mojom::CameraPrivacySwitchState state) override; // media::CameraActiveClientObserver: void OnActiveClientChange( @@ -134,13 +136,18 @@ void HandleMediaAction(ui::KeyboardCode code); // Shows a notification informing the user that an app is trying to use the - // camera while the camera privacy switch is turned on. If `resurface` is - // false the notification text will be updated but the notification won't be - // brought to the users attention again. - void ShowCameraOffNotification(const std::string& device_name, + // camera while the camera hardware privacy switch is turned on. If + // `resurface` is false the notification text will be updated but the + // notification won't be brought to the users attention again. + void ShowCameraOffNotification(const std::string& device_id, + const std::string& device_name, bool resurface = true); - void OnGetSourceInfosByPrivacySwitchStateChanged( + // Removes the camera notification with the give id `notification_id` and + // updates the internal data structures of the class accordingly. + void RemoveCameraOffNotificationByID(const std::string& notification_id); + + void OnGetSourceInfosByCameraHWPrivacySwitchStateChanged( const std::string& device_id, cros::mojom::CameraPrivacySwitchState state, const std::vector<media::VideoCaptureDeviceInfo>& devices); @@ -149,6 +156,16 @@ const base::flat_set<std::string>& active_device_ids, const std::vector<media::VideoCaptureDeviceInfo>& devices); + // Returns true if the device (camera) with id `device_id` is being actively + // used by a client. + bool IsDeviceActive(const std::string& device_id); + + void OnGetSourceInfosByCameraSWPrivacySwitchStateChanged( + const std::vector<media::VideoCaptureDeviceInfo>& devices); + + void OnGetCameraSWPrivacySwitchState( + cros::mojom::CameraPrivacySwitchState state); + ash::MediaController* media_controller_ = nullptr; base::flat_map<content::BrowserContext*, ui::MediaKeysListener::Delegate*> @@ -176,8 +193,23 @@ mojo::Remote<video_capture::mojom::VideoSourceProvider> video_source_provider_remote_; - // Points an active app (short)name to the last device name that used it. - base::flat_map<std::string, std::string> last_device_for_app_; + // Points an active app (short)name to the last (device id, device name) pair + // that the app used. + base::flat_map<std::string, std::pair<std::string, std::string>> + last_device_for_app_; + + // Points each CameraClientType to a set which contains the id of the devices + // the CameraClientType is currently using. + base::flat_map<cros::mojom::CameraClientType, base::flat_set<std::string>> + devices_used_by_client_; + + // IDs of the existing camera hardware switch notifications in the message + // center. + base::flat_set<std::string> existing_notifications_; + + // Stores the state of the camera software privacy switch state locally. + cros::mojom::CameraPrivacySwitchState camera_sw_privacy_switch_state_ = + cros::mojom::CameraPrivacySwitchState::UNKNOWN; SEQUENCE_CHECKER(sequence_checker_);
diff --git a/chrome/browser/ui/ash/media_client_impl_unittest.cc b/chrome/browser/ui/ash/media_client_impl_unittest.cc index df262e11..d35ea1b 100644 --- a/chrome/browser/ui/ash/media_client_impl_unittest.cc +++ b/chrome/browser/ui/ash/media_client_impl_unittest.cc
@@ -285,8 +285,24 @@ LaunchApp(id, name, use_camera); } - void ShowCameraOffNotification() { - media_client_.ShowCameraOffNotification("a device"); + void SetCameraHWPrivacySwitchState( + const std::string& device_id, + cros::mojom::CameraPrivacySwitchState state) { + media_client_.device_id_to_camera_privacy_switch_state_[device_id] = state; + } + + // Adds the device with id `device_id` to the map of active devices. To + // display hardware switch notifications associated to this device, the device + // needs to be active. + void MakeDeviceActive(const std::string& device_id) { + media_client_ + .devices_used_by_client_[cros::mojom::CameraClientType::CHROME] = { + device_id}; + } + + void ShowCameraOffNotification(const std::string& device_id, + const std::string& device_name) { + media_client_.ShowCameraOffNotification(device_id, device_name); } void OnCapabilityAccessUpdate( @@ -463,7 +479,10 @@ // Showing the camera notification, e.g. because the privacy switch was // toggled. - ShowCameraOffNotification(); + SetCameraHWPrivacySwitchState("device_id", + cros::mojom::CameraPrivacySwitchState::ON); + MakeDeviceActive("device_id"); + ShowCameraOffNotification("device_id", "device_name"); EXPECT_EQ(notification_display_service->NumberOfActiveNotifications(), 1u); EXPECT_TRUE(notification_display_service->HasNotificationMessageContaining( app1_name)); @@ -546,3 +565,41 @@ EXPECT_EQ(notification_display_service->show_called_times(), 2u); EXPECT_EQ(notification_display_service->NumberOfActiveNotifications(), 0u); } + +TEST_F(MediaClientAppUsingCameraInBrowserEnvironmentTest, + NotificationRemovedWhenSWSwitchChangedToON) { + const FakeNotificationDisplayService* notification_display_service = + SetSystemNotificationService(); + const char* app_id = "app_id"; + const char* app_name = "app_name"; + const apps::CapabilityAccessPtr capability_access = + MakeCapabilityAccess(app_id, false); + const apps::CapabilityAccessUpdate capability_access_update = + MakeCapabilityAccessUpdate(capability_access.get()); + + user_manager_.AddUser(account_id_); + ASSERT_TRUE(user_manager::UserManager::Get()->GetActiveUser()); + + // No apps are active. + OnCapabilityAccessUpdate(capability_access_update); + EXPECT_EQ(notification_display_service->NumberOfActiveNotifications(), 0u); + + // Launch an app. The notification shouldn't be displayed yet. + LaunchAppUpdateActiveClientCount(app_id, app_name, true, 1); + EXPECT_EQ(notification_display_service->NumberOfActiveNotifications(), 0u); + + // Showing the camera notification, e.g. because the hardware privacy switch + // was toggled. + SetCameraHWPrivacySwitchState("device_id", + cros::mojom::CameraPrivacySwitchState::ON); + MakeDeviceActive("device_id"); + ShowCameraOffNotification("device_id", "device_name"); + // One notification should be displayed. + EXPECT_EQ(notification_display_service->NumberOfActiveNotifications(), 1u); + + // Setting the software privacy switch to ON. The existing hardware switch + // notification should be removed. + media_client_.OnCameraSWPrivacySwitchStateChanged( + cros::mojom::CameraPrivacySwitchState::ON); + EXPECT_EQ(notification_display_service->NumberOfActiveNotifications(), 0u); +}
diff --git a/chrome/browser/ui/ash/shelf/app_service/app_service_shelf_context_menu.cc b/chrome/browser/ui/ash/shelf/app_service/app_service_shelf_context_menu.cc index 61e8782..9ed2687 100644 --- a/chrome/browser/ui/ash/shelf/app_service/app_service_shelf_context_menu.cc +++ b/chrome/browser/ui/ash/shelf/app_service/app_service_shelf_context_menu.cc
@@ -14,6 +14,7 @@ #include "chrome/browser/apps/app_service/extension_apps_utils.h" #include "chrome/browser/apps/app_service/menu_util.h" #include "chrome/browser/ash/app_list/arc/arc_app_list_prefs.h" +#include "chrome/browser/ash/app_list/extension_app_utils.h" #include "chrome/browser/ash/app_restore/full_restore_service.h" #include "chrome/browser/ash/borealis/borealis_window_manager.h" #include "chrome/browser/ash/crosapi/browser_manager.h" @@ -30,7 +31,6 @@ #include "chrome/browser/extensions/launch_util.h" #include "chrome/browser/extensions/menu_manager.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/extension_app_utils.h" #include "chrome/browser/ui/ash/shelf/arc_app_shelf_id.h" #include "chrome/browser/ui/ash/shelf/browser_shortcut_shelf_item_controller.h" #include "chrome/browser/ui/ash/shelf/chrome_shelf_controller.h"
diff --git a/chrome/browser/ui/ash/shelf/arc_app_shelf_browsertest.cc b/chrome/browser/ui/ash/shelf/arc_app_shelf_browsertest.cc index a3e34fe0..cbe07a51 100644 --- a/chrome/browser/ui/ash/shelf/arc_app_shelf_browsertest.cc +++ b/chrome/browser/ui/ash/shelf/arc_app_shelf_browsertest.cc
@@ -24,16 +24,16 @@ #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" #include "base/task/thread_pool/thread_pool_instance.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" +#include "chrome/browser/ash/app_list/app_list_controller_delegate.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" #include "chrome/browser/ash/app_list/arc/arc_app_list_prefs.h" #include "chrome/browser/ash/app_list/arc/arc_app_utils.h" #include "chrome/browser/ash/arc/arc_util.h" #include "chrome/browser/ash/arc/session/arc_service_launcher.h" #include "chrome/browser/ash/arc/session/arc_session_manager.h" #include "chrome/browser/extensions/extension_browsertest.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" -#include "chrome/browser/ui/app_list/app_list_controller_delegate.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" #include "chrome/browser/ui/ash/shelf/arc_app_shelf_id.h" #include "chrome/browser/ui/ash/shelf/chrome_shelf_controller.h" #include "chrome/browser/ui/ash/shelf/chrome_shelf_controller_test_util.h"
diff --git a/chrome/browser/ui/ash/shelf/chrome_shelf_controller.cc b/chrome/browser/ui/ash/shelf/chrome_shelf_controller.cc index 92970bf..f80ad5e 100644 --- a/chrome/browser/ui/ash/shelf/chrome_shelf_controller.cc +++ b/chrome/browser/ui/ash/shelf/chrome_shelf_controller.cc
@@ -38,8 +38,11 @@ #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" #include "chrome/browser/apps/app_service/extension_apps_utils.h" #include "chrome/browser/apps/icon_standardizer.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" #include "chrome/browser/ash/app_list/app_service/app_service_app_icon_loader.h" #include "chrome/browser/ash/app_list/arc/arc_app_utils.h" +#include "chrome/browser/ash/app_list/md_icon_normalizer.h" #include "chrome/browser/ash/arc/arc_util.h" #include "chrome/browser/ash/crosapi/browser_util.h" #include "chrome/browser/extensions/chrome_app_icon_loader.h" @@ -47,9 +50,6 @@ #include "chrome/browser/prefs/pref_service_syncable_util.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" -#include "chrome/browser/ui/app_list/md_icon_normalizer.h" #include "chrome/browser/ui/apps/app_info_dialog.h" #include "chrome/browser/ui/ash/app_icon_color_cache.h" #include "chrome/browser/ui/ash/keyboard/chrome_keyboard_controller_client.h"
diff --git a/chrome/browser/ui/ash/shelf/chrome_shelf_controller.h b/chrome/browser/ui/ash/shelf/chrome_shelf_controller.h index 9635393..bdcdef0 100644 --- a/chrome/browser/ui/ash/shelf/chrome_shelf_controller.h +++ b/chrome/browser/ui/ash/shelf/chrome_shelf_controller.h
@@ -17,8 +17,8 @@ #include "base/gtest_prod_util.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" #include "chrome/browser/ui/app_icon_loader_delegate.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" #include "chrome/browser/ui/ash/shelf/settings_window_observer.h" #include "chrome/browser/ui/ash/shelf/shelf_app_updater.h" #include "components/account_id/account_id.h"
diff --git a/chrome/browser/ui/ash/shelf/chrome_shelf_controller_browsertest.cc b/chrome/browser/ui/ash/shelf/chrome_shelf_controller_browsertest.cc index 22a5a79..0aaed8a6 100644 --- a/chrome/browser/ui/ash/shelf/chrome_shelf_controller_browsertest.cc +++ b/chrome/browser/ui/ash/shelf/chrome_shelf_controller_browsertest.cc
@@ -52,6 +52,7 @@ #include "chrome/browser/apps/platform_apps/app_browsertest_util.h" #include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/ash/accessibility/speech_monitor.h" +#include "chrome/browser/ash/app_list/app_list_controller_delegate.h" #include "chrome/browser/ash/crosapi/browser_util.h" #include "chrome/browser/ash/file_manager/app_id.h" #include "chrome/browser/ash/file_manager/file_manager_test_util.h" @@ -64,7 +65,6 @@ #include "chrome/browser/extensions/launch_util.h" #include "chrome/browser/extensions/menu_manager.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_controller_delegate.h" #include "chrome/browser/ui/ash/shelf/app_shortcut_shelf_item_controller.h" #include "chrome/browser/ui/ash/shelf/browser_shortcut_shelf_item_controller.h" #include "chrome/browser/ui/ash/shelf/chrome_shelf_controller_test_util.h"
diff --git a/chrome/browser/ui/ash/shelf/chrome_shelf_controller_unittest.cc b/chrome/browser/ui/ash/shelf/chrome_shelf_controller_unittest.cc index 0c01d64..74b470e 100644 --- a/chrome/browser/ui/ash/shelf/chrome_shelf_controller_unittest.cc +++ b/chrome/browser/ui/ash/shelf/chrome_shelf_controller_unittest.cc
@@ -61,6 +61,7 @@ #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" #include "chrome/browser/apps/app_service/app_service_test.h" #include "chrome/browser/apps/app_service/policy_util.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" #include "chrome/browser/ash/app_list/arc/arc_app_icon.h" #include "chrome/browser/ash/app_list/arc/arc_app_list_prefs.h" #include "chrome/browser/ash/app_list/arc/arc_app_test.h" @@ -89,7 +90,6 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/sync/sync_service_factory.h" #include "chrome/browser/ui/app_icon_loader.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" #include "chrome/browser/ui/apps/chrome_app_delegate.h" #include "chrome/browser/ui/ash/multi_user/multi_profile_support.h" #include "chrome/browser/ui/ash/multi_user/multi_user_util.h"
diff --git a/chrome/browser/ui/ash/shelf/chrome_shelf_controller_util.cc b/chrome/browser/ui/ash/shelf/chrome_shelf_controller_util.cc index 168de14..d2fb2304 100644 --- a/chrome/browser/ui/ash/shelf/chrome_shelf_controller_util.cc +++ b/chrome/browser/ui/ash/shelf/chrome_shelf_controller_util.cc
@@ -11,14 +11,14 @@ #include "chrome/browser/apps/app_service/app_service_proxy.h" #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" #include "chrome/browser/apps/app_service/policy_util.h" +#include "chrome/browser/ash/app_list/app_list_controller_delegate.h" #include "chrome/browser/ash/app_list/arc/arc_app_list_prefs.h" #include "chrome/browser/ash/app_list/arc/arc_app_utils.h" +#include "chrome/browser/ash/app_list/extension_app_utils.h" #include "chrome/browser/ash/eche_app/app_id.h" #include "chrome/browser/ash/file_manager/app_id.h" #include "chrome/browser/ash/login/demo_mode/demo_session.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_controller_delegate.h" -#include "chrome/browser/ui/app_list/extension_app_utils.h" #include "chrome/browser/ui/ash/multi_user/multi_user_util.h" #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager_helper.h" #include "chrome/browser/ui/ash/shelf/chrome_shelf_controller.h"
diff --git a/chrome/browser/ui/ash/shelf/chrome_shelf_controller_util.h b/chrome/browser/ui/ash/shelf/chrome_shelf_controller_util.h index 681b490..a3fb805 100644 --- a/chrome/browser/ui/ash/shelf/chrome_shelf_controller_util.h +++ b/chrome/browser/ui/ash/shelf/chrome_shelf_controller_util.h
@@ -8,7 +8,7 @@ #include <string> #include "ash/public/cpp/shelf_types.h" -#include "chrome/browser/ui/app_list/app_list_controller_delegate.h" +#include "chrome/browser/ash/app_list/app_list_controller_delegate.h" #include "components/services/app_service/public/cpp/app_launch_util.h" class Browser;
diff --git a/chrome/browser/ui/ash/shelf/chrome_shelf_prefs.cc b/chrome/browser/ui/ash/shelf/chrome_shelf_prefs.cc index 73926ab..90b16931 100644 --- a/chrome/browser/ui/ash/shelf/chrome_shelf_prefs.cc +++ b/chrome/browser/ui/ash/shelf/chrome_shelf_prefs.cc
@@ -32,6 +32,8 @@ #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" #include "chrome/browser/apps/app_service/extension_apps_utils.h" #include "chrome/browser/apps/app_service/policy_util.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" #include "chrome/browser/ash/app_list/arc/arc_app_list_prefs.h" #include "chrome/browser/ash/crosapi/browser_util.h" #include "chrome/browser/ash/file_manager/app_id.h" @@ -42,8 +44,6 @@ #include "chrome/browser/prefs/pref_service_syncable_util.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/sync/sync_service_factory.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" #include "chrome/browser/ui/ash/default_pinned_apps.h" #include "chrome/browser/ui/ash/shelf/shelf_controller_helper.h" #include "chrome/browser/ui/ash/system_web_apps/system_web_app_ui_utils.h"
diff --git a/chrome/browser/ui/ash/shelf/chrome_shelf_prefs.h b/chrome/browser/ui/ash/shelf/chrome_shelf_prefs.h index 3ce55641..502743b1 100644 --- a/chrome/browser/ui/ash/shelf/chrome_shelf_prefs.h +++ b/chrome/browser/ui/ash/shelf/chrome_shelf_prefs.h
@@ -8,7 +8,7 @@ #include <string> #include <vector> -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" #include "components/services/app_service/public/cpp/app_types.h" class ShelfControllerHelper;
diff --git a/chrome/browser/ui/ash/shelf/chrome_shelf_prefs_unittest.cc b/chrome/browser/ui/ash/shelf/chrome_shelf_prefs_unittest.cc index 00b6d5f..628af2b 100644 --- a/chrome/browser/ui/ash/shelf/chrome_shelf_prefs_unittest.cc +++ b/chrome/browser/ui/ash/shelf/chrome_shelf_prefs_unittest.cc
@@ -13,8 +13,8 @@ #include "base/ranges/algorithm.h" #include "base/test/scoped_feature_list.h" #include "base/values.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" #include "chrome/browser/ash/login/users/fake_chrome_user_manager.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" #include "chrome/browser/ui/ash/shelf/shelf_controller_helper.h" #include "chrome/common/extensions/extension_constants.h" #include "chrome/common/pref_names.h"
diff --git a/chrome/browser/ui/ash/shelf/extension_shelf_context_menu.cc b/chrome/browser/ui/ash/shelf/extension_shelf_context_menu.cc index a27fd09..4416f836 100644 --- a/chrome/browser/ui/ash/shelf/extension_shelf_context_menu.cc +++ b/chrome/browser/ui/ash/shelf/extension_shelf_context_menu.cc
@@ -10,11 +10,11 @@ #include "ash/public/cpp/new_window_delegate.h" #include "base/bind.h" #include "chrome/browser/apps/app_service/menu_util.h" +#include "chrome/browser/ash/app_list/extension_app_utils.h" #include "chrome/browser/extensions/context_menu_matcher.h" #include "chrome/browser/extensions/launch_util.h" #include "chrome/browser/prefs/incognito_mode_prefs.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/extension_app_utils.h" #include "chrome/browser/ui/ash/shelf/browser_shortcut_shelf_item_controller.h" #include "chrome/browser/ui/ash/shelf/chrome_shelf_controller.h" #include "chrome/browser/ui/ash/shelf/chrome_shelf_controller_util.h"
diff --git a/chrome/browser/ui/ash/shelf/standalone_browser_extension_app_context_menu.cc b/chrome/browser/ui/ash/shelf/standalone_browser_extension_app_context_menu.cc index 1f97c7b..c960551 100644 --- a/chrome/browser/ui/ash/shelf/standalone_browser_extension_app_context_menu.cc +++ b/chrome/browser/ui/ash/shelf/standalone_browser_extension_app_context_menu.cc
@@ -15,8 +15,8 @@ #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" #include "chrome/browser/apps/app_service/extension_apps_utils.h" #include "chrome/browser/ash/accessibility/accessibility_manager.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" #include "chrome/browser/profiles/profile_manager.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" #include "chrome/browser/ui/ash/shelf/chrome_shelf_controller.h" #include "chrome/browser/ui/ash/shelf/chrome_shelf_controller_util.h" #include "chrome/browser/ui/ash/shelf/chrome_shelf_prefs.h"
diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc index 8f9c193..f6c547b2 100644 --- a/chrome/browser/ui/browser.cc +++ b/chrome/browser/ui/browser.cc
@@ -1439,7 +1439,8 @@ bool Browser::IsPrerender2Supported(content::WebContents& web_contents) { Profile* profile = Profile::FromBrowserContext(web_contents.GetBrowserContext()); - return prefetch::IsSomePreloadingEnabled(*profile->GetPrefs()) == + return prefetch::IsSomePreloadingEnabled(*profile->GetPrefs(), + &web_contents) == content::PreloadingEligibility::kEligible; }
diff --git a/chrome/browser/ui/views/arc_app_dialog_view.cc b/chrome/browser/ui/views/arc_app_dialog_view.cc index 8552cda..d6ef59e2 100644 --- a/chrome/browser/ui/views/arc_app_dialog_view.cc +++ b/chrome/browser/ui/views/arc_app_dialog_view.cc
@@ -6,12 +6,12 @@ #include "base/bind.h" #include "base/strings/utf_string_conversions.h" +#include "chrome/browser/ash/app_list/app_list_controller_delegate.h" #include "chrome/browser/ash/app_list/app_service/app_service_app_icon_loader.h" #include "chrome/browser/ash/app_list/arc/arc_app_list_prefs.h" #include "chrome/browser/ash/app_list/arc/arc_app_utils.h" #include "chrome/browser/ash/app_list/arc/arc_usb_host_permission_manager.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_controller_delegate.h" #include "chrome/browser/ui/views/chrome_layout_provider.h" #include "chrome/grit/generated_resources.h" #include "components/constrained_window/constrained_window_views.h"
diff --git a/chrome/browser/ui/views/arc_app_dialog_view_browsertest.cc b/chrome/browser/ui/views/arc_app_dialog_view_browsertest.cc index 9a681695c9..6a6958b2 100644 --- a/chrome/browser/ui/views/arc_app_dialog_view_browsertest.cc +++ b/chrome/browser/ui/views/arc_app_dialog_view_browsertest.cc
@@ -15,13 +15,13 @@ #include "base/strings/utf_string_conversions.h" #include "chrome/browser/apps/app_service/app_service_proxy.h" #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" #include "chrome/browser/ash/app_list/arc/arc_app_list_prefs.h" #include "chrome/browser/ash/app_list/arc/arc_app_utils.h" #include "chrome/browser/ash/app_list/arc/arc_usb_host_permission_manager.h" #include "chrome/browser/ash/arc/arc_util.h" #include "chrome/browser/ash/arc/session/arc_session_manager.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_window.h" #include "chrome/test/base/in_process_browser_test.h"
diff --git a/chrome/browser/ui/views/crostini/crostini_uninstaller_view_browsertest.cc b/chrome/browser/ui/views/crostini/crostini_uninstaller_view_browsertest.cc index a1e4fe1..fd1d216 100644 --- a/chrome/browser/ui/views/crostini/crostini_uninstaller_view_browsertest.cc +++ b/chrome/browser/ui/views/crostini/crostini_uninstaller_view_browsertest.cc
@@ -8,12 +8,12 @@ #include "base/metrics/histogram_base.h" #include "base/run_loop.h" #include "base/test/metrics/histogram_tester.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" #include "chrome/browser/ash/app_list/test/chrome_app_list_test_support.h" #include "chrome/browser/ash/crostini/crostini_manager.h" #include "chrome/browser/ash/crostini/crostini_pref_names.h" #include "chrome/browser/ash/crostini/crostini_util.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/views/crostini/crostini_dialogue_browser_test_util.h" #include "chrome/test/base/in_process_browser_test.h"
diff --git a/chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view.cc b/chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view.cc index 8ede03f..fc198d0d 100644 --- a/chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view.cc +++ b/chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view.cc
@@ -25,6 +25,8 @@ #include "ui/base/models/image_model.h" #include "ui/compositor/layer.h" #include "ui/display/screen.h" +#include "ui/events/event_observer.h" +#include "ui/views/event_monitor.h" #include "ui/views/widget/widget_delegate.h" #include "ui/views/window/frame_background.h" #include "ui/views/window/window_shape.h" @@ -89,6 +91,72 @@ BEGIN_METADATA(BackToTabButton, OverlayWindowImageButton) END_METADATA +// Helper class for observing mouse and key events from native window. +class WindowEventObserver : public ui::EventObserver { + public: + explicit WindowEventObserver( + PictureInPictureBrowserFrameView* pip_browser_frame_view) + : pip_browser_frame_view_(pip_browser_frame_view) { + event_monitor_ = views::EventMonitor::CreateWindowMonitor( + this, pip_browser_frame_view_->GetWidget()->GetNativeWindow(), + {ui::ET_MOUSE_MOVED, ui::ET_MOUSE_EXITED, ui::ET_KEY_PRESSED, + ui::ET_KEY_RELEASED}); + } + + WindowEventObserver(const WindowEventObserver&) = delete; + WindowEventObserver& operator=(const WindowEventObserver&) = delete; + ~WindowEventObserver() override = default; + + void OnEvent(const ui::Event& event) override { + if (event.IsKeyEvent()) { + pip_browser_frame_view_->UpdateTopBarView(true); + return; + } + + // TODO(crbug.com/1400085): Windows doesn't capture mouse exit event + // sometimes when mouse leaves the window. + // TODO(jazzhsu): We are checking if mouse is in bounds rather than strictly + // checking mouse enter/exit event because of two reasons: 1. We are getting + // mouse exit/enter events when mouse moves between client and non-client + // area on Linux and Windows; 2. We will get a mouse exit event when a + // context menu is brought up. This might cause the pip window stuck in the + // "in" state when some other window is on top of the pip window. + pip_browser_frame_view_->OnMouseEnteredOrExitedWindow(IsMouseInBounds()); + } + + private: + bool IsMouseInBounds() { + gfx::Point point = event_monitor_->GetLastMouseLocation(); + views::View::ConvertPointFromScreen(pip_browser_frame_view_, &point); + + gfx::Rect input_bounds = pip_browser_frame_view_->GetLocalBounds(); + +#if BUILDFLAG(IS_LINUX) + // Calculate input bounds for Linux. This is needed because the input bounds + // is not necessary the same as the local bounds on Linux. + if (pip_browser_frame_view_->ShouldDrawFrameShadow()) { + gfx::Insets insets = pip_browser_frame_view_->MirroredFrameBorderInsets(); + const auto tiled_edges = pip_browser_frame_view_->frame()->tiled_edges(); + if (tiled_edges.left) + insets.set_left(0); + if (tiled_edges.right) + insets.set_right(0); + if (tiled_edges.top) + insets.set_top(0); + if (tiled_edges.bottom) + insets.set_bottom(0); + + input_bounds.Inset(insets + pip_browser_frame_view_->GetInputInsets()); + } +#endif + + return input_bounds.Contains(point); + } + + raw_ptr<PictureInPictureBrowserFrameView> pip_browser_frame_view_; + std::unique_ptr<views::EventMonitor> event_monitor_; +}; + } // namespace PictureInPictureBrowserFrameView::PictureInPictureBrowserFrameView( @@ -296,26 +364,14 @@ void PictureInPictureBrowserFrameView::AddedToWidget() { widget_observation_.Observe(GetWidget()); - -#if !BUILDFLAG(IS_MAC) - // For non-Mac platforms that use Aura, add a pre target handler to receive - // events before the Widget so that we can override event handlers to update - // the top bar view. - GetWidget()->GetNativeWindow()->AddPreTargetHandler(this); -#endif + window_event_observer_ = std::make_unique<WindowEventObserver>(this); BrowserNonClientFrameView::AddedToWidget(); } void PictureInPictureBrowserFrameView::RemovedFromWidget() { - if (GetWidget()->IsClosed()) - return; - widget_observation_.Reset(); - -#if !BUILDFLAG(IS_MAC) - GetWidget()->GetNativeWindow()->RemovePreTargetHandler(this); -#endif + window_event_observer_.reset(); BrowserNonClientFrameView::RemovedFromWidget(); } @@ -484,47 +540,11 @@ void PictureInPictureBrowserFrameView::OnWidgetDestroying( views::Widget* widget) { -#if !BUILDFLAG(IS_MAC) - widget->GetNativeWindow()->RemovePreTargetHandler(this); -#endif - + window_event_observer_.reset(); widget_observation_.Reset(); } /////////////////////////////////////////////////////////////////////////////// -// ui::EventHandler implementations: -void PictureInPictureBrowserFrameView::OnKeyEvent(ui::KeyEvent* event) { - // Highlight when a user uses a keyboard to interact on the window. - UpdateTopBarView(true); -} - -void PictureInPictureBrowserFrameView::OnMouseEvent(ui::MouseEvent* event) { - // TODO(https://crbug.com/1346734): This does not work on Mac since Mac does - // not use Aura, so we need to find another way for Mac. - switch (event->type()) { - case ui::ET_MOUSE_MOVED: - if (!mouse_inside_window_) { - mouse_inside_window_ = true; - UpdateTopBarView(true); - } - break; - - case ui::ET_MOUSE_EXITED: { - // This can be triggered even when the mouse is still over the window such - // as on the content settings popup modal, so we need to check the bounds. - if (!GetLocalBounds().Contains(event->location())) { - mouse_inside_window_ = false; - UpdateTopBarView(false); - } - break; - } - - default: - break; - } -} - -/////////////////////////////////////////////////////////////////////////////// // views::View implementations: void PictureInPictureBrowserFrameView::OnPaint(gfx::Canvas* canvas) { #if BUILDFLAG(IS_LINUX) @@ -670,5 +690,14 @@ return back_to_tab_button_; } +void PictureInPictureBrowserFrameView::OnMouseEnteredOrExitedWindow( + bool entered) { + if (mouse_inside_window_ == entered) + return; + + mouse_inside_window_ = entered; + UpdateTopBarView(mouse_inside_window_); +} + BEGIN_METADATA(PictureInPictureBrowserFrameView, BrowserNonClientFrameView) END_METADATA
diff --git a/chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view.h b/chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view.h index da986ab..cd7f355 100644 --- a/chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view.h +++ b/chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view.h
@@ -29,6 +29,10 @@ class Label; } +namespace { +class WindowEventObserver; +} + class PictureInPictureBrowserFrameView : public BrowserNonClientFrameView, public ChromeLocationBarModelDelegate, @@ -113,10 +117,6 @@ void OnWidgetActivationChanged(views::Widget* widget, bool active) override; void OnWidgetDestroying(views::Widget* widget) override; - // ui::EventHandler: - void OnKeyEvent(ui::KeyEvent* event) override; - void OnMouseEvent(ui::MouseEvent* event) override; - // views::View: void OnPaint(gfx::Canvas* canvas) override; @@ -154,6 +154,9 @@ // Returns the height of the top bar area, including the window top border. int GetTopAreaHeight() const; + // Called when mouse entered or exited the pip window. + void OnMouseEnteredOrExitedWindow(bool entered); + #if BUILDFLAG(IS_LINUX) // Sets the window frame provider so that it will be used for drawing. void SetWindowFrameProvider(ui::WindowFrameProvider* window_frame_provider); @@ -200,6 +203,9 @@ // enabled. std::unique_ptr<views::FrameBackground> frame_background_; #endif + + // Userd to monitor key and mouse event from native window. + std::unique_ptr<WindowEventObserver> window_event_observer_; }; #endif // CHROME_BROWSER_UI_VIEWS_FRAME_PICTURE_IN_PICTURE_BROWSER_FRAME_VIEW_H_
diff --git a/chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view_interactive_uitest.cc b/chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view_interactive_uitest.cc new file mode 100644 index 0000000..70445c54 --- /dev/null +++ b/chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view_interactive_uitest.cc
@@ -0,0 +1,122 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view.h" + +#include "base/test/scoped_feature_list.h" +#include "chrome/browser/ui/browser.h" +#include "chrome/browser/ui/browser_window.h" +#include "chrome/browser/ui/views/frame/browser_view.h" +#include "chrome/test/base/in_process_browser_test.h" +#include "chrome/test/base/interactive_test_utils.h" +#include "chrome/test/base/ui_test_utils.h" +#include "content/public/browser/document_picture_in_picture_window_controller.h" +#include "content/public/browser/web_contents.h" +#include "content/public/test/browser_test.h" +#include "net/dns/mock_host_resolver.h" +#include "third_party/blink/public/common/features.h" + +namespace { + +const base::FilePath::CharType kPictureInPictureDocumentPipPage[] = + FILE_PATH_LITERAL("media/picture-in-picture/document-pip.html"); + +class PictureInPictureBrowserFrameViewTest : public InProcessBrowserTest { + public: + PictureInPictureBrowserFrameViewTest() = default; + + PictureInPictureBrowserFrameViewTest( + const PictureInPictureBrowserFrameViewTest&) = delete; + PictureInPictureBrowserFrameViewTest& operator=( + const PictureInPictureBrowserFrameViewTest&) = delete; + + void SetUpOnMainThread() override { + host_resolver()->AddRule("8", "127.0.0.1"); + embedded_test_server()->ServeFilesFromSourceDirectory("chrome/test/data"); + ASSERT_TRUE(embedded_test_server()->Start()); + } + + void SetUp() override { + scoped_feature_list_.InitAndEnableFeature( + blink::features::kDocumentPictureInPictureAPI); + InProcessBrowserTest::SetUp(); + } + + void SetUpDocumentPIP() { + // Navigate to test url. + GURL test_page_url = ui_test_utils::GetTestUrl( + base::FilePath(base::FilePath::kCurrentDirectory), + base::FilePath(kPictureInPictureDocumentPipPage)); + ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), test_page_url)); + + content::WebContents* active_web_contents = + browser()->tab_strip_model()->GetActiveWebContents(); + ASSERT_NE(nullptr, active_web_contents); + + // Enter document pip. + auto* pip_window_controller_ = content::PictureInPictureWindowController:: + GetOrCreateDocumentPictureInPictureController(active_web_contents); + ASSERT_EQ(true, EvalJs(active_web_contents, "createDocumentPipWindow()")); + ASSERT_NE(nullptr, pip_window_controller_); + + auto* child_web_contents = pip_window_controller_->GetChildWebContents(); + ASSERT_TRUE(child_web_contents); + + auto* browser_view = static_cast<BrowserView*>( + BrowserWindow::FindBrowserWindowWithWebContents(child_web_contents)); + ASSERT_TRUE(browser_view); + ASSERT_TRUE(browser_view->browser()->is_type_picture_in_picture()); + + pip_frame_view_ = static_cast<PictureInPictureBrowserFrameView*>( + browser_view->frame()->GetFrameView()); + ASSERT_TRUE(pip_frame_view_); + } + + bool IsPointInPIPFrameView(gfx::Point point_in_screen) { + views::View::ConvertPointFromScreen(pip_frame_view_, &point_in_screen); + return pip_frame_view_->GetLocalBounds().Contains(point_in_screen); + } + + PictureInPictureBrowserFrameView* pip_frame_view() { return pip_frame_view_; } + + private: + base::test::ScopedFeatureList scoped_feature_list_; + PictureInPictureBrowserFrameView* pip_frame_view_ = nullptr; +}; + +#if BUILDFLAG(IS_WIN) +// Document PIP is not supported in LACROS. +// TODO(jazzhsu): Fix test on MAC and Wayland. Test currently not working on +// those platforms because if we send mouse move event outside of the pip window +// in ui_test_utils::SendMouseMoveSync, the pip window will not receive the +// event. +#define MAYBE_TitleActivation TitleActivation +#else +#define MAYBE_TitleActivation DISABLED_TitleActivation +#endif +IN_PROC_BROWSER_TEST_F(PictureInPictureBrowserFrameViewTest, + MAYBE_TitleActivation) { + ASSERT_NO_FATAL_FAILURE(SetUpDocumentPIP()); + + // Move mouse to the center of the pip window should activate title. + gfx::Point center = pip_frame_view()->GetLocalBounds().CenterPoint(); + views::View::ConvertPointToScreen(pip_frame_view(), ¢er); + ASSERT_TRUE(ui_test_utils::SendMouseMoveSync(center)); + ASSERT_TRUE(pip_frame_view()->GetBackToTabButtonForTesting()->GetVisible()); + + // Move mouse to the top-left corner of the main browser window (out side of + // the pip window) should deactivate the title. + gfx::Point outside = gfx::Point(); + views::View::ConvertPointToScreen( + static_cast<BrowserView*>(browser()->window()), &outside); + ASSERT_FALSE(IsPointInPIPFrameView(outside)); + ASSERT_TRUE(ui_test_utils::SendMouseMoveSync(outside)); + ASSERT_FALSE(pip_frame_view()->GetBackToTabButtonForTesting()->GetVisible()); + + // Move mouse back in pip window should activate title. + ASSERT_TRUE(ui_test_utils::SendMouseMoveSync(center)); + ASSERT_TRUE(pip_frame_view()->GetBackToTabButtonForTesting()->GetVisible()); +} + +} // namespace
diff --git a/chrome/browser/ui/views/page_info/page_info_bubble_view_browsertest.cc b/chrome/browser/ui/views/page_info/page_info_bubble_view_browsertest.cc index 265c5ca..465a3a38 100644 --- a/chrome/browser/ui/views/page_info/page_info_bubble_view_browsertest.cc +++ b/chrome/browser/ui/views/page_info/page_info_bubble_view_browsertest.cc
@@ -112,7 +112,7 @@ // Opens the Page Info bubble and retrieves the UI view identified by // |view_id|. -views::View* GetView(Browser* browser, int view_id) { +views::View* GetView(int view_id) { views::Widget* page_info_bubble = PageInfoBubbleView::GetPageInfoBubbleForTesting()->GetWidget(); EXPECT_TRUE(page_info_bubble); @@ -141,7 +141,6 @@ OpenPageInfoBubble(browser); // Get site settings button. views::View* site_settings_button = GetView( - browser, PageInfoViewFactory::VIEW_ID_PAGE_INFO_LINK_OR_BUTTON_SITE_SETTINGS); ClickAndWaitForSettingsPageToOpen(site_settings_button); @@ -419,10 +418,9 @@ "unused_token", reused_password_account_type); OpenPageInfoBubble(browser()); - views::View* change_password_button = GetView( - browser(), PageInfoViewFactory::VIEW_ID_PAGE_INFO_BUTTON_CHANGE_PASSWORD); + views::View* change_password_button = + GetView(PageInfoViewFactory::VIEW_ID_PAGE_INFO_BUTTON_CHANGE_PASSWORD); views::View* allowlist_password_reuse_button = GetView( - browser(), PageInfoViewFactory::VIEW_ID_PAGE_INFO_BUTTON_ALLOWLIST_PASSWORD_REUSE); SecurityStateTabHelper* helper = @@ -499,10 +497,9 @@ "unused_token", reused_password_account_type); OpenPageInfoBubble(browser()); - views::View* change_password_button = GetView( - browser(), PageInfoViewFactory::VIEW_ID_PAGE_INFO_BUTTON_CHANGE_PASSWORD); + views::View* change_password_button = + GetView(PageInfoViewFactory::VIEW_ID_PAGE_INFO_BUTTON_CHANGE_PASSWORD); views::View* allowlist_password_reuse_button = GetView( - browser(), PageInfoViewFactory::VIEW_ID_PAGE_INFO_BUTTON_ALLOWLIST_PASSWORD_REUSE); SecurityStateTabHelper* helper = @@ -601,7 +598,6 @@ run_loop.Run(); views::View* cookies_button = GetView( - browser(), PageInfoViewFactory::VIEW_ID_PAGE_INFO_LINK_OR_BUTTON_COOKIE_DIALOG); PerformMouseClickOnView(cookies_button); } @@ -675,7 +671,6 @@ // Check that clicking the certificate viewer button is reported to the // sentiment service. views::View* certificates_button = GetView( - browser(), PageInfoViewFactory::VIEW_ID_PAGE_INFO_LINK_OR_BUTTON_CERTIFICATE_VIEWER); PerformMouseClickOnView(certificates_button); } @@ -1115,7 +1110,6 @@ run_loop.Run(); views::View* cookies_button = GetView( - browser(), PageInfoViewFactory::VIEW_ID_PAGE_INFO_LINK_OR_BUTTON_COOKIES_SUBPAGE); base::RunLoop run_loop2; @@ -1150,11 +1144,9 @@ // FPS blocked and 3pc allowed -> only button for opening cookie dialog. size_t kExpectedChildren = 1; auto* cookies_buttons_container = - GetView(browser(), - PageInfoViewFactory::VIEW_ID_PAGE_INFO_COOKIES_BUTTONS_CONTAINER); + GetView(PageInfoViewFactory::VIEW_ID_PAGE_INFO_COOKIES_BUTTONS_CONTAINER); EXPECT_EQ(kExpectedChildren, cookies_buttons_container->children().size()); auto* cookie_dialog_button = GetView( - browser(), PageInfoViewFactory::VIEW_ID_PAGE_INFO_LINK_OR_BUTTON_COOKIE_DIALOG); EXPECT_TRUE(cookie_dialog_button); @@ -1180,14 +1172,11 @@ // FPS allowed and 3pc blocked -> buttons for cookie dialog and 3pc and fps. size_t kExpectedChildren = 3; auto* cookies_buttons_container = - GetView(browser(), - PageInfoViewFactory::VIEW_ID_PAGE_INFO_COOKIES_BUTTONS_CONTAINER); + GetView(PageInfoViewFactory::VIEW_ID_PAGE_INFO_COOKIES_BUTTONS_CONTAINER); EXPECT_EQ(kExpectedChildren, cookies_buttons_container->children().size()); EXPECT_TRUE(GetView( - browser(), PageInfoViewFactory::VIEW_ID_PAGE_INFO_LINK_OR_BUTTON_COOKIE_DIALOG)); auto* fps_button = GetView( - browser(), PageInfoViewFactory::VIEW_ID_PAGE_INFO_LINK_OR_BUTTON_FPS_SETTINGS); // Checking if fps button opens correct page and records correctly user @@ -1227,17 +1216,13 @@ // cookies. size_t kExpectedChildren = 2; auto* cookies_buttons_container = - GetView(browser(), - PageInfoViewFactory::VIEW_ID_PAGE_INFO_COOKIES_BUTTONS_CONTAINER); + GetView(PageInfoViewFactory::VIEW_ID_PAGE_INFO_COOKIES_BUTTONS_CONTAINER); EXPECT_EQ(kExpectedChildren, cookies_buttons_container->children().size()); EXPECT_TRUE(GetView( - browser(), PageInfoViewFactory::VIEW_ID_PAGE_INFO_LINK_OR_BUTTON_COOKIE_DIALOG)); EXPECT_TRUE(GetView( - browser(), PageInfoViewFactory::VIEW_ID_PAGE_INFO_BLOCK_THIRD_PARTY_COOKIES_ROW)); auto* third_party_cookies_toggle = static_cast<views::ToggleButton*>(GetView( - browser(), PageInfoViewFactory::VIEW_ID_PAGE_INFO_BLOCK_THIRD_PARTY_COOKIES_TOGGLE)); EXPECT_TRUE(third_party_cookies_toggle->GetIsOn()); @@ -1268,18 +1253,14 @@ // FPS allowed and 3pc allowed -> buttons for cookie dialog and fps button. size_t kExpectedChildren = 2; auto* cookies_buttons_container = - GetView(browser(), - PageInfoViewFactory::VIEW_ID_PAGE_INFO_COOKIES_BUTTONS_CONTAINER); + GetView(PageInfoViewFactory::VIEW_ID_PAGE_INFO_COOKIES_BUTTONS_CONTAINER); EXPECT_EQ(kExpectedChildren, cookies_buttons_container->children().size()); EXPECT_TRUE(GetView( - browser(), PageInfoViewFactory::VIEW_ID_PAGE_INFO_LINK_OR_BUTTON_COOKIE_DIALOG)); EXPECT_TRUE(GetView( - browser(), PageInfoViewFactory::VIEW_ID_PAGE_INFO_LINK_OR_BUTTON_FPS_SETTINGS)); auto* label_with_link = static_cast<views::StyledLabel*>(GetView( - browser(), PageInfoViewFactory::VIEW_ID_PAGE_INFO_COOKIES_DESCRIPTION_LABEL)); base::UserActionTester user_actions_stats; content::WebContentsAddedObserver new_tab_observer;
diff --git a/chrome/browser/ui/web_applications/web_app_ui_manager_impl.cc b/chrome/browser/ui/web_applications/web_app_ui_manager_impl.cc index 5e063d8..ea28fe7 100644 --- a/chrome/browser/ui/web_applications/web_app_ui_manager_impl.cc +++ b/chrome/browser/ui/web_applications/web_app_ui_manager_impl.cc
@@ -46,9 +46,9 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) #include "ash/public/cpp/shelf_model.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" -#include "chrome/browser/ui/app_list/extension_app_utils.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" +#include "chrome/browser/ash/app_list/extension_app_utils.h" #include "chrome/browser/ui/ash/shelf/app_shortcut_shelf_item_controller.h" #include "chrome/browser/ui/ash/shelf/chrome_shelf_controller.h" #include "chrome/browser/ui/ash/shelf/chrome_shelf_controller_util.h"
diff --git a/chrome/browser/ui/web_applications/web_app_ui_manager_impl_browsertest.cc b/chrome/browser/ui/web_applications/web_app_ui_manager_impl_browsertest.cc index 675e96f..28510dd 100644 --- a/chrome/browser/ui/web_applications/web_app_ui_manager_impl_browsertest.cc +++ b/chrome/browser/ui/web_applications/web_app_ui_manager_impl_browsertest.cc
@@ -31,10 +31,10 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) #include "ash/public/cpp/app_list/internal_app_id_constants.h" +#include "chrome/browser/ash/app_list/app_list_model_updater.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" #include "chrome/browser/ash/app_list/test/chrome_app_list_test_support.h" -#include "chrome/browser/ui/app_list/app_list_model_updater.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" #endif namespace web_app {
diff --git a/chrome/browser/ui/webui/ash/launcher_internals/launcher_internals_ui.cc b/chrome/browser/ui/webui/ash/launcher_internals/launcher_internals_ui.cc index 349a9b5..6e50ded5 100644 --- a/chrome/browser/ui/webui/ash/launcher_internals/launcher_internals_ui.cc +++ b/chrome/browser/ui/webui/ash/launcher_internals/launcher_internals_ui.cc
@@ -5,7 +5,7 @@ #include "chrome/browser/ui/webui/ash/launcher_internals/launcher_internals_ui.h" #include "base/containers/span.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" #include "chrome/browser/ui/webui/webui_util.h" #include "chrome/common/webui_url_constants.h" #include "chrome/grit/launcher_internals_resources.h"
diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc index b61383c..4115496 100644 --- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -1995,6 +1995,14 @@ {"topicsPageTitle", IDS_SETTINGS_TOPICS_PAGE_TITLE}, {"topicsPageToggleLabel", IDS_SETTINGS_TOPICS_PAGE_TOGGLE_LABEL}, {"topicsPageToggleSubLabel", IDS_SETTINGS_TOPICS_PAGE_TOGGLE_SUB_LABEL}, + {"topicsPageCurrentTopicsHeading", + IDS_SETTINGS_TOPICS_PAGE_CURRENT_TOPICS_HEADING}, + {"topicsPageCurrentTopicsDescription", + IDS_SETTINGS_TOPICS_PAGE_CURRENT_TOPICS_DESCRIPTION}, + {"topicsPageCurrentTopicsDescriptionDisabled", + IDS_SETTINGS_TOPICS_PAGE_CURRENT_TOPICS_DESCRIPTION_DISABLED}, + {"topicsPageCurrentTopicsDescriptionEmpty", + IDS_SETTINGS_TOPICS_PAGE_CURRENT_TOPICS_DESCRIPTION_EMPTY}, {"fledgePageTitle", IDS_SETTINGS_FLEDGE_PAGE_TITLE}, {"adMeasurementPageTitle", IDS_SETTINGS_AD_MEASUREMENT_PAGE_TITLE}, {"adMeasurementPageToggleLabel",
diff --git a/chrome/browser/web_applications/adjustments/preinstalled_web_app_duplication_fixer_browsertest.cc b/chrome/browser/web_applications/adjustments/preinstalled_web_app_duplication_fixer_browsertest.cc index d7ca278..46d2011 100644 --- a/chrome/browser/web_applications/adjustments/preinstalled_web_app_duplication_fixer_browsertest.cc +++ b/chrome/browser/web_applications/adjustments/preinstalled_web_app_duplication_fixer_browsertest.cc
@@ -33,8 +33,8 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) // #include "ash/public/cpp/shelf_model.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" #endif // BUILDFLAG(IS_CHROMEOS_ASH) namespace web_app {
diff --git a/chrome/browser/web_applications/preinstalled_web_app_manager_browsertest.cc b/chrome/browser/web_applications/preinstalled_web_app_manager_browsertest.cc index f9615c9..8341525 100644 --- a/chrome/browser/web_applications/preinstalled_web_app_manager_browsertest.cc +++ b/chrome/browser/web_applications/preinstalled_web_app_manager_browsertest.cc
@@ -63,9 +63,9 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) #include "ash/public/cpp/test/app_list_test_api.h" -#include "chrome/browser/ui/app_list/app_list_client_impl.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" +#include "chrome/browser/ash/app_list/app_list_client_impl.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" #endif #if BUILDFLAG(IS_CHROMEOS_LACROS)
diff --git a/chrome/browser/web_applications/preinstalled_web_app_migration_browsertest.cc b/chrome/browser/web_applications/preinstalled_web_app_migration_browsertest.cc index 7b71397..cfedadb 100644 --- a/chrome/browser/web_applications/preinstalled_web_app_migration_browsertest.cc +++ b/chrome/browser/web_applications/preinstalled_web_app_migration_browsertest.cc
@@ -55,10 +55,10 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) #include "ash/public/cpp/app_list/app_list_types.h" -#include "chrome/browser/ui/app_list/app_list_model_updater.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service.h" -#include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" -#include "chrome/browser/ui/app_list/chrome_app_list_item.h" +#include "chrome/browser/ash/app_list/app_list_model_updater.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service.h" +#include "chrome/browser/ash/app_list/app_list_syncable_service_factory.h" +#include "chrome/browser/ash/app_list/chrome_app_list_item.h" #include "chrome/browser/ui/ash/shelf/chrome_shelf_controller_util.h" #endif
diff --git a/chrome/browser/web_applications/test/profile_test_helper.cc b/chrome/browser/web_applications/test/profile_test_helper.cc index 98f1ed3a..6a6d4b6 100644 --- a/chrome/browser/web_applications/test/profile_test_helper.cc +++ b/chrome/browser/web_applications/test/profile_test_helper.cc
@@ -34,14 +34,26 @@ if (info.param.crosapi_state == web_app::test::CrosapiParam::kEnabled) { #if BUILDFLAG(IS_CHROMEOS_ASH) - result += "Crosapi"; + result += "_Crosapi"; #else NOTREACHED(); #endif } - if (info.param.external_pref_migration_enabled) - result += "External_Pref_Migration_Enabled"; + switch (info.param.external_pref_migration_case) { + case ExternalPrefMigrationTestCases::kDisableMigrationReadPref: + result += "_DisableMigration_ReadFromPrefs"; + break; + case ExternalPrefMigrationTestCases::kDisableMigrationReadDB: + result += "_DisableMigration_ReadFromDB"; + break; + case ExternalPrefMigrationTestCases::kEnableMigrationReadPref: + result += "EnableMigration_ReadFromPrefs"; + break; + case ExternalPrefMigrationTestCases::kEnableMigrationReadDB: + result += "EnableMigration_ReadFromDB"; + break; + } return result; } @@ -61,13 +73,29 @@ void InitCrosapiFeaturesForParam( web_app::test::CrosapiParam crosapi_state, base::test::ScopedFeatureList* scoped_feature_list, - bool external_pref_migration_enabled) { + ExternalPrefMigrationTestCases external_pref_migration_case) { std::vector<base::test::FeatureRef> enabled_features; std::vector<base::test::FeatureRef> disabled_features; - if (external_pref_migration_enabled) - enabled_features.push_back(features::kUseWebAppDBInsteadOfExternalPrefs); - else - disabled_features.push_back(features::kUseWebAppDBInsteadOfExternalPrefs); + + switch (external_pref_migration_case) { + case ExternalPrefMigrationTestCases::kDisableMigrationReadPref: + disabled_features.push_back(features::kMigrateExternalPrefsToWebAppDB); + disabled_features.push_back(features::kUseWebAppDBInsteadOfExternalPrefs); + break; + case ExternalPrefMigrationTestCases::kDisableMigrationReadDB: + disabled_features.push_back(features::kMigrateExternalPrefsToWebAppDB); + enabled_features.push_back(features::kUseWebAppDBInsteadOfExternalPrefs); + break; + case ExternalPrefMigrationTestCases::kEnableMigrationReadPref: + enabled_features.push_back(features::kMigrateExternalPrefsToWebAppDB); + disabled_features.push_back(features::kUseWebAppDBInsteadOfExternalPrefs); + break; + case ExternalPrefMigrationTestCases::kEnableMigrationReadDB: + enabled_features.push_back(features::kMigrateExternalPrefsToWebAppDB); + enabled_features.push_back(features::kUseWebAppDBInsteadOfExternalPrefs); + break; + } + if (crosapi_state == web_app::test::CrosapiParam::kEnabled) { #if BUILDFLAG(IS_CHROMEOS_ASH) enabled_features.push_back(features::kWebAppsCrosapi);
diff --git a/chrome/browser/web_applications/test/profile_test_helper.h b/chrome/browser/web_applications/test/profile_test_helper.h index ca966d2..5b6973f 100644 --- a/chrome/browser/web_applications/test/profile_test_helper.h +++ b/chrome/browser/web_applications/test/profile_test_helper.h
@@ -10,6 +10,7 @@ #include "base/command_line.h" #include "base/test/scoped_feature_list.h" #include "build/chromeos_buildflags.h" +#include "chrome/browser/web_applications/test/web_app_test_utils.h" #include "chrome/browser/web_applications/test/with_crosapi_param.h" #include "chrome/common/chrome_features.h" #include "chrome/common/chrome_switches.h" @@ -23,6 +24,9 @@ kGuest, }; +using ExternalPrefMigrationTestCases = + web_app::test::ExternalPrefMigrationTestCases; + // Profile type to test. Provided to subclasses of TestProfileTypeMixin via // GetParam(). struct TestProfileParam { @@ -30,7 +34,7 @@ TestProfileType profile_type; CrosapiParam crosapi_state = CrosapiParam::kDisabled; - bool external_pref_migration_enabled = false; + ExternalPrefMigrationTestCases external_pref_migration_case; }; // GTest string formatter for TestProfileType. Appends, e.g. "/Guest" to the end @@ -46,7 +50,7 @@ void InitCrosapiFeaturesForParam( web_app::test::CrosapiParam crosapi_state, base::test::ScopedFeatureList* scoped_feature_list, - bool external_pref_migration_enabled); + ExternalPrefMigrationTestCases external_pref_migration_case); // "Mixin" for configuring a test harness to parameterize on different profile // types. To use it, inherit from @@ -71,7 +75,7 @@ explicit TestProfileTypeMixin(Args&&... args) : T(std::forward<Args>(args)...) { InitCrosapiFeaturesForParam(GetParam().crosapi_state, &scoped_feature_list_, - GetParam().external_pref_migration_enabled); + GetParam().external_pref_migration_case); } void SetUpCommandLine(base::CommandLine* command_line) override { @@ -126,18 +130,38 @@ INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_P( \ SUITE, \ ::testing::Values( \ - TestProfileParam({TestProfileType::kRegular, \ - web_app::test::CrosapiParam::kDisabled, \ - /*external_pref_migration_enabled=*/false}), \ - TestProfileParam({TestProfileType::kRegular, \ - web_app::test::CrosapiParam::kDisabled, \ - /*external_pref_migration_enabled=*/true}), \ - TestProfileParam({TestProfileType::kRegular, \ - web_app::test::CrosapiParam::kEnabled, \ - /*external_pref_migration_enabled=*/false}), \ - TestProfileParam({TestProfileType::kRegular, \ - web_app::test::CrosapiParam::kEnabled, \ - /*external_pref_migration_enabled=*/true}))) + TestProfileParam( \ + {TestProfileType::kRegular, \ + web_app::test::CrosapiParam::kDisabled, \ + ExternalPrefMigrationTestCases::kDisableMigrationReadPref}), \ + TestProfileParam( \ + {TestProfileType::kRegular, \ + web_app::test::CrosapiParam::kDisabled, \ + ExternalPrefMigrationTestCases::kDisableMigrationReadDB}), \ + TestProfileParam( \ + {TestProfileType::kRegular, \ + web_app::test::CrosapiParam::kDisabled, \ + ExternalPrefMigrationTestCases::kEnableMigrationReadPref}), \ + TestProfileParam( \ + {TestProfileType::kRegular, \ + web_app::test::CrosapiParam::kDisabled, \ + ExternalPrefMigrationTestCases::kEnableMigrationReadDB}), \ + TestProfileParam( \ + {TestProfileType::kRegular, \ + web_app::test::CrosapiParam::kEnabled, \ + ExternalPrefMigrationTestCases::kDisableMigrationReadPref}), \ + TestProfileParam( \ + {TestProfileType::kRegular, \ + web_app::test::CrosapiParam::kEnabled, \ + ExternalPrefMigrationTestCases::kDisableMigrationReadDB}), \ + TestProfileParam( \ + {TestProfileType::kRegular, \ + web_app::test::CrosapiParam::kEnabled, \ + ExternalPrefMigrationTestCases::kEnableMigrationReadPref}), \ + TestProfileParam( \ + {TestProfileType::kRegular, \ + web_app::test::CrosapiParam::kEnabled, \ + ExternalPrefMigrationTestCases::kEnableMigrationReadDB}))) #define INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_GUEST_SESSION_P(SUITE) \ INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_P( \ @@ -167,12 +191,22 @@ INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_P( \ SUITE, \ ::testing::Values( \ - TestProfileParam({TestProfileType::kRegular, \ - web_app::test::CrosapiParam::kDisabled, \ - /*external_pref_migration_enabled=*/false}), \ - TestProfileParam({TestProfileType::kRegular, \ - web_app::test::CrosapiParam::kDisabled, \ - /*external_pref_migration_enabled=*/true}))) + TestProfileParam( \ + {TestProfileType::kRegular, \ + web_app::test::CrosapiParam::kDisabled, \ + ExternalPrefMigrationTestCases::kDisableMigrationReadPref}), \ + TestProfileParam( \ + {TestProfileType::kRegular, \ + web_app::test::CrosapiParam::kDisabled, \ + ExternalPrefMigrationTestCases::kDisableMigrationReadDB}), \ + TestProfileParam( \ + {TestProfileType::kRegular, \ + web_app::test::CrosapiParam::kDisabled, \ + ExternalPrefMigrationTestCases::kEnableMigrationReadPref}), \ + TestProfileParam( \ + {TestProfileType::kRegular, \ + web_app::test::CrosapiParam::kDisabled, \ + ExternalPrefMigrationTestCases::kEnableMigrationReadDB}))) #define INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_GUEST_SESSION_P(SUITE) \ INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_P( \
diff --git a/chrome/browser/webauthn/android/chrome_webauthn_client_android.cc b/chrome/browser/webauthn/android/chrome_webauthn_client_android.cc index 974d9d0..b8357e8b 100644 --- a/chrome/browser/webauthn/android/chrome_webauthn_client_android.cc +++ b/chrome/browser/webauthn/android/chrome_webauthn_client_android.cc
@@ -15,12 +15,13 @@ void ChromeWebAuthnClientAndroid::OnWebAuthnRequestPending( content::RenderFrameHost* frame_host, const std::vector<device::DiscoverableCredentialMetadata>& credentials, + bool is_conditional_request, base::OnceCallback<void(const std::vector<uint8_t>& id)> callback) { auto* delegate = WebAuthnRequestDelegateAndroid::GetRequestDelegate( content::WebContents::FromRenderFrameHost(frame_host)); - delegate->OnWebAuthnRequestPending(frame_host, credentials, - std::move(callback)); + delegate->OnWebAuthnRequestPending( + frame_host, credentials, is_conditional_request, std::move(callback)); } void ChromeWebAuthnClientAndroid::CancelWebAuthnRequest(
diff --git a/chrome/browser/webauthn/android/chrome_webauthn_client_android.h b/chrome/browser/webauthn/android/chrome_webauthn_client_android.h index ff3f25f..b98ef13 100644 --- a/chrome/browser/webauthn/android/chrome_webauthn_client_android.h +++ b/chrome/browser/webauthn/android/chrome_webauthn_client_android.h
@@ -22,6 +22,7 @@ void OnWebAuthnRequestPending( content::RenderFrameHost* frame_host, const std::vector<device::DiscoverableCredentialMetadata>& credentials, + bool is_conditional_request, base::OnceCallback<void(const std::vector<uint8_t>& id)> callback) override;
diff --git a/chrome/browser/webauthn/android/webauthn_request_delegate_android.cc b/chrome/browser/webauthn/android/webauthn_request_delegate_android.cc index ac69db40..3bd03309 100644 --- a/chrome/browser/webauthn/android/webauthn_request_delegate_android.cc +++ b/chrome/browser/webauthn/android/webauthn_request_delegate_android.cc
@@ -4,12 +4,21 @@ #include "chrome/browser/webauthn/android/webauthn_request_delegate_android.h" +#include <iterator> #include <memory> +#include <vector> +#include "base/base64.h" #include "base/callback.h" +#include "base/ranges/algorithm.h" +#include "base/strings/utf_string_conversions.h" #include "chrome/browser/password_manager/chrome_webauthn_credentials_delegate.h" #include "chrome/browser/password_manager/chrome_webauthn_credentials_delegate_factory.h" +#include "chrome/browser/touch_to_fill/touch_to_fill_controller.h" +#include "chrome/browser/touch_to_fill/touch_to_fill_controller_webauthn_delegate.h" +#include "chrome/browser/touch_to_fill/touch_to_fill_webauthn_credential.h" #include "chrome/browser/webauthn/webauthn_metrics_util.h" +#include "components/password_manager/core/browser/origin_credential_store.h" #include "content/public/browser/web_contents.h" #include "device/fido/discoverable_credential_metadata.h" @@ -22,7 +31,8 @@ auto* delegate = static_cast<WebAuthnRequestDelegateAndroid*>( web_contents->GetUserData(kWebAuthnRequestDelegateKey)); if (!delegate) { - auto new_user_data = std::make_unique<WebAuthnRequestDelegateAndroid>(); + auto new_user_data = + std::make_unique<WebAuthnRequestDelegateAndroid>(web_contents); delegate = new_user_data.get(); web_contents->SetUserData(kWebAuthnRequestDelegateKey, std::move(new_user_data)); @@ -31,35 +41,70 @@ return delegate; } -WebAuthnRequestDelegateAndroid::WebAuthnRequestDelegateAndroid() = default; +WebAuthnRequestDelegateAndroid::WebAuthnRequestDelegateAndroid( + content::WebContents* web_contents) + : web_contents_(web_contents) {} WebAuthnRequestDelegateAndroid::~WebAuthnRequestDelegateAndroid() = default; void WebAuthnRequestDelegateAndroid::OnWebAuthnRequestPending( content::RenderFrameHost* frame_host, const std::vector<device::DiscoverableCredentialMetadata>& credentials, + bool is_conditional_request, base::OnceCallback<void(const std::vector<uint8_t>& id)> callback) { webauthn_account_selection_callback_ = std::move(callback); - ReportConditionalUiPasskeyCount(credentials.size()); + if (is_conditional_request) { + conditional_request_in_progress_ = true; + ReportConditionalUiPasskeyCount(credentials.size()); - ChromeWebAuthnCredentialsDelegateFactory::GetFactory( - content::WebContents::FromRenderFrameHost(frame_host)) - ->GetDelegateForFrame(frame_host) - ->OnCredentialsReceived(credentials); + ChromeWebAuthnCredentialsDelegateFactory::GetFactory( + content::WebContents::FromRenderFrameHost(frame_host)) + ->GetDelegateForFrame(frame_host) + ->OnCredentialsReceived(credentials); + return; + } + + std::vector<TouchToFillWebAuthnCredential> display_credentials; + base::ranges::transform(credentials, std::back_inserter(display_credentials), + [](const auto& credential) { + return TouchToFillWebAuthnCredential( + TouchToFillWebAuthnCredential::Username( + base::UTF8ToUTF16(*credential.user.name)), + TouchToFillWebAuthnCredential::BackendId( + base::Base64Encode(credential.cred_id))); + }); + + if (!touch_to_fill_controller_) { + touch_to_fill_controller_ = std::make_unique<TouchToFillController>(); + } + touch_to_fill_controller_->Show( + std::vector<password_manager::UiCredential>(), display_credentials, + std::make_unique<TouchToFillControllerWebAuthnDelegate>(this)); } void WebAuthnRequestDelegateAndroid::CancelWebAuthnRequest( content::RenderFrameHost* frame_host) { - // Prevent autofill from offering WebAuthn credentials in the popup. - ChromeWebAuthnCredentialsDelegateFactory::GetFactory( - content::WebContents::FromRenderFrameHost(frame_host)) - ->GetDelegateForFrame(frame_host) - ->NotifyWebAuthnRequestAborted(); + if (conditional_request_in_progress_) { + // Prevent autofill from offering WebAuthn credentials in the popup. + ChromeWebAuthnCredentialsDelegateFactory::GetFactory( + content::WebContents::FromRenderFrameHost(frame_host)) + ->GetDelegateForFrame(frame_host) + ->NotifyWebAuthnRequestAborted(); + } else { + touch_to_fill_controller_->Close(); + } + + conditional_request_in_progress_ = false; std::move(webauthn_account_selection_callback_).Run(std::vector<uint8_t>()); } void WebAuthnRequestDelegateAndroid::OnWebAuthnAccountSelected( const std::vector<uint8_t>& user_id) { + conditional_request_in_progress_ = false; std::move(webauthn_account_selection_callback_).Run(user_id); } + +content::WebContents* WebAuthnRequestDelegateAndroid::web_contents() { + return web_contents_; +}
diff --git a/chrome/browser/webauthn/android/webauthn_request_delegate_android.h b/chrome/browser/webauthn/android/webauthn_request_delegate_android.h index 87fb23fa..9171e41 100644 --- a/chrome/browser/webauthn/android/webauthn_request_delegate_android.h +++ b/chrome/browser/webauthn/android/webauthn_request_delegate_android.h
@@ -8,6 +8,7 @@ #include <vector> #include "base/callback.h" +#include "base/memory/raw_ptr.h" #include "base/supports_user_data.h" namespace content { @@ -19,13 +20,15 @@ class DiscoverableCredentialMetadata; } +class TouchToFillController; + // Helper class for connecting the autofill implementation to the WebAuthn // request handling for Conditional UI on Android. This is attached to a // WebContents via SetUserData. It caches a callback that will complete the // WebAuthn 'get' request when a user selects a credential. class WebAuthnRequestDelegateAndroid : public base::SupportsUserData::Data { public: - WebAuthnRequestDelegateAndroid(); + explicit WebAuthnRequestDelegateAndroid(content::WebContents* web_contents); WebAuthnRequestDelegateAndroid(const WebAuthnRequestDelegateAndroid&) = delete; @@ -40,6 +43,7 @@ void OnWebAuthnRequestPending( content::RenderFrameHost* frame_host, const std::vector<device::DiscoverableCredentialMetadata>& credentials, + bool is_conditional_request, base::OnceCallback<void(const std::vector<uint8_t>& id)> callback); // Called when an outstanding request is aborted. This triggers the cached @@ -49,7 +53,10 @@ // Tells the driver that the user has selected a Web Authentication // credential from a dialog, and provides the credential ID for the selected // credential. - void OnWebAuthnAccountSelected(const std::vector<uint8_t>& id); + virtual void OnWebAuthnAccountSelected(const std::vector<uint8_t>& id); + + // Returns the WebContents that owns this object. + content::WebContents* web_contents(); // Returns a delegate associated with the |web_contents|. It creates one if // one does not already exist. @@ -61,6 +68,15 @@ private: base::OnceCallback<void(const std::vector<uint8_t>& user_id)> webauthn_account_selection_callback_; + + // Controller for using the Touch To Fill bottom sheet for non-conditional + // requests. + std::unique_ptr<TouchToFillController> touch_to_fill_controller_; + + // The WebContents that has this object in its userdata. + raw_ptr<content::WebContents> web_contents_; + + bool conditional_request_in_progress_ = false; }; #endif // CHROME_BROWSER_WEBAUTHN_ANDROID_WEBAUTHN_REQUEST_DELEGATE_ANDROID_H_
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt index 2c276cf..8d4b0b0 100644 --- a/chrome/build/linux.pgo.txt +++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@ -chrome-linux-main-1670975839-f6dbb877524d3ecfef16bb305926e92165525f33.profdata +chrome-linux-main-1671019116-6b9cae0d3e8c73277c9f214478366172a511d31a.profdata
diff --git a/chrome/build/mac-arm.pgo.txt b/chrome/build/mac-arm.pgo.txt index 6eca2bdf..3178b67b 100644 --- a/chrome/build/mac-arm.pgo.txt +++ b/chrome/build/mac-arm.pgo.txt
@@ -1 +1 @@ -chrome-mac-arm-main-1670975839-eac1af9392d5f9a673097433cd4e3ff558b97776.profdata +chrome-mac-arm-main-1670997253-a4bdf1b52f9c04eb5ecbbf26461b8564531d27cc.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt index f1bc104..7b284d4 100644 --- a/chrome/build/win32.pgo.txt +++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@ -chrome-win32-main-1670975839-06ec836f2cd4902687414b561d343993e82859c2.profdata +chrome-win32-main-1670986696-fb2016fae7ed8692ed824dea922f4b0f50a876e0.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt index 8487152f..8342ce2c 100644 --- a/chrome/build/win64.pgo.txt +++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@ -chrome-win64-main-1670975839-98024dfef9bb6c7159504d17066d02a96ceaf9f0.profdata +chrome-win64-main-1670997253-b16361a8b9ac29ffea5f88bdfbbb02022ef7e8ce.profdata
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_te.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_te.xtb index 0f650f2..0fcd3dd9 100644 --- a/chrome/credential_provider/gaiacp/strings/gaia_resources_te.xtb +++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_te.xtb
@@ -28,7 +28,7 @@ <translation id="6976261330898712570">మీ సంస్థ పరికర నిర్వహణ కోసం ఈ పరికరాన్ని ఇంకా ఎన్రోల్ చేయలేదు. మీ కార్యాలయ ఖాతాతో సైన్ ఇన్ చేయండి.</translation> <translation id="7209941495304122410">Windows పాస్వర్డ్ను నమోదు చేయండి</translation> <translation id="74122330823428762">ఈ పరికరాన్ని లాక్ చేసిన యూజర్ మాత్రమే సైన్ ఇన్ చేయగలరు</translation> -<translation id="7536769223115622137">కార్యాలయ ఖాతాను జోడించు</translation> +<translation id="7536769223115622137">కార్యాలయ ఖాతాను జోడించండి</translation> <translation id="7884688232028658212">మీ కార్యాలయ ఖాతాతో సైన్ ఇన్ చేయండి</translation> <translation id="8109730953933509335">చెల్లని యూజర్ను ఉపయోగించి పాస్వర్డ్ను మార్చడానికి ప్రయత్నించారు. దయచేసి మీ నిర్వాహకుడిని సంప్రదించండి.</translation> <translation id="8448455363630347124">చాలా ఎక్కువ పాస్వర్డ్ ప్రయత్నాలు తప్పు అయినందున మీ ఖాతా డిజేబుల్ చేయబడింది. మీ ఖాతాను ఎనేబుల్ చేయడానికి మీ అడ్మినిస్ట్రేటర్ను కాంటాక్ట్ చేయండి.</translation>
diff --git a/chrome/install_static/google_chrome_for_testing_install_modes.cc b/chrome/install_static/google_chrome_for_testing_install_modes.cc index 02290bd..19dbb34 100644 --- a/chrome/install_static/google_chrome_for_testing_install_modes.cc +++ b/chrome/install_static/google_chrome_for_testing_install_modes.cc
@@ -37,7 +37,7 @@ L"", // Empty app_guid since no integration with Google Update. .base_app_name = L"Google Chrome for Testing", // A distinct base_app_name. - .base_app_id = L"ChromeforTesting", // A distinct base_app_id. + .base_app_id = L"ChromeForTesting", // A distinct base_app_id. .prog_id_prefix = L"CfTHTML", // ProgID prefix. .prog_id_description = L"Chrome for Testing HTML Document", // ProgID description.
diff --git a/chrome/install_static/install_util_unittest.cc b/chrome/install_static/install_util_unittest.cc index 1f08ae7..0636652 100644 --- a/chrome/install_static/install_util_unittest.cc +++ b/chrome/install_static/install_util_unittest.cc
@@ -309,6 +309,9 @@ #if BUILDFLAG(GOOGLE_CHROME_BRANDING) static constexpr wchar_t kPolicyKey[] = L"Software\\Policies\\Google\\Chrome"; +#elif BUILDFLAG(GOOGLE_CHROME_FOR_TESTING_BRANDING) + static constexpr wchar_t kPolicyKey[] = + L"Software\\Policies\\Google\\Chrome for Testing"; #else static constexpr wchar_t kPolicyKey[] = L"Software\\Policies\\Chromium"; #endif @@ -355,6 +358,12 @@ L"Google\\Chrome Dev", L"Google\\Chrome SxS", }; +#elif BUILDFLAG(GOOGLE_CHROME_FOR_TESTING_BRANDING) + // The directory strings for the brand's install modes; parallel to + // kInstallModes. + static constexpr const wchar_t* kInstallDirs[] = { + L"Google\\Chrome for Testing", + }; #else // The directory strings for the brand's install modes; parallel to // kInstallModes. @@ -378,6 +387,12 @@ L"Software\\Google\\Chrome Dev", L"Software\\Google\\Chrome SxS", }; +#elif BUILDFLAG(GOOGLE_CHROME_FOR_TESTING_BRANDING) + // The registry path strings for the brand's install modes; parallel to + // kInstallModes. + static constexpr const wchar_t* kRegistryPaths[] = { + L"Software\\Google\\Chrome for Testing", + }; #else // The registry path strings for the brand's install modes; parallel to // kInstallModes. @@ -404,6 +419,13 @@ L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" // (cont'd) L"Google Chrome SxS", }; +#elif BUILDFLAG(GOOGLE_CHROME_FOR_TESTING_BRANDING) + // The registry path strings for the brand's install modes; parallel to + // kInstallModes. + static constexpr const wchar_t* kUninstallRegistryPaths[] = { + L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Google Chrome " + L"for Testing", + }; #else // The registry path strings for the brand's install modes; parallel to // kInstallModes. @@ -447,6 +469,11 @@ L"ChromeDev", L"ChromeCanary", }; +#elif BUILDFLAG(GOOGLE_CHROME_FOR_TESTING_BRANDING) + // The base app ids for the brand's install modes; parallel to kInstallModes. + static constexpr const wchar_t* kBaseAppIds[] = { + L"ChromeForTesting", + }; #else // The base app ids for the brand's install modes; parallel to kInstallModes. static constexpr const wchar_t* kBaseAppIds[] = { @@ -490,6 +517,21 @@ L"{F01C03EB-D431-4C83-8D7A-902771E732FA}", // Google Chrome Dev. L"{FA372A6E-149F-4E95-832D-8F698D40AD7F}", // Google Chrome SxS (Canary). }; +#elif BUILDFLAG(GOOGLE_CHROME_FOR_TESTING_BRANDING) + // The toast activator CLSIDs for the brand's install modes; parallel to + // kInstallModes. + static constexpr CLSID kToastActivatorClsids[] = { + {0x77ED8F9B, + 0xE27A, + 0x499F, + {0x8E, 0x2F, 0xD7, 0xC0, 0x41, 0x57, 0xCF, 0x64}} // Google Chrome for + // Testing. + }; + + // The string representation of the CLSIDs above. + static constexpr const wchar_t* kToastActivatorClsidsString[] = { + L"{77ED8F9B-E27A-499F-8E2F-D7C04157CF64}" // Google Chrome for Testing. + }; #else // The toast activator CLSIDs for the brand's install modes; parallel to // kInstallModes. @@ -546,6 +588,20 @@ L"{DA7FDCA5-2CAA-4637-AA17-0740584DE7DA}", // Google Chrome Dev. L"{704C2872-2049-435E-A469-0A534313C42B}", // Google Chrome SxS (Canary). }; +#elif BUILDFLAG(GOOGLE_CHROME_FOR_TESTING_BRANDING) + // The Elevator CLSIDs, one for each of the kInstallModes. + static constexpr CLSID kElevatorClsids[] = { + {0x724349BF, + 0xE1CF, + 0x4481, + {0xA6, 0x4D, 0x8C, 0xD1, 0x01, 0x83, 0xCA, 0x03}}, // Google Chrome for + // Testing + }; + + // The string representation of the CLSIDs above. + static constexpr const wchar_t* kElevatorClsidsString[] = { + L"{724349BF-E1CF-4481-A64D-8CD10183CA03}", // Google Chrome for Testing + }; #else // The Elevator CLSIDs, one for each of the kInstallModes. static constexpr CLSID kElevatorClsids[] = { @@ -610,6 +666,22 @@ L"{BB2AA26B-343A-4072-8B6F-80557B8CE571}", // Google Chrome Dev. L"{4F7CE041-28E9-484F-9DD0-61A8CACEFEE4}", // Google Chrome Canary. }; +#elif BUILDFLAG(GOOGLE_CHROME_FOR_TESTING_BRANDING) + // The Elevator IIDs, one for each of the kInstallModes. + static constexpr IID kElevatorIids[] = { + {0x3DC48E97, + 0x47D0, + 0x476F, + {0x8F, 0x89, 0x07, 0x92, 0xFC, 0x61, 0x15, + 0x67}}, // IElevator IID and TypeLib + // {3DC48E97-47D0-476F-8F89-0792FC611567} for Google Chrome for + // Testing + }; + + // The string representation of the IIDs above. + static constexpr const wchar_t* kElevatorIidsString[] = { + L"{3DC48E97-47D0-476F-8F89-0792FC611567}", // Google Chrome for Testing + }; #else // The Elevator IIDs, one for each of the kInstallModes. static constexpr IID kElevatorIids[] = { @@ -712,6 +784,11 @@ L"S-1-15-2-3251537155-1984446955-2931258699-841473695-1938553385-" L"924012150-", // Google Chrome SxS (Canary). }; +#elif BUILDFLAG(GOOGLE_CHROME_FOR_TESTING_BRANDING) + static constexpr const wchar_t* kSandBoxSids[] = { + L"S-1-15-2-3251537155-1984446955-2931258699-841473695-1938553385-" + L"924012153-", // Google Chrome for Testing + }; #else static constexpr const wchar_t* kSandBoxSids[] = { L"S-1-15-2-3251537155-1984446955-2931258699-841473695-1938553385-"
diff --git a/chrome/services/file_util/single_file_tar_file_extractor_unittest.cc b/chrome/services/file_util/single_file_tar_file_extractor_unittest.cc index 46e68ae..3e13b15 100644 --- a/chrome/services/file_util/single_file_tar_file_extractor_unittest.cc +++ b/chrome/services/file_util/single_file_tar_file_extractor_unittest.cc
@@ -160,4 +160,31 @@ ASSERT_TRUE(contents.empty()); } +TEST_F(SingleFileTarFileExtractorTest, CorruptedFile) { + base::test::TestFuture<chrome::file_util::mojom::ExtractionResult> future; + + base::FilePath path; + ASSERT_NO_FATAL_FAILURE(path = GetFilePath("test_corrupted.tar")); + base::File src_file(path, base::File::FLAG_OPEN | base::File::FLAG_READ); + ASSERT_TRUE(src_file.IsValid()); + + // test_corrupted.tar is a file that is cut off from the middle of the + // archived file contents. + base::FilePath out_path = temp_dir().AppendASCII("CorruptedFile_dst_file"); + base::File dst_file(out_path, + base::File::FLAG_CREATE | base::File::FLAG_WRITE); + ASSERT_TRUE(dst_file.IsValid()); + + auto mock_listener = std::make_unique<MockSingleFileExtractorListener>(); + mojo::Receiver<chrome::mojom::SingleFileExtractorListener> listener{ + mock_listener.get()}; + + SingleFileTarFileExtractor extractor; + extractor.Extract(std::move(src_file), std::move(dst_file), + listener.BindNewPipeAndPassRemote(), future.GetCallback()); + + const chrome::file_util::mojom::ExtractionResult& result = future.Get(); + EXPECT_EQ(chrome::file_util::mojom::ExtractionResult::kGenericError, result); +} + } // namespace chrome
diff --git a/chrome/services/file_util/single_file_tar_xz_file_extractor_unittest.cc b/chrome/services/file_util/single_file_tar_xz_file_extractor_unittest.cc index 5b238644..0daa304 100644 --- a/chrome/services/file_util/single_file_tar_xz_file_extractor_unittest.cc +++ b/chrome/services/file_util/single_file_tar_xz_file_extractor_unittest.cc
@@ -162,4 +162,31 @@ EXPECT_EQ(contents, std::string(2097152, '\0')); } +TEST_F(SingleFileTarXzFileExtractorTest, CorruptedFile) { + base::test::TestFuture<chrome::file_util::mojom::ExtractionResult> future; + + base::FilePath path; + ASSERT_NO_FATAL_FAILURE(path = GetFilePath("test_corrupted.tar.xz")); + base::File src_file(path, base::File::FLAG_OPEN | base::File::FLAG_READ); + ASSERT_TRUE(src_file.IsValid()); + + // test_corrupted.tar is a file that is cut off from the middle of the + // archived file contents. + base::FilePath out_path = temp_dir().AppendASCII("CorruptedFile_dst_file"); + base::File dst_file(out_path, + base::File::FLAG_CREATE | base::File::FLAG_WRITE); + ASSERT_TRUE(dst_file.IsValid()); + + auto mock_listener = std::make_unique<MockSingleFileExtractorListener>(); + mojo::Receiver<chrome::mojom::SingleFileExtractorListener> listener{ + mock_listener.get()}; + + SingleFileTarXzFileExtractor extractor; + extractor.Extract(std::move(src_file), std::move(dst_file), + listener.BindNewPipeAndPassRemote(), future.GetCallback()); + + const chrome::file_util::mojom::ExtractionResult& result = future.Get(); + EXPECT_EQ(chrome::file_util::mojom::ExtractionResult::kGenericError, result); +} + } // namespace chrome
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index a33fbad..418acccb 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -3656,9 +3656,13 @@ "../browser/ash/accessibility/switch_access_browsertest.cc", "../browser/ash/accessibility/touch_exploration_controller_browsertest.cc", "../browser/ash/account_manager/account_manager_policy_controller_browsertest.cc", + "../browser/ash/app_list/app_list_client_impl_browsertest.cc", + "../browser/ash/app_list/app_list_sort_browsertest.cc", "../browser/ash/app_list/app_service/app_service_app_item_browsertest.cc", "../browser/ash/app_list/app_service/app_service_context_menu_browsertest.cc", "../browser/ash/app_list/arc/arc_usb_host_permission_browsertest.cc", + "../browser/ash/app_list/chrome_app_list_item_browsertest.cc", + "../browser/ash/app_list/chrome_app_list_model_updater_browsertest.cc", "../browser/ash/app_list/search/files/drive_search_browsertest.cc", "../browser/ash/app_list/search/files/file_suggest_keyed_service_browsertest.cc", "../browser/ash/app_list/search/help_app_search_browsertest.cc", @@ -4063,10 +4067,6 @@ "../browser/speech/network_speech_recognizer_browsertest.cc", "../browser/speech/speech_recognition_recognizer_client_impl_browsertest.cc", "../browser/support_tool/ash/ui_hierarchy_data_collector_browsertest.cc", - "../browser/ui/app_list/app_list_client_impl_browsertest.cc", - "../browser/ui/app_list/app_list_sort_browsertest.cc", - "../browser/ui/app_list/chrome_app_list_item_browsertest.cc", - "../browser/ui/app_list/chrome_app_list_model_updater_browsertest.cc", "../browser/ui/ash/accelerator_commands_browsertest.cc", "../browser/ui/ash/app_list/app_list_with_recent_apps_browsertest.cc", "../browser/ui/ash/app_list/apps_grid_drag_browsertest.cc", @@ -6546,6 +6546,7 @@ "../browser/supervised_user/android/favicon_fetcher_unittest.cc", "../browser/touch_to_fill/payments/android/touch_to_fill_credit_card_controller_unittest.cc", "../browser/touch_to_fill/touch_to_fill_controller_autofill_delegate_unittest.cc", + "../browser/touch_to_fill/touch_to_fill_controller_webauthn_delegate_unittest.cc", "../browser/translate/android/translate_bridge_unittest.cc", "../browser/translate/translate_manager_render_view_host_android_unittest.cc", "../browser/ui/android/device_dialog/usb_chooser_dialog_android_unittest.cc", @@ -7348,6 +7349,11 @@ "../browser/apps/app_service/publishers/plugin_vm_apps_unittest.cc", "../browser/apps/app_service/webapk/webapk_install_task_unittest.cc", "../browser/apps/app_service/webapk/webapk_manager_unittest.cc", + "../browser/ash/app_list/app_context_menu_unittest.cc", + "../browser/ash/app_list/app_list_sort_unittest.cc", + "../browser/ash/app_list/app_list_syncable_service_unittest.cc", + "../browser/ash/app_list/app_list_test_util.cc", + "../browser/ash/app_list/app_list_test_util.h", "../browser/ash/app_list/app_service/app_service_app_model_builder_unittest.cc", "../browser/ash/app_list/arc/arc_app_test.cc", "../browser/ash/app_list/arc/arc_app_test.h", @@ -7358,6 +7364,8 @@ "../browser/ash/app_list/arc/intent_unittest.cc", "../browser/ash/app_list/arc/mock_arc_app_list_prefs_observer.cc", "../browser/ash/app_list/arc/mock_arc_app_list_prefs_observer.h", + "../browser/ash/app_list/chrome_app_list_item_manager_unittest.cc", + "../browser/ash/app_list/md_icon_normalizer_unittest.cc", "../browser/ash/app_list/reorder/app_list_reorder_core_unittest.cc", "../browser/ash/app_list/reorder/app_list_reorder_util_unittest.cc", "../browser/ash/app_list/search/app_search_provider_test_base.cc", @@ -7508,13 +7516,6 @@ "../browser/support_tool/ash/system_state_data_collector_unittest.cc", "../browser/support_tool/ash/ui_hierarchy_data_collector_unittest.cc", "../browser/task_manager/providers/crosapi/crosapi_task_provider_ash_unittest.cc", - "../browser/ui/app_list/app_context_menu_unittest.cc", - "../browser/ui/app_list/app_list_sort_unittest.cc", - "../browser/ui/app_list/app_list_syncable_service_unittest.cc", - "../browser/ui/app_list/app_list_test_util.cc", - "../browser/ui/app_list/app_list_test_util.h", - "../browser/ui/app_list/chrome_app_list_item_manager_unittest.cc", - "../browser/ui/app_list/md_icon_normalizer_unittest.cc", "../browser/ui/ash/accessibility/accessibility_controller_client_unittest.cc", "../browser/ui/ash/accessibility/ax_tree_source_aura_unittest.cc", "../browser/ui/ash/ambient/ambient_client_impl_unittest.cc", @@ -9816,6 +9817,7 @@ "../browser/ui/views/find_bar_views_interactive_uitest.cc", "../browser/ui/views/frame/browser_view_focus_uitest.cc", "../browser/ui/views/frame/browser_view_interactive_uitest.cc", + "../browser/ui/views/frame/picture_in_picture_browser_frame_view_interactive_uitest.cc", "../browser/ui/views/frame/tab_strip_region_view_interactive_uitest.cc", "../browser/ui/views/fullscreen_control/fullscreen_control_view_interactive_uitest.cc", "../browser/ui/views/keyboard_access_browsertest.cc", @@ -9961,9 +9963,9 @@ "//ui/display/manager", ] sources += [ + "../browser/ash/app_list/app_list_client_interactive_uitest.cc", "../browser/ash/login/login_manager_test.cc", "../browser/ash/login/login_manager_test.h", - "../browser/ui/app_list/app_list_client_interactive_uitest.cc", "../browser/ui/ash/clipboard_history_interactive_uitest.cc", ]
diff --git a/chrome/test/data/image_writer_private/test_corrupted.tar b/chrome/test/data/image_writer_private/test_corrupted.tar new file mode 100644 index 0000000..35c7a787 --- /dev/null +++ b/chrome/test/data/image_writer_private/test_corrupted.tar Binary files differ
diff --git a/chrome/test/data/image_writer_private/test_corrupted.tar.xz b/chrome/test/data/image_writer_private/test_corrupted.tar.xz new file mode 100644 index 0000000..9095f614 --- /dev/null +++ b/chrome/test/data/image_writer_private/test_corrupted.tar.xz Binary files differ
diff --git a/chrome/test/data/policy/policy_test_cases.json b/chrome/test/data/policy/policy_test_cases.json index fe193859..99e44fae7 100644 --- a/chrome/test/data/policy/policy_test_cases.json +++ b/chrome/test/data/policy/policy_test_cases.json
@@ -1226,6 +1226,41 @@ } ] }, + "UsbDetectorNotificationEnabled": { + "os": [ + "chromeos_ash" + ], + "policy_pref_mapping_tests": [ + { + "policies": {}, + "prefs": { + "ash.usb_detector_notification_enabled": { + "default_value": true + } + } + }, + { + "policies": { + "UsbDetectorNotificationEnabled": false + }, + "prefs": { + "ash.usb_detector_notification_enabled": { + "value": false + } + } + }, + { + "policies": { + "UsbDetectorNotificationEnabled": true + }, + "prefs": { + "ash.usb_detector_notification_enabled": { + "value": true + } + } + } + ] + }, "NativePrinters": { "reason_for_missing_test": "Policy was removed" }, @@ -8868,7 +8903,7 @@ "policies": {}, "prefs": { "saml.lock_screen_offline_signin_time_limit": { - "default_value": -2 + "default_value": -1 } } }
diff --git a/chrome/test/data/webui/cr_components/chromeos/network/apn_list_item_test.js b/chrome/test/data/webui/cr_components/chromeos/network/apn_list_item_test.js index 1e62214..3bad799 100644 --- a/chrome/test/data/webui/cr_components/chromeos/network/apn_list_item_test.js +++ b/chrome/test/data/webui/cr_components/chromeos/network/apn_list_item_test.js
@@ -222,7 +222,6 @@ let eventData = await apnDetailsClickedEvent; assertEquals(TEST_APN_EVENT_DATA.apn.name, eventData.detail.apn.name); - assertEquals(TEST_APN_EVENT_DATA.guid, eventData.detail.guid); assertEquals(TEST_APN_EVENT_DATA.mode, eventData.detail.mode); // Case: the apn list item is not auto detected @@ -232,7 +231,6 @@ apnListItem.$.detailsButton.click(); eventData = await apnDetailsClickedEvent; assertEquals(TEST_APN_EVENT_DATA.apn.name, eventData.detail.apn.name); - assertEquals(TEST_APN_EVENT_DATA.guid, eventData.detail.guid); assertEquals(ApnDetailDialogMode.EDIT, eventData.detail.mode); }); });
diff --git a/chrome/test/data/webui/cr_components/chromeos/network/apn_list_test.js b/chrome/test/data/webui/cr_components/chromeos/network/apn_list_test.js index 13fd87f..6f9e81d 100644 --- a/chrome/test/data/webui/cr_components/chromeos/network/apn_list_test.js +++ b/chrome/test/data/webui/cr_components/chromeos/network/apn_list_test.js
@@ -5,13 +5,15 @@ import 'chrome://os-settings/strings.m.js'; import 'chrome://resources/ash/common/network/apn_list.js'; +import {ApnDetailDialogMode} from '//resources/ash/common/network/cellular_utils.js'; +import {ApnList} from 'chrome://resources/ash/common/network/apn_list.js'; import {OncMojo} from 'chrome://resources/ash/common/network/onc_mojo.js'; import {ApnProperties, ApnState} from 'chrome://resources/mojo/chromeos/services/network_config/public/mojom/cros_network_config.mojom-webui.js'; import {assertEquals, assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js'; import {flushTasks} from 'chrome://webui-test/polymer_test_util.js'; suite('ApnListTest', function() { - /** @type {ApnListElement} */ + /** @type {ApnList} */ let apnList = null; /** @type {ApnProperties} */ @@ -166,4 +168,19 @@ assertTrue(apns[0].isConnected); assertFalse(apns[0].isAutoDetected); }); + + test( + 'Calling openApnDetailDialogInCreateMode() opens APN detail dialog', + async function() { + const getApnDetailDialog = () => + apnList.shadowRoot.querySelector('apn-detail-dialog'); + apnList.guid = 'fake-guid'; + assertFalse(!!getApnDetailDialog()); + apnList.openApnDetailDialogInCreateMode(); + await flushTasks(); + assertTrue(!!getApnDetailDialog()); + assertEquals(ApnDetailDialogMode.CREATE, getApnDetailDialog().mode); + assertEquals(apnList.guid, getApnDetailDialog().guid); + assertFalse(!!getApnDetailDialog().apnProperties); + }); });
diff --git a/chrome/test/data/webui/password_manager/password_details_card_test.ts b/chrome/test/data/webui/password_manager/password_details_card_test.ts index ebc46e4..693794b 100644 --- a/chrome/test/data/webui/password_manager/password_details_card_test.ts +++ b/chrome/test/data/webui/password_manager/password_details_card_test.ts
@@ -139,4 +139,32 @@ assertEquals(expectedDomain.url, listItemElement.href); }); }); + + test('show/hide password', async function() { + const password = createPasswordEntry( + {id: 1, url: 'test.com', username: 'vik', password: 'password69'}); + + const card = document.createElement('password-details-card'); + card.password = password; + document.body.appendChild(card); + await flushTasks(); + + assertEquals( + loadTimeData.getString('showPassword'), + card.$.showPasswordButton.title); + assertEquals('password', card.$.passwordValue.type); + assertTrue(card.$.showPasswordButton.hasAttribute('class')); + assertEquals( + 'icon-visibility', card.$.showPasswordButton.getAttribute('class')); + + card.$.showPasswordButton.click(); + + assertEquals( + loadTimeData.getString('hidePassword'), + card.$.showPasswordButton.title); + assertEquals('text', card.$.passwordValue.type); + assertTrue(card.$.showPasswordButton.hasAttribute('class')); + assertEquals( + 'icon-visibility-off', card.$.showPasswordButton.getAttribute('class')); + }); });
diff --git a/chrome/test/data/webui/password_manager/passwords_section_test.ts b/chrome/test/data/webui/password_manager/passwords_section_test.ts index b353fe48..9295816 100644 --- a/chrome/test/data/webui/password_manager/passwords_section_test.ts +++ b/chrome/test/data/webui/password_manager/passwords_section_test.ts
@@ -4,10 +4,9 @@ import 'chrome://password-manager/password_manager.js'; -import {Page, PasswordListItemElement, PasswordManagerImpl, PasswordsSectionElement, Router} from 'chrome://password-manager/password_manager.js'; +import {Page, PasswordListItemElement, PasswordManagerImpl, PasswordsSectionElement, Router, UrlParam} from 'chrome://password-manager/password_manager.js'; import {PluralStringProxyImpl} from 'chrome://resources/js/plural_string_proxy.js'; -import {IronListElement} from 'chrome://resources/polymer/v3_0/iron-list/iron-list.js'; -import {assertArrayEquals, assertDeepEquals, assertEquals, assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js'; +import {assertArrayEquals, assertEquals, assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js'; import {flushTasks} from 'chrome://webui-test/polymer_test_util.js'; import {TestPluralStringProxy} from 'chrome://webui-test/test_plural_string_proxy.js'; import {isVisible} from 'chrome://webui-test/test_util.js'; @@ -20,11 +19,10 @@ * @param expectedPasswords The expected passwords in this subsection. */ function validatePasswordsSubsection( - list: IronListElement, + section: PasswordsSectionElement, expectedGroups: chrome.passwordsPrivate.CredentialGroup[]) { - assertDeepEquals(expectedGroups, list.items); - - const listItemElements = list.querySelectorAll('password-list-item'); + const listItemElements = + section.shadowRoot!.querySelectorAll('password-list-item'); assertEquals(listItemElements.length, expectedGroups.length); for (let index = 0; index < expectedGroups.length; ++index) { @@ -41,12 +39,23 @@ let passwordManager: TestPasswordManagerProxy; let pluralString: TestPluralStringProxy; + async function createPasswordsSection(): Promise<PasswordsSectionElement> { + const section: PasswordsSectionElement = + document.createElement('passwords-section'); + document.body.appendChild(section); + await passwordManager.whenCalled('getCredentialGroups'); + await flushTasks(); + + return section; + } + setup(function() { document.body.innerHTML = window.trustedTypes!.emptyHTML; passwordManager = new TestPasswordManagerProxy(); PasswordManagerImpl.setInstance(passwordManager); pluralString = new TestPluralStringProxy(); PluralStringProxyImpl.setInstance(pluralString); + Router.getInstance().updateRouterParams(new URLSearchParams()); return flushTasks(); }); @@ -62,22 +71,13 @@ }), ]; - const section: PasswordsSectionElement = - document.createElement('passwords-section'); - document.body.appendChild(section); - await passwordManager.whenCalled('getCredentialGroups'); - await flushTasks(); + const section = await createPasswordsSection(); - validatePasswordsSubsection( - section.$.passwordsList, passwordManager.data.groups); + validatePasswordsSubsection(section, passwordManager.data.groups); }); test('passwords list is hidden if nothing to show', async function() { - const section: PasswordsSectionElement = - document.createElement('passwords-section'); - document.body.appendChild(section); - await passwordManager.whenCalled('getCredentialGroups'); - await flushTasks(); + const section = await createPasswordsSection(); // PasswordsList is hidden as there are no passwords. assertFalse(isVisible(section.$.passwordsList)); @@ -95,11 +95,7 @@ passwordManager.setRequestCredentialsDetailsResponse( passwordManager.data.groups[0]!.entries.slice()); - const section: PasswordsSectionElement = - document.createElement('passwords-section'); - document.body.appendChild(section); - await passwordManager.whenCalled('getCredentialGroups'); - await flushTasks(); + const section = await createPasswordsSection(); const listEntry = section.shadowRoot!.querySelector<HTMLElement>('password-list-item'); @@ -121,11 +117,7 @@ ], })]; - const section: PasswordsSectionElement = - document.createElement('passwords-section'); - document.body.appendChild(section); - await passwordManager.whenCalled('getCredentialGroups'); - await flushTasks(); + const section = await createPasswordsSection(); const listEntry = section.shadowRoot!.querySelector<HTMLElement>('password-list-item'); @@ -177,4 +169,83 @@ assertTrue(isVisible(numberOfAccounts)); assertEquals(pluralString.text, numberOfAccounts.textContent!.trim()); }); + + test('search by group name', async function() { + passwordManager.data.groups = [ + createCredentialGroup({ + name: 'foo.com', + }), + createCredentialGroup({ + name: 'bar.com', + }), + ]; + + const section = await createPasswordsSection(); + + validatePasswordsSubsection(section, passwordManager.data.groups); + + const query = new URLSearchParams(); + query.set(UrlParam.SEARCH_TERM, 'bar'); + Router.getInstance().updateRouterParams(query); + await flushTasks(); + + validatePasswordsSubsection(section, passwordManager.data.groups.slice(1)); + }); + + test('search by username', async function() { + passwordManager.data.groups = [ + createCredentialGroup({ + name: 'foo.com', + credentials: [createPasswordEntry({username: 'qwerty', id: 0})], + }), + createCredentialGroup({ + name: 'bar.com', + credentials: [createPasswordEntry({username: 'username', id: 1})], + }), + ]; + + const section = await createPasswordsSection(); + + validatePasswordsSubsection(section, passwordManager.data.groups); + + const query = new URLSearchParams(); + query.set(UrlParam.SEARCH_TERM, 'ert'); + Router.getInstance().updateRouterParams(query); + await flushTasks(); + + validatePasswordsSubsection( + section, passwordManager.data.groups.slice(0, 1)); + }); + + test('search by domain', async function() { + passwordManager.data.groups = [ + createCredentialGroup({ + name: 'foo.com', + credentials: [createPasswordEntry({username: 'qwerty', id: 0})], + }), + createCredentialGroup({ + name: 'bar.com', + credentials: [createPasswordEntry({username: 'username', id: 1})], + }), + ]; + passwordManager.data.groups[0]!.entries[0]!.affiliatedDomains = [ + {name: 'foo.de', url: 'https://foo.de/'}, + {name: 'Foo App', url: 'https://m.foo.com/'}, + ]; + passwordManager.data.groups[1]!.entries[0]!.affiliatedDomains = [ + {name: 'bar.uk', url: 'https://bar.uk/'}, + {name: 'Bar App', url: 'https://m.bar.com/'}, + ]; + + const section = await createPasswordsSection(); + + validatePasswordsSubsection(section, passwordManager.data.groups); + + const query = new URLSearchParams(); + query.set(UrlParam.SEARCH_TERM, 'bar.uk'); + Router.getInstance().updateRouterParams(query); + await flushTasks(); + + validatePasswordsSubsection(section, passwordManager.data.groups.slice(1)); + }); });
diff --git a/chrome/test/data/webui/settings/BUILD.gn b/chrome/test/data/webui/settings/BUILD.gn index 2c111a1..a26e155 100644 --- a/chrome/test/data/webui/settings/BUILD.gn +++ b/chrome/test/data/webui/settings/BUILD.gn
@@ -120,6 +120,7 @@ "test_performance_browser_proxy.ts", "test_performance_metrics_proxy.ts", "test_privacy_page_browser_proxy.ts", + "test_privacy_sandbox_browser_proxy.ts", "test_profile_info_browser_proxy.ts", "test_reset_browser_proxy.ts", "test_search_engines_browser_proxy.ts",
diff --git a/chrome/test/data/webui/settings/chromeos/internet_page_tests.js b/chrome/test/data/webui/settings/chromeos/internet_page_tests.js index 2e601bdd..caae105 100644 --- a/chrome/test/data/webui/settings/chromeos/internet_page_tests.js +++ b/chrome/test/data/webui/settings/chromeos/internet_page_tests.js
@@ -9,7 +9,7 @@ import {OncMojo} from 'chrome://resources/ash/common/network/onc_mojo.js'; import {getDeepActiveElement} from 'chrome://resources/ash/common/util.js'; import {ESimManagerRemote} from 'chrome://resources/mojo/chromeos/ash/services/cellular_setup/public/mojom/esim_manager.mojom-webui.js'; -import {CrosNetworkConfigRemote, InhibitReason, VpnType} from 'chrome://resources/mojo/chromeos/services/network_config/public/mojom/cros_network_config.mojom-webui.js'; +import {CrosNetworkConfigRemote, InhibitReason, MAX_NUM_CUSTOM_APNS, VpnType} from 'chrome://resources/mojo/chromeos/services/network_config/public/mojom/cros_network_config.mojom-webui.js'; import {ConnectionStateType, DeviceStateType, NetworkType} from 'chrome://resources/mojo/chromeos/services/network_config/public/mojom/network_types.mojom-webui.js'; import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {FakeNetworkConfig} from 'chrome://webui-test/chromeos/fake_network_config_mojom.js'; @@ -769,8 +769,12 @@ async function() { loadTimeData.overrideValues({isApnRevampEnabled: true}); await navigateToApnSubpage(); + const subpage = internetPage.shadowRoot.querySelector('apn-subpage'); + assertTrue(!!subpage); + const apnList = subpage.shadowRoot.querySelector('apn-list'); + assertTrue(!!apnList); const getApnDetailDialog = () => - internetPage.shadowRoot.querySelector('apn-detail-dialog'); + apnList.shadowRoot.querySelector('apn-detail-dialog'); assertFalse(!!getApnDetailDialog()); const createCustomApnButton = @@ -780,7 +784,7 @@ await flushAsync(); assertTrue(!!getApnDetailDialog()); - const onCloseEventPromise = eventToPromise('close', window); + const onCloseEventPromise = eventToPromise('close', apnList); const cancelBtn = getApnDetailDialog().shadowRoot.querySelector( '#apnDetailCancelBtn'); cancelBtn.click(); @@ -821,6 +825,51 @@ await waitBeforeNextRender(internetPage); assertNotEquals(Router.getInstance().getCurrentRoute(), routes.APN); }); + + test( + 'Disable and show tooltip for New APN button when custom APNs limit is' + + 'reached', + async function() { + loadTimeData.overrideValues({isApnRevampEnabled: true}); + await navigateToApnSubpage(); + const getApnButton = () => + internetPage.shadowRoot.querySelector('#createCustomApnButton'); + const getApnTooltip = () => + internetPage.shadowRoot.querySelector('#apnTooltip'); + + assertTrue(!!getApnButton()); + assertFalse(!!getApnTooltip()); + assertFalse(getApnButton().disabled); + + let properties = OncMojo.getDefaultManagedProperties( + NetworkType.kCellular, 'cellular1', 'cellular'); + // We're setting the list of APNs to the max number + properties.typeProperties.cellular = { + customApnList: + Array.apply(null, {length: MAX_NUM_CUSTOM_APNS}).map(_ => { + return { + accessPointName: 'apn', + }; + }), + }; + mojoApi_.setManagedPropertiesForTest(properties); + await flushAsync(); + + assertTrue(!!getApnTooltip()); + assertTrue(getApnButton().disabled); + assertTrue(getApnTooltip().innerHTML.includes( + internetPage.i18n('customApnLimitReached'))); + + properties = OncMojo.getDefaultManagedProperties( + NetworkType.kCellular, 'cellular1', 'cellular'); + properties.typeProperties.cellular = { + customApnList: [], + }; + mojoApi_.setManagedPropertiesForTest(properties); + await flushAsync(); + assertFalse(!!getApnTooltip()); + assertFalse(getApnButton().disabled); + }); // TODO(stevenjb): Figure out a way to reliably test navigation. Currently // such tests are flaky. });
diff --git a/chrome/test/data/webui/settings/privacy_sandbox_page_test.ts b/chrome/test/data/webui/settings/privacy_sandbox_page_test.ts index b0a7dbb..6e68ed2 100644 --- a/chrome/test/data/webui/settings/privacy_sandbox_page_test.ts +++ b/chrome/test/data/webui/settings/privacy_sandbox_page_test.ts
@@ -9,7 +9,7 @@ import {CrSettingsPrefs, Router, routes, SettingsPrefsElement} from 'chrome://settings/settings.js'; import {assertEquals, assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js'; import {flushTasks} from 'chrome://webui-test/polymer_test_util.js'; -import {isVisible} from 'chrome://webui-test/test_util.js'; +import {isChildVisible, isVisible} from 'chrome://webui-test/test_util.js'; suite('PrivacySandboxPageTests', function() { let page: SettingsPrivacySandboxPageElement; @@ -145,6 +145,9 @@ assertEquals( loadTimeData.getString('topicsPageToggleSubLabel'), page.$.topicsToggle.subLabel); + assertFalse(isChildVisible(page, '#currentTopicsDescription')); + assertFalse(isChildVisible(page, '#currentTopicsDescriptionEmpty')); + assertTrue(isChildVisible(page, '#currentTopicsDescriptionDisabled')); page.$.topicsToggle.click(); await flushTasks(); @@ -154,6 +157,12 @@ loadTimeData.getString('topicsPageToggleSubLabel'), page.$.topicsToggle.subLabel); assertTrue(!!page.getPref('privacy_sandbox.m1.topics_enabled.value')); + // TODO(crbug.com/1378703): Test for `#currentTopicsDescription` and + // `#currentTopicsDescriptionEmpty` separately. + assertTrue( + isChildVisible(page, '#currentTopicsDescription') || + isChildVisible(page, '#currentTopicsDescriptionEmpty')); + assertFalse(isChildVisible(page, '#currentTopicsDescriptionDisabled')); }); test('disableTopicsToggle', async function() { @@ -164,6 +173,12 @@ assertEquals( loadTimeData.getString('topicsPageToggleSubLabel'), page.$.topicsToggle.subLabel); + // TODO(crbug.com/1378703): Test for `#currentTopicsDescription` and + // `#currentTopicsDescriptionEmpty` separately. + assertTrue( + isChildVisible(page, '#currentTopicsDescription') || + isChildVisible(page, '#currentTopicsDescriptionEmpty')); + assertFalse(isChildVisible(page, '#currentTopicsDescriptionDisabled')); page.$.topicsToggle.click(); await flushTasks(); @@ -173,6 +188,9 @@ loadTimeData.getString('topicsPageToggleSubLabel'), page.$.topicsToggle.subLabel); assertFalse(!!page.getPref('privacy_sandbox.m1.topics_enabled.value')); + assertFalse(isChildVisible(page, '#currentTopicsDescription')); + assertFalse(isChildVisible(page, '#currentTopicsDescriptionEmpty')); + assertTrue(isChildVisible(page, '#currentTopicsDescriptionDisabled')); }); });
diff --git a/chrome/test/data/webui/settings/privacy_sandbox_test.ts b/chrome/test/data/webui/settings/privacy_sandbox_test.ts index 7a056c6..e4d15e0 100644 --- a/chrome/test/data/webui/settings/privacy_sandbox_test.ts +++ b/chrome/test/data/webui/settings/privacy_sandbox_test.ts
@@ -7,53 +7,15 @@ import {DomIf} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {CrDialogElement} from 'chrome://settings/lazy_load.js'; import {PrivacySandboxAppElement, PrivacySandboxSettingsView} from 'chrome://settings/privacy_sandbox/app.js'; -import {CanonicalTopic, PrivacySandboxBrowserProxy, PrivacySandboxBrowserProxyImpl} from 'chrome://settings/privacy_sandbox/privacy_sandbox_browser_proxy.js'; +import {PrivacySandboxBrowserProxyImpl} from 'chrome://settings/privacy_sandbox/privacy_sandbox_browser_proxy.js'; import {CrSettingsPrefs, HatsBrowserProxyImpl, MetricsBrowserProxyImpl, TrustSafetyInteraction} from 'chrome://settings/settings.js'; import {assertEquals, assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js'; import {flushTasks} from 'chrome://webui-test/polymer_test_util.js'; -import {TestBrowserProxy} from 'chrome://webui-test/test_browser_proxy.js'; import {eventToPromise, isVisible} from 'chrome://webui-test/test_util.js'; import {TestHatsBrowserProxy} from './test_hats_browser_proxy.js'; import {TestMetricsBrowserProxy} from './test_metrics_browser_proxy.js'; - -class TestPrivacySandboxBrowserProxy extends TestBrowserProxy implements - PrivacySandboxBrowserProxy { - constructor() { - super([ - 'getFledgeState', - 'setFledgeJoiningAllowed', - 'getTopicsState', - 'setTopicAllowed', - ]); - } - - getFledgeState() { - this.methodCalled('getFledgeState'); - return Promise.resolve({ - joiningSites: ['test-site-one.com'], - blockedSites: ['test-site-two.com'], - }); - } - - setFledgeJoiningAllowed(site: string, allowed: boolean) { - this.methodCalled('setFledgeJoiningAllowed', [site, allowed]); - } - - getTopicsState() { - this.methodCalled('getTopicsState'); - return Promise.resolve({ - topTopics: - [{topicId: 1, taxonomyVersion: 1, displayString: 'test-topic-1'}], - blockedTopics: - [{topicId: 2, taxonomyVersion: 1, displayString: 'test-topic-2'}], - }); - } - - setTopicAllowed(topic: CanonicalTopic, allowed: boolean) { - this.methodCalled('setTopicAllowed', [topic, allowed]); - } -} +import {TestPrivacySandboxBrowserProxy} from './test_privacy_sandbox_browser_proxy.js'; suite('PrivacySandboxSettings', function() { let page: PrivacySandboxAppElement;
diff --git a/chrome/test/data/webui/settings/test_privacy_sandbox_browser_proxy.ts b/chrome/test/data/webui/settings/test_privacy_sandbox_browser_proxy.ts new file mode 100644 index 0000000..21d028f --- /dev/null +++ b/chrome/test/data/webui/settings/test_privacy_sandbox_browser_proxy.ts
@@ -0,0 +1,44 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import {CanonicalTopic, PrivacySandboxBrowserProxy} from 'chrome://settings/privacy_sandbox/privacy_sandbox_browser_proxy.js'; +import {TestBrowserProxy} from 'chrome://webui-test/test_browser_proxy.js'; + +export class TestPrivacySandboxBrowserProxy extends TestBrowserProxy implements + PrivacySandboxBrowserProxy { + constructor() { + super([ + 'getFledgeState', + 'setFledgeJoiningAllowed', + 'getTopicsState', + 'setTopicAllowed', + ]); + } + + getFledgeState() { + this.methodCalled('getFledgeState'); + return Promise.resolve({ + joiningSites: ['test-site-one.com'], + blockedSites: ['test-site-two.com'], + }); + } + + setFledgeJoiningAllowed(site: string, allowed: boolean) { + this.methodCalled('setFledgeJoiningAllowed', [site, allowed]); + } + + getTopicsState() { + this.methodCalled('getTopicsState'); + return Promise.resolve({ + topTopics: + [{topicId: 1, taxonomyVersion: 1, displayString: 'test-topic-1'}], + blockedTopics: + [{topicId: 2, taxonomyVersion: 1, displayString: 'test-topic-2'}], + }); + } + + setTopicAllowed(topic: CanonicalTopic, allowed: boolean) { + this.methodCalled('setTopicAllowed', [topic, allowed]); + } +}
diff --git a/chromeos/ash/components/drivefs/mojom/drivefs.mojom b/chromeos/ash/components/drivefs/mojom/drivefs.mojom index e357121..8db29ad 100644 --- a/chromeos/ash/components/drivefs/mojom/drivefs.mojom +++ b/chromeos/ash/components/drivefs/mojom/drivefs.mojom
@@ -488,7 +488,7 @@ }; // Definition of the search request sent to DriveFS. -// Next MinVersion: 3 +// Next MinVersion: 4 struct QueryParameters { // Where this request should go to. enum QuerySource { @@ -543,6 +543,10 @@ // Note: this field is preferred to "mime_type" field above, when processing // the query, the "mime_type" will be merged into this "mime_types" field. [MinVersion=2] array<string>? mime_types; + + // Only show results that are in the users "My drive" directory excluding + // others such as Team drives and trashed files. + [MinVersion=3] bool my_drive_results_only = false; }; // TODO(crbug.com/896777): Put this inside QueryParameters once linked bug is
diff --git a/chromeos/chromeos_strings.grd b/chromeos/chromeos_strings.grd index 33dbccd..996ce6c1 100644 --- a/chromeos/chromeos_strings.grd +++ b/chromeos/chromeos_strings.grd
@@ -3685,6 +3685,9 @@ <message name="IDS_SETTINGS_APN_DESCRIPTION_NO_LINK" desc="Text describing APN settings menu without a link to more detailed information."> Manage network APN settings. APNs establish a connection between a cellular network and the internet. </message> + <message name="IDS_SETTINGS_CUSTOM_APN_LIMIT_REACHED" desc="Title shown when custom APNs limit is reached"> + Remove an APN to add a new APN + </message> <message name="IDS_SETTINGS_APN_DESCRIPTION_WITH_LEARN_MORE_LINK" desc="Text describing APN settings menu with a link to more detailed information."> Manage network APN settings. APNs establish a connection between a cellular network and the internet. <ph name="BEGIN_LINK"><a href="#" ></ph>Learn more<ph name="END_LINK"></a></ph> </message>
diff --git a/chromeos/chromeos_strings_grd/IDS_SETTINGS_CUSTOM_APN_LIMIT_REACHED.png.sha1 b/chromeos/chromeos_strings_grd/IDS_SETTINGS_CUSTOM_APN_LIMIT_REACHED.png.sha1 new file mode 100644 index 0000000..6e633f7 --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_SETTINGS_CUSTOM_APN_LIMIT_REACHED.png.sha1
@@ -0,0 +1 @@ +c2da7a8afe69a511f2cdca103a324a3779f8aefe \ No newline at end of file
diff --git a/chromeos/profiles/atom.afdo.newest.txt b/chromeos/profiles/atom.afdo.newest.txt index 5d706e35..768acc6f 100644 --- a/chromeos/profiles/atom.afdo.newest.txt +++ b/chromeos/profiles/atom.afdo.newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-atom-110-5447.0-1670239482-benchmark-110.0.5464.0-r1-redacted.afdo.xz +chromeos-chrome-amd64-atom-110-5447.0-1670842982-benchmark-110.0.5464.0-r2-redacted.afdo.xz
diff --git a/chromeos/profiles/bigcore.afdo.newest.txt b/chromeos/profiles/bigcore.afdo.newest.txt index cdfedcfe..e247017 100644 --- a/chromeos/profiles/bigcore.afdo.newest.txt +++ b/chromeos/profiles/bigcore.afdo.newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-bigcore-110-5414.21-1670238603-benchmark-110.0.5464.0-r1-redacted.afdo.xz +chromeos-chrome-amd64-bigcore-110-5447.0-1670844852-benchmark-110.0.5464.0-r2-redacted.afdo.xz
diff --git a/chromeos/strings/chromeos_strings_ar.xtb b/chromeos/strings/chromeos_strings_ar.xtb index 4cdcea2..88c0c89 100644 --- a/chromeos/strings/chromeos_strings_ar.xtb +++ b/chromeos/strings/chromeos_strings_ar.xtb
@@ -491,6 +491,7 @@ <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> <translation id="5559898619118303662">التبديل تلقائيًا إلى المظهر الداكن عند الغروب</translation> +<translation id="5571714952674387371">عرض التفاصيل وتعديلها</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">إعادة المسح الضوئي</translation> <translation id="5583640892426849032">Backspace</translation>
diff --git a/chromeos/strings/chromeos_strings_as.xtb b/chromeos/strings/chromeos_strings_as.xtb index 87d8699..010f2f5 100644 --- a/chromeos/strings/chromeos_strings_as.xtb +++ b/chromeos/strings/chromeos_strings_as.xtb
@@ -871,6 +871,7 @@ <translation id="9173638680043580060">এক মিনিটতকৈ কম সময় বাকী আছে</translation> <translation id="917720651393141712">পৰীক্ষা কৰক</translation> <translation id="9188992814426075118">আপোনাৰ কীব’ৰ্ডে স্বয়ংক্ৰিয়ভাৱে আপোনাৰ ৱালপেপাৰ মিলাব পাৰে</translation> +<translation id="9193744392140377127">এপিএন*</translation> <translation id="9204237731135241582">Android এপৰ পৰা গে’টৱে’ সংযোগ কৰিব নোৱাৰি</translation> <translation id="9211490828691860325">আটাইবোৰ ডেস্ক</translation> <translation id="932327136139879170">গৃহ</translation>
diff --git a/chromeos/strings/chromeos_strings_az.xtb b/chromeos/strings/chromeos_strings_az.xtb index 3309b3f..a4b8d24 100644 --- a/chromeos/strings/chromeos_strings_az.xtb +++ b/chromeos/strings/chromeos_strings_az.xtb
@@ -490,6 +490,7 @@ <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> <translation id="5559898619118303662">Gün batımında avtomatik olaraq tünd temaya keçin</translation> +<translation id="5571714952674387371">Detallara baxın və redaktə edin</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">Yenidən skan edin</translation> <translation id="5583640892426849032">Geri silmə</translation>
diff --git a/chromeos/strings/chromeos_strings_bg.xtb b/chromeos/strings/chromeos_strings_bg.xtb index 9e9dde2..bef9518 100644 --- a/chromeos/strings/chromeos_strings_bg.xtb +++ b/chromeos/strings/chromeos_strings_bg.xtb
@@ -871,6 +871,7 @@ <translation id="9173638680043580060">Остава по-малко от минута</translation> <translation id="917720651393141712">Тест</translation> <translation id="9188992814426075118">Фоновото осветление на клавиатурата може да се променя автоматично спрямо тапета ви</translation> +<translation id="9193744392140377127">Име на точката за достъп (APN)*</translation> <translation id="9204237731135241582">Не може да бъде установена връзка с шлюза от приложения за Android</translation> <translation id="9211490828691860325">Всички работни кътове</translation> <translation id="932327136139879170">Начална страница</translation>
diff --git a/chromeos/strings/chromeos_strings_bs.xtb b/chromeos/strings/chromeos_strings_bs.xtb index 30709f0..5226848 100644 --- a/chromeos/strings/chromeos_strings_bs.xtb +++ b/chromeos/strings/chromeos_strings_bs.xtb
@@ -491,7 +491,7 @@ <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> <translation id="5559898619118303662">Automatski prebacite na tamnu temu prilikom zalaska sunca</translation> -<translation id="5571714952674387371">Prikaz i uređivanje pojedinosti</translation> +<translation id="5571714952674387371">Pregledajte i uredite detalje</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">Skeniraj ponovo</translation> <translation id="5583640892426849032">Tipka za brisanje</translation>
diff --git a/chromeos/strings/chromeos_strings_da.xtb b/chromeos/strings/chromeos_strings_da.xtb index 026741a..3101dbd 100644 --- a/chromeos/strings/chromeos_strings_da.xtb +++ b/chromeos/strings/chromeos_strings_da.xtb
@@ -869,6 +869,7 @@ <translation id="9173638680043580060">Mindre end ét minut tilbage</translation> <translation id="917720651393141712">Test</translation> <translation id="9188992814426075118">Dit tastatur kan automatisk tilpasses din baggrund</translation> +<translation id="9193744392140377127">Adgangspunkt*</translation> <translation id="9204237731135241582">Gateway kan ikke kontaktes fra Android-apps</translation> <translation id="9211490828691860325">Alle skriveborde</translation> <translation id="932327136139879170">Start</translation>
diff --git a/chromeos/strings/chromeos_strings_de.xtb b/chromeos/strings/chromeos_strings_de.xtb index 2d0f683..13f46adf 100644 --- a/chromeos/strings/chromeos_strings_de.xtb +++ b/chromeos/strings/chromeos_strings_de.xtb
@@ -870,6 +870,7 @@ <translation id="9173638680043580060">Nur noch wenige Sekunden</translation> <translation id="917720651393141712">Testen</translation> <translation id="9188992814426075118">Die Tastatur kann automatisch an den Hintergrund angepasst werden</translation> +<translation id="9193744392140377127">APN*</translation> <translation id="9204237731135241582">Gateway kann von Android-Apps aus nicht kontaktiert werden</translation> <translation id="9211490828691860325">Alle Desktops</translation> <translation id="932327136139879170">Startseite</translation>
diff --git a/chromeos/strings/chromeos_strings_en-GB.xtb b/chromeos/strings/chromeos_strings_en-GB.xtb index 6bbe9cfd..232a09e 100644 --- a/chromeos/strings/chromeos_strings_en-GB.xtb +++ b/chromeos/strings/chromeos_strings_en-GB.xtb
@@ -491,6 +491,7 @@ <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> <translation id="5559898619118303662">Automatically switch to Dark theme at sunset</translation> +<translation id="5571714952674387371">View and edit details</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">Rescan</translation> <translation id="5583640892426849032">Backspace</translation> @@ -870,6 +871,7 @@ <translation id="9173638680043580060">Less than a minute remaining</translation> <translation id="917720651393141712">Test</translation> <translation id="9188992814426075118">Your keyboard can automatically match your wallpaper</translation> +<translation id="9193744392140377127">APN*</translation> <translation id="9204237731135241582">Can't contact the gateway from Android apps</translation> <translation id="9211490828691860325">All desks</translation> <translation id="932327136139879170">Home</translation>
diff --git a/chromeos/strings/chromeos_strings_es.xtb b/chromeos/strings/chromeos_strings_es.xtb index 6964d00..2397ece 100644 --- a/chromeos/strings/chromeos_strings_es.xtb +++ b/chromeos/strings/chromeos_strings_es.xtb
@@ -490,6 +490,7 @@ <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> <translation id="5559898619118303662">Cambiar automáticamente al tema oscuro al anochecer</translation> +<translation id="5571714952674387371">Ver y editar detalles</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">Escanear de nuevo</translation> <translation id="5583640892426849032">Tecla de retroceso</translation>
diff --git a/chromeos/strings/chromeos_strings_et.xtb b/chromeos/strings/chromeos_strings_et.xtb index 1d584dd..9ada2119 100644 --- a/chromeos/strings/chromeos_strings_et.xtb +++ b/chromeos/strings/chromeos_strings_et.xtb
@@ -491,6 +491,7 @@ <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> <translation id="5559898619118303662">Päikeseloojangul automaatselt tumedale teemale lülitumine</translation> +<translation id="5571714952674387371">Üksikasjade vaatamine ja muutmine</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">Skanni uuesti</translation> <translation id="5583640892426849032">Tagasilükkeklahv</translation>
diff --git a/chromeos/strings/chromeos_strings_fa.xtb b/chromeos/strings/chromeos_strings_fa.xtb index d4eadc4..d57582fb 100644 --- a/chromeos/strings/chromeos_strings_fa.xtb +++ b/chromeos/strings/chromeos_strings_fa.xtb
@@ -491,6 +491,7 @@ <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> <translation id="5559898619118303662">رفتن خودکار به زمینه تیره هنگام غروب</translation> +<translation id="5571714952674387371">مشاهده و ویرایش جزئیات</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">اسکن مجدد</translation> <translation id="5583640892426849032">Backspace</translation>
diff --git a/chromeos/strings/chromeos_strings_fr.xtb b/chromeos/strings/chromeos_strings_fr.xtb index 30f9772..39157448 100644 --- a/chromeos/strings/chromeos_strings_fr.xtb +++ b/chromeos/strings/chromeos_strings_fr.xtb
@@ -578,7 +578,7 @@ <translation id="6340526405444716530">Personnalisation</translation> <translation id="6348738456043757611">Nom d'utilisateur et mot de passe</translation> <translation id="6359706544163531585">Désactiver le thème clair</translation> -<translation id="636850387210749493">Inscription d'entreprise</translation> +<translation id="636850387210749493">Enregistrement d'entreprise</translation> <translation id="6379086450106841622">Écran tactile</translation> <translation id="6381741036071372448">Testez le clavier</translation> <translation id="6388847657025262518">Le chargeur de document du scanner est bloqué. Vérifiez le chargeur, puis réessayez.</translation>
diff --git a/chromeos/strings/chromeos_strings_gl.xtb b/chromeos/strings/chromeos_strings_gl.xtb index 846031dd..788221c 100644 --- a/chromeos/strings/chromeos_strings_gl.xtb +++ b/chromeos/strings/chromeos_strings_gl.xtb
@@ -491,6 +491,7 @@ <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> <translation id="5559898619118303662">Cambiar automaticamente ao tema escuro á hora do solpor</translation> +<translation id="5571714952674387371">Consulta e modifica os detalles</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">Volver buscar</translation> <translation id="5583640892426849032">Retroceso</translation>
diff --git a/chromeos/strings/chromeos_strings_gu.xtb b/chromeos/strings/chromeos_strings_gu.xtb index c2bb780..2aa69530 100644 --- a/chromeos/strings/chromeos_strings_gu.xtb +++ b/chromeos/strings/chromeos_strings_gu.xtb
@@ -870,6 +870,7 @@ <translation id="9173638680043580060">એક મિનિટ કરતાં ઓછો સમય બાકી છે</translation> <translation id="917720651393141712">પરીક્ષણ કરો</translation> <translation id="9188992814426075118">તમારું કીબોર્ડ ઑટોમૅટિક રીતે તમારા વૉલપેપર સાથે મેળ કરી શકે છે</translation> +<translation id="9193744392140377127">APN*</translation> <translation id="9204237731135241582">Android ઍપથી ગેટવે સાથે સંપર્ક કરી શકતા નથી</translation> <translation id="9211490828691860325">તમામ ડેસ્ક</translation> <translation id="932327136139879170">હોમ</translation>
diff --git a/chromeos/strings/chromeos_strings_hi.xtb b/chromeos/strings/chromeos_strings_hi.xtb index 59817727..a5c4990 100644 --- a/chromeos/strings/chromeos_strings_hi.xtb +++ b/chromeos/strings/chromeos_strings_hi.xtb
@@ -491,6 +491,7 @@ <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> <translation id="5559898619118303662">शाम होने पर, अपने-आप गहरे रंग वाली थीम पर स्विच करें</translation> +<translation id="5571714952674387371">जानकारी देखें और उसमें बदलाव करें</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">दोबारा स्कैन करें</translation> <translation id="5583640892426849032">Backspace</translation> @@ -870,6 +871,7 @@ <translation id="9173638680043580060">एक मिनट से कम बचा है</translation> <translation id="917720651393141712">टेस्ट</translation> <translation id="9188992814426075118">कीबोर्ड की बैकलाइट, आपके वॉलपेपर के हिसाब से अपने-आप सेट हो सकती है</translation> +<translation id="9193744392140377127">एपीएन*</translation> <translation id="9204237731135241582">Android ऐप्लिकेशन से, गेटवे के साथ संपर्क नहीं किया जा सकता</translation> <translation id="9211490828691860325">सभी डेस्क</translation> <translation id="932327136139879170">होम बटन</translation>
diff --git a/chromeos/strings/chromeos_strings_id.xtb b/chromeos/strings/chromeos_strings_id.xtb index 89a559f..c84106a 100644 --- a/chromeos/strings/chromeos_strings_id.xtb +++ b/chromeos/strings/chromeos_strings_id.xtb
@@ -491,6 +491,7 @@ <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> <translation id="5559898619118303662">Otomatis beralih ke tema gelap saat matahari terbenam</translation> +<translation id="5571714952674387371">Lihat dan edit detail</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">Pindai ulang</translation> <translation id="5583640892426849032">Backspace</translation> @@ -870,6 +871,7 @@ <translation id="9173638680043580060">Kurang dari satu menit lagi</translation> <translation id="917720651393141712">Uji</translation> <translation id="9188992814426075118">Keyboard dapat otomatis menyesuaikan dengan wallpaper Anda</translation> +<translation id="9193744392140377127">APN*</translation> <translation id="9204237731135241582">Tidak dapat terhubung ke gateway dari aplikasi Android</translation> <translation id="9211490828691860325">Semua desktop</translation> <translation id="932327136139879170">Beranda</translation>
diff --git a/chromeos/strings/chromeos_strings_ko.xtb b/chromeos/strings/chromeos_strings_ko.xtb index addc619..13a4663 100644 --- a/chromeos/strings/chromeos_strings_ko.xtb +++ b/chromeos/strings/chromeos_strings_ko.xtb
@@ -491,6 +491,7 @@ <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> <translation id="5559898619118303662">일몰 시 어두운 테마로 자동 전환</translation> +<translation id="5571714952674387371">세부정보 보기 및 수정</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">다시 스캔</translation> <translation id="5583640892426849032">Backspace</translation> @@ -870,6 +871,7 @@ <translation id="9173638680043580060">1분 미만 남음</translation> <translation id="917720651393141712">테스트</translation> <translation id="9188992814426075118">키보드 백라이트가 배경화면에 어울리게 자동으로 설정됩니다.</translation> +<translation id="9193744392140377127">APN*</translation> <translation id="9204237731135241582">Android 앱에서 게이트웨이에 접근할 수 없습니다.</translation> <translation id="9211490828691860325">모든 데스크</translation> <translation id="932327136139879170">홈</translation>
diff --git a/chromeos/strings/chromeos_strings_lo.xtb b/chromeos/strings/chromeos_strings_lo.xtb index 4e5d8e5..bcabbc3 100644 --- a/chromeos/strings/chromeos_strings_lo.xtb +++ b/chromeos/strings/chromeos_strings_lo.xtb
@@ -872,6 +872,7 @@ <translation id="9173638680043580060">ເຫຼືອບໍ່ຮອດໜຶ່ງນາທີ</translation> <translation id="917720651393141712">ທົດສອບ</translation> <translation id="9188992814426075118">ແປ້ນພິມຂອງທ່ານສາມາດຈັບຄູ່ກັບຮູບພື້ນຫຼັງຂອງທ່ານໄດ້ອັດຕະໂນມັດ</translation> +<translation id="9193744392140377127">APN*</translation> <translation id="9204237731135241582">ບໍ່ສາມາດຕິດຕໍ່ຫາເກດເວຈາກແອັບ Android ໄດ້</translation> <translation id="9211490828691860325">ໂຕະທັງໝົດ</translation> <translation id="932327136139879170">ບ້ານ</translation>
diff --git a/chromeos/strings/chromeos_strings_my.xtb b/chromeos/strings/chromeos_strings_my.xtb index 04fa961..e42975bb 100644 --- a/chromeos/strings/chromeos_strings_my.xtb +++ b/chromeos/strings/chromeos_strings_my.xtb
@@ -490,6 +490,7 @@ <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> <translation id="5559898619118303662">နေဝင်ချိန်တွင် အမှောင်နောက်ခံသို့ အလိုအလျောက်ပြောင်းရန်</translation> +<translation id="5571714952674387371">အသေးစိတ် ကြည့်ပြီး တည်းဖြတ်ခြင်း</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">စကင်ပြန်ဖတ်ရန်</translation> <translation id="5583640892426849032">နောက်ပြန်</translation>
diff --git a/chromeos/strings/chromeos_strings_ro.xtb b/chromeos/strings/chromeos_strings_ro.xtb index 0e6ba28..3cd67c4 100644 --- a/chromeos/strings/chromeos_strings_ro.xtb +++ b/chromeos/strings/chromeos_strings_ro.xtb
@@ -491,6 +491,7 @@ <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> <translation id="5559898619118303662">Comută automat la tema întunecată la apus</translation> +<translation id="5571714952674387371">Vezi și editează detaliile</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">Scanează din nou</translation> <translation id="5583640892426849032">Backspace</translation>
diff --git a/chromeos/strings/chromeos_strings_sl.xtb b/chromeos/strings/chromeos_strings_sl.xtb index f1d2459..525122c 100644 --- a/chromeos/strings/chromeos_strings_sl.xtb +++ b/chromeos/strings/chromeos_strings_sl.xtb
@@ -870,6 +870,7 @@ <translation id="9173638680043580060">Še manj kot minuta</translation> <translation id="917720651393141712">Preizkus</translation> <translation id="9188992814426075118">Tipkovnica se lahko samodejno ujema z zaslonskim ozadjem.</translation> +<translation id="9193744392140377127">APN*</translation> <translation id="9204237731135241582">Iz aplikacij za Android ni mogoče vzpostaviti stika s prehodom.</translation> <translation id="9211490828691860325">Vsa namizja</translation> <translation id="932327136139879170">Domov</translation>
diff --git a/chromeos/strings/chromeos_strings_sw.xtb b/chromeos/strings/chromeos_strings_sw.xtb index ce84b7a7..0c9ecfa 100644 --- a/chromeos/strings/chromeos_strings_sw.xtb +++ b/chromeos/strings/chromeos_strings_sw.xtb
@@ -490,6 +490,7 @@ <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> <translation id="5559898619118303662">Badilisha kiotomatiki kuwa mandhari meusi wakati wa machweo</translation> +<translation id="5571714952674387371">Kuangalia na kubadilisha maelezo</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">Changanua upya</translation> <translation id="5583640892426849032">Backspace</translation>
diff --git a/chromeos/strings/chromeos_strings_te.xtb b/chromeos/strings/chromeos_strings_te.xtb index b55c483..9e1adfb 100644 --- a/chromeos/strings/chromeos_strings_te.xtb +++ b/chromeos/strings/chromeos_strings_te.xtb
@@ -510,7 +510,7 @@ <translation id="576835345334454681">డిస్ప్లే బ్రైట్నెస్ను పెంచండి</translation> <translation id="57838592816432529">మ్యూట్ చేయి</translation> <translation id="5784136236926853061">అధిక HTTPS ప్రతిస్పందన సమయం</translation> -<translation id="5832805196449965646">వ్యక్తిని జోడించు</translation> +<translation id="5832805196449965646">వ్యక్తిని జోడించండి</translation> <translation id="583281660410589416">తెలియని</translation> <translation id="5843706793424741864">ఫారెన్హీట్</translation> <translation id="5849570051105887917">స్వస్థల నెట్వర్క్ ప్రదాత కోడ్</translation> @@ -520,7 +520,7 @@ <translation id="5866840822086176774">చాలా బలంగా ఉంది</translation> <translation id="5876385649737594562">ఆప్షన్లను ఎంచుకోవడానికి ఆన్ చేయండి</translation> <translation id="588258955323874662">పూర్తితెర</translation> -<translation id="5895138241574237353">మళ్ళీ ప్రారంభించు</translation> +<translation id="5895138241574237353">మళ్ళీ ప్రారంభించండి</translation> <translation id="5901630391730855834">పసుపు</translation> <translation id="5903200662178656908">పరికరం అనేది కీబోర్డ్, మౌస్ కలయిక.</translation> <translation id="5904994456462260490">కొత్త APNని జోడించండి</translation> @@ -762,7 +762,7 @@ <translation id="8206859287963243715">సెల్యులార్</translation> <translation id="8208861521865154048">పెర్క్లు</translation> <translation id="8226628635270268143">మీకు ఇష్టమైన ఫోటోలు, ఆల్బమ్లను ఎంచుకోండి</translation> -<translation id="8227119283605456246">ఫైల్ను జోడించు</translation> +<translation id="8227119283605456246">ఫైల్ను జోడించండి</translation> <translation id="8230672074305416752">డిఫాల్ట్ నెట్వర్క్ గేట్వేను పింగ్ చేయడంలో విఫలమైంది</translation> <translation id="8246209727385807362">తెలియని క్యారియర్</translation> <translation id="827422111966801947">నీలిమందు రంగు</translation> @@ -870,6 +870,7 @@ <translation id="9173638680043580060">నిమిషం కంటే తక్కువ సమయం మిగిలి ఉంది</translation> <translation id="917720651393141712">టెస్ట్ చేయండి</translation> <translation id="9188992814426075118">మీ కీబోర్డ్ ఆటోమేటిక్గా మీ వాల్పేపర్తో మ్యాచ్ అవుతుంది</translation> +<translation id="9193744392140377127">APN*</translation> <translation id="9204237731135241582">Android యాప్ల నుండి గేట్వేను సంప్రదించడం సాధ్యపడదు</translation> <translation id="9211490828691860325">అన్ని డెస్క్లు</translation> <translation id="932327136139879170">హోమ్</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-HK.xtb b/chromeos/strings/chromeos_strings_zh-HK.xtb index e4ce517..8132b89 100644 --- a/chromeos/strings/chromeos_strings_zh-HK.xtb +++ b/chromeos/strings/chromeos_strings_zh-HK.xtb
@@ -871,6 +871,7 @@ <translation id="9173638680043580060">尚餘不到 1 分鐘</translation> <translation id="917720651393141712">測試</translation> <translation id="9188992814426075118">鍵盤可自動與桌布配搭</translation> +<translation id="9193744392140377127">APN*</translation> <translation id="9204237731135241582">無法從 Android 應用程式連線至閘道</translation> <translation id="9211490828691860325">所有桌面</translation> <translation id="932327136139879170">首頁</translation>
diff --git a/chromeos/strings/chromeos_strings_zh-TW.xtb b/chromeos/strings/chromeos_strings_zh-TW.xtb index ab569b3a..a31e03b 100644 --- a/chromeos/strings/chromeos_strings_zh-TW.xtb +++ b/chromeos/strings/chromeos_strings_zh-TW.xtb
@@ -491,6 +491,7 @@ <translation id="5519195206574732858">LTE</translation> <translation id="554517032089923082">GTC</translation> <translation id="5559898619118303662">日落後自動切換到深色主題</translation> +<translation id="5571714952674387371">查看和編輯詳細資料</translation> <translation id="5578477003638479617">UMTS</translation> <translation id="5578519639599103840">重新掃描</translation> <translation id="5583640892426849032">Backspace</translation> @@ -870,6 +871,7 @@ <translation id="9173638680043580060">還剩不到 1 分鐘</translation> <translation id="917720651393141712">測試</translation> <translation id="9188992814426075118">鍵盤可以自動與桌布搭配</translation> +<translation id="9193744392140377127">APN*</translation> <translation id="9204237731135241582">無法從 Android 應用程式連線至閘道</translation> <translation id="9211490828691860325">所有桌面</translation> <translation id="932327136139879170">首頁</translation>
diff --git a/chromeos/strings/chromeos_strings_zu.xtb b/chromeos/strings/chromeos_strings_zu.xtb index 47667ad0..cf142706 100644 --- a/chromeos/strings/chromeos_strings_zu.xtb +++ b/chromeos/strings/chromeos_strings_zu.xtb
@@ -491,6 +491,7 @@ <translation id="5519195206574732858">I-LTE</translation> <translation id="554517032089923082">I-GTC</translation> <translation id="5559898619118303662">Shintsha ngokuzenzakalelayo kutimu emnyama ekushoneni kwelanga</translation> +<translation id="5571714952674387371">Buka futhi uhlele imininingwane</translation> <translation id="5578477003638479617">I-UMTS</translation> <translation id="5578519639599103840">Phinda uskene</translation> <translation id="5583640892426849032">I-Backspace</translation> @@ -870,6 +871,7 @@ <translation id="9173638680043580060">Ngaphansi kweminithi okusele</translation> <translation id="917720651393141712">Ukuhlolwa</translation> <translation id="9188992814426075118">Ikhibhodi yakho ingafanisa ngokuzenzekelayo isithombe sakho sangemuva</translation> +<translation id="9193744392140377127">I-APN*</translation> <translation id="9204237731135241582">Ayikwazi ukuxhumana nomasango ovela kuma-app we-Android</translation> <translation id="9211490828691860325">Wonke amatafula</translation> <translation id="932327136139879170">Ikhaya</translation>
diff --git a/chromeos/tast_control.gni b/chromeos/tast_control.gni index 203f2b5..43e56b0 100644 --- a/chromeos/tast_control.gni +++ b/chromeos/tast_control.gni
@@ -299,6 +299,9 @@ # http://b/261363192 "crostini.*@kevin", + # http://b/262361695 + "printer.ProxyAdd.*", + # READ COMMENT AT TOP BEFORE ADDING NEW TESTS HERE. ]
diff --git a/components/autofill_payments_strings.grdp b/components/autofill_payments_strings.grdp index 19d63c9c..17984953 100644 --- a/components/autofill_payments_strings.grdp +++ b/components/autofill_payments_strings.grdp
@@ -782,6 +782,9 @@ <message name="IDS_AUTOFILL_CREDIT_CARD_BOTTOM_SHEET_TITLE" desc="The title of the touch to fill bottom sheet for payments that appears under the GPay icon." formatter_data="android_java"> Autofill payment info </message> + <message name="IDS_AUTOFILL_CREDIT_CARD_CONTINUE_BUTTON" desc="The label of the button, which would fill in the web form with card credentials." formatter_data="android_java"> + Continue + </message> </if> </grit-part>
diff --git a/components/autofill_payments_strings_grdp/IDS_AUTOFILL_CREDIT_CARD_CONTINUE_BUTTON.png.sha1 b/components/autofill_payments_strings_grdp/IDS_AUTOFILL_CREDIT_CARD_CONTINUE_BUTTON.png.sha1 new file mode 100644 index 0000000..786991cb7 --- /dev/null +++ b/components/autofill_payments_strings_grdp/IDS_AUTOFILL_CREDIT_CARD_CONTINUE_BUTTON.png.sha1
@@ -0,0 +1 @@ +83b4233204adda153204e5f47c3720d037b8f612 \ No newline at end of file
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_te.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_te.xtb index 63d81745..9868f85 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_te.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_te.xtb
@@ -141,7 +141,7 @@ <translation id="3835233591525155343">మీ పరికర వినియోగం</translation> <translation id="385051799172605136">వెనుకకు</translation> <translation id="3859306556332390985">ముందుకు జరుపు</translation> -<translation id="3895926599014793903">జూమ్ చేయడాన్ని నిర్బంధంగా ప్రారంభించు</translation> +<translation id="3895926599014793903">జూమ్ చేయడాన్ని నిర్బంధంగా ప్రారంభించండి</translation> <translation id="3955193568934677022">రక్షిత కంటెంట్ను ప్లే చేయడానికి సైట్లను అనుమతిస్తుంది (సిఫార్సు చేయబడింది)</translation> <translation id="3967822245660637423">డౌన్లోడ్ పూర్తయింది</translation> <translation id="3987993985790029246">లింక్ను కాపీ చేయి</translation> @@ -249,7 +249,7 @@ <translation id="6165508094623778733">మరింత తెలుసుకోండి</translation> <translation id="6177111841848151710">ప్రస్తుత సెర్చ్ ఇంజిన్కు బ్లాక్ చేయబడింది</translation> <translation id="6177128806592000436">ఈ సైట్తో మీకున్న కనెక్షన్ సురక్షితంగా లేదు</translation> -<translation id="6181444274883918285">సైట్ మినహాయింపును జోడించు</translation> +<translation id="6181444274883918285">సైట్ మినహాయింపును జోడించండి</translation> <translation id="6192792657125177640">మినహాయింపులు</translation> <translation id="6196640612572343990">థర్డ్ పార్టీ కుక్కీలను బ్లాక్ చేయండి</translation> <translation id="6216432067784365534"><ph name="NAME_OF_LIST_ITEM" /> ఎంపికలు</translation> @@ -324,7 +324,7 @@ <translation id="7690549345586282764">జూమ్లో చూపండి</translation> <translation id="7719367874908701697">పేజీ జూమ్</translation> <translation id="7781829728241885113">నిన్న</translation> -<translation id="7791543448312431591">జోడించు</translation> +<translation id="7791543448312431591">జోడించండి</translation> <translation id="780301667611848630">వద్దు , ధన్యవాదాలు</translation> <translation id="7804248752222191302">ఒక సైట్ మీ కెమెరాను ఉపయోగిస్తోంది</translation> <translation id="7817023149356982970">మీరు ఈ సైట్ నుండి సైన్ అవుట్ చేయబడతారు.</translation> @@ -350,7 +350,7 @@ <translation id="8154912474061769055">చాలా సైట్లలోని ఫీచర్లు పని చేయకపోవచ్చు</translation> <translation id="8168435359814927499">కంటెంట్</translation> <translation id="8197286292360124385"><ph name="PERMISSION_1" /> అనుమతించబడింది</translation> -<translation id="8200772114523450471">మళ్లీ ప్రారంభించు</translation> +<translation id="8200772114523450471">మళ్లీ ప్రారంభించండి</translation> <translation id="8206354486702514201">ఈ సెట్టింగ్ మీ నిర్వాహకుడి ద్వారా అమలు చేయబడింది.</translation> <translation id="8211406090763984747">కనెక్షన్ సురక్షితంగా ఉంది</translation> <translation id="8249310407154411074">ఎగువకు తరలించు</translation>
diff --git a/components/exo/wayland/zaura_shell.cc b/components/exo/wayland/zaura_shell.cc index 52282b1..1eb1b11 100644 --- a/components/exo/wayland/zaura_shell.cc +++ b/components/exo/wayland/zaura_shell.cc
@@ -52,7 +52,6 @@ #include "ui/display/manager/display_manager_util.h" #include "ui/display/screen.h" #include "ui/views/corewm/tooltip_controller.h" -#include "ui/views/widget/tooltip_manager.h" #include "ui/views/widget/widget.h" #include "ui/wm/core/coordinate_conversion.h" #include "ui/wm/public/activation_client.h"
diff --git a/components/ntp_snippets/BUILD.gn b/components/ntp_snippets/BUILD.gn index a1533fc..ebbfee2 100644 --- a/components/ntp_snippets/BUILD.gn +++ b/components/ntp_snippets/BUILD.gn
@@ -36,8 +36,6 @@ "pref_names.h", "pref_util.cc", "pref_util.h", - "reading_list/reading_list_suggestions_provider.cc", - "reading_list/reading_list_suggestions_provider.h", "remote/cached_image_fetcher.cc", "remote/cached_image_fetcher.h", "remote/json_request.cc", @@ -99,7 +97,6 @@ "//components/language/core/browser", "//components/metrics", "//components/ntp_snippets/remote/proto", - "//components/reading_list/core", "//components/signin/public/identity_manager", "//components/strings", "//components/unified_consent", @@ -127,7 +124,6 @@ "content_suggestions_metrics_unittest.cc", "content_suggestions_service_unittest.cc", "features_unittest.cc", - "reading_list/reading_list_suggestions_provider_unittest.cc", "remote/cached_image_fetcher_unittest.cc", "remote/json_request_unittest.cc", "remote/remote_suggestion_unittest.cc", @@ -154,7 +150,6 @@ "//components/leveldb_proto:test_support", "//components/ntp_snippets/remote/proto", "//components/prefs:test_support", - "//components/reading_list/core", "//components/signin/public/identity_manager:test_support", "//components/strings", "//components/sync:test_support",
diff --git a/components/ntp_snippets/DEPS b/components/ntp_snippets/DEPS index f858ca1d..5804e90c 100644 --- a/components/ntp_snippets/DEPS +++ b/components/ntp_snippets/DEPS
@@ -8,7 +8,6 @@ "+components/leveldb_proto", "+components/metrics", "+components/prefs", - "+components/reading_list", "+components/signin/public", "+components/strings/grit/components_strings.h", "+components/sync_preferences/testing_pref_service_syncable.h",
diff --git a/components/ntp_snippets/category.h b/components/ntp_snippets/category.h index 0644b00..1d1272d0 100644 --- a/components/ntp_snippets/category.h +++ b/components/ntp_snippets/category.h
@@ -35,7 +35,7 @@ FOREIGN_TABS_DEPRECATED, // Pages from the user reading list. - READING_LIST, + READING_LIST_DEPRECATED, // ****************** INSERT NEW LOCAL CATEGORIES HERE! ****************** // Existing categories are persisted and they must never be removed. This may
diff --git a/components/ntp_snippets/category_rankers/click_based_category_ranker_unittest.cc b/components/ntp_snippets/category_rankers/click_based_category_ranker_unittest.cc index b95b43f..1b14542 100644 --- a/components/ntp_snippets/category_rankers/click_based_category_ranker_unittest.cc +++ b/components/ntp_snippets/category_rankers/click_based_category_ranker_unittest.cc
@@ -114,7 +114,7 @@ TEST_F(ClickBasedCategoryRankerTest, ShouldSortLocalCategoriesBeforeRemote) { const Category remote_category = AddUnusedRemoteCategory(); const Category local_category = - Category::FromKnownCategory(KnownCategories::READING_LIST); + Category::FromKnownCategory(KnownCategories::READING_LIST_DEPRECATED); EXPECT_TRUE(CompareCategories(local_category, remote_category)); EXPECT_FALSE(CompareCategories(remote_category, local_category)); } @@ -125,7 +125,7 @@ EXPECT_FALSE(CompareCategories(remote_category, remote_category)); const Category local_category = - Category::FromKnownCategory(KnownCategories::READING_LIST); + Category::FromKnownCategory(KnownCategories::READING_LIST_DEPRECATED); EXPECT_FALSE(CompareCategories(local_category, local_category)); }
diff --git a/components/ntp_snippets/category_rankers/constant_category_ranker.cc b/components/ntp_snippets/category_rankers/constant_category_ranker.cc index 9cd8cab2..e42ba71 100644 --- a/components/ntp_snippets/category_rankers/constant_category_ranker.cc +++ b/components/ntp_snippets/category_rankers/constant_category_ranker.cc
@@ -15,7 +15,7 @@ namespace { // All categories must be present. constexpr KnownCategories kKnownCategoriesDefaultOrder[] = { - KnownCategories::READING_LIST, + KnownCategories::READING_LIST_DEPRECATED, KnownCategories::ARTICLES, }; } // namespace
diff --git a/components/ntp_snippets/category_rankers/constant_category_ranker_unittest.cc b/components/ntp_snippets/category_rankers/constant_category_ranker_unittest.cc index 59e63c5..3e5e094 100644 --- a/components/ntp_snippets/category_rankers/constant_category_ranker_unittest.cc +++ b/components/ntp_snippets/category_rankers/constant_category_ranker_unittest.cc
@@ -61,7 +61,7 @@ TEST_F(ConstantCategoryRankerTest, ShouldSortLocalCategoriesBeforeRemote) { const Category remote_category = AddUnusedRemoteCategory(); const Category local_category = - Category::FromKnownCategory(KnownCategories::READING_LIST); + Category::FromKnownCategory(KnownCategories::READING_LIST_DEPRECATED); EXPECT_TRUE(CompareCategories(local_category, remote_category)); EXPECT_FALSE(CompareCategories(remote_category, local_category)); } @@ -71,7 +71,7 @@ EXPECT_FALSE(CompareCategories(remote_category, remote_category)); const Category local_category = - Category::FromKnownCategory(KnownCategories::READING_LIST); + Category::FromKnownCategory(KnownCategories::READING_LIST_DEPRECATED); EXPECT_FALSE(CompareCategories(local_category, local_category)); }
diff --git a/components/ntp_snippets/category_unittest.cc b/components/ntp_snippets/category_unittest.cc index edbb266..9fec49a 100644 --- a/components/ntp_snippets/category_unittest.cc +++ b/components/ntp_snippets/category_unittest.cc
@@ -32,7 +32,7 @@ TEST(CategoryFactoryTest, FromIDValueShouldReturnSameKnownCategory) { Category known_category = - Category::FromKnownCategory(KnownCategories::READING_LIST); + Category::FromKnownCategory(KnownCategories::READING_LIST_DEPRECATED); Category known_category_by_id = Category::FromIDValue(known_category.id()); EXPECT_EQ(known_category, known_category_by_id); }
diff --git a/components/ntp_snippets/content_suggestion.cc b/components/ntp_snippets/content_suggestion.cc index 1333c6ab..6858cedb 100644 --- a/components/ntp_snippets/content_suggestion.cc +++ b/components/ntp_snippets/content_suggestion.cc
@@ -44,12 +44,6 @@ return favicon_url.GetWithEmptyPath(); } -void ContentSuggestion::set_reading_list_suggestion_extra( - std::unique_ptr<ReadingListSuggestionExtra> reading_list_suggestion_extra) { - DCHECK(id_.category().IsKnownCategory(KnownCategories::READING_LIST)); - reading_list_suggestion_extra_ = std::move(reading_list_suggestion_extra); -} - void ContentSuggestion::set_notification_extra( std::unique_ptr<NotificationExtra> notification_extra) { notification_extra_ = std::move(notification_extra);
diff --git a/components/ntp_snippets/content_suggestion.h b/components/ntp_snippets/content_suggestion.h index d300531..75823e1 100644 --- a/components/ntp_snippets/content_suggestion.h +++ b/components/ntp_snippets/content_suggestion.h
@@ -16,13 +16,6 @@ namespace ntp_snippets { -// ReadingListSuggestionExtra contains additional data which is only available -// for Reading List suggestions. -struct ReadingListSuggestionExtra { - // URL of the page whose favicon should be displayed for this suggestion. - GURL favicon_page_url; -}; - // Contains additional data for notification-worthy suggestions. struct NotificationExtra { // Deadline for showing notification. If the deadline is past, the @@ -131,15 +124,6 @@ float score() const { return score_; } void set_score(float score) { score_ = score; } - // Extra information for reading list suggestions. Only available for - // KnownCategories::READING_LIST suggestions. - ReadingListSuggestionExtra* reading_list_suggestion_extra() const { - return reading_list_suggestion_extra_.get(); - } - void set_reading_list_suggestion_extra( - std::unique_ptr<ReadingListSuggestionExtra> - reading_list_suggestion_extra); - // Extra information for notifications. When absent, no notification should be // sent for this suggestion. When present, a notification should be sent, // unless other factors disallow it (examples: the extra parameters say to; @@ -173,7 +157,6 @@ base::Time publish_date_; std::u16string publisher_name_; float score_; - std::unique_ptr<ReadingListSuggestionExtra> reading_list_suggestion_extra_; std::unique_ptr<NotificationExtra> notification_extra_; // The time when the remote suggestion was fetched from the server. This field
diff --git a/components/ntp_snippets/content_suggestions_metrics.cc b/components/ntp_snippets/content_suggestions_metrics.cc index 817dc00..22c791d 100644 --- a/components/ntp_snippets/content_suggestions_metrics.cc +++ b/components/ntp_snippets/content_suggestions_metrics.cc
@@ -87,7 +87,7 @@ PHYSICAL_WEB_PAGES_DEPRECATED, FOREIGN_TABS_DEPRECATED, ARTICLES, - READING_LIST, + READING_LIST_DEPRECATED, CONTEXTUAL, // Insert new values here! COUNT @@ -106,8 +106,8 @@ switch (known_category) { case KnownCategories::ARTICLES: return HistogramCategories::ARTICLES; - case KnownCategories::READING_LIST: - return HistogramCategories::READING_LIST; + case KnownCategories::READING_LIST_DEPRECATED: + return HistogramCategories::READING_LIST_DEPRECATED; case KnownCategories::BOOKMARKS_DEPRECATED: return HistogramCategories::BOOKMARKS_DEPRECATED; case KnownCategories::DOWNLOADS_DEPRECATED: @@ -134,7 +134,7 @@ return "Articles"; case HistogramCategories::EXPERIMENTAL: return "Experimental"; - case HistogramCategories::READING_LIST: + case HistogramCategories::READING_LIST_DEPRECATED: return "ReadingList"; case HistogramCategories::CONTEXTUAL: return "Contextual";
diff --git a/components/ntp_snippets/content_suggestions_metrics_unittest.cc b/components/ntp_snippets/content_suggestions_metrics_unittest.cc index 6b4c6b7..a343237f 100644 --- a/components/ntp_snippets/content_suggestions_metrics_unittest.cc +++ b/components/ntp_snippets/content_suggestions_metrics_unittest.cc
@@ -108,7 +108,8 @@ base::HistogramTester histogram_tester; OnPageShown(std::vector<Category>( {Category::FromKnownCategory(KnownCategories::ARTICLES), - Category::FromKnownCategory(KnownCategories::READING_LIST)}), + Category::FromKnownCategory( + KnownCategories::READING_LIST_DEPRECATED)}), /*suggestions_per_category=*/{10, 5}, /*is_category_visible=*/{true, true}); EXPECT_THAT(
diff --git a/components/ntp_snippets/content_suggestions_service_unittest.cc b/components/ntp_snippets/content_suggestions_service_unittest.cc index 6726026a..0a46938 100644 --- a/components/ntp_snippets/content_suggestions_service_unittest.cc +++ b/components/ntp_snippets/content_suggestions_service_unittest.cc
@@ -353,14 +353,14 @@ TEST_F(ContentSuggestionsServiceTest, ShouldNotReturnCategoryInfoForNonexistentCategory) { Category category = - Category::FromKnownCategory(KnownCategories::READING_LIST); + Category::FromKnownCategory(KnownCategories::READING_LIST_DEPRECATED); absl::optional<CategoryInfo> result = service()->GetCategoryInfo(category); EXPECT_FALSE(result.has_value()); } TEST_F(ContentSuggestionsServiceTest, ShouldReturnCategoryInfo) { Category category = - Category::FromKnownCategory(KnownCategories::READING_LIST); + Category::FromKnownCategory(KnownCategories::READING_LIST_DEPRECATED); MockContentSuggestionsProvider* provider = MakeRegisteredMockProvider(category); provider->FireCategoryStatusChangedWithCurrentStatus(category); @@ -376,7 +376,7 @@ TEST_F(ContentSuggestionsServiceTest, ShouldRegisterNewCategoryOnNewSuggestions) { Category category = - Category::FromKnownCategory(KnownCategories::READING_LIST); + Category::FromKnownCategory(KnownCategories::READING_LIST_DEPRECATED); MockContentSuggestionsProvider* provider = MakeRegisteredMockProvider(category); provider->FireCategoryStatusChangedWithCurrentStatus(category); @@ -413,7 +413,7 @@ TEST_F(ContentSuggestionsServiceTest, ShouldRegisterNewCategoryOnCategoryStatusChanged) { Category category = - Category::FromKnownCategory(KnownCategories::READING_LIST); + Category::FromKnownCategory(KnownCategories::READING_LIST_DEPRECATED); MockContentSuggestionsProvider* provider = MakeRegisteredMockProvider(category); provider->FireCategoryStatusChangedWithCurrentStatus(category); @@ -444,7 +444,7 @@ TEST_F(ContentSuggestionsServiceTest, ShouldRemoveCategoryWhenNotProvided) { Category category = - Category::FromKnownCategory(KnownCategories::READING_LIST); + Category::FromKnownCategory(KnownCategories::READING_LIST_DEPRECATED); MockContentSuggestionsProvider* provider = MakeRegisteredMockProvider(category); NiceMock<MockServiceObserver> observer;
diff --git a/components/ntp_snippets/reading_list/reading_list_suggestions_provider.cc b/components/ntp_snippets/reading_list/reading_list_suggestions_provider.cc deleted file mode 100644 index 02d47ac34..0000000 --- a/components/ntp_snippets/reading_list/reading_list_suggestions_provider.cc +++ /dev/null
@@ -1,261 +0,0 @@ -// Copyright 2017 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "components/ntp_snippets/reading_list/reading_list_suggestions_provider.h" - -#include <algorithm> -#include <memory> -#include <vector> - -#include "base/bind.h" -#include "base/logging.h" -#include "base/strings/utf_string_conversions.h" -#include "base/task/single_thread_task_runner.h" -#include "base/time/time.h" -#include "components/ntp_snippets/category.h" -#include "components/reading_list/core/reading_list_entry.h" -#include "components/strings/grit/components_strings.h" -#include "components/url_formatter/url_formatter.h" -#include "ui/base/l10n/l10n_util.h" -#include "ui/gfx/image/image.h" - -namespace ntp_snippets { - -namespace { -// Max number of entries to return. -const int kMaxEntries = 3; - -bool CompareEntries(const ReadingListEntry* lhs, const ReadingListEntry* rhs) { - return lhs->UpdateTime() > rhs->UpdateTime(); -} -} // namespace - -ReadingListSuggestionsProvider::ReadingListSuggestionsProvider( - ContentSuggestionsProvider::Observer* observer, - ReadingListModel* reading_list_model) - : ContentSuggestionsProvider(observer), - category_status_(CategoryStatus::AVAILABLE_LOADING), - provided_category_( - Category::FromKnownCategory(KnownCategories::READING_LIST)), - reading_list_model_(reading_list_model) { - observer->OnCategoryStatusChanged(this, provided_category_, category_status_); - - // If the ReadingListModel is loaded, this will trigger a call to - // ReadingListModelLoaded. Keep it as last instruction. - scoped_observation_.Observe(reading_list_model_.get()); -} - -ReadingListSuggestionsProvider::~ReadingListSuggestionsProvider() {} - -CategoryStatus ReadingListSuggestionsProvider::GetCategoryStatus( - Category category) { - DCHECK_EQ(category, provided_category_); - return category_status_; -} - -CategoryInfo ReadingListSuggestionsProvider::GetCategoryInfo( - Category category) { - DCHECK_EQ(category, provided_category_); - - return CategoryInfo(l10n_util::GetStringUTF16( - IDS_NTP_READING_LIST_SUGGESTIONS_SECTION_HEADER), - ContentSuggestionsCardLayout::FULL_CARD, - ContentSuggestionsAdditionalAction::VIEW_ALL, - /*show_if_empty=*/false, - l10n_util::GetStringUTF16( - IDS_NTP_READING_LIST_SUGGESTIONS_SECTION_EMPTY)); -} - -void ReadingListSuggestionsProvider::DismissSuggestion( - const ContentSuggestion::ID& suggestion_id) { - if (!reading_list_model_) { - return; - } - - DCHECK(reading_list_model_->loaded()); - GURL url(suggestion_id.id_within_category()); - SetDismissedState(url, true); -} - -void ReadingListSuggestionsProvider::FetchSuggestionImage( - const ContentSuggestion::ID& suggestion_id, - ImageFetchedCallback callback) { - base::SingleThreadTaskRunner::GetCurrentDefault()->PostTask( - FROM_HERE, base::BindOnce(std::move(callback), gfx::Image())); -} - -void ReadingListSuggestionsProvider::FetchSuggestionImageData( - const ContentSuggestion::ID& suggestion_id, - ImageDataFetchedCallback callback) { - base::SingleThreadTaskRunner::GetCurrentDefault()->PostTask( - FROM_HERE, base::BindOnce(std::move(callback), std::string())); -} - -void ReadingListSuggestionsProvider::Fetch( - const Category& category, - const std::set<std::string>& known_suggestion_ids, - FetchDoneCallback callback) { - LOG(DFATAL) << "ReadingListSuggestionsProvider has no |Fetch| functionality!"; - base::SingleThreadTaskRunner::GetCurrentDefault()->PostTask( - FROM_HERE, - base::BindOnce(std::move(callback), - Status(StatusCode::PERMANENT_ERROR, - "ReadingListSuggestionsProvider has no |Fetch| " - "functionality!"), - std::vector<ContentSuggestion>())); -} - -void ReadingListSuggestionsProvider::ClearHistory( - base::Time begin, - base::Time end, - const base::RepeatingCallback<bool(const GURL& url)>& filter) { - // Ignored, Reading List does not depend on history. -} - -void ReadingListSuggestionsProvider::ClearCachedSuggestions() { - // Ignored. -} - -void ReadingListSuggestionsProvider::GetDismissedSuggestionsForDebugging( - Category category, - DismissedSuggestionsCallback callback) { - if (!reading_list_model_ || reading_list_model_->IsPerformingBatchUpdates()) { - std::move(callback).Run(std::vector<ContentSuggestion>()); - return; - } - - DCHECK(reading_list_model_->loaded()); - std::vector<const ReadingListEntry*> entries; - for (const GURL& url : reading_list_model_->Keys()) { - const ReadingListEntry* entry = reading_list_model_->GetEntryByURL(url); - if (entry->ContentSuggestionsExtra()->dismissed) { - entries.emplace_back(entry); - } - } - - std::sort(entries.begin(), entries.end(), CompareEntries); - - std::vector<ContentSuggestion> suggestions; - for (const ReadingListEntry* entry : entries) { - suggestions.emplace_back(ConvertEntry(entry)); - } - - std::move(callback).Run(std::move(suggestions)); -} - -void ReadingListSuggestionsProvider::ClearDismissedSuggestionsForDebugging( - Category category) { - for (const auto& url : reading_list_model_->Keys()) { - SetDismissedState(url, false); - } -} - -void ReadingListSuggestionsProvider::ReadingListModelLoaded( - const ReadingListModel* model) { - DCHECK(model == reading_list_model_); - FetchReadingListInternal(); -} - -void ReadingListSuggestionsProvider::ReadingListModelBeingDeleted( - const ReadingListModel* model) { - DCHECK(model == reading_list_model_); - DCHECK(scoped_observation_.IsObservingSource(reading_list_model_.get())); - scoped_observation_.Reset(); - reading_list_model_ = nullptr; -} - -void ReadingListSuggestionsProvider::ReadingListDidApplyChanges( - ReadingListModel* model) { - DCHECK(model == reading_list_model_); - if (model->IsPerformingBatchUpdates()) - return; - - FetchReadingListInternal(); -} - -void ReadingListSuggestionsProvider::ReadingListModelCompletedBatchUpdates( - const ReadingListModel* model) { - DCHECK(model == reading_list_model_); - - FetchReadingListInternal(); -} - -void ReadingListSuggestionsProvider::FetchReadingListInternal() { - if (!reading_list_model_ || reading_list_model_->IsPerformingBatchUpdates()) { - return; - } - - DCHECK(reading_list_model_->loaded()); - std::vector<const ReadingListEntry*> entries; - for (const GURL& url : reading_list_model_->Keys()) { - const ReadingListEntry* entry = reading_list_model_->GetEntryByURL(url); - if (!entry->IsRead() && !entry->ContentSuggestionsExtra()->dismissed) { - entries.emplace_back(entry); - } - } - - if (entries.size() > kMaxEntries) { - // Get the |kMaxEntries| most recent entries. - std::partial_sort(entries.begin(), entries.begin() + kMaxEntries, - entries.end(), CompareEntries); - entries.resize(kMaxEntries); - } else { - std::sort(entries.begin(), entries.end(), CompareEntries); - } - - std::vector<ContentSuggestion> suggestions; - for (const ReadingListEntry* entry : entries) { - suggestions.emplace_back(ConvertEntry(entry)); - } - - NotifyStatusChanged(CategoryStatus::AVAILABLE); - observer()->OnNewSuggestions(this, provided_category_, - std::move(suggestions)); -} - -ContentSuggestion ReadingListSuggestionsProvider::ConvertEntry( - const ReadingListEntry* entry) { - ContentSuggestion suggestion(provided_category_, entry->URL().spec(), - entry->URL()); - - if (!entry->Title().empty()) { - suggestion.set_title(base::UTF8ToUTF16(entry->Title())); - } else { - suggestion.set_title(url_formatter::FormatUrl(entry->URL())); - } - suggestion.set_publisher_name( - url_formatter::FormatUrl(entry->URL().DeprecatedGetOriginAsURL())); - int64_t entry_time = entry->DistillationTime(); - if (entry_time == 0) { - entry_time = entry->CreationTime(); - } - - suggestion.set_publish_date( - base::Time::FromDoubleT(entry_time / base::Time::kMicrosecondsPerSecond)); - - auto extra = std::make_unique<ReadingListSuggestionExtra>(); - extra->favicon_page_url = - entry->DistilledURL().is_valid() ? entry->DistilledURL() : entry->URL(); - suggestion.set_reading_list_suggestion_extra(std::move(extra)); - - return suggestion; -} - -void ReadingListSuggestionsProvider::NotifyStatusChanged( - CategoryStatus new_status) { - if (category_status_ == new_status) { - return; - } - category_status_ = new_status; - observer()->OnCategoryStatusChanged(this, provided_category_, new_status); -} - -void ReadingListSuggestionsProvider::SetDismissedState(const GURL& url, - bool dismissed) { - reading_list::ContentSuggestionsExtra extra; - extra.dismissed = dismissed; - reading_list_model_->SetContentSuggestionsExtra(url, extra); -} - -} // namespace ntp_snippets
diff --git a/components/ntp_snippets/reading_list/reading_list_suggestions_provider.h b/components/ntp_snippets/reading_list/reading_list_suggestions_provider.h deleted file mode 100644 index 258f0788..0000000 --- a/components/ntp_snippets/reading_list/reading_list_suggestions_provider.h +++ /dev/null
@@ -1,88 +0,0 @@ -// Copyright 2017 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef COMPONENTS_NTP_SNIPPETS_READING_LIST_READING_LIST_SUGGESTIONS_PROVIDER_H_ -#define COMPONENTS_NTP_SNIPPETS_READING_LIST_READING_LIST_SUGGESTIONS_PROVIDER_H_ - -#include <set> -#include <string> - -#include "base/memory/raw_ptr.h" -#include "base/scoped_observation.h" -#include "components/ntp_snippets/callbacks.h" -#include "components/ntp_snippets/category.h" -#include "components/ntp_snippets/category_info.h" -#include "components/ntp_snippets/category_status.h" -#include "components/ntp_snippets/content_suggestion.h" -#include "components/ntp_snippets/content_suggestions_provider.h" -#include "components/reading_list/core/reading_list_model.h" -#include "components/reading_list/core/reading_list_model_observer.h" - -namespace ntp_snippets { - -// Provides content suggestions from the Reading List. -class ReadingListSuggestionsProvider : public ContentSuggestionsProvider, - public ReadingListModelObserver { - public: - ReadingListSuggestionsProvider(ContentSuggestionsProvider::Observer* observer, - ReadingListModel* reading_list_model); - ReadingListSuggestionsProvider(const ReadingListSuggestionsProvider&) = - delete; - ReadingListSuggestionsProvider& operator=( - const ReadingListSuggestionsProvider&) = delete; - ~ReadingListSuggestionsProvider() override; - - // ContentSuggestionsProvider implementation. - CategoryStatus GetCategoryStatus(Category category) override; - CategoryInfo GetCategoryInfo(Category category) override; - void DismissSuggestion(const ContentSuggestion::ID& suggestion_id) override; - void FetchSuggestionImage(const ContentSuggestion::ID& suggestion_id, - ImageFetchedCallback callback) override; - void FetchSuggestionImageData(const ContentSuggestion::ID& suggestion_id, - ImageDataFetchedCallback callback) override; - void Fetch(const Category& category, - const std::set<std::string>& known_suggestion_ids, - FetchDoneCallback callback) override; - void ClearHistory( - base::Time begin, - base::Time end, - const base::RepeatingCallback<bool(const GURL& url)>& filter) override; - void ClearCachedSuggestions() override; - void GetDismissedSuggestionsForDebugging( - Category category, - DismissedSuggestionsCallback callback) override; - void ClearDismissedSuggestionsForDebugging(Category category) override; - - // ReadingListModelObserver implementation. - void ReadingListModelLoaded(const ReadingListModel* model) override; - void ReadingListModelBeingDeleted(const ReadingListModel* model) override; - void ReadingListDidApplyChanges(ReadingListModel* model) override; - void ReadingListModelCompletedBatchUpdates( - const ReadingListModel* model) override; - - private: - // The actual method to fetch Reading List entries. Must be called after the - // model is loaded. - void FetchReadingListInternal(); - - // Converts |entry| to ContentSuggestion. - ContentSuggestion ConvertEntry(const ReadingListEntry* entry); - - // Updates the |category_status_| and notifies the |observer_|, if necessary. - void NotifyStatusChanged(CategoryStatus new_status); - - // Sets the dismissed status of the entry to |dismissed|. - void SetDismissedState(const GURL& url, bool dismissed); - - CategoryStatus category_status_; - const Category provided_category_; - - raw_ptr<ReadingListModel> reading_list_model_; - base::ScopedObservation<ReadingListModel, ReadingListModelObserver> - scoped_observation_{this}; -}; - -} // namespace ntp_snippets - -#endif // COMPONENTS_NTP_SNIPPETS_READING_LIST_READING_LIST_SUGGESTIONS_PROVIDER_H_
diff --git a/components/ntp_snippets/reading_list/reading_list_suggestions_provider_unittest.cc b/components/ntp_snippets/reading_list/reading_list_suggestions_provider_unittest.cc deleted file mode 100644 index 2c8dfae..0000000 --- a/components/ntp_snippets/reading_list/reading_list_suggestions_provider_unittest.cc +++ /dev/null
@@ -1,156 +0,0 @@ -// Copyright 2017 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "components/ntp_snippets/reading_list/reading_list_suggestions_provider.h" - -#include <memory> - -#include "base/test/simple_test_clock.h" -#include "components/ntp_snippets/mock_content_suggestions_provider_observer.h" -#include "components/reading_list/core/reading_list_model_impl.h" -#include "testing/gmock/include/gmock/gmock.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace ntp_snippets { - -namespace { - -const char kTitleUnread1[] = "title1"; -const char kTitleUnread2[] = "title2"; -const char kTitleUnread3[] = "title3"; -const char kTitleUnread4[] = "title4"; -const char kTitleRead1[] = "title_read1"; - -using ::testing::_; -using ::testing::ElementsAre; -using ::testing::IsEmpty; -using ::testing::Property; - -class ReadingListSuggestionsProviderTest : public ::testing::Test { - public: - ReadingListSuggestionsProviderTest() { - model_ = std::make_unique<ReadingListModelImpl>( - /*storage_layer=*/nullptr, /*pref_service=*/nullptr, &clock_); - } - - void CreateProvider() { - EXPECT_CALL(observer_, - OnCategoryStatusChanged(_, ReadingListCategory(), - CategoryStatus::AVAILABLE_LOADING)) - .RetiresOnSaturation(); - EXPECT_CALL(observer_, OnCategoryStatusChanged(_, ReadingListCategory(), - CategoryStatus::AVAILABLE)) - .RetiresOnSaturation(); - provider_ = std::make_unique<ReadingListSuggestionsProvider>(&observer_, - model_.get()); - } - - Category ReadingListCategory() { - return Category::FromKnownCategory(KnownCategories::READING_LIST); - } - - void AddEntries() { - model_->AddEntry(url_unread1_, kTitleUnread1, - reading_list::ADDED_VIA_CURRENT_APP); - clock_.Advance(base::Milliseconds(10)); - model_->AddEntry(url_unread2_, kTitleUnread2, - reading_list::ADDED_VIA_CURRENT_APP); - clock_.Advance(base::Milliseconds(10)); - model_->AddEntry(url_read1_, kTitleRead1, - reading_list::ADDED_VIA_CURRENT_APP); - model_->SetReadStatus(url_read1_, true); - clock_.Advance(base::Milliseconds(10)); - model_->AddEntry(url_unread3_, kTitleUnread3, - reading_list::ADDED_VIA_CURRENT_APP); - clock_.Advance(base::Milliseconds(10)); - model_->AddEntry(url_unread4_, kTitleUnread4, - reading_list::ADDED_VIA_CURRENT_APP); - } - - protected: - base::SimpleTestClock clock_; - std::unique_ptr<ReadingListModelImpl> model_; - testing::StrictMock<MockContentSuggestionsProviderObserver> observer_; - std::unique_ptr<ReadingListSuggestionsProvider> provider_; - - const GURL url_unread1_{"http://www.foo1.bar"}; - const GURL url_unread2_{"http://www.foo2.bar"}; - const GURL url_unread3_{"http://www.foo3.bar"}; - const GURL url_unread4_{"http://www.foo4.bar"}; - const GURL url_read1_{"http://www.bar.foor"}; -}; - -TEST_F(ReadingListSuggestionsProviderTest, CategoryInfo) { - EXPECT_CALL(observer_, OnNewSuggestions(_, ReadingListCategory(), IsEmpty())) - .RetiresOnSaturation(); - CreateProvider(); - - CategoryInfo categoryInfo = provider_->GetCategoryInfo(ReadingListCategory()); - EXPECT_EQ(ContentSuggestionsAdditionalAction::VIEW_ALL, - categoryInfo.additional_action()); -} - -TEST_F(ReadingListSuggestionsProviderTest, ReturnsThreeLatestUnreadSuggestion) { - AddEntries(); - - EXPECT_CALL( - observer_, - OnNewSuggestions( - _, ReadingListCategory(), - ElementsAre(Property(&ContentSuggestion::url, url_unread4_), - Property(&ContentSuggestion::url, url_unread3_), - Property(&ContentSuggestion::url, url_unread2_)))); - - CreateProvider(); -} - -// Tests that the provider returns only unread suggestions even if there is less -// unread suggestions than the maximum number of suggestions. -TEST_F(ReadingListSuggestionsProviderTest, ReturnsOnlyUnreadSuggestion) { - GURL url_unread1 = GURL("http://www.foo1.bar"); - GURL url_read1 = GURL("http://www.bar.foor"); - std::string title_unread1 = "title1"; - std::string title_read1 = "title_read1"; - model_->AddEntry(url_unread1, title_unread1, - reading_list::ADDED_VIA_CURRENT_APP); - clock_.Advance(base::Milliseconds(10)); - model_->AddEntry(url_read1, title_read1, reading_list::ADDED_VIA_CURRENT_APP); - model_->SetReadStatus(url_read1, true); - - EXPECT_CALL(observer_, - OnNewSuggestions( - _, ReadingListCategory(), - ElementsAre(Property(&ContentSuggestion::url, url_unread1)))); - - CreateProvider(); -} - -TEST_F(ReadingListSuggestionsProviderTest, DismissesEntry) { - AddEntries(); - - EXPECT_CALL( - observer_, - OnNewSuggestions( - _, ReadingListCategory(), - ElementsAre(Property(&ContentSuggestion::url, url_unread4_), - Property(&ContentSuggestion::url, url_unread3_), - Property(&ContentSuggestion::url, url_unread2_)))); - - CreateProvider(); - - EXPECT_CALL( - observer_, - OnNewSuggestions( - _, ReadingListCategory(), - ElementsAre(Property(&ContentSuggestion::url, url_unread4_), - Property(&ContentSuggestion::url, url_unread2_), - Property(&ContentSuggestion::url, url_unread1_)))); - - provider_->DismissSuggestion( - ContentSuggestion::ID(ReadingListCategory(), url_unread3_.spec())); -} - -} // namespace - -} // namespace ntp_snippets
diff --git a/components/origin_trials/browser/prefservice_persistence_provider.cc b/components/origin_trials/browser/prefservice_persistence_provider.cc index 79382e6..e3be106 100644 --- a/components/origin_trials/browser/prefservice_persistence_provider.cc +++ b/components/origin_trials/browser/prefservice_persistence_provider.cc
@@ -75,9 +75,9 @@ base::Time current_time) { PrefService* service = pref_service(); DCHECK(service); - DictionaryPrefUpdate update(service, kOriginTrialPrefKey); + ScopedDictPrefUpdate update(service, kOriginTrialPrefKey); - base::Value::Dict& storage_dict = update->GetDict(); + base::Value::Dict& storage_dict = update.Get(); // Get the map keys to iterate over, so we avoid modifying the map while // iterating. @@ -143,9 +143,9 @@ DCHECK(!origin.opaque()); PrefService* service = pref_service(); DCHECK(service); - DictionaryPrefUpdate update(service, kOriginTrialPrefKey); + ScopedDictPrefUpdate update(service, kOriginTrialPrefKey); - base::Value::Dict& storage_dict = update->GetDict(); + base::Value::Dict& storage_dict = update.Get(); std::string origin_key = origin.Serialize(); if (tokens.empty()) { if (storage_dict.contains(origin_key)) {
diff --git a/components/page_info/android/BUILD.gn b/components/page_info/android/BUILD.gn index e3d1a77..2317ce7a 100644 --- a/components/page_info/android/BUILD.gn +++ b/components/page_info/android/BUILD.gn
@@ -33,8 +33,7 @@ android_resources("java_resources") { sources = [ - "java/res/drawable-v23/page_info_bg.xml", - "java/res/drawable-v31/page_info_bg.xml", + "java/res/drawable/page_info_bg.xml", "java/res/layout/button_preference_text_button.xml", "java/res/layout/connection_info.xml", "java/res/layout/page_info.xml",
diff --git a/components/page_info/android/java/res/drawable-v23/page_info_bg.xml b/components/page_info/android/java/res/drawable-v23/page_info_bg.xml deleted file mode 100644 index 6597105e..0000000 --- a/components/page_info/android/java/res/drawable-v23/page_info_bg.xml +++ /dev/null
@@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -Copyright 2020 The Chromium Authors -Use of this source code is governed by a BSD-style license that can be -found in the LICENSE file. ---> - -<shape xmlns:android="http://schemas.android.com/apk/res/android" - android:shape="rectangle"> - <corners - android:bottomLeftRadius="16dp" - android:bottomRightRadius="16dp" - android:topLeftRadius="0dp" - android:topRightRadius="0dp" /> - <solid android:color="@color/sheet_bg_color_baseline" /> -</shape> -
diff --git a/components/page_info/android/java/res/drawable-v31/page_info_bg.xml b/components/page_info/android/java/res/drawable/page_info_bg.xml similarity index 100% rename from components/page_info/android/java/res/drawable-v31/page_info_bg.xml rename to components/page_info/android/java/res/drawable/page_info_bg.xml
diff --git a/components/password_manager/core/browser/affiliation/affiliated_match_helper.cc b/components/password_manager/core/browser/affiliation/affiliated_match_helper.cc index 794b225..1368189 100644 --- a/components/password_manager/core/browser/affiliation/affiliated_match_helper.cc +++ b/components/password_manager/core/browser/affiliation/affiliated_match_helper.cc
@@ -12,7 +12,6 @@ #include "base/callback.h" #include "base/task/sequenced_task_runner.h" #include "components/password_manager/core/browser/affiliation/affiliation_service.h" -#include "components/password_manager/core/browser/affiliation/affiliations_prefetcher.h" #include "components/password_manager/core/browser/password_form.h" #include "components/password_manager/core/common/password_manager_features.h" @@ -20,17 +19,10 @@ AffiliatedMatchHelper::AffiliatedMatchHelper( AffiliationService* affiliation_service) - : affiliation_service_(affiliation_service), - affiliations_prefetcher_(std::make_unique<AffiliationsPrefetcher>()) {} + : affiliation_service_(affiliation_service) {} AffiliatedMatchHelper::~AffiliatedMatchHelper() = default; -void AffiliatedMatchHelper::Initialize(PasswordStoreInterface* password_store) { - DCHECK(password_store); - DCHECK(affiliation_service_); - affiliations_prefetcher_->Init(affiliation_service_, password_store); -} - void AffiliatedMatchHelper::GetAffiliatedAndroidAndWebRealms( const PasswordFormDigest& observed_form, AffiliatedRealmsCallback result_callback) {
diff --git a/components/password_manager/core/browser/affiliation/affiliated_match_helper.h b/components/password_manager/core/browser/affiliation/affiliated_match_helper.h index f89c132e..2fb0f51c 100644 --- a/components/password_manager/core/browser/affiliation/affiliated_match_helper.h +++ b/components/password_manager/core/browser/affiliation/affiliated_match_helper.h
@@ -14,14 +14,11 @@ #include "base/memory/weak_ptr.h" #include "base/time/time.h" #include "components/password_manager/core/browser/affiliation/affiliation_utils.h" -#include "components/password_manager/core/browser/password_store_interface.h" +#include "components/password_manager/core/browser/password_form_digest.h" namespace password_manager { class AffiliationService; -class AffiliationsPrefetcher; -class PasswordStoreInterface; -struct PasswordForm; // Interacts with the AffiliationService on behalf of the PasswordStore. // For each GetLogins() request, it provides the PasswordStore with a list of @@ -46,9 +43,6 @@ AffiliatedMatchHelper& operator=(const AffiliatedMatchHelper&) = delete; virtual ~AffiliatedMatchHelper(); - // Schedules deferred initialization. - void Initialize(PasswordStoreInterface* password_store); - // Retrieves realms of Android applications and Web realms affiliated with the // realm of the |observed_form| if it is web-based. Otherwise, yields the // empty list. The |result_callback| will be invoked in both cases, on the @@ -79,8 +73,6 @@ raw_ptr<AffiliationService, DanglingUntriaged> affiliation_service_; - std::unique_ptr<AffiliationsPrefetcher> affiliations_prefetcher_; - base::WeakPtrFactory<AffiliatedMatchHelper> weak_ptr_factory_{this}; };
diff --git a/components/password_manager/core/browser/affiliation/affiliations_prefetcher.cc b/components/password_manager/core/browser/affiliation/affiliations_prefetcher.cc index 7902a3d..8a066ed9 100644 --- a/components/password_manager/core/browser/affiliation/affiliations_prefetcher.cc +++ b/components/password_manager/core/browser/affiliation/affiliations_prefetcher.cc
@@ -9,6 +9,7 @@ #include "base/bind.h" #include "base/callback.h" +#include "base/check_op.h" #include "base/threading/sequenced_task_runner_handle.h" #include "base/time/time.h" #include "components/password_manager/core/browser/affiliation/affiliation_service.h" @@ -32,17 +33,18 @@ } // namespace -AffiliationsPrefetcher::AffiliationsPrefetcher() = default; +AffiliationsPrefetcher::AffiliationsPrefetcher( + AffiliationService* affiliation_service) + : affiliation_service_(affiliation_service) {} -AffiliationsPrefetcher::~AffiliationsPrefetcher() { - if (password_store_) - password_store_->RemoveObserver(this); -} +AffiliationsPrefetcher::~AffiliationsPrefetcher() = default; -void AffiliationsPrefetcher::Init(AffiliationService* affiliation_service, - PasswordStoreInterface* password_store) { - affiliation_service_ = affiliation_service; - password_store_ = password_store; +void AffiliationsPrefetcher::RegisterPasswordStore( + PasswordStoreInterface* store) { + DCHECK(store); + DCHECK_EQ(nullptr, password_store_); + + password_store_ = store; // I/O heavy initialization on start-up will be delayed by this long. // This should be high enough not to exacerbate start-up I/O contention too @@ -55,6 +57,12 @@ kInitializationDelayOnStartup); } +void AffiliationsPrefetcher::Shutdown() { + if (password_store_) + password_store_->RemoveObserver(this); + password_store_ = nullptr; +} + void AffiliationsPrefetcher::OnLoginsChanged( PasswordStoreInterface* /*store*/, const PasswordStoreChangeList& changes) { @@ -121,8 +129,10 @@ void AffiliationsPrefetcher::DoDeferredInitialization() { // Must start observing for changes at the same time as when the snapshot is // taken to avoid inconsistencies due to any changes taking place in-between. - password_store_->AddObserver(this); - password_store_->GetAllLogins(weak_ptr_factory_.GetWeakPtr()); + if (password_store_) { + password_store_->AddObserver(this); + password_store_->GetAllLogins(weak_ptr_factory_.GetWeakPtr()); + } } } // namespace password_manager
diff --git a/components/password_manager/core/browser/affiliation/affiliations_prefetcher.h b/components/password_manager/core/browser/affiliation/affiliations_prefetcher.h index c952dc9..5560d133 100644 --- a/components/password_manager/core/browser/affiliation/affiliations_prefetcher.h +++ b/components/password_manager/core/browser/affiliation/affiliations_prefetcher.h
@@ -11,6 +11,7 @@ #include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" +#include "components/keyed_service/core/keyed_service.h" #include "components/password_manager/core/browser/password_store_consumer.h" #include "components/password_manager/core/browser/password_store_interface.h" @@ -22,14 +23,17 @@ // This class prefetches affiliation information on start-up for all credentials // stored in a PasswordStore. -class AffiliationsPrefetcher : public PasswordStoreInterface::Observer, +class AffiliationsPrefetcher : public KeyedService, + public PasswordStoreInterface::Observer, public PasswordStoreConsumer { public: - AffiliationsPrefetcher(); + explicit AffiliationsPrefetcher(AffiliationService* affiliation_service); ~AffiliationsPrefetcher() override; - void Init(AffiliationService* affiliation_service, - PasswordStoreInterface* password_store); + void RegisterPasswordStore(PasswordStoreInterface* store); + + // KeyedService: + void Shutdown() override; private: // PasswordStoreInterface::Observer:
diff --git a/components/password_manager/core/browser/affiliation/affiliations_prefetcher_unittest.cc b/components/password_manager/core/browser/affiliation/affiliations_prefetcher_unittest.cc index d1f6ca4..b89a445 100644 --- a/components/password_manager/core/browser/affiliation/affiliations_prefetcher_unittest.cc +++ b/components/password_manager/core/browser/affiliation/affiliations_prefetcher_unittest.cc
@@ -157,7 +157,7 @@ void RunDeferredInitialization() { task_environment_.RunUntilIdle(); mock_affiliation_service()->ExpectCallToTrimUnusedCache(); - prefetcher_->Init(mock_affiliation_service(), password_store()); + prefetcher_->RegisterPasswordStore(password_store()); // task_environment_.RunUntilIdle(); task_environment_.FastForwardBy(base::Seconds(30)); } @@ -302,11 +302,12 @@ testing::StrictMock<OverloadedMockAffiliationService>>(); password_store()->Init(/*prefs=*/nullptr, nullptr); - prefetcher_ = std::make_unique<AffiliationsPrefetcher>(); + prefetcher_ = std::make_unique<AffiliationsPrefetcher>( + mock_affiliation_service_.get()); } void TearDown() override { - prefetcher_ = nullptr; + prefetcher()->Shutdown(); if (password_store_) DestroyPasswordStore(); mock_affiliation_service_.reset();
diff --git a/components/password_manager/core/browser/password_manager_metrics_util.h b/components/password_manager/core/browser/password_manager_metrics_util.h index 02c1bc0..b5dbac5 100644 --- a/components/password_manager/core/browser/password_manager_metrics_util.h +++ b/components/password_manager/core/browser/password_manager_metrics_util.h
@@ -472,23 +472,6 @@ kMaxValue = kChangePasswordAutomatically, }; -// Represents the (automatic password change) scripts cache state and the UI -// reaction to it encountered on opening the password check subpage on Desktop. -// These values are persisted to logs. Always keep this enum in sync with the -// corresponding `PasswordCheckScriptsCacheState` in enums.xml. -enum class PasswordCheckScriptsCacheState { - // The cache is already fresh and does not need to be refetched. - kCacheFresh = 0, - // The cache is stale, but none of the credentials has a password change - // script and therefore no UI update was triggered. - kCacheStaleAndNoUiUpdate = 1, - // The cache is stale and at least one of the credential has a password change - // script. A UI update was triggered (but, if the credential was already known - // to be compromised, the UI may not have changed). - kCacheStaleAndUiUpdate = 2, - kMaxValue = kCacheStaleAndUiUpdate -}; - // Represents different user interactions related to adding credential from the // setting. These values are persisted to logs. Entries should not be renumbered // and numeric values should never be reused. Always keep this enum in sync with
diff --git a/components/password_manager/core/browser/password_store.cc b/components/password_manager/core/browser/password_store.cc index fe006a4..fb5b283 100644 --- a/components/password_manager/core/browser/password_store.cc +++ b/components/password_manager/core/browser/password_store.cc
@@ -375,9 +375,6 @@ base::UmaHistogramBoolean("PasswordManager.PasswordStoreInitResult", success); TRACE_EVENT_NESTABLE_ASYNC_END0( "passwords", "PasswordStore::InitOnBackgroundSequence", this); - - if (affiliated_match_helper_) - affiliated_match_helper_->Initialize(this); } void PasswordStore::NotifyLoginsChangedOnMainSequence(
diff --git a/components/policy/proto/device_management_backend.proto b/components/policy/proto/device_management_backend.proto index f5be5cc..8c6b0094 100644 --- a/components/policy/proto/device_management_backend.proto +++ b/components/policy/proto/device_management_backend.proto
@@ -51,6 +51,17 @@ NO_SESSION = 7; } +// The type of the CRD session. This enum is used in the response payload of the +// `FETCH_CRD_AVAILABILITY_INFO` remote command. +enum CrdSessionType { + CRD_SESSION_TYPE_UNKNOWN = 0; + // A session where the admin has exclusive control of the remote machine. + REMOTE_ACCESS_SESSION = 1; + // A session where the admin and the local user share control of the remote + // machine. + REMOTE_SUPPORT_SESSION = 2; +} + // Data along with a cryptographic signature verifying their authenticity. message SignedData { // The data to be signed. @@ -546,11 +557,11 @@ // anything like that. optional int64 timestamp = 2; - // The DM token that was used by the client in the HTTP POST header for + // The DMToken that was used by the client in the HTTP POST header for // authenticating the request. It is included here again so that the client // can verify that the response is meant for them (and not issued by a replay // or man-in-the-middle attack). - // Note that the existence or non-existence of the DM token is not the correct + // Note that the existence or non-existence of the DMToken is not the correct // way to determine whether the device is managed. Cf. |management_mode| below // for details. optional string request_token = 3; @@ -2253,7 +2264,7 @@ // policy. // Client behavior: Policy blob rejected. VALIDATION_RESULT_TYPE_BAD_TIMESTAMP = 8; - // DM token is empty or doesn't match. + // DMToken is empty or doesn't match. // Client behavior: Policy blob rejected. VALIDATION_RESULT_TYPE_BAD_DM_TOKEN = 9; // Device id is empty or doesn't match. @@ -2879,7 +2890,7 @@ // Sent by the client to the server to check if the current user or device is // allowed to update attributes (asset id and location). The HTTP request -// can contain an end-user OAuth token or a device DM Token. +// can contain an end-user OAuth token or a device DMToken. message DeviceAttributeUpdatePermissionRequest {} // Response from the server specifying whether the current user or device is @@ -2895,7 +2906,7 @@ // Sent by the client to the server to update device attributes (asset id and // location). The HTTP request can contain an end-user OAuth token or a device -// DM Token. +// DMToken. message DeviceAttributeUpdateRequest { // The user-generated asset identifier. optional string asset_id = 1; @@ -4152,7 +4163,7 @@ // active_directory_play_activity, active_directory_user_signin, // policy_validation_report, chrome_desktop_report, // chrome_os_user_report, refresh_account, client_cert_provisioning requests -// Authorization: GoogleDMToken token=<dm token from register> +// Authorization: GoogleDMToken token=<DMToken from register> // // * The Authorization header isn't used for enterprise_check, // enterprise_psm_check, device_initial_enrollment_state or @@ -4341,7 +4352,7 @@ // Possible HTTP status codes: // 200 OK: valid response is returned to client. // 400 Bad Request: invalid argument or payload. -// 401 Unauthorized: invalid auth cookie/OAuth token or DM token. +// 401 Unauthorized: invalid auth cookie/OAuth token or DMToken. // 402 Missing license. // 403 Forbidden: device management is not allowed (e.g. user may not enroll). // 404 Not Found: the request URL is invalid.
diff --git a/components/policy/resources/templates/policies.yaml b/components/policy/resources/templates/policies.yaml index de045ed..68770da1 100644 --- a/components/policy/resources/templates/policies.yaml +++ b/components/policy/resources/templates/policies.yaml
@@ -1042,6 +1042,7 @@ 1041: NewBaseUrlInheritanceBehaviorAllowed 1042: ShowCastSessionsStartedByOtherDevices 1043: CloudAPAuthEnabled + 1044: UsbDetectorNotificationEnabled atomic_groups: 1: Homepage 2: RemoteAccess
diff --git a/components/policy/resources/templates/policy_definitions/Miscellaneous/UsbDetectorNotificationEnabled.yaml b/components/policy/resources/templates/policy_definitions/Miscellaneous/UsbDetectorNotificationEnabled.yaml new file mode 100644 index 0000000..57c24a2 --- /dev/null +++ b/components/policy/resources/templates/policy_definitions/Miscellaneous/UsbDetectorNotificationEnabled.yaml
@@ -0,0 +1,26 @@ +caption: Show a notification when a USB device is detected +default: true +desc: |- + If this setting is enabled, a notification is shown to the user when a USB device gets plugged in on <ph name="PRODUCT_OS_NAME">$2<ex>Google ChromeOS</ex></ph>. + + If this setting is disabled, no notifications about plugged-in USB devices will be shown to the user. + + If this policy is left unset, users will receive the notifications about plugged-in USB devices. +example_value: true +features: + dynamic_refresh: true + per_profile: false +items: +- caption: Show notifications when USB devices are detected + value: true +- caption: Do not show notifications when USB devices are detected + value: false +owners: +- mpetrisor@chromium.org +- imprivata-eng@google.com +schema: + type: boolean +supported_on: +- chrome_os:110- +tags: [] +type: main \ No newline at end of file
diff --git a/components/policy/test_support/request_handler_for_client_cert_provisioning.cc b/components/policy/test_support/request_handler_for_client_cert_provisioning.cc index 4ebde5c..fd4cf3e 100644 --- a/components/policy/test_support/request_handler_for_client_cert_provisioning.cc +++ b/components/policy/test_support/request_handler_for_client_cert_provisioning.cc
@@ -17,7 +17,6 @@ #include "components/policy/proto/device_management_backend.pb.h" #include "components/policy/test_support/test_server_helpers.h" #include "net/base/url_util.h" -#include "net/cert/x509_certificate.h" #include "net/http/http_status_code.h" #include "net/test/cert_builder.h" #include "net/test/embedded_test_server/http_request.h" @@ -67,10 +66,7 @@ base::Time::Now() + base::Days(30)); cert_builder->SetSubjectCommonName(subject_common_name); - std::string pem_encoded_cert; - DCHECK(net::X509Certificate::GetPEMEncoded( - cert_builder->GetX509Certificate()->cert_buffer(), &pem_encoded_cert)); - return pem_encoded_cert; + return cert_builder->GetPEM(); } bool ProcessClientCertProvisioningRequest(
diff --git a/components/quirks/quirks_manager.cc b/components/quirks/quirks_manager.cc index 7ca78efa..f990822b 100644 --- a/components/quirks/quirks_manager.cc +++ b/components/quirks/quirks_manager.cc
@@ -203,8 +203,8 @@ void QuirksManager::SetLastServerCheck(int64_t product_id, const base::Time& last_check) { DCHECK(thread_checker_.CalledOnValidThread()); - DictionaryPrefUpdate dict(local_state_, prefs::kQuirksClientLastServerCheck); - dict->SetDoubleKey(IdToHexString(product_id), last_check.ToDoubleT()); + ScopedDictPrefUpdate dict(local_state_, prefs::kQuirksClientLastServerCheck); + dict->Set(IdToHexString(product_id), last_check.ToDoubleT()); } } // namespace quirks
diff --git a/components/reading_list/core/fake_reading_list_model.cc b/components/reading_list/core/fake_reading_list_model.cc index 40d527c8..5799fd1 100644 --- a/components/reading_list/core/fake_reading_list_model.cc +++ b/components/reading_list/core/fake_reading_list_model.cc
@@ -134,12 +134,6 @@ NOTREACHED(); } -void FakeReadingListModel::SetContentSuggestionsExtra( - const GURL& url, - const reading_list::ContentSuggestionsExtra& extra) { - NOTREACHED(); -} - void FakeReadingListModel::AddObserver(ReadingListModelObserver* observer) { observers_.AddObserver(observer); if (loaded()) {
diff --git a/components/reading_list/core/fake_reading_list_model.h b/components/reading_list/core/fake_reading_list_model.h index 6c5a4cc..f48a1609 100644 --- a/components/reading_list/core/fake_reading_list_model.h +++ b/components/reading_list/core/fake_reading_list_model.h
@@ -71,10 +71,6 @@ int64_t distilation_size, const base::Time& distilation_time) override; - void SetContentSuggestionsExtra( - const GURL& url, - const reading_list::ContentSuggestionsExtra& extra) override; - void AddObserver(ReadingListModelObserver* observer) override; void RemoveObserver(ReadingListModelObserver* observer) override;
diff --git a/components/reading_list/core/proto/reading_list.proto b/components/reading_list/core/proto/reading_list.proto index 0145cde..40bbc18 100644 --- a/components/reading_list/core/proto/reading_list.proto +++ b/components/reading_list/core/proto/reading_list.proto
@@ -44,11 +44,6 @@ optional string backoff = 10; optional int64 distillation_time_us = 14; optional int64 distillation_size = 15; - optional ReadingListContentSuggestionsExtra content_suggestions_extra = 16; + reserved 16; optional int32 estimated_read_time_seconds = 17; } - -// Additional data used by the ContentSuggestions. -message ReadingListContentSuggestionsExtra { - optional bool dismissed = 1; -}
diff --git a/components/reading_list/core/reading_list_entry.cc b/components/reading_list/core/reading_list_entry.cc index 9b492bc..c2a2afd5 100644 --- a/components/reading_list/core/reading_list_entry.cc +++ b/components/reading_list/core/reading_list_entry.cc
@@ -74,8 +74,7 @@ 0, 0, 0, - std::move(backoff), - reading_list::ContentSuggestionsExtra()) {} + std::move(backoff)) {} ReadingListEntry::ReadingListEntry( const GURL& url, @@ -92,8 +91,7 @@ int64_t distillation_time, int64_t distillation_size, int failed_download_counter, - std::unique_ptr<net::BackoffEntry> backoff, - const reading_list::ContentSuggestionsExtra& content_suggestions_extra) + std::unique_ptr<net::BackoffEntry> backoff) : url_(url), title_(title), estimated_read_time_(estimated_read_time), @@ -107,8 +105,7 @@ update_time_us_(update_time), update_title_time_us_(update_title_time), distillation_time_us_(distillation_time), - distillation_size_(distillation_size), - content_suggestions_extra_(content_suggestions_extra) { + distillation_size_(distillation_size) { if (backoff) { backoff_ = std::move(backoff); } else { @@ -136,8 +133,7 @@ update_time_us_(std::move(entry.update_time_us_)), update_title_time_us_(std::move(entry.update_title_time_us_)), distillation_time_us_(std::move(entry.distillation_time_us_)), - distillation_size_(std::move(entry.distillation_size_)), - content_suggestions_extra_(std::move(entry.content_suggestions_extra_)) {} + distillation_size_(std::move(entry.distillation_size_)) {} ReadingListEntry::~ReadingListEntry() {} @@ -197,7 +193,6 @@ update_title_time_us_ = std::move(other.update_title_time_us_); distillation_time_us_ = std::move(other.distillation_time_us_); distillation_size_ = std::move(other.distillation_size_); - content_suggestions_extra_ = std::move(other.content_suggestions_extra_); return *this; } @@ -240,16 +235,6 @@ return state_ != UNSEEN; } -const reading_list::ContentSuggestionsExtra* -ReadingListEntry::ContentSuggestionsExtra() const { - return &content_suggestions_extra_; -} - -void ReadingListEntry::SetContentSuggestionsExtra( - const reading_list::ContentSuggestionsExtra& extra) { - content_suggestions_extra_ = extra; -} - void ReadingListEntry::SetEstimatedReadTime( base::TimeDelta estimated_read_time) { estimated_read_time_ = estimated_read_time; @@ -431,21 +416,11 @@ } } - reading_list::ContentSuggestionsExtra content_suggestions_extra; - if (pb_entry.has_content_suggestions_extra()) { - const reading_list::ReadingListContentSuggestionsExtra& pb_extra = - pb_entry.content_suggestions_extra(); - if (pb_extra.has_dismissed()) { - content_suggestions_extra.dismissed = pb_extra.dismissed(); - } - } - return base::WrapUnique<ReadingListEntry>(new ReadingListEntry( url, title, estimated_read_time, state, creation_time_us, first_read_time_us, update_time_us, update_title_time_us, distillation_state, distilled_path, distilled_url, distillation_time_us, - distillation_size, failed_download_counter, std::move(backoff), - content_suggestions_extra)); + distillation_size, failed_download_counter, std::move(backoff))); } // static @@ -511,8 +486,7 @@ return base::WrapUnique<ReadingListEntry>(new ReadingListEntry( url, title, estimated_read_time, state, creation_time_us, first_read_time_us, update_time_us, update_title_time_us, WAITING, - base::FilePath(), GURL(), 0, 0, 0, nullptr, - reading_list::ContentSuggestionsExtra())); + base::FilePath(), GURL(), 0, 0, 0, nullptr)); } void ReadingListEntry::MergeWithEntry(const ReadingListEntry& other) { @@ -647,10 +621,6 @@ pb_entry->set_backoff(output); } - reading_list::ReadingListContentSuggestionsExtra* pb_extra = - pb_entry->mutable_content_suggestions_extra(); - pb_extra->set_dismissed(content_suggestions_extra_.dismissed); - return pb_entry; }
diff --git a/components/reading_list/core/reading_list_entry.h b/components/reading_list/core/reading_list_entry.h index bf3146c..83b5f90 100644 --- a/components/reading_list/core/reading_list_entry.h +++ b/components/reading_list/core/reading_list_entry.h
@@ -13,6 +13,7 @@ #include "url/gurl.h" namespace reading_list { + class ReadingListLocal; // The different ways a reading list entry is added. @@ -22,17 +23,11 @@ // |ADDED_VIA_SYNC| is when the entry was added with sync. enum EntrySource { ADDED_VIA_CURRENT_APP, ADDED_VIA_EXTENSION, ADDED_VIA_SYNC }; -// Contains additional data used by the ContentSuggestions. -struct ContentSuggestionsExtra { - // Whether the Reading List Entry has been dismissed in the Content - // Suggestions. - bool dismissed = false; -}; -} +} // namespace reading_list namespace sync_pb { class ReadingListSpecifics; -} +} // namespace sync_pb class ReadingListEntry; @@ -113,9 +108,6 @@ // Returns if an entry has ever been seen. bool HasBeenSeen() const; - // Extra information about this entry for the Content Suggestions. - const reading_list::ContentSuggestionsExtra* ContentSuggestionsExtra() const; - // The last update time of the entry. This value may be used to sort the // entries. The value is in microseconds since Jan 1st 1970. int64_t UpdateTime() const; @@ -189,31 +181,26 @@ // If |first_read_time_us_| is 0 and read is READ, sets |first_read_time_us_| // to |now|. void SetRead(bool read, const base::Time& now); - // Sets extra information about this entry used by Content Suggestions. - void SetContentSuggestionsExtra( - const reading_list::ContentSuggestionsExtra& extra); // Sets the estimated time to read of this entry page. void SetEstimatedReadTime(base::TimeDelta estimated_read_time); private: enum State { UNSEEN, UNREAD, READ }; - ReadingListEntry( - const GURL& url, - const std::string& title, - base::TimeDelta estimated_read_time, - State state, - int64_t creation_time, - int64_t first_read_time, - int64_t update_time, - int64_t update_title_time, - ReadingListEntry::DistillationState distilled_state, - const base::FilePath& distilled_path, - const GURL& distilled_url, - int64_t distillation_time, - int64_t distillation_size, - int failed_download_counter, - std::unique_ptr<net::BackoffEntry> backoff, - const reading_list::ContentSuggestionsExtra& content_suggestions_extra); + ReadingListEntry(const GURL& url, + const std::string& title, + base::TimeDelta estimated_read_time, + State state, + int64_t creation_time, + int64_t first_read_time, + int64_t update_time, + int64_t update_title_time, + ReadingListEntry::DistillationState distilled_state, + const base::FilePath& distilled_path, + const GURL& distilled_url, + int64_t distillation_time, + int64_t distillation_size, + int failed_download_counter, + std::unique_ptr<net::BackoffEntry> backoff); GURL url_; std::string title_; base::TimeDelta estimated_read_time_; @@ -234,8 +221,6 @@ int64_t update_title_time_us_; int64_t distillation_time_us_; int64_t distillation_size_; - - reading_list::ContentSuggestionsExtra content_suggestions_extra_; }; #endif // COMPONENTS_READING_LIST_CORE_READING_LIST_ENTRY_H_
diff --git a/components/reading_list/core/reading_list_entry_unittest.cc b/components/reading_list/core/reading_list_entry_unittest.cc index 95af484..7db12a2 100644 --- a/components/reading_list/core/reading_list_entry_unittest.cc +++ b/components/reading_list/core/reading_list_entry_unittest.cc
@@ -319,7 +319,6 @@ EXPECT_EQ(pb_entry->distilled_path(), ""); EXPECT_EQ(pb_entry->failed_download_counter(), 0); EXPECT_NE(pb_entry->backoff(), ""); - EXPECT_FALSE(pb_entry->content_suggestions_extra().dismissed()); entry.SetDistilledState(ReadingListEntry::WILL_RETRY); std::unique_ptr<reading_list::ReadingListLocal> will_retry_pb_entry( @@ -337,10 +336,6 @@ entry.SetRead(true, base::Time::FromTimeT(20)); entry.MarkEntryUpdated(base::Time::FromTimeT(30)); - reading_list::ContentSuggestionsExtra extra; - extra.dismissed = true; - entry.SetContentSuggestionsExtra(extra); - EXPECT_NE(entry.UpdateTime(), creation_time_us); std::unique_ptr<reading_list::ReadingListLocal> distilled_pb_entry( entry.AsReadingListLocal(base::Time::FromTimeT(40))); @@ -355,7 +350,6 @@ EXPECT_EQ(distilled_pb_entry->distillation_time_us(), entry.DistillationTime()); EXPECT_EQ(distilled_pb_entry->distillation_size(), entry.DistillationSize()); - EXPECT_TRUE(distilled_pb_entry->content_suggestions_extra().dismissed()); } // Tests that the reading list entry is correctly parsed from @@ -381,10 +375,6 @@ pb_entry->set_distillation_time_us(now); pb_entry->set_distillation_size(50); - reading_list::ReadingListContentSuggestionsExtra* pb_extra = - pb_entry->mutable_content_suggestions_extra(); - pb_extra->set_dismissed(true); - std::unique_ptr<ReadingListEntry> waiting_entry( ReadingListEntry::FromReadingListLocal(*pb_entry, base::Time::FromTimeT(20))); @@ -397,7 +387,6 @@ EXPECT_EQ(waiting_entry->DistilledPath(), base::FilePath()); EXPECT_EQ(waiting_entry->DistillationSize(), 50); EXPECT_EQ(waiting_entry->DistillationTime(), now); - EXPECT_TRUE(waiting_entry->ContentSuggestionsExtra()->dismissed); // Allow twice the jitter as test is not instantaneous. double fuzzing = 2 * ReadingListEntry::kBackoffPolicy.jitter_factor; int nextTry = waiting_entry->TimeUntilNextTry().InMinutes();
diff --git a/components/reading_list/core/reading_list_model.h b/components/reading_list/core/reading_list_model.h index d320d6c..d664ace 100644 --- a/components/reading_list/core/reading_list_model.h +++ b/components/reading_list/core/reading_list_model.h
@@ -128,11 +128,6 @@ int64_t distilation_size, const base::Time& distilation_time) = 0; - // Sets the extra info for the entry |url|. - virtual void SetContentSuggestionsExtra( - const GURL& url, - const reading_list::ContentSuggestionsExtra& extra) = 0; - // Observer registration methods. The model will remove all observers upon // destruction automatically. virtual void AddObserver(ReadingListModelObserver* observer) = 0;
diff --git a/components/reading_list/core/reading_list_model_impl.cc b/components/reading_list/core/reading_list_model_impl.cc index 14a0c34..b2361b0 100644 --- a/components/reading_list/core/reading_list_model_impl.cc +++ b/components/reading_list/core/reading_list_model_impl.cc
@@ -557,36 +557,6 @@ } } -void ReadingListModelImpl::SetContentSuggestionsExtra( - const GURL& url, - const reading_list::ContentSuggestionsExtra& extra) { - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - DCHECK(loaded()); - ReadingListEntry* entry = GetMutableEntryFromURL(url); - if (!entry) { - return; - } - - for (ReadingListModelObserver& observer : observers_) { - observer.ReadingListWillUpdateEntry(this, url); - } - - entry->SetContentSuggestionsExtra(extra); - if (storage_layer_) { - std::unique_ptr<ReadingListModelStorage::ScopedBatchUpdate> batch = - storage_layer_->EnsureBatchCreated(); - batch->SaveEntry(*entry); - sync_bridge_.DidAddOrUpdateEntry(*entry, - batch->GetSyncMetadataChangeList()); - } - for (ReadingListModelObserver& observer : observers_) { - observer.ReadingListDidUpdateEntry(this, url); - } - for (ReadingListModelObserver& observer : observers_) { - observer.ReadingListDidApplyChanges(this); - } -} - void ReadingListModelImpl::AddObserver(ReadingListModelObserver* observer) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(observer);
diff --git a/components/reading_list/core/reading_list_model_impl.h b/components/reading_list/core/reading_list_model_impl.h index 35325bdf..e9b9064 100644 --- a/components/reading_list/core/reading_list_model_impl.h +++ b/components/reading_list/core/reading_list_model_impl.h
@@ -81,9 +81,6 @@ const GURL& distilled_url, int64_t distilation_size, const base::Time& distilation_time) override; - void SetContentSuggestionsExtra( - const GURL& url, - const reading_list::ContentSuggestionsExtra& extra) override; void AddObserver(ReadingListModelObserver* observer) override; void RemoveObserver(ReadingListModelObserver* observer) override;
diff --git a/components/reading_list/core/reading_list_model_unittest.cc b/components/reading_list/core/reading_list_model_unittest.cc index d47eefd..58a67bf7 100644 --- a/components/reading_list/core/reading_list_model_unittest.cc +++ b/components/reading_list/core/reading_list_model_unittest.cc
@@ -638,21 +638,6 @@ entry->DistillationTime()); } -// Tests setting ContentSuggestionsExtra info on entry. -TEST_F(ReadingListModelTest, UpdateContentSuggestionsExtra) { - const GURL gurl("http://example.com"); - model_->AddEntry(gurl, "sample", reading_list::ADDED_VIA_CURRENT_APP); - const ReadingListEntry* entry = model_->GetEntryByURL(gurl); - ClearCounts(); - - reading_list::ContentSuggestionsExtra extra; - extra.dismissed = true; - - model_->SetContentSuggestionsExtra(gurl, extra); - AssertObserverCount(0, 0, 0, 0, 0, 0, 0, 1, 1, 1); - EXPECT_EQ(extra.dismissed, entry->ContentSuggestionsExtra()->dismissed); -} - // Tests that ReadingListModel calls CallbackModelBeingDeleted when destroyed. TEST_F(ReadingListModelTest, CallbackModelBeingDeleted) { AssertObserverCount(1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
diff --git a/components/signin/public/android/BUILD.gn b/components/signin/public/android/BUILD.gn index 5843aa9..6287f1d0 100644 --- a/components/signin/public/android/BUILD.gn +++ b/components/signin/public/android/BUILD.gn
@@ -24,6 +24,7 @@ sources = [ "java/src/org/chromium/components/signin/AccessTokenData.java", "java/src/org/chromium/components/signin/AccountCapabilitiesFetcher.java", + "java/src/org/chromium/components/signin/AccountEmailDomainDisplayability.java", "java/src/org/chromium/components/signin/AccountManagerDelegate.java", "java/src/org/chromium/components/signin/AccountManagerFacade.java", "java/src/org/chromium/components/signin/AccountManagerFacadeImpl.java", @@ -53,6 +54,15 @@ ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] + + # Add the actual implementation where necessary so that downstream targets + # can provide their own implementations. + jar_excluded_patterns = [ "*/AccountEmailDomainDisplayability.class" ] +} + +android_library("account_email_domain_displayability_java") { + deps = [ ":java" ] + sources = [ "java/src/org/chromium/components/signin/AccountEmailDomainDisplayability.java" ] } generate_jni("jni_headers") {
diff --git a/components/signin/public/android/java/src/org/chromium/components/signin/AccountEmailDomainDisplayability.java b/components/signin/public/android/java/src/org/chromium/components/signin/AccountEmailDomainDisplayability.java new file mode 100644 index 0000000..0e7ce727 --- /dev/null +++ b/components/signin/public/android/java/src/org/chromium/components/signin/AccountEmailDomainDisplayability.java
@@ -0,0 +1,24 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.components.signin; + +/** + * Displayability of email addresses in Chrome UI based on the email domain. + * + * The correct version of this class will be determined at compile time via build rules. + */ +public class AccountEmailDomainDisplayability { + /** + * Check if the user's email address can be displayed based on the email domain. + * + * This method is used in place of + * {@link + * org.chromium.components.signin.base.AccountCapabilities#canHaveEmailAddressDisplayed()} when + * the capability or {@link org.chromium.components.signin.base.AccountInfo} is not available. + */ + public static boolean checkIfDisplayableEmailAddress(String email) { + return true; + } +}
diff --git a/components/signin/public/identity_manager/account_capabilities.cc b/components/signin/public/identity_manager/account_capabilities.cc index 73d12df..d1507fae 100644 --- a/components/signin/public/identity_manager/account_capabilities.cc +++ b/components/signin/public/identity_manager/account_capabilities.cc
@@ -153,3 +153,9 @@ capabilities_size)); } #endif + +#if BUILDFLAG(IS_IOS) +AccountCapabilities::AccountCapabilities( + base::flat_map<std::string, bool> capabilities) + : capabilities_map_(std::move(capabilities)) {} +#endif
diff --git a/components/signin/public/identity_manager/account_capabilities.h b/components/signin/public/identity_manager/account_capabilities.h index 310065a..8872df3f 100644 --- a/components/signin/public/identity_manager/account_capabilities.h +++ b/components/signin/public/identity_manager/account_capabilities.h
@@ -18,6 +18,10 @@ #include "base/android/scoped_java_ref.h" #endif +namespace ios { +class AccountCapabilitiesFetcherIOS; +} // namespace ios + // Stores the information about account capabilities. Capabilities provide // information about state and features of Gaia accounts. class AccountCapabilities { @@ -37,6 +41,10 @@ base::android::ScopedJavaLocalRef<jobject> ConvertToJavaAccountCapabilities( JNIEnv* env) const; #endif + +#if BUILDFLAG(IS_IOS) + AccountCapabilities(base::flat_map<std::string, bool> capabilities); +#endif // Keep sorted alphabetically. // Chrome can display the email address for accounts with this capability. @@ -78,6 +86,9 @@ friend absl::optional<AccountCapabilities> AccountCapabilitiesFromValue( const base::Value::Dict& account_capabilities); friend class AccountCapabilitiesFetcherGaia; +#if BUILDFLAG(IS_IOS) + friend class ios::AccountCapabilitiesFetcherIOS; +#endif friend class AccountCapabilitiesTestMutator; friend class AccountTrackerService;
diff --git a/components/site_isolation/site_isolation_policy_unittest.cc b/components/site_isolation/site_isolation_policy_unittest.cc index 8d0e8bc..0db7c3e 100644 --- a/components/site_isolation/site_isolation_policy_unittest.cc +++ b/components/site_isolation/site_isolation_policy_unittest.cc
@@ -1205,9 +1205,15 @@ SetEnableStrictSiteIsolation(false); // Enable Origin-Agent-Cluster header. feature_list_.InitAndEnableFeature(::features::kOriginIsolationHeader); + SiteIsolationPolicy::SetDisallowMemoryThresholdCachingForTesting(true); BaseSiteIsolationTest::SetUp(); } + void TearDown() override { + SiteIsolationPolicy::SetDisallowMemoryThresholdCachingForTesting(false); + BaseSiteIsolationTest::TearDown(); + } + content::BrowserContext* browser_context() { return &browser_context_; } private:
diff --git a/components/strings/components_strings_it.xtb b/components/strings/components_strings_it.xtb index 7496301..32f9116 100644 --- a/components/strings/components_strings_it.xtb +++ b/components/strings/components_strings_it.xtb
@@ -896,7 +896,7 @@ <translation id="3281350579597955952">{0,plural, =1{Il criterio dell'amministratore sconsiglia di aprire questo file in <ph name="DESTINATION_NAME" />}other{Il criterio dell'amministratore sconsiglia di aprire questi file in <ph name="DESTINATION_NAME" />}}</translation> <translation id="3282085321714087552">La tua organizzazione, <ph name="ENROLLMENT_DOMAIN" />, ha inviato alcune informazioni, quali impostazioni o criteri, ai siti web indicati di seguito.</translation> <translation id="3282497668470633863">Aggiungi il nome indicato sulla carta</translation> -<translation id="3286372614333682499">verticale</translation> +<translation id="3286372614333682499">ritratto</translation> <translation id="3287510313208355388">Scarica quando è online</translation> <translation id="3288238092761586174"><ph name="URL" /> potrebbe dover effettuare altri passaggi per verificare il pagamento</translation> <translation id="3293642807462928945">Scopri di più sulla norma <ph name="POLICY_NAME" /></translation>
diff --git a/components/strings/components_strings_sr-Latn.xtb b/components/strings/components_strings_sr-Latn.xtb index a770c60e..b774102 100644 --- a/components/strings/components_strings_sr-Latn.xtb +++ b/components/strings/components_strings_sr-Latn.xtb
@@ -3212,7 +3212,7 @@ <translation id="935608979562296692">OBRIŠI OBRAZAC</translation> <translation id="936602727769022409">Mogli biste da izgubite pristup Google nalogu. Chromium preporučuje da odmah promenite lozinku. Moraćete da se prijavite.</translation> <translation id="937457230470581909">Zoološki vrtovi, akvarijumi i rezervati</translation> -<translation id="939736085109172342">Novi direktorijum</translation> +<translation id="939736085109172342">Novi folder</translation> <translation id="940053046584497293">Putovanja i prevoz</translation> <translation id="945855313015696284">Proverite informacije u nastavku i izbrišite sve nevažeće kartice</translation> <translation id="947370374845726940"><ph name="CREATE_GOOGLE_SITE_FOCUSED_FRIENDLY_MATCH_TEXT" />, pritisnite Tab, pa Enter da biste brzo napravili nov sajt u Google sajtovima</translation>
diff --git a/components/strings/components_strings_sr.xtb b/components/strings/components_strings_sr.xtb index 10ae779..20f917a 100644 --- a/components/strings/components_strings_sr.xtb +++ b/components/strings/components_strings_sr.xtb
@@ -3212,7 +3212,7 @@ <translation id="935608979562296692">ОБРИШИ ОБРАЗАЦ</translation> <translation id="936602727769022409">Могли бисте да изгубите приступ Google налогу. Chromium препоручује да одмах промените лозинку. Мораћете да се пријавите.</translation> <translation id="937457230470581909">Зоолошки вртови, акваријуми и резервати</translation> -<translation id="939736085109172342">Нови директоријум</translation> +<translation id="939736085109172342">Нови фолдер</translation> <translation id="940053046584497293">Путовања и превоз</translation> <translation id="945855313015696284">Проверите информације у наставку и избришите све неважеће картице</translation> <translation id="947370374845726940"><ph name="CREATE_GOOGLE_SITE_FOCUSED_FRIENDLY_MATCH_TEXT" />, притисните Tab, па Enter да бисте брзо направили нов сајт у Google сајтовима</translation>
diff --git a/components/strings/components_strings_te.xtb b/components/strings/components_strings_te.xtb index f460bef6..90f9bd2 100644 --- a/components/strings/components_strings_te.xtb +++ b/components/strings/components_strings_te.xtb
@@ -460,7 +460,7 @@ <translation id="20817612488360358">సిస్టమ్ ప్రాక్సీ సెట్టింగ్లు ఉపయోగించడానికి సెట్ చేయబడ్డాయి కానీ స్పష్టమైన ప్రాక్సీ కాన్ఫిగరేషన్ కూడా పేర్కొనబడింది.</translation> <translation id="2082238445998314030"><ph name="TOTAL_RESULTS" />లో <ph name="RESULT_NUMBER" />వ ఫలితం</translation> <translation id="2085876078937250610">సేవ్ చేయండి…</translation> -<translation id="2088086323192747268">'సింక్ను మేనేజ్ చేయి' బటన్, Chrome సెట్టింగ్లలో మీరు ఏ సమాచారాన్ని సింక్ చేయాలనుకుంటున్నారో మేనేజ్ చేయడానికి 'Enter'ను నొక్కండి</translation> +<translation id="2088086323192747268">'సింక్ను మేనేజ్ చేయండి' బటన్, Chrome సెట్టింగ్లలో మీరు ఏ సమాచారాన్ని సింక్ చేయాలనుకుంటున్నారో మేనేజ్ చేయడానికి 'Enter'ను నొక్కండి</translation> <translation id="2091887806945687916">ధ్వని</translation> <translation id="2093982008204312032">పాస్వర్డ్లను పూరించడం కోసం Windows Helloను ఆఫ్ చేయడానికి Google Chrome ట్రై చేస్తోంది.</translation> <translation id="2094505752054353250">డొమైన్ సరిపోలలేదు</translation> @@ -484,7 +484,7 @@ <translation id="2135799067377889518">పురుషుల దుస్తులు</translation> <translation id="213826338245044447">మొబైల్ బుక్మార్క్లు</translation> <translation id="214556005048008348">పేమెంట్ను రద్దు చేయి</translation> -<translation id="2148613324460538318">కార్డ్ని జోడించు</translation> +<translation id="2148613324460538318">కార్డ్ని జోడించండి</translation> <translation id="2149968176347646218">కనెక్షన్ సురక్షితంగా లేదు</translation> <translation id="2153609454945889823">Google Play Services for ARను ఇన్స్టాల్ చేయాలా?</translation> <translation id="2154054054215849342">సింక్ మీ డొమైన్కు అందుబాటులో లేదు</translation> @@ -545,7 +545,7 @@ <translation id="2292556288342944218">మీ ఇంటర్నెట్ యాక్సెస్ బ్లాక్ చేయబడింది</translation> <translation id="2293443924986248631">ఆన్లో ఉన్నప్పుడు, వెబ్ అంతటా మిమ్మల్ని ట్రాక్ చేయడానికి ఉపయోగించే కుక్కీలను సైట్లు ఉపయోగించడం సాధ్యం కాదు. కొన్ని సైట్లలోని ఫీచర్లు సరిగ్గా పని చేయకపోవచ్చు.</translation> <translation id="2295290966866883927">మీరు సందర్శించే పేజీల URLలు విశ్లేషణ కోసం Google క్లౌడ్ లేదా థర్డ్ పార్టీలకు పంపబడతాయి. ఉదాహరణకు, సురక్షితం కాని వెబ్సైట్లను గుర్తించడానికి అవి స్కాన్ చేయబడతాయి.</translation> -<translation id="2298855485018661510">'కుక్కీలను మేనేజ్ చేయి' బటన్, Chrome సెట్టింగ్లలో మీ కుక్కీ ప్రాధాన్యతలను మేనేజ్ చేయడానికి 'Enter'ను నొక్కండి</translation> +<translation id="2298855485018661510">'కుక్కీలను మేనేజ్ చేయండి' బటన్, Chrome సెట్టింగ్లలో మీ కుక్కీ ప్రాధాన్యతలను మేనేజ్ చేయడానికి 'Enter'ను నొక్కండి</translation> <translation id="2300306941146563769">అప్లోడ్ చేయలేదు</translation> <translation id="2316159751672436664">ChromeOS సెట్టింగ్లలో మీ యాక్సెసిబిలిటీ టూల్స్ను వ్యక్తిగతీకరించండి</translation> <translation id="2316887270356262533">1 MB కంటే తక్కువ స్థలాన్ని ఖాళీ చేస్తుంది. మీ తదుపరి సందర్శనలో కొన్ని సైట్లు మరింత నెమ్మదిగా లోడ్ కావచ్చు.</translation> @@ -622,7 +622,7 @@ <translation id="253493526287553278">ప్రోమో కోడ్ వివరాలను చూడండి</translation> <translation id="2535585790302968248">ప్రైవేట్గా బ్రౌజ్ చేయడానికి కొత్త అజ్ఞాత ట్యాబ్ను తెరవండి</translation> <translation id="2535659140340599600">{COUNT,plural, =1{మరియు మరో 1}other{మరియు మరో #}}</translation> -<translation id="2536110899380797252">అడ్రస్ను జోడించు</translation> +<translation id="2536110899380797252">అడ్రస్ను జోడించండి</translation> <translation id="2539524384386349900">గుర్తించు</translation> <translation id="2541219929084442027">మీ అజ్ఞాత ట్యాబ్లు అన్నింటినీ మూసివేసిన తర్వాత మీ బ్రౌజర్ హిస్టరీ, కుక్కీ స్టోర్ లేదా సెర్చ్ హిస్టరీలో మీరు అజ్ఞాత ట్యాబ్లలో చూసిన పేజీలు ఉంచబడవు. అయితే, మీరు డౌన్లోడ్ చేసే ఏవైనా ఫైళ్లు లేదా మీరు క్రియేట్ చేసే ఏవైనా బుక్మార్క్లు అలాగే ఉంచబడతాయి.</translation> <translation id="2542106216580219892">సర్ఫింగ్</translation> @@ -725,7 +725,7 @@ <translation id="2784949926578158345">కనెక్షన్ మళ్ళీ సెట్ చేయబడింది.</translation> <translation id="2792012897584536778">ఈ పరికర నిర్వాహకులు మీరు సందర్శించే వెబ్సైట్ల కంటెంట్ను చూడటానికి వారిని అనుమతించే అవకాశం ఉండే భద్రతా సర్టిఫికెట్లను సెటప్ చేశారు.</translation> <translation id="2799020568854403057">రాబోయే సైట్లో హానికరమైన యాప్లు ఉన్నాయి</translation> -<translation id="2799223571221894425">మళ్లీ ప్రారంభించు</translation> +<translation id="2799223571221894425">మళ్లీ ప్రారంభించండి</translation> <translation id="2803306138276472711">Google సురక్షిత బ్రౌజింగ్ ఇటీవల <ph name="SITE" />లో <ph name="BEGIN_LINK" />మాల్వేర్ను గుర్తించింది<ph name="END_LINK" />. సాధారణంగా సురక్షితమైన వెబ్సైట్లకు కూడా కొన్నిసార్లు మాల్వేర్ సోకుతుంది.</translation> <translation id="2807052079800581569">చిత్రం యొక్క Y కోఆర్డినేట్</translation> <translation id="2808278141522721006">మీరు <ph name="SETTINGS" />లో Windows Helloను ఆన్ లేదా ఆఫ్ చేయవచ్చు</translation> @@ -992,7 +992,7 @@ <translation id="3507936815618196901">మీ పరిసరాల 3D మ్యాప్ను రూపొందించడం, అలాగే కెమెరా పొజిషన్ను ట్రాక్ చేయడం</translation> <translation id="3512163584740124171">ఈ విధానం విస్మరించబడుతుంది, ఎందుకంటే ఒకే విధాన గ్రూప్ నుండి మరొక విధానం అధిక ప్రాధాన్యతను కలిగి ఉంది.</translation> <translation id="3515972145999192222">ఒక పాలసీని ఉల్లంఘిస్తున్న కారణంగా మీ సంస్థ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />ను బ్లాక్ చేసింది. <ph name="BEGIN_LEARN_MORE_LINK" />మరింత తెలుసుకోండి<ph name="END_LEARN_MORE_LINK" /></translation> -<translation id="35172538073169599">'అడ్రస్లను మేనేజ్ చేయి' బటన్, Chrome సెట్టింగ్లలో అడ్రస్లను జోడించడానికి, మేనేజ్ చేయడానికి 'Enter'ను నొక్కండి</translation> +<translation id="35172538073169599">'అడ్రస్లను మేనేజ్ చేయండి' బటన్, Chrome సెట్టింగ్లలో అడ్రస్లను జోడించడానికి, మేనేజ్ చేయడానికి 'Enter'ను నొక్కండి</translation> <translation id="3518941727116570328">అనేక వస్తువులను హ్యాండిల్ చేయడం</translation> <translation id="3525130752944427905">10 x 14 అంగుళాలు</translation> <translation id="3528171143076753409">సర్వర్ ప్రమాణపత్రం విశ్వసనీయమైనది కాదు.</translation> @@ -1479,7 +1479,7 @@ <translation id="4756388243121344051">&చరిత్ర</translation> <translation id="4756501505996488486">PRC 16K</translation> <translation id="4757993714154412917">మీరు మోసపూరితమైన సైట్లో మీ పాస్వర్డ్ను ఎంటర్ చేశారు. మీ ఖాతాలను సురక్షితంగా ఉంచడానికి, Chromium మీ సేవ్ చేసిన పాస్వర్డ్లను చెక్ చేయాలని సిఫార్సు చేస్తోంది.</translation> -<translation id="4758311279753947758">సంప్రదింపు సమాచారాన్ని జోడించు</translation> +<translation id="4758311279753947758">సంప్రదింపు సమాచారాన్ని జోడించండి</translation> <translation id="4761104368405085019">మీ మైక్రోఫోన్ను ఉపయోగించండి</translation> <translation id="4761869838909035636">Chrome భద్రతా తనిఖీని రన్ చేయి</translation> <translation id="4764776831041365478"><ph name="URL" /> వద్ద వెబ్పేజీ తాత్కాలికంగా తెరుచుకోవటం లేదు లేదా అది కొత్త వెబ్ అడ్రస్కు శాశ్వతంగా తరలించబడి ఉండవచ్చు.</translation> @@ -1613,7 +1613,7 @@ <translation id="5078060223219502807">మీరు ఇప్పుడే ఉపయోగించిన పాస్వర్డ్, డేటా ఉల్లంఘనలో కనగొనబడింది. మీ ఖాతాలను సురక్షితం చేయడానికి, ఆ పాస్వర్డ్ను ఇప్పుడే మార్చి, ఆపై మీరు సేవ్ చేసిన పాస్వర్డ్లను చెక్ చేయమని పాస్వర్డ్ మేనేజర్ సిఫార్సు చేస్తోంది.</translation> <translation id="5086225927071063542">డిస్ట్రీబ్యూటెడ్ & క్లౌడ్ కంప్యూటింగ్</translation> <translation id="5087286274860437796">ప్రస్తుతం సర్వర్ ప్రమాణపత్రం చెల్లదు.</translation> -<translation id="5087580092889165836">కార్డ్ను జోడించు</translation> +<translation id="5087580092889165836">కార్డ్ను జోడించండి</translation> <translation id="5088142053160410913">ఆపరేటర్కు మెసేజ్ పంపు</translation> <translation id="5093232627742069661">Z-ఫోల్డ్</translation> <translation id="5094747076828555589">ఈ సర్వర్ <ph name="DOMAIN" /> అని నిరూపించుకోలేకపోయింది; దీని భద్రతా ప్రమాణపత్రాన్ని Chromium విశ్వసించలేదు. ఇది తప్పుగా కాన్ఫిగర్ చేయడం వలన లేదా దాడిచేసే వ్యక్తి మీ కనెక్షన్కు అంతరాయం కలిగించడం వలన జరిగి ఉండవచ్చు.</translation> @@ -1918,7 +1918,7 @@ <translation id="5884465125445718607">ఎన్వలప్ చైనీస్ #6</translation> <translation id="5887400589839399685">కార్డ్ సేవ్ చేయబడింది</translation> <translation id="5887687176710214216">చివరిగా నిన్న సందర్శించారు</translation> -<translation id="5895138241574237353">మళ్ళీ ప్రారంభించు</translation> +<translation id="5895138241574237353">మళ్ళీ ప్రారంభించండి</translation> <translation id="5895187275912066135">జారీ చేయబడినది</translation> <translation id="5901630391730855834">పసుపు</translation> <translation id="5903264686717710770">శీర్షిక:</translation> @@ -2182,7 +2182,7 @@ <translation id="6587893660316489419">ఎన్వలప్ B5</translation> <translation id="6587923378399804057">మీరు కాపీ చేసిన లింక్</translation> <translation id="6591833882275308647">మీ <ph name="DEVICE_TYPE" /> నిర్వహించబడటం లేదు</translation> -<translation id="6592952801936330159">'సైట్ సెట్టింగ్లను మేనేజ్ చేయి' బటన్, Chrome సెట్టింగ్లలో అనుమతులను, అలాగే సైట్ల అంతటా స్టోర్ చేయబడిన డేటాను మేనేజ్ చేయడానికి 'Enter'ను నొక్కండి</translation> +<translation id="6592952801936330159">'సైట్ సెట్టింగ్లను మేనేజ్ చేయండి' బటన్, Chrome సెట్టింగ్లలో అనుమతులను, అలాగే సైట్ల అంతటా స్టోర్ చేయబడిన డేటాను మేనేజ్ చేయడానికి 'Enter'ను నొక్కండి</translation> <translation id="6596325263575161958">ఎన్క్రిప్షన్ ఎంపికలు</translation> <translation id="6597665340361269064">90 డిగ్రీలు</translation> <translation id="6599642189720630047">ట్రాక్ చేసిన ప్రోడక్ట్లు</translation> @@ -2516,7 +2516,7 @@ <translation id="7426022697669111648">'మీ Chrome హిస్టరీని చూడండి' బటన్, Chrome సెట్టింగ్లలో మీ బ్రౌజింగ్ హిస్టరీని చూసి, మేనేజ్ చేయడానికి Enterను నొక్కండి</translation> <translation id="7427366580982928791">పిల్లలకు ఇంటర్నెట్ భద్రత</translation> <translation id="7429429656042611765">ఎగ్జిక్యూటివ్</translation> -<translation id="7437289804838430631">సంప్రదింపు సమాచారాన్ని జోడించు</translation> +<translation id="7437289804838430631">సంప్రదింపు సమాచారాన్ని జోడించండి</translation> <translation id="7437490109271760224">కార్డ్ గేమ్లు</translation> <translation id="7440140511386898319">ఆఫ్లైన్లో ఉన్నప్పుడు అన్వేషించండి</translation> <translation id="7441627299479586546">చెల్లని విధాన విషయం</translation> @@ -2670,13 +2670,13 @@ <translation id="7761159795823346334">కెమెరాను యాక్సెస్ చేయడానికి అనుమతించాలా?</translation> <translation id="7761701407923456692">సర్వర్ ప్రమాణపత్రం URLతో సరిపోలలేదు.</translation> <translation id="7763386264682878361">చెల్లింపు మానిఫెస్ట్ అన్వయ ప్రక్రియ</translation> -<translation id="7764225426217299476">అడ్రస్ను జోడించు</translation> +<translation id="7764225426217299476">అడ్రస్ను జోడించండి</translation> <translation id="7766518757692125295">స్కర్ట్</translation> <translation id="7773005668374414287">ఒకే క్రమంలో ఉన్న ఫేస్ అప్</translation> <translation id="7785790577395078482">ఈ టాబ్లెట్</translation> <translation id="7791011319128895129">రిలీజ్ కానివి</translation> <translation id="7791196057686275387">బండిల్</translation> -<translation id="7791543448312431591">జోడించు</translation> +<translation id="7791543448312431591">జోడించండి</translation> <translation id="7798389633136518089">ఈ పాలసీ, క్లౌడ్ సోర్స్ ద్వారా సెట్ చేయబడనందున విస్మరించబడింది.</translation> <translation id="7800304661137206267"><ph name="KX" />ను కీ మార్పిడి విధానం లాగా మరియు సందేశ ప్రామాణీకరణ కోసం <ph name="CIPHER" />ను <ph name="MAC" />తో ఉపయోగించడం ద్వారా కనెక్షన్ ఎన్క్రిప్ట్ చేయబడింది.</translation> <translation id="7802523362929240268">సైట్ చట్టబద్ధమైనది</translation> @@ -2774,7 +2774,7 @@ <translation id="8067872629359326442">మీరు మోసపూరితమైన సైట్లో మీ పాస్వర్డ్ను ఎంటర్ చేశారు. Chromium సహాయపడగలదు. మీ పాస్వర్డ్ను మార్చి, మీ ఖాతా ప్రమాదంలో ఉండవచ్చని Googleకు తెలియజేయడానికి, 'ఖాతాను సంరక్షించు'ను క్లిక్ చేయండి.</translation> <translation id="8070439594494267500">యాప్ చిహ్నం</translation> <translation id="8075736640322370409">కొత్త Google షీట్ను త్వరగా క్రియేట్ చేయండి</translation> -<translation id="8075898834294118863">సైట్ సెట్టింగ్లను మేనేజ్ చేయి</translation> +<translation id="8075898834294118863">సైట్ సెట్టింగ్లను మేనేజ్ చేయండి</translation> <translation id="8076492880354921740">ట్యాబ్లు</translation> <translation id="8077669823243888800">ఎన్వలప్ చైనీస్ #8</translation> <translation id="8078006011486731853">{0,plural, =1{గోప్యమైన ఫైల్ను అప్లోడ్ చేయాలా?}other{గోప్యమైన ఫైల్స్ను అప్లోడ్ చేయాలా?}}</translation> @@ -2867,7 +2867,7 @@ <translation id="8286036467436129157">సైన్ ఇన్ చేయండి</translation> <translation id="8288807391153049143">సర్టిఫికేట్ను చూపు</translation> <translation id="8289355894181816810">మీకు దీని గురించి ఖచ్చితంగా తెలియకుంటే మీ నెట్వర్క్ నిర్వాహకుని సంప్రదించండి.</translation> -<translation id="8293206222192510085">బుక్మార్క్లను జోడించు</translation> +<translation id="8293206222192510085">బుక్మార్క్లను జోడించండి</translation> <translation id="829335040383910391">సౌండ్</translation> <translation id="8294431847097064396">సోర్స్</translation> <translation id="8296205692406981542">ప్రాంతీయ పార్క్లు & గార్డెన్లు</translation> @@ -3015,7 +3015,7 @@ <translation id="8726549941689275341">పేజీ సైజ్:</translation> <translation id="8730621377337864115">పూర్తయింది</translation> <translation id="8731268612289859741">సెక్యూరిటీ కోడ్</translation> -<translation id="8731544501227493793">'పాస్వర్డ్లు మేనేజ్ చేయి' బటన్, Chrome సెట్టింగ్లలో మీ పాస్వర్డ్లు చూసి, మేనేజ్ చేయడానికి 'Enter' నొక్కండి</translation> +<translation id="8731544501227493793">'పాస్వర్డ్లు మేనేజ్ చేయండి' బటన్, Chrome సెట్టింగ్లలో మీ పాస్వర్డ్లు చూసి, మేనేజ్ చేయడానికి 'Enter' నొక్కండి</translation> <translation id="8734529307927223492"><ph name="MANAGER" />, మీ <ph name="DEVICE_TYPE" />ను మేనేజ్ చేస్తోంది</translation> <translation id="8736059027199600831">30 x 40 అంగుళాలు</translation> <translation id="8737134861345396036"><ph name="LAUNCH_INCOGNITO_FOCUSED_FRIENDLY_MATCH_TEXT" />, ప్రైవేట్గా బ్రౌజ్ చేసుకునేందుకు కొత్త అజ్ఞాత విండోను తెరవడానికి ముందు 'Tab'ను నొక్కి, ఆపై 'Enter'ను నొక్కండి</translation> @@ -3083,7 +3083,7 @@ <translation id="8903921497873541725">దగ్గరికి జూమ్ చేయి</translation> <translation id="890493561996401738">సూచన బటన్ను తీసివేయండి, <ph name="REMOVE_BUTTON_FOCUSED_FRIENDLY_MATCH_TEXT" />ను తీసివేయడానికి ఎంటర్ నొక్కండి</translation> <translation id="8912362522468806198">Google ఖాతా</translation> -<translation id="8913778647360618320">'పేమెంట్ ఆప్షన్లను మేనేజ్ చేయి' బటన్, Chrome సెట్టింగ్లలో మీ పేమెంట్లు, క్రెడిట్ కార్డ్ సమాచారం మేనేజ్ చేయడానికి 'Enter'ను నొక్కండి</translation> +<translation id="8913778647360618320">'పేమెంట్ ఆప్షన్లను మేనేజ్ చేయండి' బటన్, Chrome సెట్టింగ్లలో మీ పేమెంట్లు, క్రెడిట్ కార్డ్ సమాచారం మేనేజ్ చేయడానికి 'Enter'ను నొక్కండి</translation> <translation id="8922013791253848639">ప్రకటనలను ఈ సైట్లో ఎప్పుడూ అనుమతించండి</translation> <translation id="892588693504540538">కుడివైపు ఎగువ భాగంలో రంధ్రం</translation> <translation id="8930098617363288380"><ph name="SECURE_DNS_SALT" /> విలువ సంబంధితమైనది కాదు, <ph name="SECURE_DNS_TEMPLATES_WITH_IDENTIFIERS" /> పాలసీని సెట్ చేస్తే తప్ప అది ఉపయోగించబడదు.</translation>
diff --git a/components/sync/base/BUILD.gn b/components/sync/base/BUILD.gn index 38f3dae..363a075 100644 --- a/components/sync/base/BUILD.gn +++ b/components/sync/base/BUILD.gn
@@ -43,6 +43,7 @@ "report_unrecoverable_error.cc", "report_unrecoverable_error.h", "stop_source.h", + "storage_type.h", "sync_invalidation.cc", "sync_invalidation.h", "sync_invalidation_adapter.cc",
diff --git a/components/sync/base/storage_type.h b/components/sync/base/storage_type.h new file mode 100644 index 0000000..5c31e30 --- /dev/null +++ b/components/sync/base/storage_type.h
@@ -0,0 +1,24 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_SYNC_BASE_STORAGE_TYPE_H_ +#define COMPONENTS_SYNC_BASE_STORAGE_TYPE_H_ + +namespace syncer { + +// Represents whether the nature of a local database in terms of data ownership. +enum class StorageType { + // The nature of the data in storage is not attributed explicitly to an + // account. This is the default and the one used for sync-the-feature, as + // there is no clear separation between local and remote storage. + kUnspecified, + // Account storage indicates all data can be attributed to a server-side + // account, which also means the data will be removed from local storage when + // the user signs out. + kAccount, +}; + +} // namespace syncer + +#endif // COMPONENTS_SYNC_BASE_STORAGE_TYPE_H_
diff --git a/components/sync/driver/trusted_vault_histograms.cc b/components/sync/driver/trusted_vault_histograms.cc index a57def7..d7083576 100644 --- a/components/sync/driver/trusted_vault_histograms.cc +++ b/components/sync/driver/trusted_vault_histograms.cc
@@ -39,7 +39,7 @@ TrustedVaultHintDegradedRecoverabilityChangedReasonForUMA hint_degraded_recoverability_changed_reason) { base::UmaHistogramEnumeration( - "Sync.TrustedVaultHintDegradedRecoverabilityChangedReason", + "Sync.TrustedVaultHintDegradedRecoverabilityChangedReason2", hint_degraded_recoverability_changed_reason); }
diff --git a/components/sync/model/blocking_model_type_store_impl.cc b/components/sync/model/blocking_model_type_store_impl.cc index cff9706..1478fdf 100644 --- a/components/sync/model/blocking_model_type_store_impl.cc +++ b/components/sync/model/blocking_model_type_store_impl.cc
@@ -10,6 +10,7 @@ #include "base/location.h" #include "base/memory/ptr_util.h" #include "base/memory/raw_ptr.h" +#include "base/strings/strcat.h" #include "components/sync/model/metadata_batch.h" #include "components/sync/model/model_error.h" #include "components/sync/model/model_type_store_backend.h" @@ -23,6 +24,12 @@ namespace { +// Used for data and metadata explicitly linked to a server-side account. Note +// that this prefix is used *before* the datatype's root tag, which also means +// it shouldn't be a substring or superstring of root tags. Conveniently, root +// tags are guaranteed to be lowercase. +const char kAccountStoragePrefix[] = "A-"; + // Key prefix for data/metadata records. const char kDataPrefix[] = "-dt-"; const char kMetadataPrefix[] = "-md-"; @@ -32,11 +39,13 @@ class LevelDbMetadataChangeList : public MetadataChangeList { public: - LevelDbMetadataChangeList(ModelType type, + LevelDbMetadataChangeList(ModelType model_type, + StorageType storage_type, leveldb::WriteBatch* leveldb_write_batch) : leveldb_write_batch_(leveldb_write_batch), - metadata_prefix_(FormatMetaPrefix(type)), - global_metadata_key_(FormatGlobalMetadataKey(type)) { + metadata_prefix_(FormatMetaPrefix(model_type, storage_type)), + global_metadata_key_( + FormatGlobalMetadataKey(model_type, storage_type)) { DCHECK(leveldb_write_batch_); } @@ -87,11 +96,13 @@ return std::move(batch->leveldb_write_batch_); } - explicit LevelDbWriteBatch(ModelType type) - : type_(type), - data_prefix_(FormatDataPrefix(type)), + LevelDbWriteBatch(ModelType model_type, StorageType storage_type) + : type_(model_type), + data_prefix_(FormatDataPrefix(model_type, storage_type)), leveldb_write_batch_(std::make_unique<leveldb::WriteBatch>()), - metadata_change_list_(type, leveldb_write_batch_.get()) {} + metadata_change_list_(model_type, + storage_type, + leveldb_write_batch_.get()) {} ~LevelDbWriteBatch() override = default; @@ -130,31 +141,52 @@ SEQUENCE_CHECKER(sequence_checker_); }; +std::string GetStorageTypePrefix(StorageType storage_type) { + switch (storage_type) { + case StorageType::kUnspecified: + // Historically no prefix was used for the default storage, and that + // continues to be the case to avoid data migrations. + return ""; + case StorageType::kAccount: + return kAccountStoragePrefix; + } + NOTREACHED(); + return ""; +} + } // namespace -// Formats key prefix for data records of |type|. -std::string FormatDataPrefix(ModelType type) { - return std::string(GetModelTypeLowerCaseRootTag(type)) + kDataPrefix; +// Formats key prefix for data records of |model_type| using |storage_type|. +std::string FormatDataPrefix(ModelType model_type, StorageType storage_type) { + return base::StrCat({GetStorageTypePrefix(storage_type), + GetModelTypeLowerCaseRootTag(model_type), kDataPrefix}); } -// Formats key prefix for metadata records of |type|. -std::string FormatMetaPrefix(ModelType type) { - return std::string(GetModelTypeLowerCaseRootTag(type)) + kMetadataPrefix; +// Formats key prefix for metadata records of |model_type| using |storage_type|. +std::string FormatMetaPrefix(ModelType model_type, StorageType storage_type) { + return base::StrCat({GetStorageTypePrefix(storage_type), + GetModelTypeLowerCaseRootTag(model_type), + kMetadataPrefix}); } -// Formats key for global metadata record of |type|. -std::string FormatGlobalMetadataKey(ModelType type) { - return std::string(GetModelTypeLowerCaseRootTag(type)) + kGlobalMetadataKey; +// Formats key for global metadata record of |model_type| using |storage_type|. +std::string FormatGlobalMetadataKey(ModelType model_type, + StorageType storage_type) { + return base::StrCat({GetStorageTypePrefix(storage_type), + GetModelTypeLowerCaseRootTag(model_type), + kGlobalMetadataKey}); } BlockingModelTypeStoreImpl::BlockingModelTypeStoreImpl( - ModelType type, + ModelType model_type, + StorageType storage_type, scoped_refptr<ModelTypeStoreBackend> backend) - : type_(type), + : model_type_(model_type), + storage_type_(storage_type), backend_(std::move(backend)), - data_prefix_(FormatDataPrefix(type)), - metadata_prefix_(FormatMetaPrefix(type)), - global_metadata_key_(FormatGlobalMetadataKey(type)) { + data_prefix_(FormatDataPrefix(model_type, storage_type)), + metadata_prefix_(FormatMetaPrefix(model_type, storage_type)), + global_metadata_key_(FormatGlobalMetadataKey(model_type, storage_type)) { DCHECK(backend_); } @@ -231,7 +263,7 @@ std::unique_ptr<BlockingModelTypeStoreImpl::WriteBatch> BlockingModelTypeStoreImpl::CreateWriteBatch() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - return CreateWriteBatchForType(type_); + return CreateWriteBatch(model_type_, storage_type_); } absl::optional<ModelError> BlockingModelTypeStoreImpl::CommitWriteBatch( @@ -240,7 +272,7 @@ DCHECK(write_batch); std::unique_ptr<LevelDbWriteBatch> write_batch_impl( static_cast<LevelDbWriteBatch*>(write_batch.release())); - DCHECK_EQ(write_batch_impl->GetModelType(), type_); + DCHECK_EQ(write_batch_impl->GetModelType(), model_type_); return backend_->WriteModifications( LevelDbWriteBatch::ToLevelDbWriteBatch(std::move(write_batch_impl))); } @@ -249,13 +281,14 @@ BlockingModelTypeStoreImpl::DeleteAllDataAndMetadata() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); return backend_->DeleteDataAndMetadataForPrefix( - GetModelTypeLowerCaseRootTag(type_)); + GetModelTypeLowerCaseRootTag(model_type_)); } // static std::unique_ptr<BlockingModelTypeStoreImpl::WriteBatch> -BlockingModelTypeStoreImpl::CreateWriteBatchForType(ModelType type) { - return std::make_unique<LevelDbWriteBatch>(type); +BlockingModelTypeStoreImpl::CreateWriteBatch(ModelType model_type, + StorageType storage_type) { + return std::make_unique<LevelDbWriteBatch>(model_type, storage_type); } } // namespace syncer
diff --git a/components/sync/model/blocking_model_type_store_impl.h b/components/sync/model/blocking_model_type_store_impl.h index 822376c2..62ed3b17 100644 --- a/components/sync/model/blocking_model_type_store_impl.h +++ b/components/sync/model/blocking_model_type_store_impl.h
@@ -11,6 +11,7 @@ #include "base/sequence_checker.h" #include "base/task/sequenced_task_runner.h" #include "components/sync/base/model_type.h" +#include "components/sync/base/storage_type.h" #include "components/sync/model/blocking_model_type_store.h" namespace syncer { @@ -20,21 +21,23 @@ // they are not needed anymore. See crbug.com/1147556 for more // context on move migration. -// Formats key prefix for data records of |type|. -std::string FormatDataPrefix(ModelType type); +// Formats key prefix for data records of |model_type| using |storage_type|. +std::string FormatDataPrefix(ModelType model_type, StorageType storage_type); -// Formats key prefix for metadata records of |type|. -std::string FormatMetaPrefix(ModelType type); +// Formats key prefix for metadata records of |model_type| using |storage_type|. +std::string FormatMetaPrefix(ModelType model_type, StorageType storage_type); -// Formats key for global metadata record of |type|. -std::string FormatGlobalMetadataKey(ModelType type); +// Formats key for global metadata record of |model_type| using |storage_type|. +std::string FormatGlobalMetadataKey(ModelType model_type, + StorageType storage_type); class ModelTypeStoreBackend; class BlockingModelTypeStoreImpl : public BlockingModelTypeStore { public: // |backend| must not be null. - BlockingModelTypeStoreImpl(ModelType type, + BlockingModelTypeStoreImpl(ModelType model_type, + StorageType storage_type, scoped_refptr<ModelTypeStoreBackend> backend); BlockingModelTypeStoreImpl(const BlockingModelTypeStoreImpl&) = delete; @@ -57,10 +60,12 @@ // For advanced uses that require cross-thread batch posting. Avoid if // possible. - static std::unique_ptr<WriteBatch> CreateWriteBatchForType(ModelType type); + static std::unique_ptr<WriteBatch> CreateWriteBatch(ModelType model_type, + StorageType storage_type); private: - const ModelType type_; + const ModelType model_type_; + const StorageType storage_type_; const scoped_refptr<ModelTypeStoreBackend> backend_; // Key prefix for data/metadata records of this model type.
diff --git a/components/sync/model/model_type_store_impl.cc b/components/sync/model/model_type_store_impl.cc index bdd858b6..eeb32146 100644 --- a/components/sync/model/model_type_store_impl.cc +++ b/components/sync/model/model_type_store_impl.cc
@@ -40,11 +40,13 @@ } // namespace ModelTypeStoreImpl::ModelTypeStoreImpl( - ModelType type, + ModelType model_type, + StorageType storage_type, std::unique_ptr<BlockingModelTypeStoreImpl, base::OnTaskRunnerDeleter> backend_store, scoped_refptr<base::SequencedTaskRunner> backend_task_runner) - : type_(type), + : model_type_(model_type), + storage_type_(storage_type), backend_task_runner_(std::move(backend_task_runner)), backend_store_(std::move(backend_store)) { DCHECK(backend_store_); @@ -186,7 +188,8 @@ std::unique_ptr<ModelTypeStore::WriteBatch> ModelTypeStoreImpl::CreateWriteBatch() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - return BlockingModelTypeStoreImpl::CreateWriteBatchForType(type_); + return BlockingModelTypeStoreImpl::CreateWriteBatch(model_type_, + storage_type_); } void ModelTypeStoreImpl::CommitWriteBatch(
diff --git a/components/sync/model/model_type_store_impl.h b/components/sync/model/model_type_store_impl.h index e7baf02..75b0ba3 100644 --- a/components/sync/model/model_type_store_impl.h +++ b/components/sync/model/model_type_store_impl.h
@@ -12,6 +12,7 @@ #include "base/sequence_checker.h" #include "base/task/sequenced_task_runner.h" #include "components/sync/base/model_type.h" +#include "components/sync/base/storage_type.h" #include "components/sync/model/model_type_store.h" namespace syncer { @@ -26,7 +27,8 @@ // |backend_store| must not be null and must have been created in // |backend_task_runner|. ModelTypeStoreImpl( - ModelType type, + ModelType model_type, + StorageType storage_type, std::unique_ptr<BlockingModelTypeStoreImpl, base::OnTaskRunnerDeleter> backend_store, scoped_refptr<base::SequencedTaskRunner> backend_task_runner); @@ -65,7 +67,8 @@ void WriteModificationsDone(CallbackWithResult callback, const absl::optional<ModelError>& error); - const ModelType type_; + const ModelType model_type_; + const StorageType storage_type_; scoped_refptr<base::SequencedTaskRunner> backend_task_runner_; // |backend_store_| should be deleted on backend thread. std::unique_ptr<BlockingModelTypeStoreImpl, base::OnTaskRunnerDeleter>
diff --git a/components/sync/model/model_type_store_service.h b/components/sync/model/model_type_store_service.h index 6413744..eec091c 100644 --- a/components/sync/model/model_type_store_service.h +++ b/components/sync/model/model_type_store_service.h
@@ -22,10 +22,16 @@ // centralize all storage-related paths in one class. virtual const base::FilePath& GetSyncDataPath() const = 0; - // Returns a factory to create instances of ModelTypeStore. May be used from - // any thread and independently of the lifetime of this object. + // Returns a factory to create instances of ModelTypeStore with unspecified + // storage type (i.e. `StorageType::kUnspecified`). May be used from any + // thread and independently of the lifetime of this object. virtual RepeatingModelTypeStoreFactory GetStoreFactory() = 0; + // Same as above but uses `StorageType::kAccount` for the underlying data + // storage, which means it's fully isolated from the storage managed via + // `GetStoreFactory()`. + virtual RepeatingModelTypeStoreFactory GetStoreFactoryForAccountStorage() = 0; + virtual scoped_refptr<base::SequencedTaskRunner> GetBackendTaskRunner() = 0; };
diff --git a/components/sync/model/model_type_store_service_impl.cc b/components/sync/model/model_type_store_service_impl.cc index 46d43fc..2d37ab9 100644 --- a/components/sync/model/model_type_store_service_impl.cc +++ b/components/sync/model/model_type_store_service_impl.cc
@@ -15,6 +15,7 @@ #include "base/task/sequenced_task_runner.h" #include "base/task/task_traits.h" #include "base/task/thread_pool.h" +#include "components/sync/base/storage_type.h" #include "components/sync/model/blocking_model_type_store_impl.h" #include "components/sync/model/model_type_store_backend.h" #include "components/sync/model/model_type_store_impl.h" @@ -42,11 +43,13 @@ std::unique_ptr<BlockingModelTypeStoreImpl, base::OnTaskRunnerDeleter> CreateBlockingModelTypeStoreOnBackendSequence( - ModelType type, + ModelType model_type, + StorageType storage_type, scoped_refptr<ModelTypeStoreBackend> store_backend) { BlockingModelTypeStoreImpl* blocking_store = nullptr; if (store_backend->IsInitialized()) { - blocking_store = new BlockingModelTypeStoreImpl(type, store_backend); + blocking_store = + new BlockingModelTypeStoreImpl(model_type, storage_type, store_backend); } return std::unique_ptr<BlockingModelTypeStoreImpl, base::OnTaskRunnerDeleter /*[]*/>( @@ -55,7 +58,8 @@ } void ConstructModelTypeStoreOnFrontendSequence( - ModelType type, + ModelType model_type, + StorageType storage_type, scoped_refptr<base::SequencedTaskRunner> backend_task_runner, ModelTypeStore::InitCallback callback, std::unique_ptr<BlockingModelTypeStoreImpl, base::OnTaskRunnerDeleter> @@ -63,7 +67,8 @@ if (blocking_store) { std::move(callback).Run( /*error=*/absl::nullopt, - std::make_unique<ModelTypeStoreImpl>(type, std::move(blocking_store), + std::make_unique<ModelTypeStoreImpl>(model_type, storage_type, + std::move(blocking_store), backend_task_runner)); } else { std::move(callback).Run( @@ -73,19 +78,21 @@ } void CreateModelTypeStoreOnFrontendSequence( + StorageType storage_type, scoped_refptr<base::SequencedTaskRunner> backend_task_runner, scoped_refptr<ModelTypeStoreBackend> store_backend, - ModelType type, + ModelType model_type, ModelTypeStore::InitCallback callback) { // BlockingModelTypeStoreImpl must be instantiated in the backend sequence. // This also guarantees that the creation is sequenced with the backend's // initialization, since we can't know for sure that InitOnBackendSequence() // has already run. auto task = base::BindOnce(&CreateBlockingModelTypeStoreOnBackendSequence, - type, store_backend); + model_type, storage_type, store_backend); - auto reply = base::BindOnce(&ConstructModelTypeStoreOnFrontendSequence, type, - backend_task_runner, std::move(callback)); + auto reply = + base::BindOnce(&ConstructModelTypeStoreOnFrontendSequence, model_type, + storage_type, backend_task_runner, std::move(callback)); backend_task_runner->PostTaskAndReplyWithResult(FROM_HERE, std::move(task), std::move(reply)); @@ -117,7 +124,16 @@ RepeatingModelTypeStoreFactory ModelTypeStoreServiceImpl::GetStoreFactory() { DCHECK_CALLED_ON_VALID_SEQUENCE(ui_sequence_checker_); return base::BindRepeating(&CreateModelTypeStoreOnFrontendSequence, - backend_task_runner_, store_backend_); + StorageType::kUnspecified, backend_task_runner_, + store_backend_); +} + +RepeatingModelTypeStoreFactory +ModelTypeStoreServiceImpl::GetStoreFactoryForAccountStorage() { + DCHECK_CALLED_ON_VALID_SEQUENCE(ui_sequence_checker_); + return base::BindRepeating(&CreateModelTypeStoreOnFrontendSequence, + StorageType::kAccount, backend_task_runner_, + store_backend_); } scoped_refptr<base::SequencedTaskRunner>
diff --git a/components/sync/model/model_type_store_service_impl.h b/components/sync/model/model_type_store_service_impl.h index fcd5acd5..e591547 100644 --- a/components/sync/model/model_type_store_service_impl.h +++ b/components/sync/model/model_type_store_service_impl.h
@@ -32,6 +32,7 @@ // ModelTypeStoreService: const base::FilePath& GetSyncDataPath() const override; RepeatingModelTypeStoreFactory GetStoreFactory() override; + RepeatingModelTypeStoreFactory GetStoreFactoryForAccountStorage() override; scoped_refptr<base::SequencedTaskRunner> GetBackendTaskRunner() override; private:
diff --git a/components/sync/model/model_type_store_service_impl_unittest.cc b/components/sync/model/model_type_store_service_impl_unittest.cc index df672fa..d789542 100644 --- a/components/sync/model/model_type_store_service_impl_unittest.cc +++ b/components/sync/model/model_type_store_service_impl_unittest.cc
@@ -5,6 +5,8 @@ #include "components/sync/model/model_type_store_service_impl.h" #include <memory> +#include <string> +#include <utility> #include "base/run_loop.h" #include "base/test/bind.h" @@ -17,7 +19,56 @@ namespace syncer { namespace { +using testing::Eq; using testing::NotNull; +using testing::SizeIs; + +std::unique_ptr<ModelTypeStore> ExerciseStoreFactoryAndWait( + const RepeatingModelTypeStoreFactory& store_factory) { + std::unique_ptr<ModelTypeStore> result; + base::RunLoop loop; + store_factory.Run( + syncer::PREFERENCES, + base::BindLambdaForTesting([&](const absl::optional<ModelError>& error, + std::unique_ptr<ModelTypeStore> store) { + EXPECT_FALSE(error.has_value()); + result = std::move(store); + loop.Quit(); + })); + loop.Run(); + return result; +} + +void WriteDataAndWait(ModelTypeStore* store, + const std::string& id, + const std::string& value) { + std::unique_ptr<ModelTypeStore::WriteBatch> batch = store->CreateWriteBatch(); + batch->WriteData(id, value); + base::RunLoop loop; + store->CommitWriteBatch( + std::move(batch), + base::BindLambdaForTesting( + [&](const absl::optional<ModelError>& error) { loop.Quit(); })); + loop.Run(); +} + +std::string ReadDataAndWait(ModelTypeStore* store, const std::string& id) { + base::RunLoop loop; + std::string read_value; + store->ReadData( + {id}, base::BindLambdaForTesting( + [&](const absl::optional<ModelError>& error, + std::unique_ptr<ModelTypeStore::RecordList> data_records, + std::unique_ptr<ModelTypeStore::IdList> missing_id_list) { + EXPECT_THAT(*data_records, SizeIs(1)); + if (data_records->size() == 1) { + read_value = data_records->front().value; + } + loop.Quit(); + })); + loop.Run(); + return read_value; +} // Regression test for http://crbug.com/1190187. TEST(ModelTypeStoreServiceImplTest, ShouldSupportFactoryOutlivingService) { @@ -34,16 +85,36 @@ task_environment.RunUntilIdle(); // Verify that the factory continues to work, even if it outlives the service. - base::RunLoop loop; - store_factory.Run( - syncer::PREFERENCES, - base::BindLambdaForTesting([&](const absl::optional<ModelError>& error, - std::unique_ptr<ModelTypeStore> store) { - EXPECT_FALSE(error.has_value()); - EXPECT_THAT(store, NotNull()); - loop.Quit(); - })); - loop.Run(); + EXPECT_THAT(ExerciseStoreFactoryAndWait(store_factory), NotNull()); +} + +TEST(ModelTypeStoreServiceImplTest, ShouldUseIsolatedStorageTypes) { + base::test::TaskEnvironment task_environment; + auto service = std::make_unique<ModelTypeStoreServiceImpl>( + base::CreateUniqueTempDirectoryScopedToTest()); + + const RepeatingModelTypeStoreFactory default_store_factory = + service->GetStoreFactory(); + const RepeatingModelTypeStoreFactory account_store_factory = + service->GetStoreFactoryForAccountStorage(); + + ASSERT_TRUE(default_store_factory); + ASSERT_TRUE(account_store_factory); + + std::unique_ptr<ModelTypeStore> default_store = + ExerciseStoreFactoryAndWait(default_store_factory); + std::unique_ptr<ModelTypeStore> account_store = + ExerciseStoreFactoryAndWait(account_store_factory); + + ASSERT_THAT(default_store, NotNull()); + ASSERT_THAT(account_store, NotNull()); + + WriteDataAndWait(default_store.get(), "key", "A"); + WriteDataAndWait(account_store.get(), "key", "B"); + + // Although they share key, the two values should remain independent. + EXPECT_THAT(ReadDataAndWait(default_store.get(), "key"), Eq("A")); + EXPECT_THAT(ReadDataAndWait(account_store.get(), "key"), Eq("B")); } } // namespace
diff --git a/components/sync/test/model_type_store_test_util.cc b/components/sync/test/model_type_store_test_util.cc index baf5385..be81d7e 100644 --- a/components/sync/test/model_type_store_test_util.cc +++ b/components/sync/test/model_type_store_test_util.cc
@@ -71,7 +71,8 @@ ModelTypeStoreTestUtil::CreateInMemoryStoreForTest(ModelType type) { std::unique_ptr<BlockingModelTypeStoreImpl, base::OnTaskRunnerDeleter> blocking_store(new BlockingModelTypeStoreImpl( - type, ModelTypeStoreBackend::CreateInMemoryForTest()), + type, StorageType::kUnspecified, + ModelTypeStoreBackend::CreateInMemoryForTest()), base::OnTaskRunnerDeleter( base::SequencedTaskRunner::GetCurrentDefault())); // Not all tests issue a RunUntilIdle() at the very end, to guarantee that @@ -79,7 +80,7 @@ // let keep memory sanitizers happy. ANNOTATE_LEAKING_OBJECT_PTR(blocking_store.get()); return std::make_unique<ModelTypeStoreImpl>( - type, std::move(blocking_store), + type, StorageType::kUnspecified, std::move(blocking_store), base::SequencedTaskRunner::GetCurrentDefault()); }
diff --git a/components/sync/test/test_model_type_store_service.cc b/components/sync/test/test_model_type_store_service.cc index f32aab9..073b0179 100644 --- a/components/sync/test/test_model_type_store_service.cc +++ b/components/sync/test/test_model_type_store_service.cc
@@ -5,14 +5,11 @@ #include "components/sync/test/test_model_type_store_service.h" #include "base/task/sequenced_task_runner.h" -#include "components/sync/model/blocking_model_type_store_impl.h" -#include "components/sync/model/model_type_store_backend.h" #include "components/sync/test/model_type_store_test_util.h" namespace syncer { -TestModelTypeStoreService::TestModelTypeStoreService() - : store_backend_(ModelTypeStoreBackend::CreateInMemoryForTest()) { +TestModelTypeStoreService::TestModelTypeStoreService() { DCHECK(sync_data_path_.CreateUniqueTempDir()); } @@ -26,6 +23,11 @@ return ModelTypeStoreTestUtil::FactoryForInMemoryStoreForTest(); } +RepeatingModelTypeStoreFactory +TestModelTypeStoreService::GetStoreFactoryForAccountStorage() { + return ModelTypeStoreTestUtil::FactoryForInMemoryStoreForTest(); +} + scoped_refptr<base::SequencedTaskRunner> TestModelTypeStoreService::GetBackendTaskRunner() { return base::SequencedTaskRunner::GetCurrentDefault();
diff --git a/components/sync/test/test_model_type_store_service.h b/components/sync/test/test_model_type_store_service.h index c88b193..7a6ff19 100644 --- a/components/sync/test/test_model_type_store_service.h +++ b/components/sync/test/test_model_type_store_service.h
@@ -7,14 +7,11 @@ #include "base/files/file_path.h" #include "base/files/scoped_temp_dir.h" -#include "base/memory/scoped_refptr.h" #include "components/sync/model/model_type_store.h" #include "components/sync/model/model_type_store_service.h" namespace syncer { -class ModelTypeStoreBackend; - // Test-only ModelTypeStoreService implementation that uses a temporary dir // for GetSyncDataPath() and uses in-memory storage for ModelTypeStore. class TestModelTypeStoreService : public ModelTypeStoreService { @@ -30,10 +27,10 @@ // ModelTypeStoreService: const base::FilePath& GetSyncDataPath() const override; RepeatingModelTypeStoreFactory GetStoreFactory() override; + RepeatingModelTypeStoreFactory GetStoreFactoryForAccountStorage() override; scoped_refptr<base::SequencedTaskRunner> GetBackendTaskRunner() override; private: - const scoped_refptr<ModelTypeStoreBackend> store_backend_; base::ScopedTempDir sync_data_path_; };
diff --git a/components/sync/trusted_vault/trusted_vault_degraded_recoverability_handler.cc b/components/sync/trusted_vault/trusted_vault_degraded_recoverability_handler.cc index 316217b..c8736ee 100644 --- a/components/sync/trusted_vault/trusted_vault_degraded_recoverability_handler.cc +++ b/components/sync/trusted_vault/trusted_vault_degraded_recoverability_handler.cc
@@ -61,9 +61,6 @@ account_info_(account_info) { degraded_recoverability_value_ = degraded_recoverability_state.degraded_recoverability_value(); - base::UmaHistogramExactLinear("Sync.TrustedVaultDegradedRecoverabilityValue", - degraded_recoverability_value_, - sync_pb::DegradedRecoverabilityValue_ARRAYSIZE); if (degraded_recoverability_state .has_last_refresh_time_millis_since_unix_epoch()) { base::Time last_refresh_time = @@ -88,15 +85,10 @@ void TrustedVaultDegradedRecoverabilityHandler:: HintDegradedRecoverabilityChanged( TrustedVaultHintDegradedRecoverabilityChangedReasonForUMA reason) { - RecordTrustedVaultHintDegradedRecoverabilityChangedReason(reason); - RefreshImmediately(); -} - -void TrustedVaultDegradedRecoverabilityHandler::RefreshImmediately() { - if (!next_refresh_timer_.IsRunning()) { - return; + if (next_refresh_timer_.IsRunning()) { + RecordTrustedVaultHintDegradedRecoverabilityChangedReason(reason); + next_refresh_timer_.FireNow(); } - next_refresh_timer_.FireNow(); } void TrustedVaultDegradedRecoverabilityHandler::GetIsRecoverabilityDegraded( @@ -122,6 +114,9 @@ } void TrustedVaultDegradedRecoverabilityHandler::Start() { + base::UmaHistogramExactLinear("Sync.TrustedVaultDegradedRecoverabilityValue2", + degraded_recoverability_value_, + sync_pb::DegradedRecoverabilityValue_ARRAYSIZE); next_refresh_timer_.Start( FROM_HERE, ComputeTimeUntilNextRefresh(current_refresh_period_, last_refresh_time_),
diff --git a/components/sync/trusted_vault/trusted_vault_degraded_recoverability_handler.h b/components/sync/trusted_vault/trusted_vault_degraded_recoverability_handler.h index 5c987ab..349ce9c 100644 --- a/components/sync/trusted_vault/trusted_vault_degraded_recoverability_handler.h +++ b/components/sync/trusted_vault/trusted_vault_degraded_recoverability_handler.h
@@ -56,10 +56,6 @@ // GetIsRecoverabilityDegraded(). void GetIsRecoverabilityDegraded(base::OnceCallback<void(bool)> cb); - // TODO(crbug.com/1247990): Should be inlined inside - // HintDegradedRecoverabilityChanged(). - void RefreshImmediately(); - private: void UpdateCurrentRefreshPeriod(); void Start();
diff --git a/components/sync/trusted_vault/trusted_vault_degraded_recoverability_handler_unittest.cc b/components/sync/trusted_vault/trusted_vault_degraded_recoverability_handler_unittest.cc index e4b5828..f99c5b9 100644 --- a/components/sync/trusted_vault/trusted_vault_degraded_recoverability_handler_unittest.cc +++ b/components/sync/trusted_vault/trusted_vault_degraded_recoverability_handler_unittest.cc
@@ -8,6 +8,7 @@ #include <string> #include <utility> #include <vector> +#include "base/test/metrics/histogram_tester.h" #include "base/test/mock_callback.h" #include "base/test/task_environment.h" #include "base/time/time.h" @@ -103,6 +104,33 @@ }; TEST_F(TrustedVaultDegradedRecoverabilityHandlerTest, + ShouldRecordTheDegradedRecoverabilityValueOnStart) { + base::HistogramTester histogram_tester; + testing::NiceMock<MockTrustedVaultConnection> connection; + testing::NiceMock<MockDelegate> delegate; + sync_pb::LocalTrustedVaultDegradedRecoverabilityState + degraded_recoverability_state; + degraded_recoverability_state.set_degraded_recoverability_value( + sync_pb::DegradedRecoverabilityValue::kNotDegraded); + + std::unique_ptr<TrustedVaultDegradedRecoverabilityHandler> scheduler = + std::make_unique<TrustedVaultDegradedRecoverabilityHandler>( + &connection, &delegate, MakeAccountInfoWithGaiaId("user"), + degraded_recoverability_state); + histogram_tester.ExpectUniqueSample( + "Sync.TrustedVaultDegradedRecoverabilityValue2", + /*sample=*/sync_pb::DegradedRecoverabilityValue::kNotDegraded, + /*expected_bucket_count=*/0); + + // Start the scheduler. + scheduler->GetIsRecoverabilityDegraded(base::DoNothing()); + histogram_tester.ExpectUniqueSample( + "Sync.TrustedVaultDegradedRecoverabilityValue2", + /*sample=*/sync_pb::DegradedRecoverabilityValue::kNotDegraded, + /*expected_bucket_count=*/1); +} + +TEST_F(TrustedVaultDegradedRecoverabilityHandlerTest, ShouldPendTheCallbackUntilTheFirstRefreshIsCalled) { testing::NiceMock<MockTrustedVaultConnection> connection; testing::NiceMock<MockDelegate> delegate; @@ -153,7 +181,8 @@ } TEST_F(TrustedVaultDegradedRecoverabilityHandlerTest, - ShouldRefreshImmediately) { + ShouldRefreshImmediatelyAndRecordTheReason) { + base::HistogramTester histogram_tester; testing::NiceMock<MockTrustedVaultConnection> connection; ON_CALL(connection, DownloadIsRecoverabilityDegraded( Eq(MakeAccountInfoWithGaiaId("user")), _)) @@ -180,7 +209,15 @@ task_environment().FastForwardBy(base::Milliseconds(1)); EXPECT_CALL(connection, DownloadIsRecoverabilityDegraded); - scheduler->RefreshImmediately(); + scheduler->HintDegradedRecoverabilityChanged( + TrustedVaultHintDegradedRecoverabilityChangedReasonForUMA:: + kPersistentAuthErrorResolved); + histogram_tester.ExpectUniqueSample( + "Sync.TrustedVaultHintDegradedRecoverabilityChangedReason2", + /*sample=*/ + TrustedVaultHintDegradedRecoverabilityChangedReasonForUMA:: + kPersistentAuthErrorResolved, + /*expected_bucket_count=*/1); } TEST_F(TrustedVaultDegradedRecoverabilityHandlerTest, @@ -365,7 +402,8 @@ EXPECT_CALL(delegate, WriteDegradedRecoverabilityState(DegradedRecoverabilityStateEq( degraded_recoverability_state))); - scheduler->RefreshImmediately(); + scheduler->HintDegradedRecoverabilityChanged( + TrustedVaultHintDegradedRecoverabilityChangedReasonForUMA()); } TEST_F( @@ -416,7 +454,8 @@ EXPECT_CALL(delegate, WriteDegradedRecoverabilityState(DegradedRecoverabilityStateEq( degraded_recoverability_state))); - scheduler->RefreshImmediately(); + scheduler->HintDegradedRecoverabilityChanged( + TrustedVaultHintDegradedRecoverabilityChangedReasonForUMA()); } TEST_F(TrustedVaultDegradedRecoverabilityHandlerTest,
diff --git a/components/webapps/browser/android/translations/android_webapps_strings_te.xtb b/components/webapps/browser/android/translations/android_webapps_strings_te.xtb index 65613b62..61540b13 100644 --- a/components/webapps/browser/android/translations/android_webapps_strings_te.xtb +++ b/components/webapps/browser/android/translations/android_webapps_strings_te.xtb
@@ -1,7 +1,7 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="te"> -<translation id="2139186145475833000">హోమ్ స్క్రీన్కు జోడించు</translation> +<translation id="2139186145475833000">హోమ్ స్క్రీన్కు జోడించండి</translation> <translation id="2478076885740497414">యాప్ను ఇన్స్టాల్ చేయండి</translation> <translation id="3789841737615482174">ఇన్స్టాల్ చేయి</translation> <translation id="3910402514791813257">ఇన్స్టాల్ చేయడంలో విఫలమైంది</translation>
diff --git a/components/webauthn/android/BUILD.gn b/components/webauthn/android/BUILD.gn index f10eaf6..62fc573 100644 --- a/components/webauthn/android/BUILD.gn +++ b/components/webauthn/android/BUILD.gn
@@ -40,6 +40,7 @@ "//components/externalauth/android:java", "//components/payments/content/android:feature_list_java", "//content/public/android:content_java", + "//content/public/common:common_java", "//mojo/public/java:bindings_java", "//mojo/public/java:system_java", "//mojo/public/mojom/base:base_java",
diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/AuthenticatorImpl.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/AuthenticatorImpl.java index 54c35ae..f54fc9d 100644 --- a/components/webauthn/android/java/src/org/chromium/components/webauthn/AuthenticatorImpl.java +++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/AuthenticatorImpl.java
@@ -243,8 +243,10 @@ @Override public void cancel() { - // This is not implemented for anything other than Conditional UI getAssertion requests, - // since there is no way to cancel a request that has already triggered gmscore UI. + // This is not implemented for anything other than getAssertion requests, since there is + // no way to cancel a request that has already triggered gmscore UI. Get requests can be + // cancelled if they are pending conditional UI requests, or if they are discoverable + // credential requests with the account selector being shown to the user. if (!mIsOperationPending || mGetAssertionCallback == null) { return; }
diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/Fido2CredentialRequest.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/Fido2CredentialRequest.java index 5df64cc..1f0026d 100644 --- a/components/webauthn/android/java/src/org/chromium/components/webauthn/Fido2CredentialRequest.java +++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/Fido2CredentialRequest.java
@@ -33,11 +33,13 @@ import org.chromium.components.payments.PaymentFeatureList; import org.chromium.content_public.browser.ClientDataJson; import org.chromium.content_public.browser.ClientDataRequestType; +import org.chromium.content_public.browser.ContentFeatureList; import org.chromium.content_public.browser.RenderFrameHost; import org.chromium.content_public.browser.RenderFrameHost.WebAuthSecurityChecksResults; import org.chromium.content_public.browser.WebAuthenticationDelegate; import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContentsStatics; +import org.chromium.content_public.common.ContentFeatures; import org.chromium.net.GURLUtils; import org.chromium.url.Origin; @@ -208,7 +210,10 @@ return; } - if (options.allowCredentials == null || options.allowCredentials.length == 0) { + boolean hasAllowCredentials = + options.allowCredentials != null && options.allowCredentials.length != 0; + + if (!hasAllowCredentials) { // No UVM support for discoverable credentials. options.userVerificationMethods = false; } @@ -246,7 +251,10 @@ } } - if (options.isConditional) { + if (options.isConditional + || (ContentFeatureList.isEnabled( + ContentFeatures.WEB_AUTHN_TOUCH_TO_FILL_CREDENTIAL_SELECTION) + && !hasAllowCredentials)) { // For use in the lambda expression. final byte[] finalClientDataHash = clientDataHash; mConditionalUiState = ConditionalUiState.WAITING_FOR_CREDENTIAL_LIST; @@ -359,19 +367,21 @@ assert mConditionalUiState == ConditionalUiState.WAITING_FOR_CREDENTIAL_LIST || mConditionalUiState == ConditionalUiState.CANCEL_PENDING; + boolean hasAllowCredentials = + options.allowCredentials != null && options.allowCredentials.length != 0; + boolean isConditionalRequest = options.isConditional; + assert isConditionalRequest || !hasAllowCredentials; + if (mConditionalUiState == ConditionalUiState.CANCEL_PENDING) { // The request was completed synchronously when the cancellation was received. return; } - if (mBrowserBridge == null) { - mBrowserBridge = new WebAuthnBrowserBridge(); - } List<WebAuthnCredentialDetails> discoverableCredentials = new ArrayList<>(); for (WebAuthnCredentialDetails credential : credentials) { if (!credential.mIsDiscoverable) continue; - if (options.allowCredentials == null || options.allowCredentials.length == 0) { + if (!hasAllowCredentials) { discoverableCredentials.add(credential); continue; } @@ -384,8 +394,23 @@ } } + if (!isConditionalRequest && discoverableCredentials.isEmpty()) { + mConditionalUiState = ConditionalUiState.NONE; + // When no passkeys are present for a non-conditional request, pass the request + // through to GMSCore. It will show an error message to the user. If at some point in + // the future GMSCore supports passkeys from other devices, this will also allow it to + // initiate a cross-device flow. + maybeDispatchGetAssertionRequest(options, callerOriginString, clientDataHash, null); + return; + } + + if (mBrowserBridge == null) { + mBrowserBridge = new WebAuthnBrowserBridge(); + } + mConditionalUiState = ConditionalUiState.WAITING_FOR_SELECTION; mBrowserBridge.onCredentialsDetailsListReceived(frameHost, discoverableCredentials, + isConditionalRequest, (selectedCredentialId) -> maybeDispatchGetAssertionRequest( options, callerOriginString, clientDataHash, selectedCredentialId)); @@ -396,6 +421,7 @@ // For Conditional UI requests, this is invoked by a callback, and might have been // cancelled before a credential was selected. if (mConditionalUiState == ConditionalUiState.CANCEL_PENDING) { + mConditionalUiState = ConditionalUiState.NONE; returnErrorAndResetCallback(AuthenticatorStatus.ABORT_ERROR); return; } @@ -403,10 +429,16 @@ mConditionalUiState = ConditionalUiState.NONE; if (credentialId != null) { if (credentialId.length == 0) { - // An empty credential ID means an error from native code, which can happen if the - // embedder does not support Conditional UI. - Log.e(TAG, "Empty credential ID from account selection."); - returnErrorAndResetCallback(AuthenticatorStatus.UNKNOWN_ERROR); + if (options.isConditional) { + // An empty credential ID means an error from native code, which can happen if + // the embedder does not support Conditional UI. + Log.e(TAG, "Empty credential ID from account selection."); + returnErrorAndResetCallback(AuthenticatorStatus.UNKNOWN_ERROR); + return; + } + // For non-conditional requests, an empty credential ID means the user dismissed + // the account selection dialog. + returnErrorAndResetCallback(AuthenticatorStatus.NOT_ALLOWED_ERROR); return; } PublicKeyCredentialDescriptor selected_credential = new PublicKeyCredentialDescriptor();
diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/WebAuthnBrowserBridge.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/WebAuthnBrowserBridge.java index 251e827..d150b5c 100644 --- a/components/webauthn/android/java/src/org/chromium/components/webauthn/WebAuthnBrowserBridge.java +++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/WebAuthnBrowserBridge.java
@@ -19,16 +19,20 @@ private long mNativeWebAuthnBrowserBridge; /** - * Provides a list of credentials for WebAuthn Conditional UI. These credentials become - * available as options for autofill UI on sign-in input fields. The callback is invoked when - * a user selects one of the credentials from the list. + * Provides a list of discoverable credentials for user selection. If this is a conditional UI + * request, then these credentials become available as options for autofill UI on sign-in input + * fields. For non-conditional requests, a selection sheet is shown immediately. The callback + * is invoked when a user selects one of the credentials from the list. * * @param frameHost The RenderFrameHost for the frame that generated the request. * @param credentialList The list of credentials that can be used as autofill suggestions. + * @param isConditionalRequest Boolean indicating whether this is a conditional UI request or + * not. * @param callback The callback to be invoked with the credential ID of a selected credential. */ public void onCredentialsDetailsListReceived(RenderFrameHost frameHost, - List<WebAuthnCredentialDetails> credentialList, Callback<byte[]> callback) { + List<WebAuthnCredentialDetails> credentialList, boolean isConditionalRequest, + Callback<byte[]> callback) { assert credentialList != null; assert callback != null; @@ -42,7 +46,7 @@ credentialList.toArray(new WebAuthnCredentialDetails[credentialList.size()]); WebAuthnBrowserBridgeJni.get().onCredentialsDetailsListReceived( mNativeWebAuthnBrowserBridge, WebAuthnBrowserBridge.this, credentialArray, - frameHost, callback); + frameHost, isConditionalRequest, callback); } /** @@ -86,7 +90,7 @@ long createNativeWebAuthnBrowserBridge(WebAuthnBrowserBridge caller); void onCredentialsDetailsListReceived(long nativeWebAuthnBrowserBridge, WebAuthnBrowserBridge caller, WebAuthnCredentialDetails[] credentialList, - RenderFrameHost frameHost, Callback<byte[]> callback); + RenderFrameHost frameHost, boolean isConditionalRequest, Callback<byte[]> callback); void cancelRequest(long nativeWebAuthnBrowserBridge, RenderFrameHost frameHost); } }
diff --git a/components/webauthn/android/webauthn_browser_bridge.cc b/components/webauthn/android/webauthn_browser_bridge.cc index 6998677..9c1599b 100644 --- a/components/webauthn/android/webauthn_browser_bridge.cc +++ b/components/webauthn/android/webauthn_browser_bridge.cc
@@ -13,6 +13,7 @@ #include "components/webauthn/android/jni_headers/WebAuthnBrowserBridge_jni.h" #include "components/webauthn/android/webauthn_client_android.h" #include "content/public/browser/render_frame_host.h" +#include "content/public/browser/web_contents.h" #include "device/fido/discoverable_credential_metadata.h" #include "device/fido/public_key_credential_user_entity.h" @@ -85,12 +86,17 @@ const base::android::JavaParamRef<jobject>&, const base::android::JavaParamRef<jobjectArray>& credentials, const base::android::JavaParamRef<jobject>& jframe_host, + jboolean is_conditional_request, const base::android::JavaParamRef<jobject>& jcallback) const { auto* client = components::WebAuthnClientAndroid::GetClient(); auto* render_frame_host = content::RenderFrameHost::FromJavaRenderFrameHost(jframe_host); // A null client indicates the embedder does not support Conditional UI. - if (!client) { + // Also, crash reports suggest that there can be null WebContents at this + // point, presumably indicating that a tab is being closed while the + // listCredentials call is outstanding. See https://crbug.com/1399887. + if (!client || !render_frame_host || + !content::WebContents::FromRenderFrameHost(render_frame_host)) { std::vector<uint8_t> credential_id = {}; base::android::RunObjectCallbackAndroid( jcallback, base::android::ToJavaByteArray( @@ -98,12 +104,12 @@ credential_id.data(), credential_id.size())); return; } - DCHECK(render_frame_host); + std::vector<device::DiscoverableCredentialMetadata> credentials_metadata; ConvertJavaCredentialArrayToMetadataVector(env, credentials, &credentials_metadata); client->OnWebAuthnRequestPending( - render_frame_host, credentials_metadata, + render_frame_host, credentials_metadata, is_conditional_request, base::BindOnce( &OnWebAuthnCredentialSelected, base::android::ScopedJavaGlobalRef<jobject>(env, jcallback))); @@ -115,6 +121,15 @@ auto* client = components::WebAuthnClientAndroid::GetClient(); auto* render_frame_host = content::RenderFrameHost::FromJavaRenderFrameHost(jframe_host); - DCHECK(render_frame_host); + + // Crash reports indicate that there can be null WebContents at this point, + // although it isn't clear how, since the Cancel message was received from + // renderer and is processed synchronously. The null check exists to mitigate + // downstream dereferences. See https://crbug.com/1399887. + if (!render_frame_host || + !content::WebContents::FromRenderFrameHost(render_frame_host)) { + return; + } + client->CancelWebAuthnRequest(render_frame_host); }
diff --git a/components/webauthn/android/webauthn_browser_bridge.h b/components/webauthn/android/webauthn_browser_bridge.h index 3cc2026..12f6743 100644 --- a/components/webauthn/android/webauthn_browser_bridge.h +++ b/components/webauthn/android/webauthn_browser_bridge.h
@@ -22,6 +22,7 @@ const base::android::JavaParamRef<jobject>&, const base::android::JavaParamRef<jobjectArray>& credentials, const base::android::JavaParamRef<jobject>& jframe_host, + jboolean is_conditional_request, const base::android::JavaParamRef<jobject>& jcallback) const; void CancelRequest(
diff --git a/components/webauthn/android/webauthn_client_android.h b/components/webauthn/android/webauthn_client_android.h index 4161653..a11e969 100644 --- a/components/webauthn/android/webauthn_client_android.h +++ b/components/webauthn/android/webauthn_client_android.h
@@ -29,12 +29,13 @@ // Accessor for the client that has been set by the embedder. static WebAuthnClientAndroid* GetClient(); - // Called when a Web Authentication Conditional UI request is received. This - // provides the callback that will complete the request if and when a user - // selects a credential from a form autofill dialog. + // Called when a Web Authentication request is received that can be handled + // by the browser. This provides the callback that will complete the request + // if and when a user selects a credential from a selection dialog. virtual void OnWebAuthnRequestPending( content::RenderFrameHost* frame_host, const std::vector<device::DiscoverableCredentialMetadata>& credentials, + bool is_conditional_request, base::OnceCallback<void(const std::vector<uint8_t>& id)> callback) = 0; // Cancels a request if one is outstanding. Revokes the credential list and
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn index 302c7a8e..bda7797 100644 --- a/content/browser/BUILD.gn +++ b/content/browser/BUILD.gn
@@ -1687,6 +1687,8 @@ "renderer_host/input/touchscreen_tap_suppression_controller.h", "renderer_host/ipc_utils.cc", "renderer_host/ipc_utils.h", + "renderer_host/isolated_context_util.cc", + "renderer_host/isolated_context_util.h", "renderer_host/isolated_web_app_throttle.cc", "renderer_host/isolated_web_app_throttle.h", "renderer_host/keep_alive_handle_factory.cc", @@ -2305,6 +2307,13 @@ "worker_host/worker_script_loader_factory.h", ] + if (!is_android && !is_fuchsia) { + sources += [ + "smart_card/smart_card_service.cc", + "smart_card/smart_card_service.h", + ] + } + # TODO(crbug.com/1327384): Remove `permissions_common`. # DO NOT add unrelated entries to this block. deps += [ "//components/permissions:permissions_common" ]
diff --git a/content/browser/android/content_feature_list.cc b/content/browser/android/content_feature_list.cc index c49fc82d..be6e353 100644 --- a/content/browser/android/content_feature_list.cc +++ b/content/browser/android/content_feature_list.cc
@@ -37,6 +37,7 @@ &features::kRequestDesktopSiteExceptions, &features::kTouchDragAndContextMenu, &features::kWebAuthConditionalUI, + &features::kWebAuthnTouchToFillCredentialSelection, &features::kWebBluetoothNewPermissionsBackend, &features::kWebNfc, };
diff --git a/content/browser/attribution_reporting/attribution_storage_sql.cc b/content/browser/attribution_reporting/attribution_storage_sql.cc index 014dda0..03aa4e65 100644 --- a/content/browser/attribution_reporting/attribution_storage_sql.cc +++ b/content/browser/attribution_reporting/attribution_storage_sql.cc
@@ -1449,17 +1449,12 @@ sql::Statement statement(db_->GetCachedStatement(id, sql)); statement.BindTime(0, time); - absl::optional<base::Time> result; - if (statement.Step() && statement.GetColumnType(0) != sql::ColumnType::kNull) { - result = statement.ColumnTime(0); + return statement.ColumnTime(0); } - base::UmaHistogramBoolean("Conversions.Storage.GetNextReportTimeSucceeded", - statement.Succeeded()); - - return result; + return absl::nullopt; } absl::optional<base::Time> AttributionStorageSql::GetNextEventLevelReportTime(
diff --git a/content/browser/attribution_reporting/attribution_storage_sql_unittest.cc b/content/browser/attribution_reporting/attribution_storage_sql_unittest.cc index 9c59d10..07a7e52 100644 --- a/content/browser/attribution_reporting/attribution_storage_sql_unittest.cc +++ b/content/browser/attribution_reporting/attribution_storage_sql_unittest.cc
@@ -1129,50 +1129,6 @@ ElementsAre(Pair("x", ElementsAre("y")))); } -TEST_F(AttributionStorageSqlTest, GetNextReportTime_RecordsSucceededMetric) { - using ::base::Bucket; - using ::base::BucketsAre; - - static constexpr char kHistogram[] = - "Conversions.Storage.GetNextReportTimeSucceeded"; - { - OpenDatabase(); - storage()->StoreSource(SourceBuilder().Build()); - - base::HistogramTester histograms; - - // Internally, this runs two statements. - storage()->GetNextReportTime(base::Time()); - - EXPECT_THAT(histograms.GetAllSamples(kHistogram), - BucketsAre(Bucket(true, 2))); - - CloseDatabase(); - } - - ASSERT_TRUE(sql::test::CorruptIndexRootPage( - db_path(), "event_level_reports_by_report_time")); - - { - sql::test::ScopedErrorExpecter expecter; - expecter.ExpectError(SQLITE_CORRUPT); - - OpenDatabase(); - - base::HistogramTester histograms; - - // Internally, this runs two statements. - storage()->GetNextReportTime(base::Time()); - - EXPECT_THAT(histograms.GetAllSamples(kHistogram), - BucketsAre(Bucket(false, 2))); - - EXPECT_TRUE(expecter.SawExpectedErrors()); - - CloseDatabase(); - } -} - TEST_F(AttributionStorageSqlTest, InvalidAggregationCoordinator_FailsDeserialization) { const struct {
diff --git a/content/browser/browser_interface_binders.cc b/content/browser/browser_interface_binders.cc index 310f28f..8fd41cd 100644 --- a/content/browser/browser_interface_binders.cc +++ b/content/browser/browser_interface_binders.cc
@@ -189,6 +189,10 @@ #include "third_party/blink/public/mojom/serial/serial.mojom.h" #endif // BUILDFLAG(IS_ANDROID) +#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_FUCHSIA) +#include "third_party/blink/public/mojom/smart_card/smart_card.mojom.h" +#endif + #if BUILDFLAG(ENABLE_MEDIA_REMOTING) #include "media/mojo/mojom/remoting.mojom-forward.h" #endif @@ -972,6 +976,11 @@ &RenderFrameHostImpl::BindSerialService, base::Unretained(host))); #endif // BUILDFLAG(IS_ANDROID) +#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_FUCHSIA) + map->Add<blink::mojom::SmartCardService>(base::BindRepeating( + &RenderFrameHostImpl::GetSmartCardService, base::Unretained(host))); +#endif + #if BUILDFLAG(IS_MAC) map->Add<blink::mojom::TextInputHost>( base::BindRepeating(&BindTextInputHost));
diff --git a/content/browser/direct_sockets/direct_sockets_service_impl.cc b/content/browser/direct_sockets/direct_sockets_service_impl.cc index 363bb4c..0ca465f 100644 --- a/content/browser/direct_sockets/direct_sockets_service_impl.cc +++ b/content/browser/direct_sockets/direct_sockets_service_impl.cc
@@ -8,6 +8,7 @@ #include "content/browser/direct_sockets/direct_udp_socket_impl.h" #include "content/browser/direct_sockets/resolve_host_and_open_socket.h" #include "content/browser/process_lock.h" +#include "content/browser/renderer_host/isolated_context_util.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/content_browser_client.h" #include "content/public/browser/direct_sockets_delegate.h" @@ -56,22 +57,6 @@ return network_context; } -bool IsFrameSufficientlyIsolated(content::RenderFrameHost* frame) { - if (frame->GetWebExposedIsolationLevel() >= - content::RenderFrameHost::WebExposedIsolationLevel:: - kMaybeIsolatedApplication) { - return true; - } - - if (GetContentClient()->browser()->IsIsolatedContextAllowedForUrl( - frame->GetBrowserContext(), - frame->GetProcess()->GetProcessLock().lock_url())) { - return true; - } - - return false; -} - network::mojom::TCPConnectedSocketOptionsPtr CreateTCPConnectedSocketOptions( blink::mojom::DirectSocketOptionsPtr options) { network::mojom::TCPConnectedSocketOptionsPtr tcp_connected_socket_options = @@ -284,4 +269,4 @@ std::move(direct_udp_socket_receiver)); } -} // namespace content \ No newline at end of file +} // namespace content
diff --git a/content/browser/fenced_frame/fenced_frame_config.h b/content/browser/fenced_frame/fenced_frame_config.h index 50a146c..5054be2 100644 --- a/content/browser/fenced_frame/fenced_frame_config.h +++ b/content/browser/fenced_frame/fenced_frame_config.h
@@ -85,7 +85,7 @@ class FencedFrameURLMapping; extern const char kUrnUuidPrefix[]; -GURL GenerateUrnUuid(); +GURL CONTENT_EXPORT GenerateUrnUuid(); using AdAuctionData = blink::FencedFrame::AdAuctionData; using ReportingMetadata = blink::FencedFrame::FencedFrameReporting;
diff --git a/content/browser/fenced_frame/fenced_frame_url_mapping.cc b/content/browser/fenced_frame/fenced_frame_url_mapping.cc index 606db43..7918be0b 100644 --- a/content/browser/fenced_frame/fenced_frame_url_mapping.cc +++ b/content/browser/fenced_frame/fenced_frame_url_mapping.cc
@@ -125,7 +125,8 @@ .first; } -void FencedFrameURLMapping::AssignFencedFrameURLAndInterestGroupInfo( +blink::FencedFrame::RedactedFencedFrameConfig +FencedFrameURLMapping::AssignFencedFrameURLAndInterestGroupInfo( const GURL& urn_uuid, const GURL& url, AdAuctionData ad_auction_data, @@ -166,6 +167,8 @@ config.reporting_metadata_.emplace(reporting_metadata, VisibilityToEmbedder::kOpaque, VisibilityToContent::kTransparent); + + return config.RedactFor(FencedFrameEntity::kEmbedder); } absl::optional<GURL> FencedFrameURLMapping::GeneratePendingMappedURN() {
diff --git a/content/browser/fenced_frame/fenced_frame_url_mapping.h b/content/browser/fenced_frame/fenced_frame_url_mapping.h index 6231424..fa249ad7 100644 --- a/content/browser/fenced_frame/fenced_frame_url_mapping.h +++ b/content/browser/fenced_frame/fenced_frame_url_mapping.h
@@ -72,13 +72,18 @@ // Move pending mapped `urn_uuid` from `pending_urn_uuid_to_url_map_` to // `urn_uuid_to_url_map_`. Then assign ad auction data as well as an ordered // list of ad component URLs, provided by a bidder running an auction, to the - // entry associated with the `urn_uuid`. These will to be made available to - // any fenced frame navigated to the returned URN, via the InterestGroup API. + // entry associated with the `urn_uuid` and its associated + // `FencedFrameConfig`. These will to be made available to any fenced frame + // that gets navigated to the URN encapsulated inside the + // `RedactedFencedFrameConfig` that is returned from this method. Either this + // config or the internal URN inside of it is returned to script via the + // InterestGroup API. They used to perform the fenced frame navigation. // // `on_navigate_callback` should be run on navigation to `urn_uuid`. // // See https://github.com/WICG/turtledove/blob/main/FLEDGE.md - void AssignFencedFrameURLAndInterestGroupInfo( + blink::FencedFrame::RedactedFencedFrameConfig + AssignFencedFrameURLAndInterestGroupInfo( const GURL& urn_uuid, const GURL& url, AdAuctionData auction_data,
diff --git a/content/browser/fenced_frame/redacted_fenced_frame_config_mojom_traits_unittest.cc b/content/browser/fenced_frame/redacted_fenced_frame_config_mojom_traits_unittest.cc index d10ddba..3e66fab 100644 --- a/content/browser/fenced_frame/redacted_fenced_frame_config_mojom_traits_unittest.cc +++ b/content/browser/fenced_frame/redacted_fenced_frame_config_mojom_traits_unittest.cc
@@ -2,11 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config_mojom_traits.h" +#include <type_traits> + +#include "base/test/gtest_util.h" #include "content/browser/fenced_frame/fenced_frame_config.h" #include "mojo/public/cpp/test_support/test_utils.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config.h" +#include "third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config_mojom_traits.h" #include "third_party/blink/public/mojom/fenced_frame/fenced_frame_config.mojom.h" namespace content { @@ -111,6 +114,9 @@ { \ /* Test an empty config */ \ type config; \ + if constexpr (std::is_same<FencedFrameConfig, type>::value) { \ + config.urn_.emplace(GenerateUrnUuid()); \ + } \ TEST_PROPERTY_FOR_ENTITY_IS_DEFINED_IS_OPAQUE( \ type, property, Entity::kEmbedder, false, false, \ unredacted_redacted_equality_fn, redacted_redacted_equality_fn); \ @@ -195,9 +201,57 @@ return true; \ } +TEST(FencedFrameConfigMojomTraitsTest, ConfigMojomTraitsInternalUrnTest) { + GURL test_url("test_url"); + + struct TestCase { + GURL urn; + bool pass = false; + } test_cases[] = { + {GURL(), false}, + {GURL("https://example.com"), false}, + {GURL("data:text/html<h1>MyWebsite"), false}, + {GURL("urn:abcd:f81d4fae-7dec-11d0-a765-00a0c91e6bf6"), false}, + {GURL("urn:uuid:foo"), false}, + {GURL("urn:uuid:f81d4faea7deca11d0aa765a00a0c91e6bf6"), false}, + {GURL("urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6"), true}, + {GenerateUrnUuid(), true}, + }; + + for (const TestCase& test_case : test_cases) { + FencedFrameConfig browser_config(test_case.urn, test_url); + RedactedFencedFrameConfig input_config = + browser_config.RedactFor(FencedFrameEntity::kEmbedder); + RedactedFencedFrameConfig output_config; + + if (test_case.pass) { + ASSERT_TRUE( + mojo::test::SerializeAndDeserialize<blink::mojom::FencedFrameConfig>( + input_config, output_config)); + } else { + ASSERT_FALSE( + mojo::test::SerializeAndDeserialize<blink::mojom::FencedFrameConfig>( + input_config, output_config)); + } + } +} + +TEST(FencedFrameConfigMojomTraitsTest, ConfigMojomTraitsNullInternalUrnTest) { + FencedFrameConfig browser_config; + RedactedFencedFrameConfig input_config = + browser_config.RedactFor(FencedFrameEntity::kEmbedder); + RedactedFencedFrameConfig output_config; + EXPECT_DEATH( + mojo::test::SerializeAndDeserialize<blink::mojom::FencedFrameConfig>( + input_config, output_config), + ""); +} + TEST(FencedFrameConfigMojomTraitsTest, ConfigMojomTraitsTest) { GURL test_url("test_url"); + // See the above tests for `urn`. + // Test `mapped_url`. { auto eq_fn = [](const GURL& a, const GURL& b) { return a == b; }; @@ -248,7 +302,7 @@ // Test `nested_configs`. { - FencedFrameConfig test_nested_config(test_url); + FencedFrameConfig test_nested_config(GenerateUrnUuid(), test_url); { std::vector<FencedFrameConfig> test_nested_configs = {test_nested_config};
diff --git a/content/browser/file_system_access/file_system_access_file_handle_impl_unittest.cc b/content/browser/file_system_access/file_system_access_file_handle_impl_unittest.cc index e03f72d..15678fa 100644 --- a/content/browser/file_system_access/file_system_access_file_handle_impl_unittest.cc +++ b/content/browser/file_system_access/file_system_access_file_handle_impl_unittest.cc
@@ -22,6 +22,7 @@ #include "base/test/scoped_feature_list.h" #include "base/test/task_environment.h" #include "base/test/test_future.h" +#include "build/build_config.h" #include "content/browser/file_system_access/features.h" #include "content/browser/file_system_access/fixed_file_system_access_permission_grant.h" #include "content/browser/file_system_access/mock_file_system_access_permission_grant.h" @@ -139,6 +140,10 @@ protected: void SetupHelper(storage::FileSystemType type, bool is_incognito) { ASSERT_TRUE(dir_.CreateUniqueTempDir()); +#if BUILDFLAG(IS_WIN) + // Convert path to long format to avoid mixing long and 8.3 formats in test. + ASSERT_TRUE(dir_.Set(base::MakeLongFilePath(dir_.Take()))); +#endif // BUILDFLAG(IS_WIN) web_contents_ = web_contents_factory_.CreateWebContents(&browser_context_); static_cast<TestWebContents*>(web_contents_)
diff --git a/content/browser/interest_group/ad_auction_service_impl.cc b/content/browser/interest_group/ad_auction_service_impl.cc index c316528..5d72cf2 100644 --- a/content/browser/interest_group/ad_auction_service_impl.cc +++ b/content/browser/interest_group/ad_auction_service_impl.cc
@@ -315,7 +315,8 @@ auto* auction_result_metrics = AdAuctionResultMetrics::GetOrCreateForPage(render_frame_host().GetPage()); if (!auction_result_metrics->ShouldRunAuction()) { - std::move(callback).Run(/*manually_aborted=*/false, absl::nullopt); + std::move(callback).Run(/*manually_aborted=*/false, + /*config=*/absl::nullopt); return; } @@ -326,7 +327,8 @@ // If pending mapped URN cannot be generated due to number of mappings has // reached limit, stop the auction. if (!urn_uuid.has_value()) { - std::move(callback).Run(/*manually_aborted=*/false, absl::nullopt); + std::move(callback).Run(/*manually_aborted=*/false, + /*config=*/absl::nullopt); return; } @@ -655,7 +657,7 @@ } DCHECK(winning_group_ad_metadata.empty()); - std::move(callback).Run(manually_aborted, absl::nullopt); + std::move(callback).Run(manually_aborted, /*config=*/absl::nullopt); if (auction_result_metrics) { // `auction_result_metrics` can be null since PageUserData like // AdAuctionResultMetrics isn't guaranteed to be destroyed after document @@ -742,26 +744,28 @@ // the callback needs directly. content::AdAuctionData ad_auction_data{winning_group_key.owner, winning_group_key.name}; - fenced_frame_urls_map.AssignFencedFrameURLAndInterestGroupInfo( - urn_uuid, render_url, std::move(ad_auction_data), - base::BindRepeating( - &SendSuccessfulAuctionReportsAndUpdateInterestGroups, - /*has_sent_reports=*/base::Owned(std::make_unique<bool>(false)), - private_aggregation_manager_, &GetInterestGroupManager(), - main_frame_origin_, origin(), std::move(winning_group_key), - std::move(winning_group_ad_metadata), - base::Owned( - std::make_unique<std::map< - url::Origin, std::vector<auction_worklet::mojom:: + blink::FencedFrame::RedactedFencedFrameConfig config = + fenced_frame_urls_map.AssignFencedFrameURLAndInterestGroupInfo( + urn_uuid, render_url, std::move(ad_auction_data), + base::BindRepeating( + &SendSuccessfulAuctionReportsAndUpdateInterestGroups, + /*has_sent_reports=*/base::Owned(std::make_unique<bool>(false)), + private_aggregation_manager_, &GetInterestGroupManager(), + main_frame_origin_, origin(), std::move(winning_group_key), + std::move(winning_group_ad_metadata), + base::Owned( + std::make_unique< + std::map<url::Origin, + std::vector<auction_worklet::mojom:: PrivateAggregationRequestPtr>>>( - std::move(private_aggregation_requests))), - std::move(report_urls), std::move(debug_win_report_urls), - std::move(debug_loss_report_urls), - std::move(interest_groups_that_bid), GetClientSecurityState(), - GetRefCountedTrustedURLLoaderFactory()), - ad_component_urls, ad_beacon_map); + std::move(private_aggregation_requests))), + std::move(report_urls), std::move(debug_win_report_urls), + std::move(debug_loss_report_urls), + std::move(interest_groups_that_bid), GetClientSecurityState(), + GetRefCountedTrustedURLLoaderFactory()), + ad_component_urls, ad_beacon_map); - std::move(callback).Run(/*manually_aborted=*/false, urn_uuid); + std::move(callback).Run(/*manually_aborted=*/false, std::move(config)); } void AdAuctionServiceImpl::MaybeLogPrivateAggregationFeature(
diff --git a/content/browser/interest_group/ad_auction_service_impl_unittest.cc b/content/browser/interest_group/ad_auction_service_impl_unittest.cc index f897cc7..aa4bb83 100644 --- a/content/browser/interest_group/ad_auction_service_impl_unittest.cc +++ b/content/browser/interest_group/ad_auction_service_impl_unittest.cc
@@ -765,19 +765,25 @@ rfh, ad_auction_service_.BindNewPipeAndPassReceiver()); base::RunLoop run_loop; - absl::optional<GURL> maybe_url; + absl::optional<blink::FencedFrame::RedactedFencedFrameConfig> maybe_config; ad_auction_service_->RunAdAuction( auction_config, mojo::NullReceiver(), base::BindLambdaForTesting( - [&run_loop, &maybe_url](bool manually_aborted, - const absl::optional<GURL>& result) { + [&run_loop, &maybe_config]( + bool manually_aborted, + const absl::optional< + blink::FencedFrame::RedactedFencedFrameConfig>& config) { EXPECT_FALSE(manually_aborted); - maybe_url = result; + maybe_config = config; run_loop.Quit(); })); ad_auction_service_.FlushForTesting(); run_loop.Run(); - return maybe_url; + if (!maybe_config) { + return absl::nullopt; + } + CHECK(maybe_config->urn().has_value()); + return maybe_config->urn(); } // Like RunAdAuctionAndFlushForFrame(), but uses the RenderFrameHost of the @@ -5698,9 +5704,9 @@ base::BindLambdaForTesting( [&one_auction_complete]( bool manually_aborted, - const absl::optional<GURL>& ignored_result) { - one_auction_complete.Run(); - })); + const absl::optional< + blink::FencedFrame::RedactedFencedFrameConfig>& + ignored_config) { one_auction_complete.Run(); })); } run_loop.Run();
diff --git a/content/browser/renderer_host/isolated_context_util.cc b/content/browser/renderer_host/isolated_context_util.cc new file mode 100644 index 0000000..c607906 --- /dev/null +++ b/content/browser/renderer_host/isolated_context_util.cc
@@ -0,0 +1,30 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "content/browser/renderer_host/isolated_context_util.h" + +#include "content/browser/process_lock.h" +#include "content/browser/renderer_host/render_frame_host_impl.h" +#include "content/public/browser/render_process_host.h" +#include "content/public/common/content_client.h" + +namespace content { + +bool IsFrameSufficientlyIsolated(RenderFrameHost* frame) { + if (frame->GetWebExposedIsolationLevel() >= + content::RenderFrameHost::WebExposedIsolationLevel:: + kMaybeIsolatedApplication) { + return true; + } + + if (GetContentClient()->browser()->IsIsolatedContextAllowedForUrl( + frame->GetBrowserContext(), + frame->GetProcess()->GetProcessLock().lock_url())) { + return true; + } + + return false; +} + +} // namespace content
diff --git a/content/browser/renderer_host/isolated_context_util.h b/content/browser/renderer_host/isolated_context_util.h new file mode 100644 index 0000000..4c275f26 --- /dev/null +++ b/content/browser/renderer_host/isolated_context_util.h
@@ -0,0 +1,23 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CONTENT_BROWSER_RENDERER_HOST_ISOLATED_CONTEXT_UTIL_H_ +#define CONTENT_BROWSER_RENDERER_HOST_ISOLATED_CONTEXT_UTIL_H_ + +#include "content/common/content_export.h" + +namespace content { + +class RenderFrameHost; + +// Whether the given frame is sufficiently isolated to have access +// to interfaces intended only for isolated contexts. +// See [IsolatedContext] IDL extended attribute for more details. +// Isolated Web Apps Explainer: +// https://github.com/WICG/isolated-web-apps/blob/main/README.md +CONTENT_EXPORT bool IsFrameSufficientlyIsolated(RenderFrameHost* frame); + +} // namespace content + +#endif // CONTENT_BROWSER_RENDERER_HOST_ISOLATED_CONTEXT_UTIL_H_
diff --git a/content/browser/renderer_host/media/media_devices_manager.cc b/content/browser/renderer_host/media/media_devices_manager.cc index 24a9354..bb5fd44 100644 --- a/content/browser/renderer_host/media/media_devices_manager.cc +++ b/content/browser/renderer_host/media/media_devices_manager.cc
@@ -16,6 +16,7 @@ #include "base/containers/contains.h" #include "base/containers/cxx20_erase.h" #include "base/location.h" +#include "base/metrics/histogram_functions.h" #include "base/ranges/algorithm.h" #include "base/sequence_checker.h" #include "base/strings/stringprintf.h" @@ -49,6 +50,7 @@ namespace content { namespace { +using media::mojom::DeviceEnumerationResult; // Resolutions used if the source doesn't support capability enumeration. struct { @@ -159,6 +161,16 @@ GetAudioService().BindDeviceNotifier(std::move(receiver)); } +void ReportVideoEnumerationStart() { + base::UmaHistogramBoolean( + "Media.MediaDevicesManager.VideoDeviceEnumeration.Start", true); +} + +void ReportVideoEnumerationResult(DeviceEnumerationResult result_code) { + base::UmaHistogramEnumeration( + "Media.MediaDevicesManager.VideoDeviceEnumeration.Result", result_code); +} + } // namespace std::string GuessVideoGroupID(const blink::WebMediaDeviceInfoArray& audio_infos, @@ -899,6 +911,7 @@ EnumerateAudioDevices(true /* is_input */); break; case MediaDeviceType::MEDIA_VIDEO_INPUT: + ReportVideoEnumerationStart(); video_capture_manager_->EnumerateDevices( base::BindOnce(&MediaDevicesManager::VideoInputDevicesEnumerated, weak_factory_.GetWeakPtr())); @@ -929,10 +942,12 @@ } void MediaDevicesManager::VideoInputDevicesEnumerated( - media::mojom::DeviceEnumerationResult result_code, + DeviceEnumerationResult result_code, const media::VideoCaptureDeviceDescriptors& descriptors) { DCHECK_CURRENTLY_ON(BrowserThread::IO); - if (result_code != media::mojom::DeviceEnumerationResult::kSuccess) { + ReportVideoEnumerationResult(result_code); + + if (result_code != DeviceEnumerationResult::kSuccess) { std::string log_message = base::StringPrintf( "VideoInputDevicesEnumerated got error %d", result_code); // Log to both WebRTC logs (for feedback reports) and text logs for
diff --git a/content/browser/renderer_host/media/media_devices_manager_unittest.cc b/content/browser/renderer_host/media/media_devices_manager_unittest.cc index ae677110..538c52df 100644 --- a/content/browser/renderer_host/media/media_devices_manager_unittest.cc +++ b/content/browser/renderer_host/media/media_devices_manager_unittest.cc
@@ -15,9 +15,11 @@ #include "base/run_loop.h" #include "base/strings/string_number_conversions.h" #include "base/task/single_thread_task_runner.h" +#include "base/test/metrics/histogram_tester.h" #include "build/build_config.h" #include "content/browser/media/media_devices_permission_checker.h" #include "content/browser/renderer_host/media/in_process_video_capture_provider.h" +#include "content/browser/renderer_host/media/mock_video_capture_provider.h" #include "content/browser/renderer_host/media/video_capture_manager.h" #include "content/public/test/browser_task_environment.h" #include "media/audio/audio_device_name.h" @@ -34,7 +36,9 @@ #include "url/gurl.h" #include "url/origin.h" +using base::HistogramTester; using blink::mojom::MediaDeviceType; +using media::mojom::DeviceEnumerationResult; using testing::_; using testing::Invoke; using testing::SaveArg; @@ -316,13 +320,25 @@ video_capture_device_factory_ = video_capture_device_factory.get(); auto video_capture_system = std::make_unique<media::VideoCaptureSystemImpl>( std::move(video_capture_device_factory)); - auto video_capture_provider = + in_process_video_capture_provider_ = std::make_unique<InProcessVideoCaptureProvider>( std::move(video_capture_system), base::SingleThreadTaskRunner::GetCurrentDefault(), kIgnoreLogMessageCB); + + auto mock_video_capture_provider = + std::make_unique<MockVideoCaptureProvider>(); + mock_video_capture_provider_ = mock_video_capture_provider.get(); + // By default, forward calls to the real InProcessVideoCaptureProvider. + ON_CALL(*mock_video_capture_provider_, GetDeviceInfosAsync(_)) + .WillByDefault(Invoke( + [&](VideoCaptureProvider::GetDeviceInfosCallback result_callback) { + in_process_video_capture_provider_->GetDeviceInfosAsync( + std::move(result_callback)); + })); + video_capture_manager_ = new VideoCaptureManager( - std::move(video_capture_provider), kIgnoreLogMessageCB); + std::move(mock_video_capture_provider), kIgnoreLogMessageCB); media_devices_manager_ = std::make_unique<MediaDevicesManager>( audio_system_.get(), video_capture_manager_, base::BindRepeating( @@ -342,6 +358,19 @@ type, MediaDevicesManager::CachePolicy::SYSTEM_MONITOR); } + void ExpectVideoEnumerationHistogramReport(int success_count, + int error_count = 0) { + histogram_tester_.ExpectTotalCount( + "Media.MediaDevicesManager.VideoDeviceEnumeration.Start", + success_count + error_count); + histogram_tester_.ExpectBucketCount( + "Media.MediaDevicesManager.VideoDeviceEnumeration.Result", + DeviceEnumerationResult::kSuccess, success_count); + histogram_tester_.ExpectBucketCount( + "Media.MediaDevicesManager.VideoDeviceEnumeration.Result", + DeviceEnumerationResult::kUnknownError, error_count); + } + // Must outlive MediaDevicesManager as ~MediaDevicesManager() verifies it's // running on the IO thread. BrowserTaskEnvironment task_environment_; @@ -354,6 +383,10 @@ testing::StrictMock<MockMediaDevicesManagerClient> media_devices_manager_client_; std::set<std::string> removed_device_ids_; + MockVideoCaptureProvider* mock_video_capture_provider_; + std::unique_ptr<InProcessVideoCaptureProvider> + in_process_video_capture_provider_; + HistogramTester histogram_tester_; }; TEST_F(MediaDevicesManagerTest, EnumerateNoCacheAudioInput) { @@ -374,6 +407,7 @@ base::Unretained(this), &run_loop)); run_loop.Run(); } + ExpectVideoEnumerationHistogramReport(0); } TEST_F(MediaDevicesManagerTest, EnumerateNoCacheVideoInput) { @@ -394,6 +428,7 @@ base::Unretained(this), &run_loop)); run_loop.Run(); } + ExpectVideoEnumerationHistogramReport(kNumCalls); } TEST_F(MediaDevicesManagerTest, EnumerateNoCacheAudioOutput) { @@ -478,6 +513,7 @@ base::Unretained(this), &run_loop)); run_loop.Run(); } + ExpectVideoEnumerationHistogramReport(1); } TEST_F(MediaDevicesManagerTest, EnumerateCacheAudioWithDeviceChanges) { @@ -1234,4 +1270,41 @@ EXPECT_EQ(num_video_input_devices, notification_video_input.size()); } +TEST_F(MediaDevicesManagerTest, EnumerateVideoInputFailsOnce) { + // Inject an UnknownError on the first call to GetDeviceInfosAsync, otherwise + // fall through to the in_process_video_capture_provider_. + EXPECT_CALL(*mock_video_capture_provider_, GetDeviceInfosAsync(_)) + .Times(kNumCalls) + .WillOnce(Invoke( + [&](VideoCaptureProvider::GetDeviceInfosCallback result_callback) { + std::move(result_callback) + .Run(DeviceEnumerationResult::kUnknownError, {}); + })) + .WillRepeatedly(Invoke( + [&](VideoCaptureProvider::GetDeviceInfosCallback result_callback) { + in_process_video_capture_provider_->GetDeviceInfosAsync( + std::move(result_callback)); + })); + EXPECT_CALL(*video_capture_device_factory_, MockGetDevicesInfo()) + .Times(kNumCalls - 1); + + EXPECT_CALL(*audio_manager_, MockGetAudioInputDeviceNames(_)).Times(0); + EXPECT_CALL(*audio_manager_, MockGetAudioOutputDeviceNames(_)).Times(0); + EXPECT_CALL(*this, MockCallback(_)).Times(kNumCalls); + EXPECT_CALL(media_devices_manager_client_, InputDevicesChangedUI(_, _)); + MediaDevicesManager::BoolDeviceTypes devices_to_enumerate; + devices_to_enumerate[static_cast<size_t>( + MediaDeviceType::MEDIA_VIDEO_INPUT)] = true; + for (int i = 0; i < kNumCalls; i++) { + base::RunLoop run_loop; + media_devices_manager_->EnumerateDevices( + devices_to_enumerate, + base::BindOnce(&MediaDevicesManagerTest::EnumerateCallback, + base::Unretained(this), &run_loop)); + run_loop.Run(); + } + ExpectVideoEnumerationHistogramReport(/*success_count=*/kNumCalls - 1, + /*error_count=*/1); +} + } // namespace content
diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc index 6453489..55056d9 100644 --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc
@@ -275,6 +275,10 @@ #include "content/browser/serial/serial_service.h" #endif +#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_FUCHSIA) +#include "content/browser/smart_card/smart_card_service.h" +#endif + #if BUILDFLAG(IS_MAC) #include "content/browser/renderer_host/popup_menu_helper_mac.h" #endif @@ -10537,6 +10541,13 @@ } #endif +#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_FUCHSIA) +void RenderFrameHostImpl::GetSmartCardService( + mojo::PendingReceiver<blink::mojom::SmartCardService> receiver) { + SmartCardService::Create(this, std::move(receiver)); +} +#endif + IdleManagerImpl* RenderFrameHostImpl::GetIdleManager() { return idle_manager_.get(); }
diff --git a/content/browser/renderer_host/render_frame_host_impl.h b/content/browser/renderer_host/render_frame_host_impl.h index 7161ded..21201bc 100644 --- a/content/browser/renderer_host/render_frame_host_impl.h +++ b/content/browser/renderer_host/render_frame_host_impl.h
@@ -168,6 +168,10 @@ #include "third_party/blink/public/mojom/serial/serial.mojom-forward.h" #endif +#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_FUCHSIA) +#include "third_party/blink/public/mojom/smart_card/smart_card.mojom-forward.h" +#endif + #if BUILDFLAG(ENABLE_MEDIA_REMOTING) #include "media/mojo/mojom/remoting.mojom-forward.h" #endif @@ -1865,6 +1869,11 @@ mojo::PendingReceiver<blink::mojom::SerialService> receiver); #endif +#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_FUCHSIA) + void GetSmartCardService( + mojo::PendingReceiver<blink::mojom::SmartCardService> receiver); +#endif + IdleManagerImpl* GetIdleManager(); void BindIdleManager(
diff --git a/content/browser/renderer_host/render_frame_host_manager.cc b/content/browser/renderer_host/render_frame_host_manager.cc index 698fd6f..0ee4d43 100644 --- a/content/browser/renderer_host/render_frame_host_manager.cc +++ b/content/browser/renderer_host/render_frame_host_manager.cc
@@ -1982,10 +1982,9 @@ // If BackForwardCache is enabled, swap BrowsingInstances only when the // previous page can be stored in the back-forward cache. DCHECK(IsBackForwardCacheEnabled()); - NavigationControllerImpl& controller = - render_frame_host_->frame_tree_node()->navigator().controller(); - auto bfcache_eligibility = controller.GetBackForwardCache() + auto bfcache_eligibility = GetNavigationController() + .GetBackForwardCache() .GetFutureBackForwardCacheEligibilityPotential( render_frame_host_.get()); if (bfcache_eligibility.CanStore()) {
diff --git a/content/browser/smart_card/DIR_METADATA b/content/browser/smart_card/DIR_METADATA new file mode 100644 index 0000000..7f4c9b5 --- /dev/null +++ b/content/browser/smart_card/DIR_METADATA
@@ -0,0 +1,11 @@ +# Metadata information for this directory. +# +# For more information on DIR_METADATA files, see: +# https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md +# +# For the schema of this file, see Metadata message: +# https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto + +monorail { + component: "Blink>SmartCard" +}
diff --git a/content/browser/smart_card/OWNERS b/content/browser/smart_card/OWNERS new file mode 100644 index 0000000..783b6bbe --- /dev/null +++ b/content/browser/smart_card/OWNERS
@@ -0,0 +1 @@ +file://third_party/blink/renderer/modules/smart_card/OWNERS
diff --git a/content/browser/smart_card/smart_card_service.cc b/content/browser/smart_card/smart_card_service.cc new file mode 100644 index 0000000..10fef6a --- /dev/null +++ b/content/browser/smart_card/smart_card_service.cc
@@ -0,0 +1,73 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "content/browser/smart_card/smart_card_service.h" + +#include "content/browser/renderer_host/isolated_context_util.h" +#include "content/browser/renderer_host/render_frame_host_impl.h" +#include "content/public/browser/document_service.h" +#include "third_party/blink/public/common/features_generated.h" + +namespace content { + +namespace { + +// Deletes the SmartCardService when the connected document is destroyed. +class DocumentHelper + : public content::DocumentService<blink::mojom::SmartCardService> { + public: + DocumentHelper(std::unique_ptr<SmartCardService> service, + RenderFrameHost& render_frame_host, + mojo::PendingReceiver<blink::mojom::SmartCardService> receiver) + : DocumentService(render_frame_host, std::move(receiver)), + service_(std::move(service)) { + DCHECK(service_); + } + ~DocumentHelper() override = default; + + private: + const std::unique_ptr<SmartCardService> service_; +}; + +} // namespace + +SmartCardService::SmartCardService() = default; +SmartCardService::~SmartCardService() = default; + +// static +void SmartCardService::Create( + RenderFrameHostImpl* render_frame_host, + mojo::PendingReceiver<blink::mojom::SmartCardService> receiver) { + BrowserContext* browser_context = render_frame_host->GetBrowserContext(); + DCHECK(browser_context); + + if (!base::FeatureList::IsEnabled(blink::features::kSmartCard)) { + mojo::ReportBadMessage("The SmartCard feature is disabled."); + return; + } + + if (!render_frame_host->IsFeatureEnabled( + blink::mojom::PermissionsPolicyFeature::kSmartCard)) { + mojo::ReportBadMessage( + "Access to the feature \"smart-card\" is disallowed by permissions " + "policy."); + return; + } + + if (!IsFrameSufficientlyIsolated(render_frame_host)) { + mojo::ReportBadMessage( + "Frame is not sufficiently isolated to use the Smart Card API."); + return; + } + + // DocumentHelper observes the lifetime of the document connected to + // `render_frame_host` and destroys the SmartCardService when the Mojo + // connection is disconnected, RenderFrameHost is deleted, or the + // RenderFrameHost commits a cross-document navigation. It forwards its Mojo + // interface to SmartCardService. + new DocumentHelper(std::make_unique<SmartCardService>(), *render_frame_host, + std::move(receiver)); +} + +} // namespace content
diff --git a/content/browser/smart_card/smart_card_service.h b/content/browser/smart_card/smart_card_service.h new file mode 100644 index 0000000..f210d73 --- /dev/null +++ b/content/browser/smart_card/smart_card_service.h
@@ -0,0 +1,31 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CONTENT_BROWSER_SMART_CARD_SMART_CARD_SERVICE_H_ +#define CONTENT_BROWSER_SMART_CARD_SMART_CARD_SERVICE_H_ + +#include "content/common/content_export.h" +#include "mojo/public/cpp/bindings/remote_set.h" +#include "third_party/blink/public/mojom/smart_card/smart_card.mojom.h" + +namespace content { + +class RenderFrameHostImpl; + +// SmarCardService provides an implementation of the SmartCardService mojom +// interface. This interface is used by Blink to implement the Web Smart Card +// API. +class CONTENT_EXPORT SmartCardService : public blink::mojom::SmartCardService { + public: + explicit SmartCardService(); + ~SmartCardService() override; + + // Use this when creating from a document. + static void Create(RenderFrameHostImpl*, + mojo::PendingReceiver<blink::mojom::SmartCardService>); +}; + +} // namespace content + +#endif // CONTENT_BROWSER_SMART_CARD_SMART_CARD_SERVICE_H_
diff --git a/content/browser/webid/README.md b/content/browser/webid/README.md index a2d2a488..892a941 100644 --- a/content/browser/webid/README.md +++ b/content/browser/webid/README.md
@@ -8,9 +8,9 @@ ## Anatomy of a FedCM request A FedCM request is initiated by a [Relying -Party](https://github.com/fedidcg/FedCM/blob/main/explainer/glossary.md#relying-party-rp) (RP) in order to perform a +Party](https://github.com/fedidcg/FedCM/blob/main/explorations/glossary.md#relying-party-rp) (RP) in order to perform a federated identity related operation e.g., authenticate, logout etc., with an [Identity -Provider](https://github.com/fedidcg/FedCM/blob/main/explainer/glossary.md#identity-provider-idp) (IDP). +Provider](https://github.com/fedidcg/FedCM/blob/main/explorations/glossary.md#identity-provider-idp) (IDP). While RP and IDP could belong to the same site (or origin) the most interesting and common case is when the RP and IDP belong to different sites and thus this operation is a cross-site @@ -94,8 +94,8 @@ ## UI There are currently two different modes supported for FedCM with their own specific UX and UI: -[permission-oriented mode](https://github.com/fedidcg/FedCM/blob/main/explainer/proposal.md#the-permission-oriented-api), -and [mediation-oriented mode](https://github.com/fedidcg/FedCM/blob/main/explainer/proposal.md#the-mediated-oriented-api). +[permission-oriented mode](https://github.com/fedidcg/FedCM/blob/main/explorations/proposal.md#the-permission-oriented-api), +and [mediation-oriented mode](https://github.com/fedidcg/FedCM/blob/main/explorations/proposal.md#the-mediated-oriented-api). At the moment the mediation UI is only implemented on [Android](../../../chrome/browser/ui/android/webid/README.md) and on Desktop platforms no UI is shown and
diff --git a/content/public/android/java/strings/translations/android_content_strings_te.xtb b/content/public/android/java/strings/translations/android_content_strings_te.xtb index 1e12c402..dc62655b 100644 --- a/content/public/android/java/strings/translations/android_content_strings_te.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_te.xtb
@@ -16,7 +16,7 @@ <translation id="4768459022382175196">సెకను</translation> <translation id="4859501799452851758">ప్రొఫైలర్ పూర్తయింది. ఫలితాలు <ph name="FILENAME" />లో ఉన్నాయి.</translation> <translation id="4932733599132424254">తేదీ</translation> -<translation id="5659744962989939577">నిఘంటువుకి జోడించు</translation> +<translation id="5659744962989939577">నిఘంటువుకి జోడించండి</translation> <translation id="5789643057113097023">.</translation> <translation id="5966707198760109579">వారం</translation> <translation id="6015796118275082299">సంవత్సరం</translation>
diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc index 2ecd1e68..eb2c037f 100644 --- a/content/public/common/content_features.cc +++ b/content/public/common/content_features.cc
@@ -1297,6 +1297,12 @@ "WebAuthenticationConditionalUI", base::FEATURE_ENABLED_BY_DEFAULT); +// Controls whether WebAuthn get requests for discoverable credentials use the +// Touch To Fill bottom sheet on Android. +BASE_FEATURE(kWebAuthnTouchToFillCredentialSelection, + "WebAuthnTouchToFillCredentialSelection", + base::FEATURE_ENABLED_BY_DEFAULT); + // Controls whether the Web Bluetooth API is enabled: // https://webbluetoothcg.github.io/web-bluetooth/ BASE_FEATURE(kWebBluetooth, "WebBluetooth", base::FEATURE_DISABLED_BY_DEFAULT);
diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h index 926b15c..ebb46e20f 100644 --- a/content/public/common/content_features.h +++ b/content/public/common/content_features.h
@@ -271,6 +271,7 @@ CONTENT_EXPORT BASE_DECLARE_FEATURE(kWebAssemblyTiering); CONTENT_EXPORT BASE_DECLARE_FEATURE(kWebAssemblyTrapHandler); CONTENT_EXPORT BASE_DECLARE_FEATURE(kWebAuthConditionalUI); +CONTENT_EXPORT BASE_DECLARE_FEATURE(kWebAuthnTouchToFillCredentialSelection); CONTENT_EXPORT BASE_DECLARE_FEATURE(kWebBluetooth); CONTENT_EXPORT BASE_DECLARE_FEATURE(kWebBluetoothNewPermissionsBackend); CONTENT_EXPORT BASE_DECLARE_FEATURE(kWebBundles);
diff --git a/extensions/strings/extensions_strings_as.xtb b/extensions/strings/extensions_strings_as.xtb index a3353ad6..8a98cfd 100644 --- a/extensions/strings/extensions_strings_as.xtb +++ b/extensions/strings/extensions_strings_as.xtb
@@ -61,6 +61,7 @@ <translation id="8636666366616799973">পেকেজটো মান্য নহয়। সবিশেষ: ’<ph name="ERROR_MESSAGE" />’।</translation> <translation id="8761756413268424715">"<ph name="APP_NAME" />"এ আপোনাৰ ডিভাইচসমূহৰ মাজৰ এটা ডিভাইচত এক্সেছ অনুৰোধ কৰি আছে:</translation> <translation id="8885905466771744233">নিৰ্দিষ্ট কৰা এক্সটেনশ্বনৰ বাবে এটা ব্যক্তিগত চাবি ইতিমধ্যে আছেই। সেই চাবিটো পুনৰ ব্যৱহাৰ কৰক বা সেইটো প্ৰথমতে মচক।</translation> +<translation id="9039223174332979184">এই মেচিনটোৰ প্ৰশাসকৰ বাবে <ph name="EXTENSION_NAME" />ৰ অতি কমেও মেনিফেষ্ট সংস্কৰণ ৩ থকাটো আৱশ্যক।</translation> <translation id="907841381057066561">পেকেজিঙৰ সময়ত অস্থায়ী জিপ ফাইল সৃষ্টি কৰিব পৰা নগ'ল।</translation> <translation id="941543339607623937">অমান্য ব্যক্তিগত চাবি</translation> </translationbundle> \ No newline at end of file
diff --git a/extensions/strings/extensions_strings_bg.xtb b/extensions/strings/extensions_strings_bg.xtb index 82fa3459..6341120 100644 --- a/extensions/strings/extensions_strings_bg.xtb +++ b/extensions/strings/extensions_strings_bg.xtb
@@ -61,6 +61,7 @@ <translation id="8636666366616799973">Пакетът е невалиден. Подробности: „<ph name="ERROR_MESSAGE" />“.</translation> <translation id="8761756413268424715"><ph name="APP_NAME" /> иска достъп до едно от устройствата ви:</translation> <translation id="8885905466771744233">Вече съществува личен ключ за посоченото разширение. Използвайте го отново или първо го изтрийте.</translation> +<translation id="9039223174332979184">Администраторът на това устройство изисква за <ph name="EXTENSION_NAME" /> да се използва поне версия 3 на манифеста.</translation> <translation id="907841381057066561">Създаването на временен компресиран файл при пакетирането не бе успешно.</translation> <translation id="941543339607623937">Невалиден личен ключ.</translation> </translationbundle> \ No newline at end of file
diff --git a/extensions/strings/extensions_strings_da.xtb b/extensions/strings/extensions_strings_da.xtb index b5349a3d..14eaa48 100644 --- a/extensions/strings/extensions_strings_da.xtb +++ b/extensions/strings/extensions_strings_da.xtb
@@ -61,6 +61,7 @@ <translation id="8636666366616799973">Pakken er ugyldig. Info: "<ph name="ERROR_MESSAGE" />".</translation> <translation id="8761756413268424715">"<ph name="APP_NAME" />" anmoder om adgang til en af dine enheder:</translation> <translation id="8885905466771744233">Der findes allerede en personlig nøgle til den angivne udvidelse. Genbrug denne nøgle, eller slet den først.</translation> +<translation id="9039223174332979184">Administratoren af denne maskine kræver, at <ph name="EXTENSION_NAME" /> har en manifestversion på mindst 3.</translation> <translation id="907841381057066561">Den midlertidige zip-fil kunne ikke oprettes under pakning.</translation> <translation id="941543339607623937">Ugyldig personlig nøgle.</translation> </translationbundle> \ No newline at end of file
diff --git a/extensions/strings/extensions_strings_de.xtb b/extensions/strings/extensions_strings_de.xtb index 84b770b9..94a5a5a8 100644 --- a/extensions/strings/extensions_strings_de.xtb +++ b/extensions/strings/extensions_strings_de.xtb
@@ -61,6 +61,7 @@ <translation id="8636666366616799973">Paket ist ungültig. Details: "<ph name="ERROR_MESSAGE" />"</translation> <translation id="8761756413268424715">„<ph name="APP_NAME" />“ fordert Zugriff auf eines deiner Geräte an:</translation> <translation id="8885905466771744233">Es existiert bereits ein privater Schlüssel für die angegebene Erweiterung. Verwende diesen Schlüssel oder lösche ihn zuerst.</translation> +<translation id="9039223174332979184">Der Administrator dieses Computers hat festgelegt, dass <ph name="EXTENSION_NAME" /> die Manifest-Version 3 oder höher haben muss.</translation> <translation id="907841381057066561">Während des Packvorgangs wurde keine temporäre ZIP-Datei erstellt.</translation> <translation id="941543339607623937">Ungültiger privater Schlüssel</translation> </translationbundle> \ No newline at end of file
diff --git a/extensions/strings/extensions_strings_en-GB.xtb b/extensions/strings/extensions_strings_en-GB.xtb index 70f80a2..3c105f9 100644 --- a/extensions/strings/extensions_strings_en-GB.xtb +++ b/extensions/strings/extensions_strings_en-GB.xtb
@@ -61,6 +61,7 @@ <translation id="8636666366616799973">Package is invalid. Details: '<ph name="ERROR_MESSAGE" />'.</translation> <translation id="8761756413268424715">"<ph name="APP_NAME" />" is requesting access to one of your devices:</translation> <translation id="8885905466771744233">A private key for specified extension already exists. Reuse that key or delete it first.</translation> +<translation id="9039223174332979184">The administrator of this machine requires <ph name="EXTENSION_NAME" /> to have a minimum manifest version of 3.</translation> <translation id="907841381057066561">Failed to create temporary zip file during packaging.</translation> <translation id="941543339607623937">Invalid private key.</translation> </translationbundle> \ No newline at end of file
diff --git a/extensions/strings/extensions_strings_gu.xtb b/extensions/strings/extensions_strings_gu.xtb index 457a2e0..c97dc2a 100644 --- a/extensions/strings/extensions_strings_gu.xtb +++ b/extensions/strings/extensions_strings_gu.xtb
@@ -61,6 +61,7 @@ <translation id="8636666366616799973">પૅકેજ અમાન્ય છે. વિગતો: '<ph name="ERROR_MESSAGE" />'.</translation> <translation id="8761756413268424715">"<ph name="APP_NAME" />", તમારા ઉપકરણો પૈકી એક પરની ઍક્સેસની વિનંતી કરી રહ્યું છે:</translation> <translation id="8885905466771744233">ઉલ્લેખિત એક્સટેન્શન માટે ખાનગી કી પહેલાંથી અસતિત્વમાં છે. તે કી ફરીથી વાપરો અથવા પહેલા એને ડિલીટ કરો.</translation> +<translation id="9039223174332979184">ઓછામાં ઓછા 3નું મેનિફેસ્ટ વર્ઝન હોવા માટે, આ મશીનના ઍડમિનિસ્ટ્રેટરને <ph name="EXTENSION_NAME" />ની આવશ્યકતા છે.</translation> <translation id="907841381057066561">પૅકેજીંગ દરમિયાન અસ્થાયી ઝિપ ફાઇલ બનાવવામાં નિષ્ફળ.</translation> <translation id="941543339607623937">અમાન્ય ખાનગી કી.</translation> </translationbundle> \ No newline at end of file
diff --git a/extensions/strings/extensions_strings_hi.xtb b/extensions/strings/extensions_strings_hi.xtb index e5b97da..53a98b1 100644 --- a/extensions/strings/extensions_strings_hi.xtb +++ b/extensions/strings/extensions_strings_hi.xtb
@@ -61,6 +61,7 @@ <translation id="8636666366616799973">पैकेज अमान्य है. ब्यौरा: '<ph name="ERROR_MESSAGE" />'.</translation> <translation id="8761756413268424715">"<ph name="APP_NAME" />" आपके किसी एक डिवाइस का एक्सेस मांग रहा है:</translation> <translation id="8885905466771744233">तय किए गए एक्सटेंशन के लिए कोई 'निजी की' पहले से मौजूद है. उस की का फिर से इस्तेमाल करें या पहले उसे मिटाएं.</translation> +<translation id="9039223174332979184">इस मशीन के एडमिन के पास, <ph name="EXTENSION_NAME" /> का कम से कम मेनिफ़ेस्ट वर्शन 3 होना चाहिए.</translation> <translation id="907841381057066561">पैकेजिंग के दौरान अस्थायी ज़िप फ़ाइल बनाने में विफल.</translation> <translation id="941543339607623937">गलत निजी कुंजी.</translation> </translationbundle> \ No newline at end of file
diff --git a/extensions/strings/extensions_strings_id.xtb b/extensions/strings/extensions_strings_id.xtb index e97571b5..b2912739 100644 --- a/extensions/strings/extensions_strings_id.xtb +++ b/extensions/strings/extensions_strings_id.xtb
@@ -61,6 +61,7 @@ <translation id="8636666366616799973">Paket tidak valid. Detail: '<ph name="ERROR_MESSAGE" />'.</translation> <translation id="8761756413268424715">"<ph name="APP_NAME" />" meminta akses ke salah satu perangkat Anda:</translation> <translation id="8885905466771744233">Kunci pribadi untuk ekstensi yang ditentukan sudah ada. Gunakan kembali kunci itu atau hapus terlebih dulu.</translation> +<translation id="9039223174332979184">Administrator perangkat ini mewajibkan <ph name="EXTENSION_NAME" /> untuk memiliki versi manifes minimum 3.</translation> <translation id="907841381057066561">Gagal membuat file zip sementara selama pengemasan</translation> <translation id="941543339607623937">Kunci pribadi tidak valid.</translation> </translationbundle> \ No newline at end of file
diff --git a/extensions/strings/extensions_strings_ko.xtb b/extensions/strings/extensions_strings_ko.xtb index 08f80b2..6fa792b 100644 --- a/extensions/strings/extensions_strings_ko.xtb +++ b/extensions/strings/extensions_strings_ko.xtb
@@ -61,6 +61,7 @@ <translation id="8636666366616799973">패키지가 잘못되었습니다. 세부정보: '<ph name="ERROR_MESSAGE" />'.</translation> <translation id="8761756413268424715">'<ph name="APP_NAME" />'이(가) 사용자의 기기 중 하나에 액세스 권한을 요청하고 있습니다.</translation> <translation id="8885905466771744233">지정한 확장 프로그램에 대한 비공개 키가 이미 있습니다. 해당 키를 다시 사용하거나 먼저 삭제하세요.</translation> +<translation id="9039223174332979184">이 시스템의 관리자가 <ph name="EXTENSION_NAME" />에 최소 매니페스트 버전 3을 요구합니다.</translation> <translation id="907841381057066561">압축하는 동안 임시 zip 파일을 만들지 못했습니다.</translation> <translation id="941543339607623937">비공개 키가 잘못되었습니다.</translation> </translationbundle> \ No newline at end of file
diff --git a/extensions/strings/extensions_strings_lo.xtb b/extensions/strings/extensions_strings_lo.xtb index 4f0b3e24..03a9cb5 100644 --- a/extensions/strings/extensions_strings_lo.xtb +++ b/extensions/strings/extensions_strings_lo.xtb
@@ -61,6 +61,7 @@ <translation id="8636666366616799973">ແພັກເກດໃຊ້ບໍ່ໄດ້. ລາຍລະອຽດ: '<ph name="ERROR_MESSAGE" />'.</translation> <translation id="8761756413268424715">"<ph name="APP_NAME" />" ກຳລັງຮ້ອງຂໍການເຂົ້າເຖິງອຸປະກອນຂອງທ່ານໜຶ່ງເຄື່ອງ:</translation> <translation id="8885905466771744233">ມີລະຫັດສ່ວນຕົວສໍາລັບສ່ວນຂະຫຍາຍທີ່ລະບຸໄວ້ຢູ່ແລ້ວ. ໃຊ້ລະຫັດນັ້ນໃໝ່ ຫຼືລຶບມັນກ່ອນ.</translation> +<translation id="9039223174332979184">ຜູ້ເບິ່ງແຍງລະບົບຂອງເຄື່ອງນີ້ກຳນົດໃຫ້ <ph name="EXTENSION_NAME" /> ຕ້ອງມີ manifest ເວີຊັນ 3 ເປັນຢ່າງໜ້ອຍ.</translation> <translation id="907841381057066561">ບໍ່ສາມາດສ້າງໄຟລ໌ຊິບຊົ່ວຄາວໃນລະຫວ່າງການຫຸ້ມຫໍ່ໄດ້.</translation> <translation id="941543339607623937">ລະຫັດສ່ວນຕົວໃຊ້ບໍ່ໄດ້.</translation> </translationbundle> \ No newline at end of file
diff --git a/extensions/strings/extensions_strings_sl.xtb b/extensions/strings/extensions_strings_sl.xtb index 1277fb5..c48f53c2 100644 --- a/extensions/strings/extensions_strings_sl.xtb +++ b/extensions/strings/extensions_strings_sl.xtb
@@ -61,6 +61,7 @@ <translation id="8636666366616799973">Paket je neveljaven. Podrobnosti: »<ph name="ERROR_MESSAGE" />«.</translation> <translation id="8761756413268424715">Aplikacija »<ph name="APP_NAME" />« zahteva dostop do ene od vaših naprav:</translation> <translation id="8885905466771744233">Zasebni ključ za navedeno razširitev že obstaja. Uporabite ga znova ali pa ga izbrišite.</translation> +<translation id="9039223174332979184">Skrbnik te naprave zahteva, da ima razširitev <ph name="EXTENSION_NAME" /> najmanj različico 3 manifesta.</translation> <translation id="907841381057066561">Pri pripravi paketov ni bilo mogoče ustvariti začasne datoteke zip.</translation> <translation id="941543339607623937">Neveljaven zasebni ključ.</translation> </translationbundle> \ No newline at end of file
diff --git a/extensions/strings/extensions_strings_te.xtb b/extensions/strings/extensions_strings_te.xtb index 906eb64..a94abb6 100644 --- a/extensions/strings/extensions_strings_te.xtb +++ b/extensions/strings/extensions_strings_te.xtb
@@ -61,6 +61,7 @@ <translation id="8636666366616799973">ప్యాకేజీ చెల్లనిది. వివరాలు: '<ph name="ERROR_MESSAGE" />'.</translation> <translation id="8761756413268424715">"<ph name="APP_NAME" />" మీ పరికరాలలో ఒకదానికి యాక్సెస్ను అభ్యర్థిస్తోంది:</translation> <translation id="8885905466771744233">నిర్థారించిన ఎక్సటెన్షన్కు ఇప్పటికే ప్రైవేట్ కీ ఉంది. ఆ కీని మళ్ళీ ఉపయోగించండి లేదా దాన్ని మొదట తొలగించండి.</translation> +<translation id="9039223174332979184">ఈ మెషిన్ అడ్మినిస్ట్రేటర్ ప్రకారం <ph name="EXTENSION_NAME" /> కనీసం మ్యానిఫెస్ట్ వెర్షన్ 3ని కలిగి ఉండాలి.</translation> <translation id="907841381057066561">ప్యాకేజింగ్ సమయంలో తాత్కాలిక జిప్ ఫైల్ను సృష్టించడంలో విఫలమైంది.</translation> <translation id="941543339607623937">చెల్లని ప్రైవేట్ కీ.</translation> </translationbundle> \ No newline at end of file
diff --git a/extensions/strings/extensions_strings_zh-HK.xtb b/extensions/strings/extensions_strings_zh-HK.xtb index ccbc24b8..23b03f5 100644 --- a/extensions/strings/extensions_strings_zh-HK.xtb +++ b/extensions/strings/extensions_strings_zh-HK.xtb
@@ -61,6 +61,7 @@ <translation id="8636666366616799973">套件無效,詳情:<ph name="ERROR_MESSAGE" />。</translation> <translation id="8761756413268424715">「<ph name="APP_NAME" />」要求存取您其中一部裝置:</translation> <translation id="8885905466771744233">所指定的擴充功能已有私密金鑰,請使用該金鑰,或先將它刪除。</translation> +<translation id="9039223174332979184">此電腦的管理員要求「<ph name="EXTENSION_NAME" />」至少要使用版本 3 的資訊清單。</translation> <translation id="907841381057066561">封裝過程中建立暫存壓縮檔失敗。</translation> <translation id="941543339607623937">私密金鑰無效。</translation> </translationbundle> \ No newline at end of file
diff --git a/extensions/strings/extensions_strings_zh-TW.xtb b/extensions/strings/extensions_strings_zh-TW.xtb index c29922f..ed9b13f 100644 --- a/extensions/strings/extensions_strings_zh-TW.xtb +++ b/extensions/strings/extensions_strings_zh-TW.xtb
@@ -61,6 +61,7 @@ <translation id="8636666366616799973">套件無效,詳細資料:<ph name="ERROR_MESSAGE" />。</translation> <translation id="8761756413268424715">「<ph name="APP_NAME" />」要求存取你的其中一個裝置:</translation> <translation id="8885905466771744233">所指定的擴充功能已有私密金鑰,請使用該金鑰,或先將它刪除。</translation> +<translation id="9039223174332979184">這部電腦的管理員要求「<ph name="EXTENSION_NAME" />」至少要使用版本 3 的資訊清單。</translation> <translation id="907841381057066561">封裝過程中建立暫存壓縮檔失敗。</translation> <translation id="941543339607623937">私密金鑰無效。</translation> </translationbundle> \ No newline at end of file
diff --git a/extensions/strings/extensions_strings_zu.xtb b/extensions/strings/extensions_strings_zu.xtb index f83ef4b..f8230f2 100644 --- a/extensions/strings/extensions_strings_zu.xtb +++ b/extensions/strings/extensions_strings_zu.xtb
@@ -61,6 +61,7 @@ <translation id="8636666366616799973">Iphakheji alivumelekile. Imininingwane: '<ph name="ERROR_MESSAGE" />'.</translation> <translation id="8761756413268424715">I-"<ph name="APP_NAME" />" icela ukufinyelela kweyodwa yamadivayisi akho.</translation> <translation id="8885905466771744233">Ukhiye oyimfihlo wesandiso esicacisiwe sowuvele ukhona. Phinda usebenzise loyo khiye noma wususe kuqala.</translation> +<translation id="9039223174332979184">Umlawuli walo mshini udinga i-<ph name="EXTENSION_NAME" /> ibe nohlobo lobuncane be-manifest engu-3.</translation> <translation id="907841381057066561">Yehlulekile ukudala ifayela le-zip lesikhashana ngesikhathi sokuphakheja.</translation> <translation id="941543339607623937">Ukhiye oyimfihlo ongavumelekile</translation> </translationbundle> \ No newline at end of file
diff --git a/gpu/command_buffer/service/BUILD.gn b/gpu/command_buffer/service/BUILD.gn index 674c4a83..100134c6 100644 --- a/gpu/command_buffer/service/BUILD.gn +++ b/gpu/command_buffer/service/BUILD.gn
@@ -193,8 +193,6 @@ "memory_program_cache.h", "multi_draw_manager.cc", "multi_draw_manager.h", - "passthrough_abstract_texture_impl.cc", - "passthrough_abstract_texture_impl.h", "passthrough_discardable_manager.cc", "passthrough_discardable_manager.h", "passthrough_program_cache.cc", @@ -282,8 +280,6 @@ "texture_manager.h", "transform_feedback_manager.cc", "transform_feedback_manager.h", - "validating_abstract_texture_impl.cc", - "validating_abstract_texture_impl.h", "value_validator.h", "vertex_array_manager.cc", "vertex_array_manager.h", @@ -297,6 +293,15 @@ "webgpu_decoder.h", ] + if (!is_android) { + sources += [ + "passthrough_abstract_texture_impl.cc", + "passthrough_abstract_texture_impl.h", + "validating_abstract_texture_impl.cc", + "validating_abstract_texture_impl.h", + ] + } + if (use_egl) { sources += [ "shared_image/egl_image_backing.cc",
diff --git a/gpu/command_buffer/service/decoder_context.h b/gpu/command_buffer/service/decoder_context.h index 112e68b36..b1091de 100644 --- a/gpu/command_buffer/service/decoder_context.h +++ b/gpu/command_buffer/service/decoder_context.h
@@ -170,6 +170,7 @@ // virtual gles2::ContextGroup* GetContextGroup() = 0; virtual gles2::ErrorState* GetErrorState() = 0; +#if !BUILDFLAG(IS_ANDROID) virtual std::unique_ptr<gpu::gles2::AbstractTexture> CreateAbstractTexture( unsigned /* GLenum */ target, unsigned /* GLenum */ internal_format, @@ -179,6 +180,7 @@ int /* GLint */ border, unsigned /* GLenum */ format, unsigned /* GLenum */ type) = 0; +#endif // // Methods required by Texture.
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc index 653059b..0332074 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder.cc +++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
@@ -762,6 +762,7 @@ ErrorState* GetErrorState() override; const ContextState* GetContextState() override { return &state_; } +#if !BUILDFLAG(IS_ANDROID) std::unique_ptr<AbstractTexture> CreateAbstractTexture(GLenum target, GLenum internal_format, GLsizei width, @@ -770,6 +771,7 @@ GLint border, GLenum format, GLenum type) override; +#endif scoped_refptr<ShaderTranslatorInterface> GetTranslator(GLenum type) override; scoped_refptr<ShaderTranslatorInterface> GetOrCreateTranslator(GLenum type); @@ -2805,12 +2807,14 @@ SamplerState default_sampler_state_; +#if !BUILDFLAG(IS_ANDROID) // All currently outstanding AbstractTextures that we've created. std::set<ValidatingAbstractTextureImpl*> abstract_textures_; // Set of texture refs that are pending destruction, at some point in the // future when our context is current. std::set<scoped_refptr<TextureRef>> texture_refs_pending_destruction_; +#endif const raw_ptr<ImageFactory> image_factory_for_nacl_swapchain_; @@ -4844,9 +4848,11 @@ // Rebind textures if the service ids may have changed. RestoreAllExternalTextureBindingsIfNeeded(); +#if !BUILDFLAG(IS_ANDROID) // Since we have a context now, take the opportunity to drop any TextureRefs // that are pending destruction. texture_refs_pending_destruction_.clear(); +#endif return true; } @@ -5300,6 +5306,7 @@ if (surface_) surface_->PrepareToDestroy(have_context); +#if !BUILDFLAG(IS_ANDROID) // Destroy any textures that are pending destruction. if (!have_context) { for (auto iter : texture_refs_pending_destruction_) @@ -5311,6 +5318,7 @@ for (auto* iter : abstract_textures_) iter->OnDecoderWillDestroy(have_context); abstract_textures_.clear(); +#endif if (external_default_framebuffer_) { external_default_framebuffer_->Destroy(have_context); @@ -17240,9 +17248,13 @@ } bool GLES2DecoderImpl::HasMoreIdleWork() const { - return !pending_readpixel_fences_.empty() || - gpu_tracer_->HasTracesToProcess() || - !texture_refs_pending_destruction_.empty(); + bool has_more_idle_work = + !pending_readpixel_fences_.empty() || gpu_tracer_->HasTracesToProcess(); +#if !BUILDFLAG(IS_ANDROID) + has_more_idle_work = + has_more_idle_work || !texture_refs_pending_destruction_.empty(); +#endif + return has_more_idle_work; } void GLES2DecoderImpl::PerformIdleWork() { @@ -19427,6 +19439,7 @@ state_.UpdateWindowRectangles(); } +#if !BUILDFLAG(IS_ANDROID) std::unique_ptr<AbstractTexture> GLES2DecoderImpl::CreateAbstractTexture( GLenum target, GLenum internal_format, @@ -19474,6 +19487,7 @@ else texture_refs_pending_destruction_.insert(std::move(texture_ref)); } +#endif void GLES2DecoderImpl::DoSetReadbackBufferShadowAllocationINTERNAL( GLuint buffer_id,
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_mock.h b/gpu/command_buffer/service/gles2_cmd_decoder_mock.h index 9efb32f..9900c2c 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder_mock.h +++ b/gpu/command_buffer/service/gles2_cmd_decoder_mock.h
@@ -158,6 +158,7 @@ int height, int depth)); MOCK_METHOD0(GetErrorState, ErrorState *()); +#if !BUILDFLAG(IS_ANDROID) MOCK_METHOD8(CreateAbstractTexture, std::unique_ptr<gpu::gles2::AbstractTexture>( unsigned /* GLenum */ target, @@ -168,6 +169,7 @@ int /* GLint */ border, unsigned /* GLenum */ format, unsigned /* GLenum */ type)); +#endif MOCK_METHOD0(GetLogger, Logger*());
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc index 1657239..e0dd7aa 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc +++ b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc
@@ -335,6 +335,7 @@ PassthroughResources::PassthroughResources() : texture_object_map(nullptr) {} PassthroughResources::~PassthroughResources() = default; +#if !BUILDFLAG(IS_ANDROID) void PassthroughResources::DestroyPendingTextures(bool has_context) { if (!has_context) { for (scoped_refptr<TexturePassthrough> iter : @@ -348,6 +349,7 @@ bool PassthroughResources::HasTexturesPendingDestruction() const { return !textures_pending_destruction.empty(); } +#endif void PassthroughResources::Destroy(gl::GLApi* api, gl::ProgressReporter* progress_reporter) { @@ -412,7 +414,9 @@ } texture_object_map.Clear(); texture_shared_image_map.clear(); +#if !BUILDFLAG(IS_ANDROID) DestroyPendingTextures(have_context); +#endif } PassthroughResources::SharedImageData::SharedImageData() = default; @@ -1313,6 +1317,7 @@ } } +#if !BUILDFLAG(IS_ANDROID) if (resources_) { // Initialize may not have been called yet. for (PassthroughAbstractTextureImpl* iter : abstract_textures_) { resources_->textures_pending_destruction.insert( @@ -1323,6 +1328,7 @@ resources_->DestroyPendingTextures(/*has_context=*/true); } } +#endif for (PendingQuery& pending_query : pending_queries_) { if (!have_context) { @@ -1658,7 +1664,9 @@ ProcessReadPixels(false); ProcessQueries(false); +#if !BUILDFLAG(IS_ANDROID) resources_->DestroyPendingTextures(/*has_context=*/true); +#endif return true; } @@ -1881,8 +1889,13 @@ } bool GLES2DecoderPassthroughImpl::HasMoreIdleWork() const { - return gpu_tracer_->HasTracesToProcess() || !pending_read_pixels_.empty() || - resources_->HasTexturesPendingDestruction(); + bool has_more_idle_work = + gpu_tracer_->HasTracesToProcess() || !pending_read_pixels_.empty(); +#if !BUILDFLAG(IS_ANDROID) + has_more_idle_work = + has_more_idle_work || resources_->HasTexturesPendingDestruction(); +#endif + return has_more_idle_work; } void GLES2DecoderPassthroughImpl::PerformIdleWork() { @@ -1968,6 +1981,7 @@ void GLES2DecoderPassthroughImpl::WaitForReadPixels( base::OnceClosure callback) {} +#if !BUILDFLAG(IS_ANDROID) std::unique_ptr<AbstractTexture> GLES2DecoderPassthroughImpl::CreateAbstractTexture(GLenum target, GLenum internal_format, @@ -2004,6 +2018,7 @@ resources_->textures_pending_destruction.insert(std::move(texture)); } } +#endif bool GLES2DecoderPassthroughImpl::WasContextLost() const { return context_lost_;
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.h b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.h index c8008c1..ceaa3439 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.h +++ b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.h
@@ -70,13 +70,18 @@ // api is null if we don't have a context (e.g. lost). void Destroy(gl::GLApi* api, gl::ProgressReporter* progress_reporter); +#if !BUILDFLAG(IS_ANDROID) // Resources stores a shared list of textures pending deletion. // If we have don't context when this function is called, we can mark // these textures as lost context and drop all references to them. + // NOTE: This functionality is exercised only when the decoder is asked to + // create textures via CreateAbstractTexture(), an API that does not exist on + // Android. void DestroyPendingTextures(bool has_context); // If there are any textures pending destruction. bool HasTexturesPendingDestruction() const; +#endif // Mappings from client side IDs to service side IDs. ClientServiceMap<GLuint, GLuint> texture_id_map; @@ -136,10 +141,15 @@ // the GLTexturePassthroughImageRepresentation itself. base::flat_map<GLuint, SharedImageData> texture_shared_image_map; +#if !BUILDFLAG(IS_ANDROID) // A set of yet-to-be-deleted TexturePassthrough, which should be tossed // whenever a context switch happens or the resources is destroyed. + // NOTE: The concept of "textures pending destruction" is relevant only when + // the decoder is asked to create textures via CreateAbstractTexture(), an API + // that does not exist on Android. base::flat_set<scoped_refptr<TexturePassthrough>> textures_pending_destruction; +#endif // Mapping of client buffer IDs that are mapped to the shared memory used to // back the mapping so that it can be flushed when the buffer is unmapped @@ -333,6 +343,7 @@ ErrorState* GetErrorState() override; +#if !BUILDFLAG(IS_ANDROID) std::unique_ptr<AbstractTexture> CreateAbstractTexture( unsigned target, unsigned internal_format, @@ -342,6 +353,7 @@ int border, unsigned format, unsigned type) override; +#endif void WaitForReadPixels(base::OnceClosure callback) override; @@ -393,8 +405,10 @@ void SetCopyTexImageBlitterForTest( CopyTexImageResourceManager* copy_tex_image_blit) override; +#if !BUILDFLAG(IS_ANDROID) void OnAbstractTextureDestroyed(PassthroughAbstractTextureImpl*, scoped_refptr<TexturePassthrough>); +#endif private: // Allow unittests to inspect internal state tracking @@ -553,9 +567,11 @@ bool OnlyHasPendingProgramCompletionQueries(); +#if !BUILDFLAG(IS_ANDROID) // A set of raw pointers to currently living PassthroughAbstractTextures // which allow us to properly signal to them when we are destroyed. base::flat_set<PassthroughAbstractTextureImpl*> abstract_textures_; +#endif int commands_to_process_;
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc index e73e67d..2b509bde 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc +++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc
@@ -254,6 +254,7 @@ EXPECT_FALSE(DoIsTexture(client_texture_id_)); } +#if !BUILDFLAG(IS_ANDROID) TEST_P(GLES2DecoderTest, TestImageBindingForDecoderManagement) { const GLuint service_id = 123; EXPECT_CALL(*gl_, GenTextures(1, _)) @@ -350,18 +351,6 @@ EXPECT_EQ(texture->SafeToRenderFrom(), false); EXPECT_EQ(abstract_texture->GetImageForTesting(), nullptr); -#if BUILDFLAG(IS_ANDROID) - // Attach a stream image, and verify that the image changes and the service_id - // matches the one we provide. - scoped_refptr<gl::GLImage> stream_image(new gl::GLImageStub); - const GLuint surface_texture_service_id = service_id + 1; - abstract_texture->BindStreamTextureImage(stream_image.get(), - surface_texture_service_id); - EXPECT_EQ(texture->SafeToRenderFrom(), true); - EXPECT_EQ(texture->GetLevelImage(target, 0), stream_image.get()); - EXPECT_EQ(abstract_texture->service_id(), surface_texture_service_id); -#endif - // Deleting |abstract_texture| should delete the platform texture as well, // since we haven't make a copy of the TextureRef. Also make sure that the // cleanup CB is called. @@ -478,6 +467,7 @@ EXPECT_CALL(*gl_, DeleteTextures(1, _)).Times(1).RetiresOnSaturation(); abstract_texture.reset(); } +#endif TEST_P(GLES3DecoderTest, GetInternalformativValidArgsSamples) { const GLint kNumSampleCounts = 8;
diff --git a/gpu/command_buffer/service/passthrough_abstract_texture_impl.cc b/gpu/command_buffer/service/passthrough_abstract_texture_impl.cc index e2a4e01b..f599196 100644 --- a/gpu/command_buffer/service/passthrough_abstract_texture_impl.cc +++ b/gpu/command_buffer/service/passthrough_abstract_texture_impl.cc
@@ -69,7 +69,7 @@ if (decoder_managed_image_) { gl::GLImage* current_image = texture_passthrough_->GetLevelImage(target, level); -#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) // TODO(sandersd): This isn't correct if CopyTexImage() was used. bool is_bound = !texture_passthrough_->is_bind_pending(); #else @@ -89,30 +89,10 @@ texture_passthrough_->clear_bind_pending(); #else CHECK(client_managed); -#if BUILDFLAG(IS_ANDROID) - texture_passthrough_->clear_bind_pending(); -#endif #endif texture_passthrough_->SetLevelImage(target, level, image); } -#if BUILDFLAG(IS_ANDROID) -void PassthroughAbstractTextureImpl::BindStreamTextureImage(gl::GLImage* image, - GLuint service_id) { - DCHECK(image); - DCHECK(!decoder_managed_image_); - - if (!texture_passthrough_) - return; - - const GLuint target = texture_passthrough_->target(); - const GLint level = 0; - - texture_passthrough_->set_bind_pending(); - texture_passthrough_->SetStreamLevelImage(target, level, image, service_id); -} -#endif - gl::GLImage* PassthroughAbstractTextureImpl::GetImageForTesting() const { if (!texture_passthrough_) return nullptr;
diff --git a/gpu/command_buffer/service/passthrough_abstract_texture_impl.h b/gpu/command_buffer/service/passthrough_abstract_texture_impl.h index b98542c..b9e06755 100644 --- a/gpu/command_buffer/service/passthrough_abstract_texture_impl.h +++ b/gpu/command_buffer/service/passthrough_abstract_texture_impl.h
@@ -36,9 +36,6 @@ #else void SetBoundImage(gl::GLImage* image) override; #endif -#if BUILDFLAG(IS_ANDROID) - void BindStreamTextureImage(gl::GLImage* image, GLuint service_id) override; -#endif gl::GLImage* GetImageForTesting() const override; void SetCleared() override; void SetCleanupCallback(CleanupCallback cb) override;
diff --git a/gpu/command_buffer/service/raster_decoder.cc b/gpu/command_buffer/service/raster_decoder.cc index e87f78b..bd5d2b5 100644 --- a/gpu/command_buffer/service/raster_decoder.cc +++ b/gpu/command_buffer/service/raster_decoder.cc
@@ -483,6 +483,7 @@ gles2::ContextGroup* GetContextGroup() override; gles2::ErrorState* GetErrorState() override; +#if !BUILDFLAG(IS_ANDROID) std::unique_ptr<gles2::AbstractTexture> CreateAbstractTexture( GLenum target, GLenum internal_format, @@ -492,6 +493,7 @@ GLint border, GLenum format, GLenum type) override; +#endif bool IsCompressedTextureFormat(unsigned format) override; bool ClearLevel(gles2::Texture* texture, unsigned target, @@ -1599,6 +1601,7 @@ return error_state_.get(); } +#if !BUILDFLAG(IS_ANDROID) std::unique_ptr<gles2::AbstractTexture> RasterDecoderImpl::CreateAbstractTexture(GLenum target, GLenum internal_format, @@ -1610,6 +1613,7 @@ GLenum type) { return nullptr; } +#endif bool RasterDecoderImpl::IsCompressedTextureFormat(unsigned format) { return feature_info()->validators()->compressed_texture_format.IsValid(
diff --git a/gpu/command_buffer/service/shared_image/ahardwarebuffer_image_backing_factory.cc b/gpu/command_buffer/service/shared_image/ahardwarebuffer_image_backing_factory.cc index b152eacc..865b846 100644 --- a/gpu/command_buffer/service/shared_image/ahardwarebuffer_image_backing_factory.cc +++ b/gpu/command_buffer/service/shared_image/ahardwarebuffer_image_backing_factory.cc
@@ -138,7 +138,8 @@ size_t estimated_size, bool is_thread_safe, base::ScopedFD initial_upload_fd, - scoped_refptr<base::RefCountedData<DawnProcTable>> dawn_procs); + scoped_refptr<base::RefCountedData<DawnProcTable>> dawn_procs, + bool use_passthrough); AHardwareBufferImageBacking(const AHardwareBufferImageBacking&) = delete; AHardwareBufferImageBacking& operator=(const AHardwareBufferImageBacking&) = @@ -185,6 +186,7 @@ scoped_refptr<OverlayImage> overlay_image_ GUARDED_BY(lock_); scoped_refptr<base::RefCountedData<DawnProcTable>> dawn_procs_; + const bool use_passthrough_; }; // Vk backed Skia representation of AHardwareBufferImageBacking. @@ -263,7 +265,8 @@ size_t estimated_size, bool is_thread_safe, base::ScopedFD initial_upload_fd, - scoped_refptr<base::RefCountedData<DawnProcTable>> dawn_procs) + scoped_refptr<base::RefCountedData<DawnProcTable>> dawn_procs, + bool use_passthrough) : AndroidImageBacking(mailbox, format, size, @@ -275,7 +278,8 @@ is_thread_safe, std::move(initial_upload_fd)), hardware_buffer_handle_(std::move(handle)), - dawn_procs_(std::move(dawn_procs)) { + dawn_procs_(std::move(dawn_procs)), + use_passthrough_(use_passthrough) { DCHECK(hardware_buffer_handle_.is_valid()); } @@ -384,14 +388,13 @@ } DCHECK(context_state->GrContextIsGL()); DCHECK(hardware_buffer_handle_.is_valid()); - auto* texture = - GenGLTexture(hardware_buffer_handle_.get(), GL_TEXTURE_2D, color_space(), - size(), GetEstimatedSize(), ClearedRect()); - if (!texture) - return nullptr; - auto gl_representation = - std::make_unique<GLTextureAndroidImageRepresentation>( - manager, this, tracker, std::move(texture)); + + std::unique_ptr<GLTextureImageRepresentationBase> gl_representation; + if (use_passthrough_) + gl_representation = ProduceGLTexturePassthrough(manager, tracker); + else + gl_representation = ProduceGLTexture(manager, tracker); + return SkiaGLImageRepresentation::Create(std::move(gl_representation), std::move(context_state), manager, this, tracker); @@ -471,7 +474,10 @@ } AHardwareBufferImageBackingFactory::AHardwareBufferImageBackingFactory( - const gles2::FeatureInfo* feature_info) { + const gles2::FeatureInfo* feature_info, + const GpuPreferences& gpu_preferences) + : use_passthrough_(gpu_preferences.use_passthrough_cmd_decoder && + gl::PassthroughCommandDecoderSupported()) { DCHECK(base::AndroidHardwareBufferCompat::IsSupportAvailable()); const gles2::Validators* validators = feature_info->validators(); const bool is_egl_image_supported = @@ -693,7 +699,7 @@ auto backing = std::make_unique<AHardwareBufferImageBacking>( mailbox, format, size, color_space, surface_origin, alpha_type, usage, std::move(handle), estimated_size, is_thread_safe, - std::move(initial_upload_fd), dawn_procs_); + std::move(initial_upload_fd), dawn_procs_, use_passthrough_); // If we uploaded initial data, set the backing as cleared. if (!pixel_data.empty()) @@ -811,7 +817,7 @@ auto backing = std::make_unique<AHardwareBufferImageBacking>( mailbox, si_format, size, color_space, surface_origin, alpha_type, usage, std::move(handle.android_hardware_buffer), estimated_size, false, - base::ScopedFD(), dawn_procs_); + base::ScopedFD(), dawn_procs_, use_passthrough_); backing->SetCleared(); return backing;
diff --git a/gpu/command_buffer/service/shared_image/ahardwarebuffer_image_backing_factory.h b/gpu/command_buffer/service/shared_image/ahardwarebuffer_image_backing_factory.h index 2862508..dcc6f26 100644 --- a/gpu/command_buffer/service/shared_image/ahardwarebuffer_image_backing_factory.h +++ b/gpu/command_buffer/service/shared_image/ahardwarebuffer_image_backing_factory.h
@@ -31,7 +31,8 @@ : public SharedImageBackingFactory { public: explicit AHardwareBufferImageBackingFactory( - const gles2::FeatureInfo* feature_info); + const gles2::FeatureInfo* feature_info, + const GpuPreferences& gpu_preferences); AHardwareBufferImageBackingFactory( const AHardwareBufferImageBackingFactory&) = delete; @@ -126,6 +127,7 @@ int32_t max_gl_texture_size_ = 0; scoped_refptr<base::RefCountedData<DawnProcTable>> dawn_procs_; + const bool use_passthrough_; }; } // namespace gpu
diff --git a/gpu/command_buffer/service/shared_image/ahardwarebuffer_image_backing_factory_unittest.cc b/gpu/command_buffer/service/shared_image/ahardwarebuffer_image_backing_factory_unittest.cc index 8c3c98f..9e03af50 100644 --- a/gpu/command_buffer/service/shared_image/ahardwarebuffer_image_backing_factory_unittest.cc +++ b/gpu/command_buffer/service/shared_image/ahardwarebuffer_image_backing_factory_unittest.cc
@@ -56,18 +56,19 @@ ASSERT_TRUE(result); GpuDriverBugWorkarounds workarounds; + auto gpu_preferences = GpuPreferences(); scoped_refptr<gl::GLShareGroup> share_group = new gl::GLShareGroup(); context_state_ = base::MakeRefCounted<SharedContextState>( std::move(share_group), surface_, context_, false /* use_virtualized_gl_contexts */, base::DoNothing()); - context_state_->InitializeGrContext(GpuPreferences(), workarounds, nullptr); + context_state_->InitializeGrContext(gpu_preferences, workarounds, nullptr); auto feature_info = base::MakeRefCounted<gles2::FeatureInfo>(workarounds, GpuFeatureInfo()); - context_state_->InitializeGL(GpuPreferences(), std::move(feature_info)); + context_state_->InitializeGL(gpu_preferences, std::move(feature_info)); backing_factory_ = std::make_unique<AHardwareBufferImageBackingFactory>( - context_state_->feature_info()); + context_state_->feature_info(), gpu_preferences); memory_type_tracker_ = std::make_unique<MemoryTypeTracker>(nullptr); shared_image_representation_factory_ =
diff --git a/gpu/command_buffer/service/shared_image/iosurface_image_backing_factory_unittest.cc b/gpu/command_buffer/service/shared_image/iosurface_image_backing_factory_unittest.cc index 1685244..21ec633 100644 --- a/gpu/command_buffer/service/shared_image/iosurface_image_backing_factory_unittest.cc +++ b/gpu/command_buffer/service/shared_image/iosurface_image_backing_factory_unittest.cc
@@ -30,11 +30,8 @@ #include "third_party/skia/include/core/SkSurface.h" #include "third_party/skia/include/gpu/GrBackendSemaphore.h" #include "third_party/skia/include/gpu/GrBackendSurface.h" -#include "ui/gfx/buffer_format_util.h" -#include "ui/gl/buffer_format_utils.h" #include "ui/gl/buildflags.h" #include "ui/gl/gl_context.h" -#include "ui/gl/gl_image_stub.h" #include "ui/gl/gl_surface.h" #include "ui/gl/gl_utils.h" #include "ui/gl/init/gl_factory.h" @@ -1070,152 +1067,6 @@ } } -class StubImage : public gl::GLImageStub { - public: - StubImage(const gfx::Size& size, gfx::BufferFormat format) - : size_(size), format_(format) {} - - gfx::Size GetSize() override { return size_; } - unsigned GetInternalFormat() override { - return gl::BufferFormatToGLInternalFormat(format_); - } - unsigned GetDataType() override { - return gl::BufferFormatToGLDataType(format_); - } - - BindOrCopy ShouldBindOrCopy() override { return BIND; } - - bool BindTexImage(unsigned target) override { - if (!bound_) { - bound_ = true; - ++update_counter_; - } - return true; - } - - void ReleaseTexImage(unsigned target) override { bound_ = false; } - - bool bound() const { return bound_; } - int update_counter() const { return update_counter_; } - - private: - ~StubImage() override = default; - - gfx::Size size_; - gfx::BufferFormat format_; - bool bound_ = false; - int update_counter_ = 0; -}; - -class IOSurfaceImageBackingFactoryWithGMBTest - : public IOSurfaceImageBackingFactoryNewTestBase, - public gpu::ImageFactory { - public: - IOSurfaceImageBackingFactoryWithGMBTest() - : IOSurfaceImageBackingFactoryNewTestBase(false) {} - void SetUp() override { SetUpBase(GpuDriverBugWorkarounds(), this); } - - scoped_refptr<gl::GLImage> GetImageFromMailbox(Mailbox mailbox) { - auto representation = - shared_image_representation_factory_->ProduceGLTexturePassthrough( - mailbox); - DCHECK(representation); - return representation->GetTexturePassthrough()->GetLevelImage(GL_TEXTURE_2D, - 0); - } - - protected: - // gpu::ImageFactory implementation. - scoped_refptr<gl::GLImage> CreateImageForGpuMemoryBuffer( - gfx::GpuMemoryBufferHandle handle, - const gfx::Size& size, - gfx::BufferFormat format, - const gfx::ColorSpace& color_space, - gfx::BufferPlane plane, - int client_id, - gpu::SurfaceHandle surface_handle) override { - // pretend to handle NATIVE_PIXMAP types. - if (handle.type != gfx::NATIVE_PIXMAP) - return nullptr; - if (client_id != kClientId) - return nullptr; - return base::MakeRefCounted<StubImage>(size, format); - } - - static constexpr int kClientId = 3; -}; - -TEST_P(IOSurfaceImageBackingFactoryWithGMBTest, GpuMemoryBufferImportEmpty) { - auto mailbox = Mailbox::GenerateForSharedImage(); - gfx::Size size(256, 256); - gfx::BufferFormat format = ToBufferFormat(get_format()); - auto color_space = gfx::ColorSpace::CreateSRGB(); - GrSurfaceOrigin surface_origin = kTopLeft_GrSurfaceOrigin; - SkAlphaType alpha_type = kPremul_SkAlphaType; - uint32_t usage = SHARED_IMAGE_USAGE_GLES2; - - gfx::GpuMemoryBufferHandle handle; - auto backing = backing_factory_->CreateSharedImage( - mailbox, kClientId, std::move(handle), format, gfx::BufferPlane::DEFAULT, - size, color_space, surface_origin, alpha_type, usage); - EXPECT_FALSE(backing); -} - -TEST_P(IOSurfaceImageBackingFactoryWithGMBTest, GpuMemoryBufferImportNative) { - // TODO(jonahr): Test crashes on Mac with ANGLE/passthrough - // (crbug.com/1100975) - gpu::GPUTestBotConfig bot_config; - if (bot_config.LoadCurrentConfig(nullptr) && - bot_config.Matches("mac passthrough")) { - return; - } - auto mailbox = Mailbox::GenerateForSharedImage(); - gfx::Size size(256, 256); - gfx::BufferFormat format = ToBufferFormat(get_format()); - auto color_space = gfx::ColorSpace::CreateSRGB(); - GrSurfaceOrigin surface_origin = kTopLeft_GrSurfaceOrigin; - SkAlphaType alpha_type = kPremul_SkAlphaType; - uint32_t usage = SHARED_IMAGE_USAGE_GLES2; - - gfx::GpuMemoryBufferHandle handle; - handle.type = gfx::NATIVE_PIXMAP; - auto backing = backing_factory_->CreateSharedImage( - mailbox, kClientId, std::move(handle), format, gfx::BufferPlane::DEFAULT, - size, color_space, surface_origin, alpha_type, usage); - if (!can_create_scanout_or_gmb_shared_image(get_format())) { - EXPECT_FALSE(backing); - return; - } - ASSERT_TRUE(backing); - - std::unique_ptr<SharedImageRepresentationFactoryRef> ref = - shared_image_manager_->Register(std::move(backing), - memory_type_tracker_.get()); - scoped_refptr<gl::GLImage> image = GetImageFromMailbox(mailbox); - AssertGLImageHasTypeNone(image.get()); - auto* stub_image = static_cast<StubImage*>(image.get()); - EXPECT_FALSE(stub_image->bound()); - int update_counter = stub_image->update_counter(); - ref->Update(nullptr); - EXPECT_EQ(stub_image->update_counter(), update_counter); - EXPECT_FALSE(stub_image->bound()); - - { - auto skia_representation = - shared_image_representation_factory_->ProduceSkia(mailbox, - context_state_); - std::vector<GrBackendSemaphore> begin_semaphores; - std::vector<GrBackendSemaphore> end_semaphores; - std::unique_ptr<SkiaImageRepresentation::ScopedReadAccess> - scoped_read_access; - skia_representation->BeginScopedReadAccess(&begin_semaphores, - &end_semaphores); - EXPECT_TRUE(stub_image->bound()); - } - EXPECT_FALSE(stub_image->bound()); - EXPECT_GT(stub_image->update_counter(), update_counter); -} - const auto kSharedImageFormats = ::testing::Values( viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888), viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::BGRA_1010102), @@ -1230,9 +1081,5 @@ IOSurfaceImageBackingFactoryNewTest, kSharedImageFormats, TestParamToString); -INSTANTIATE_TEST_SUITE_P(Service, - IOSurfaceImageBackingFactoryWithGMBTest, - kSharedImageFormats, - TestParamToString); } // namespace gpu
diff --git a/gpu/command_buffer/service/shared_image/shared_image_factory.cc b/gpu/command_buffer/service/shared_image/shared_image_factory.cc index 4c7f9060..aa2b9eb02 100644 --- a/gpu/command_buffer/service/shared_image/shared_image_factory.cc +++ b/gpu/command_buffer/service/shared_image/shared_image_factory.cc
@@ -255,7 +255,7 @@ } if (is_ahb_supported) { auto ahb_factory = std::make_unique<AHardwareBufferImageBackingFactory>( - feature_info.get()); + feature_info.get(), gpu_preferences); factories_.push_back(std::move(ahb_factory)); } if (gr_context_type_ == GrContextType::kVulkan &&
diff --git a/gpu/command_buffer/service/validating_abstract_texture_impl.cc b/gpu/command_buffer/service/validating_abstract_texture_impl.cc index a298ba33..f4c6bcc 100644 --- a/gpu/command_buffer/service/validating_abstract_texture_impl.cc +++ b/gpu/command_buffer/service/validating_abstract_texture_impl.cc
@@ -96,26 +96,6 @@ image); } -#if BUILDFLAG(IS_ANDROID) -void ValidatingAbstractTextureImpl::BindStreamTextureImage(gl::GLImage* image, - GLuint service_id) { - DCHECK(image); - DCHECK(!decoder_managed_image_); - - if (!texture_ref_) - return; - - const GLint level = 0; - const GLuint target = texture_ref_->texture()->target(); - - // We set the state to UNBOUND, so that CopyTexImage is called. - GetTextureManager()->SetLevelStreamTextureImage( - texture_ref_.get(), target, level, image, Texture::ImageState::UNBOUND, - service_id); - SetCleared(); -} -#endif - gl::GLImage* ValidatingAbstractTextureImpl::GetImageForTesting() const { if (!texture_ref_) return nullptr;
diff --git a/gpu/command_buffer/service/validating_abstract_texture_impl.h b/gpu/command_buffer/service/validating_abstract_texture_impl.h index cb2f060..3af9d55 100644 --- a/gpu/command_buffer/service/validating_abstract_texture_impl.h +++ b/gpu/command_buffer/service/validating_abstract_texture_impl.h
@@ -36,9 +36,6 @@ // AbstractTexture TextureBase* GetTextureBase() const override; void SetParameteri(GLenum pname, GLint param) override; -#if BUILDFLAG(IS_ANDROID) - void BindStreamTextureImage(gl::GLImage* image, GLuint service_id) override; -#endif #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) void SetUnboundImage(gl::GLImage* image) override; #else
diff --git a/gpu/command_buffer/service/webgpu_decoder_impl.cc b/gpu/command_buffer/service/webgpu_decoder_impl.cc index 50b0949..8fbeba0a 100644 --- a/gpu/command_buffer/service/webgpu_decoder_impl.cc +++ b/gpu/command_buffer/service/webgpu_decoder_impl.cc
@@ -271,6 +271,7 @@ NOTREACHED(); return nullptr; } +#if !BUILDFLAG(IS_ANDROID) std::unique_ptr<gles2::AbstractTexture> CreateAbstractTexture( GLenum target, GLenum internal_format, @@ -283,6 +284,7 @@ NOTREACHED(); return nullptr; } +#endif bool IsCompressedTextureFormat(unsigned format) override { NOTREACHED(); return false;
diff --git a/ios/chrome/app/main_controller.mm b/ios/chrome/app/main_controller.mm index 6f06aa1..f0e55e7 100644 --- a/ios/chrome/app/main_controller.mm +++ b/ios/chrome/app/main_controller.mm
@@ -841,9 +841,17 @@ // applicationWillTerminate to fail after a 5s delay. Experiment with skipping // this shutdown call. See: crbug.com/1328891 if (base::FeatureList::IsEnabled(kFastApplicationWillTerminate)) { - [[SessionServiceIOS sharedService] shutdown]; metrics::MetricsService* metrics = GetApplicationContext()->GetMetricsService(); + dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); + static std::atomic<uint32_t> counter{metrics ? 2u : 1u}; + ProceduralBlock completionBlock = ^{ + if (!--counter) { + dispatch_semaphore_signal(semaphore); + } + }; + [[SessionServiceIOS sharedService] shutdownWithCompletion:completionBlock]; + if (metrics) { metrics->Stop(); // MetricsService::Stop() depends on a committed local state, and does so @@ -851,12 +859,11 @@ // This will introduce a wait that will likely be the source of a number // of watchdog kills, but it should still be fewer than the number of // kills `_chromeMain.reset()` is responsible for. - dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); GetApplicationContext()->GetLocalState()->CommitPendingWrite( - {}, base::BindOnce(^{ - dispatch_semaphore_signal(semaphore); - })); - dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); + {}, base::BindOnce(completionBlock)); + dispatch_time_t dispatchTime = + dispatch_time(DISPATCH_TIME_NOW, 4 * NSEC_PER_SEC); + dispatch_semaphore_wait(semaphore, dispatchTime); } return;
diff --git a/ios/chrome/app/strings/resources/ios_strings_am.xtb b/ios/chrome/app/strings/resources/ios_strings_am.xtb index 80798814..e658554 100644 --- a/ios/chrome/app/strings/resources/ios_strings_am.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_am.xtb
@@ -444,6 +444,7 @@ <translation id="4375040482473363939">የQR ኮድ ፍለጋ</translation> <translation id="4378154925671717803">ስልክ</translation> <translation id="4389019817280890563">ቋንቋን ለመለወጥ መታ ያድርጉ።</translation> +<translation id="4420409367264901497">እልባትን አርትዕ</translation> <translation id="4442550905108052454"><ph name="BEGIN_BOLD" />ቅንብሮች<ph name="END_BOLD" />ን ይክፈቱ</translation> <translation id="4454246407045105932">ቋንቋን ያክሉ</translation> <translation id="4462491365653392320">በትሮች ላይ ዋጋዎችን ይከታተሉ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_as.xtb b/ios/chrome/app/strings/resources/ios_strings_as.xtb index 9272ab5..693df634 100644 --- a/ios/chrome/app/strings/resources/ios_strings_as.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_as.xtb
@@ -286,6 +286,7 @@ <translation id="3130863904455712965">ইতিহাস আৰু অধিক</translation> <translation id="3131206671572504478">সকলো অৱৰোধ কৰক</translation> <translation id="313283613037595347">নতুন ইনক’গনিট’ টেব সৃষ্টি কৰক।</translation> +<translation id="3146109040683991651">Chromeক ডিফ’ল্ট ব্ৰাউজাৰ হিচাপে ছেট কৰক</translation> <translation id="3153862085237805241">কাৰ্ড ছেভ কৰক</translation> <translation id="3157387275655328056">পঢ়াৰ সূচীত যোগ দিয়ক</translation> <translation id="3157684681743766797">সকলো চিহ্নিত কৰক…</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bg.xtb b/ios/chrome/app/strings/resources/ios_strings_bg.xtb index 2eadd6ab..2b88aa0 100644 --- a/ios/chrome/app/strings/resources/ios_strings_bg.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_bg.xtb
@@ -286,6 +286,7 @@ <translation id="3130863904455712965">История и др.</translation> <translation id="3131206671572504478">Блокиране на всички</translation> <translation id="313283613037595347">Създаване на нов раздел в режим „инкогнито“.</translation> +<translation id="3146109040683991651">Задаване на Chrome като браузър по подразбиране</translation> <translation id="3153862085237805241">Запазване на картата</translation> <translation id="3157387275655328056">Добавяне към списъка за четене</translation> <translation id="3157684681743766797">Означаване на всички…</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_da.xtb b/ios/chrome/app/strings/resources/ios_strings_da.xtb index b79db72..d49654b 100644 --- a/ios/chrome/app/strings/resources/ios_strings_da.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_da.xtb
@@ -286,6 +286,7 @@ <translation id="3130863904455712965">Historik m.m.</translation> <translation id="3131206671572504478">Bloker alle</translation> <translation id="313283613037595347">Opret ny inkognitofane.</translation> +<translation id="3146109040683991651">Angiv Chrome som standardbrowser</translation> <translation id="3153862085237805241">Gem kortet</translation> <translation id="3157387275655328056">Føj til læseliste</translation> <translation id="3157684681743766797">Markér alle…</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_de.xtb b/ios/chrome/app/strings/resources/ios_strings_de.xtb index d948eef..7052f56 100644 --- a/ios/chrome/app/strings/resources/ios_strings_de.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_de.xtb
@@ -286,6 +286,7 @@ <translation id="3130863904455712965">Verlauf und mehr</translation> <translation id="3131206671572504478">Alle blockieren</translation> <translation id="313283613037595347">Neuen Inkognitotab erstellen.</translation> +<translation id="3146109040683991651">Chrome als Standardbrowser festlegen</translation> <translation id="3153862085237805241">Karte speichern</translation> <translation id="3157387275655328056">Zur Leseliste hinzufügen</translation> <translation id="3157684681743766797">Alle markieren…</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb index 84e9274..dbfd30a 100644 --- a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
@@ -286,6 +286,7 @@ <translation id="3130863904455712965">History and more</translation> <translation id="3131206671572504478">Block all</translation> <translation id="313283613037595347">Create new Incognito tab.</translation> +<translation id="3146109040683991651">Set Chrome as default browser</translation> <translation id="3153862085237805241">Save Card</translation> <translation id="3157387275655328056">Add to reading list</translation> <translation id="3157684681743766797">Mark All…</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_gu.xtb b/ios/chrome/app/strings/resources/ios_strings_gu.xtb index 608e9b3..a0a1bbbc 100644 --- a/ios/chrome/app/strings/resources/ios_strings_gu.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_gu.xtb
@@ -286,6 +286,7 @@ <translation id="3130863904455712965">ઇતિહાસ અને વધુ</translation> <translation id="3131206671572504478">બધી બ્લૉક કરો</translation> <translation id="313283613037595347">નવી છૂપી ટૅબ બનાવો.</translation> +<translation id="3146109040683991651">Chromeને ડિફૉલ્ટ બ્રાઉઝર તરીકે સેટ કરો</translation> <translation id="3153862085237805241">કાર્ડ સાચવો</translation> <translation id="3157387275655328056">વાંચન સૂચિમાં ઉમેરો</translation> <translation id="3157684681743766797">તમામને આ રીતે ચિહ્નિત કરો…</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hi.xtb b/ios/chrome/app/strings/resources/ios_strings_hi.xtb index 8e515d0..f081765 100644 --- a/ios/chrome/app/strings/resources/ios_strings_hi.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_hi.xtb
@@ -286,6 +286,7 @@ <translation id="3130863904455712965">इतिहास वगैरह</translation> <translation id="3131206671572504478">सभी कुकी ब्लॉक करें</translation> <translation id="313283613037595347">नया गुप्त टैब बनाएं.</translation> +<translation id="3146109040683991651">Chrome को डिफ़ॉल्ट ब्राउज़र के तौर पर सेट करें</translation> <translation id="3153862085237805241">कार्ड सेव करें</translation> <translation id="3157387275655328056">रीडिंग लिस्ट में जोड़ें</translation> <translation id="3157684681743766797">सभी को चिह्नित करें...</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_id.xtb b/ios/chrome/app/strings/resources/ios_strings_id.xtb index ea946df..da82a5b 100644 --- a/ios/chrome/app/strings/resources/ios_strings_id.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_id.xtb
@@ -286,6 +286,7 @@ <translation id="3130863904455712965">Histori dan lainnya</translation> <translation id="3131206671572504478">Blokir Semua</translation> <translation id="313283613037595347">Buat tab Samaran baru.</translation> +<translation id="3146109040683991651">Setel Chrome sebagai Browser Default</translation> <translation id="3153862085237805241">Simpan Kartu</translation> <translation id="3157387275655328056">Tambahkan ke Daftar Bacaan</translation> <translation id="3157684681743766797">Tandai Semua...</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ko.xtb b/ios/chrome/app/strings/resources/ios_strings_ko.xtb index a77c0b2..35e2f3a 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ko.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ko.xtb
@@ -286,6 +286,7 @@ <translation id="3130863904455712965">방문 기록 및 기타 정보</translation> <translation id="3131206671572504478">모두 차단</translation> <translation id="313283613037595347">새 시크릿 탭 만들기</translation> +<translation id="3146109040683991651">Chrome을 기본 브라우저로 설정</translation> <translation id="3153862085237805241">카드 저장</translation> <translation id="3157387275655328056">읽기 목록에 추가</translation> <translation id="3157684681743766797">모두 표시...</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lo.xtb b/ios/chrome/app/strings/resources/ios_strings_lo.xtb index e2531cb..5d81a32a 100644 --- a/ios/chrome/app/strings/resources/ios_strings_lo.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_lo.xtb
@@ -286,6 +286,7 @@ <translation id="3130863904455712965">ປະຫວັດ ແລະ ອື່ນໆ</translation> <translation id="3131206671572504478">ບລັອກທັງໝົດ</translation> <translation id="313283613037595347">ສ້າງແຖບບໍ່ເປີດເຜີຍຕົວຕົນໃໝ່.</translation> +<translation id="3146109040683991651">ຕັ້ງຄ່າ Chrome ເປັນໂປຣແກຣມທ່ອງເວັບເລີ່ມຕົ້ນ</translation> <translation id="3153862085237805241">ບັນທຶກບັດ</translation> <translation id="3157387275655328056">ເພີ່ມໃສ່ລາຍການທີ່ຈະອ່ານ</translation> <translation id="3157684681743766797">ໝາຍທັງໝົດ…</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sl.xtb b/ios/chrome/app/strings/resources/ios_strings_sl.xtb index 94e7ff49..2a58646 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sl.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sl.xtb
@@ -286,6 +286,7 @@ <translation id="3130863904455712965">Zgodovina in drugo</translation> <translation id="3131206671572504478">Blokiraj vse</translation> <translation id="313283613037595347">Ustvarjanje novega anonimnega zavihka</translation> +<translation id="3146109040683991651">Nastavitev Chroma kot privzeti brskalnik</translation> <translation id="3153862085237805241">Shranjevanje kartice</translation> <translation id="3157387275655328056">Dodaj na bralni seznam</translation> <translation id="3157684681743766797">Označi vse …</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb b/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb index 29c8af74..e9fd076 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb
@@ -57,7 +57,7 @@ <translation id="1321993286294231467">Došlo je do greške pri čuvanju slike.</translation> <translation id="1322735045095424339">Organizacija zahteva režim bez arhiviranja</translation> <translation id="1323735185997015385">Izbriši</translation> -<translation id="132683371494960526">Dodirnite dvaput da biste promenili nadređeni direktorijum.</translation> +<translation id="132683371494960526">Dodirnite dvaput da biste promenili nadređeni folder.</translation> <translation id="1335348992705722518">Upravljaj podešavanjima…</translation> <translation id="1340643665687018190">Zatvori meni</translation> <translation id="1358214951266274152">Posetite link koji ste kopirali</translation> @@ -117,7 +117,7 @@ <translation id="1753905327828125965">Najposećenije</translation> <translation id="1789803444939621101">Dobro došli nazad, <ph name="USER_NAME" /></translation> <translation id="1803264062614276815">Ime vlasnika kartice</translation> -<translation id="1809939268435598390">Izbriši direktorijum</translation> +<translation id="1809939268435598390">Izbriši folder</translation> <translation id="1813414402673211292">Brisanje podataka pregledanja</translation> <translation id="1815941218935345331">Šifra</translation> <translation id="1820259098641718022">Dodato je na listu za čitanje</translation> @@ -252,7 +252,7 @@ <translation id="2883151425485251736">Pregledajte i menjajte teme koje ste sakrili sa naloga</translation> <translation id="288655811176831528">Zatvori karticu</translation> <translation id="2890171748217283516">Sajtovi koje pratite se čuvaju na Google nalogu. Njima možete da upravljate u podešavanjima Discover-a.</translation> -<translation id="2898963176829412617">Novi direktorijum...</translation> +<translation id="2898963176829412617">Novi folder...</translation> <translation id="2902684821701498619">Dodaj na Listu za čitanje</translation> <translation id="2916171785467530738">Automatski dovršavaj pretrage i URL-ove</translation> <translation id="291754862089661335">Postavite QR ili bar-kod u ovaj okvir</translation> @@ -636,7 +636,7 @@ <translation id="5834415013958049700">Slika Objektiva koju ste kopirali</translation> <translation id="5846482154967366008">Pretraživač</translation> <translation id="5854790677617711513">Starije od 30 dana</translation> -<translation id="5857090052475505287">Novi direktorijum</translation> +<translation id="5857090052475505287">Novi folder</translation> <translation id="5857675236236529683">Kada budete spremni, ovde pronađite listu za čitanje</translation> <translation id="5857770089550859117">Za početak sinhronizacije potrebna je pristupna fraza.</translation> <translation id="5859715514067755465">Napred</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sr.xtb b/ios/chrome/app/strings/resources/ios_strings_sr.xtb index 604a79d..3600c697 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sr.xtb
@@ -57,7 +57,7 @@ <translation id="1321993286294231467">Дошло је до грешке при чувању слике.</translation> <translation id="1322735045095424339">Организација захтева режим без архивирања</translation> <translation id="1323735185997015385">Избриши</translation> -<translation id="132683371494960526">Додирните двапут да бисте променили надређени директоријум.</translation> +<translation id="132683371494960526">Додирните двапут да бисте променили надређени фолдер.</translation> <translation id="1335348992705722518">Управљај подешавањима…</translation> <translation id="1340643665687018190">Затвори мени</translation> <translation id="1358214951266274152">Посетите линк који сте копирали</translation> @@ -117,7 +117,7 @@ <translation id="1753905327828125965">Најпосећеније</translation> <translation id="1789803444939621101">Добро дошли назад, <ph name="USER_NAME" /></translation> <translation id="1803264062614276815">Име власника картице</translation> -<translation id="1809939268435598390">Избриши директоријум</translation> +<translation id="1809939268435598390">Избриши фолдер</translation> <translation id="1813414402673211292">Брисање података прегледања</translation> <translation id="1815941218935345331">Шифра</translation> <translation id="1820259098641718022">Додато је на листу за читање</translation> @@ -252,7 +252,7 @@ <translation id="2883151425485251736">Прегледајте и мењајте теме које сте сакрили са налога</translation> <translation id="288655811176831528">Затвори картицу</translation> <translation id="2890171748217283516">Сајтови које пратите се чувају на Google налогу. Њима можете да управљате у подешавањима Discover-а.</translation> -<translation id="2898963176829412617">Нови директоријум...</translation> +<translation id="2898963176829412617">Нови фолдер...</translation> <translation id="2902684821701498619">Додај на Листу за читање</translation> <translation id="2916171785467530738">Аутоматски довршавај претраге и URL-ове</translation> <translation id="291754862089661335">Поставите QR или бар-код у овај оквир</translation> @@ -636,7 +636,7 @@ <translation id="5834415013958049700">Слика Објектива коју сте копирали</translation> <translation id="5846482154967366008">Претраживач</translation> <translation id="5854790677617711513">Старије од 30 дана</translation> -<translation id="5857090052475505287">Нови директоријум</translation> +<translation id="5857090052475505287">Нови фолдер</translation> <translation id="5857675236236529683">Када будете спремни, овде пронађите листу за читање</translation> <translation id="5857770089550859117">За почетак синхронизације потребна је приступна фраза.</translation> <translation id="5859715514067755465">Напред</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_te.xtb b/ios/chrome/app/strings/resources/ios_strings_te.xtb index e01b2665..18216510 100644 --- a/ios/chrome/app/strings/resources/ios_strings_te.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_te.xtb
@@ -100,7 +100,7 @@ <translation id="1620510694547887537">కెమెరా</translation> <translation id="1641113438599504367">సురక్షిత బ్రౌజింగ్</translation> <translation id="1644574205037202324">హిస్టరీ</translation> -<translation id="1650222530560417226">అన్ని ట్యాబ్ల నుండి భవిష్యత్తు JavaScript కన్సోల్ లాగ్లు మరియు ఎర్రర్లను సేకరించడానికి "లాగ్ చేయడం ప్రారంభించు" బటన్ నొక్కండి. లాగ్లు ఈ పేజీని మూసివేసే వరకు లేదా “లాగ్ చేయడం ఆపివేయి” నొక్కే వరకు సేకరించబడతాయి (అలాగే, మెమెరీలో నిల్వ చేయబడతాయి).</translation> +<translation id="1650222530560417226">అన్ని ట్యాబ్ల నుండి భవిష్యత్తు JavaScript కన్సోల్ లాగ్లు మరియు ఎర్రర్లను సేకరించడానికి "లాగ్ చేయడం ప్రారంభించండి" బటన్ నొక్కండి. లాగ్లు ఈ పేజీని మూసివేసే వరకు లేదా “లాగ్ చేయడం ఆపివేయి” నొక్కే వరకు సేకరించబడతాయి (అలాగే, మెమెరీలో నిల్వ చేయబడతాయి).</translation> <translation id="1653432787084483144">{count,plural, =1{సేవ్ చేసిన {count} పాస్వర్డ్ మీ కీబోర్డ్ పైన అందుబాటులో ఉంది.}other{సేవ్ చేసిన {count} పాస్వర్డ్లు మీ కీబోర్డ్ పైన అందుబాటులో ఉన్నాయి.}}</translation> <translation id="1657011748321897393">మీరు ఇంటర్నెట్కు కనెక్ట్ చేయనందున షేరింగ్ విఫలమైంది.</translation> <translation id="1657641691196698092">బ్లాక్ చేసిన కుక్కీలు</translation> @@ -164,7 +164,7 @@ <translation id="2251686759395008410">మెనూ → హిస్టరీ</translation> <translation id="2256933947031277845">మీ సంస్థ మిమ్మల్ని కొన్ని ఖాతాలతో మాత్రమే సైన్ ఇన్ చేయడానికి అనుమతిస్తుంది.</translation> <translation id="225943865679747347">ఎర్రర్ కోడ్: <ph name="ERROR_CODE" /></translation> -<translation id="2267753748892043616">ఖాతాను జోడించు</translation> +<translation id="2267753748892043616">ఖాతాను జోడించండి</translation> <translation id="2268044343513325586">మరింత మెరుగుపరచండి</translation> <translation id="2271351792809375263">మీరు మీ పరికరంలోని ఇతర యాప్లలో Chromeలో సేవ్ చేసిన పాస్వర్డ్లను ఉపయోగించండి</translation> <translation id="2273327106802955778">మరిన్ని మెనూ</translation> @@ -202,7 +202,7 @@ <translation id="2562041823070056534"><ph name="DEVICE_NAME" />కు పంపుతోంది...</translation> <translation id="2570206273416014374">అడ్రస్ బార్, సెర్చ్ బాక్స్లలో చేసే సెర్చ్లు, కొన్ని కుక్కీలను మీరు ఆటోమేటిక్ ఆప్షన్గా సెట్ చేసిన సెర్చ్ ఇంజిన్కు పంపుతుంది</translation> <translation id="2578571896248130439">వెబ్పేజీని పంపండి</translation> -<translation id="2584132361465095047">ఖాతాను జోడించు…</translation> +<translation id="2584132361465095047">ఖాతాను జోడించండి…</translation> <translation id="2600682495497606169">సైట్ కుక్కీలను క్లియర్ చేయండి</translation> <translation id="2625189173221582860">పాస్వర్డ్ కాపీ చేయబడింది</translation> <translation id="2626236249646841566">మీ కనెక్షన్ను చెక్ చేసి, మళ్లీ సైన్ ఇన్ చేయడానికి ట్రై చేయండి.</translation> @@ -269,7 +269,7 @@ <translation id="2969979262385602596">సైన్ ఇన్ చేయడం విఫలమైంది. దయచేసి తర్వాత మళ్లీ ప్రయత్నించండి.</translation> <translation id="2975121486251958312">అజ్ఞాత మోడ్ మాత్రమే అందుబాటులో ఉంది</translation> <translation id="2982481275546140226">డేటాను తీసివేయండి</translation> -<translation id="298306318844797842">పేమెంట్ ఆప్షన్ను జోడించు...</translation> +<translation id="298306318844797842">పేమెంట్ ఆప్షన్ను జోడించండి...</translation> <translation id="2989805286512600854">కొత్త ట్యాబ్లో తెరువు</translation> <translation id="3020183492814296499">షార్ట్కట్లు</translation> <translation id="3037605927509011580">ఆవ్, స్నాప్!</translation> @@ -286,8 +286,9 @@ <translation id="3130863904455712965">హిస్టరీ, ఇంకా మరెన్నో</translation> <translation id="3131206671572504478">అన్నీ బ్లాక్ చేయండి</translation> <translation id="313283613037595347">కొత్త అజ్ఞాత ట్యాబ్ను క్రియేట్ చేయండి.</translation> +<translation id="3146109040683991651">Chromeను ఆటోమేటిక్ బ్రౌజర్గా సెట్ చేయండి</translation> <translation id="3153862085237805241">కార్డ్ను సేవ్ చేయండి</translation> -<translation id="3157387275655328056">పఠన లిస్ట్కు జోడించు</translation> +<translation id="3157387275655328056">పఠన లిస్ట్కు జోడించండి</translation> <translation id="3157684681743766797">అన్నీ గుర్తు పెట్టు…</translation> <translation id="315778507796115851">హిస్టరీ</translation> <translation id="3169472444629675720">కనుగొను</translation> @@ -501,7 +502,7 @@ <ph name="BEGIN_LINK" />మరింత తెలుసుకోండి<ph name="END_LINK" /></translation> <translation id="4805759445554688327">చెల్లని కార్డ్ నంబర్</translation> <translation id="4808744395915275922">అప్డేట్లు</translation> -<translation id="4818522717893377262">భాషను జోడించు...</translation> +<translation id="4818522717893377262">భాషను జోడించండి...</translation> <translation id="481968316161811770">కుక్కీలు, సైట్ డేటా</translation> <translation id="4824497107140370669">{count,plural, =0{{domain}}=1{{domain}, ఇంకా మరో 1}other{{domain}, ఇంకా మరో {count}}}</translation> <translation id="4826218269716039351">థర్డ్-పార్టీని బ్లాక్ చేయండి</translation> @@ -704,7 +705,7 @@ <translation id="6284652193729350524"><ph name="LANGUAGE" />లోకి అనువాదం అందించే సూచన</translation> <translation id="6289501276895392862"><ph name="CHANNEL_NAME" />ను అన్-ఫాలో చేశారు</translation> <translation id="6293101329759844770">సురక్షిత బ్రౌజింగ్ ఆన్ చేయడానికి, <ph name="BEGIN_LINK" />Google సర్వీస్ల<ph name="END_LINK" />ను తెరిచి, 'సురక్షిత బ్రౌజింగ్'ను ట్యాప్ చేయండి.</translation> -<translation id="6321526113093607004">బుక్మార్క్లకు జోడించు</translation> +<translation id="6321526113093607004">బుక్మార్క్లకు జోడించండి</translation> <translation id="6324669097367352121">సైన్ ఇన్ సెట్టింగ్లు</translation> <translation id="6337234675334993532">ఎన్క్రిప్షన్</translation> <translation id="633809752005859102">వాస్తవంగా ఏదో తప్పు జరిగింది. మేము దానిపై పని చేస్తాము.</translation> @@ -842,7 +843,7 @@ <translation id="7172852049901402487">సెక్యూరిటీ సమస్యల నుండి మీ పాస్వర్డ్లను సురక్షితంగా ఉంచుకోండి</translation> <translation id="7173114856073700355">సెట్టింగ్లను తెరువు</translation> <translation id="7189598951263744875">షేర్ చేయండి...</translation> -<translation id="7192050974311852563">లాగ్ చేయడం ప్రారంభించు</translation> +<translation id="7192050974311852563">లాగ్ చేయడం ప్రారంభించండి</translation> <translation id="7203585745079012652">సమాధానాలను చదివి వినిపించు</translation> <translation id="7207023858769244910">సింక్ చేసి, మీ ఆసక్తుల ఆధారంగా కంటెంట్ను పొందండి.</translation> <translation id="721597782417389033">కార్డ్ మారుపేరు చెల్లదు</translation> @@ -910,7 +911,7 @@ <translation id="7781069478569868053">కొత్త ట్యాబ్ పేజీ</translation> <translation id="7781829728241885113">నిన్న</translation> <translation id="778855399387580014">కొత్త Chrome ట్యాబ్లో శోధనను ప్రారంభించండి.</translation> -<translation id="7791543448312431591">జోడించు</translation> +<translation id="7791543448312431591">జోడించండి</translation> <translation id="7807060072011926525">దీనిని Google అందించినది</translation> <translation id="7839985698273989086">ఆఫ్లైన్ పేజీ</translation> <translation id="7840771868269352570">మీరు ఎంచుకున్న అంశాలు తీసివేయబడతాయి.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb b/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb index 6063b603..e19c176 100644 --- a/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb
@@ -286,6 +286,7 @@ <translation id="3130863904455712965">記錄和其他</translation> <translation id="3131206671572504478">全部封鎖</translation> <translation id="313283613037595347">新增無痕式分頁。</translation> +<translation id="3146109040683991651">將 Chrome 設定為預設瀏覽器</translation> <translation id="3153862085237805241">儲存付款卡</translation> <translation id="3157387275655328056">新增至閱讀清單</translation> <translation id="3157684681743766797">標示全部…</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb b/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb index 562e192d..c95699fa 100644 --- a/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb
@@ -286,6 +286,7 @@ <translation id="3130863904455712965">歷史記錄和其他資料</translation> <translation id="3131206671572504478">全部封鎖</translation> <translation id="313283613037595347">新增無痕分頁。</translation> +<translation id="3146109040683991651">將 Chrome 設為預設瀏覽器</translation> <translation id="3153862085237805241">儲存卡片</translation> <translation id="3157387275655328056">加入閱讀清單</translation> <translation id="3157684681743766797">全部標示…</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zu.xtb b/ios/chrome/app/strings/resources/ios_strings_zu.xtb index 60d4bcbe..39f185a 100644 --- a/ios/chrome/app/strings/resources/ios_strings_zu.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_zu.xtb
@@ -286,6 +286,7 @@ <translation id="3130863904455712965">Umlando nokuningi</translation> <translation id="3131206671572504478">Vimbela konke</translation> <translation id="313283613037595347">Dala ithebhu ye-incognito entsha.</translation> +<translation id="3146109040683991651">Setha i-Chrome Njengebhrawuza Ezenzekalelayo</translation> <translation id="3153862085237805241">Londoloza ikhadi</translation> <translation id="3157387275655328056">Engeza kuhlu lokufunda</translation> <translation id="3157684681743766797">Maka konke...</translation>
diff --git a/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_browser_agent.mm b/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_browser_agent.mm index 8d2cad9..8ecd719 100644 --- a/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_browser_agent.mm +++ b/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_browser_agent.mm
@@ -15,15 +15,15 @@ #import "ios/chrome/browser/overlays/public/web_content_area/alert_overlay.h" #import "ios/chrome/browser/overlays/public/web_content_area/app_launcher_overlay.h" #import "ios/chrome/browser/overlays/public/web_content_area/http_auth_overlay.h" -#import "ios/chrome/browser/overlays/public/web_content_area/java_script_dialog_overlay.h" +#import "ios/chrome/browser/overlays/public/web_content_area/java_script_alert_dialog_overlay.h" +#import "ios/chrome/browser/overlays/public/web_content_area/java_script_confirm_dialog_overlay.h" +#import "ios/chrome/browser/overlays/public/web_content_area/java_script_prompt_dialog_overlay.h" #import "ios/chrome/browser/web_state_list/web_state_list.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support." #endif -using java_script_dialog_overlays::JavaScriptDialogRequest; - namespace { int GetTabId(const web::WebState* const web_state) { @@ -148,18 +148,12 @@ } else if (request->GetConfig< app_launcher_overlays::AppLaunchConfirmationRequest>()) { event.push_back(kBreadcrumbOverlayAppLaunch); - } else if (auto* js_dialog = request->GetConfig<JavaScriptDialogRequest>()) { - switch (js_dialog->type()) { - case web::JAVASCRIPT_DIALOG_TYPE_ALERT: - event.push_back(kBreadcrumbOverlayJsAlert); - break; - case web::JAVASCRIPT_DIALOG_TYPE_CONFIRM: - event.push_back(kBreadcrumbOverlayJsConfirm); - break; - case web::JAVASCRIPT_DIALOG_TYPE_PROMPT: - event.push_back(kBreadcrumbOverlayJsPrompt); - break; - } + } else if (request->GetConfig<JavaScriptAlertDialogRequest>()) { + event.push_back(kBreadcrumbOverlayJsAlert); + } else if (request->GetConfig<JavaScriptConfirmDialogRequest>()) { + event.push_back(kBreadcrumbOverlayJsConfirm); + } else if (request->GetConfig<JavaScriptPromptDialogRequest>()) { + event.push_back(kBreadcrumbOverlayJsPrompt); } else if (request->GetConfig<alert_overlays::AlertRequest>()) { event.push_back(kBreadcrumbOverlayAlert); } else {
diff --git a/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_browser_agent_unittest.mm b/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_browser_agent_unittest.mm index ed919ba..6a035b38 100644 --- a/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_browser_agent_unittest.mm +++ b/ios/chrome/browser/crash_report/breadcrumbs/breadcrumb_manager_browser_agent_unittest.mm
@@ -19,7 +19,9 @@ #import "ios/chrome/browser/overlays/public/overlay_request_queue.h" #import "ios/chrome/browser/overlays/public/web_content_area/app_launcher_overlay.h" #import "ios/chrome/browser/overlays/public/web_content_area/http_auth_overlay.h" -#import "ios/chrome/browser/overlays/public/web_content_area/java_script_dialog_overlay.h" +#import "ios/chrome/browser/overlays/public/web_content_area/java_script_alert_dialog_overlay.h" +#import "ios/chrome/browser/overlays/public/web_content_area/java_script_confirm_dialog_overlay.h" +#import "ios/chrome/browser/overlays/public/web_content_area/java_script_prompt_dialog_overlay.h" #import "ios/chrome/browser/overlays/test/fake_overlay_presentation_context.h" #import "ios/chrome/browser/ui/commands/command_dispatcher.h" #import "ios/chrome/browser/web_state_list/web_state_list.h" @@ -27,7 +29,6 @@ #import "ios/chrome/test/ios_chrome_scoped_testing_chrome_browser_state_manager.h" #import "ios/web/public/test/fakes/fake_web_state.h" #import "ios/web/public/test/web_task_environment.h" -#import "ios/web/public/ui/java_script_dialog_type.h" #import "ios/web/public/web_state.h" #import "testing/platform_test.h" @@ -173,12 +174,10 @@ OverlayRequestQueue* queue = OverlayRequestQueue::FromWebState( browser_->GetWebStateList()->GetWebStateAt(0), OverlayModality::kWebContentArea); - queue->AddRequest(OverlayRequest::CreateWithConfig< - java_script_dialog_overlays::JavaScriptDialogRequest>( - web::JAVASCRIPT_DIALOG_TYPE_ALERT, - browser_->GetWebStateList()->GetWebStateAt(0), GURL::EmptyGURL(), - /*is_main_frame=*/true, @"message", - /*default_text_field_value=*/nil)); + queue->AddRequest( + OverlayRequest::CreateWithConfig<JavaScriptAlertDialogRequest>( + browser_->GetWebStateList()->GetWebStateAt(0), GURL::EmptyGURL(), + /*is_main_frame=*/true, @"message")); queue->CancelAllRequests(); const auto& events = GetEvents(); @@ -199,12 +198,10 @@ OverlayRequestQueue* queue = OverlayRequestQueue::FromWebState( browser_->GetWebStateList()->GetWebStateAt(0), OverlayModality::kWebContentArea); - queue->AddRequest(OverlayRequest::CreateWithConfig< - java_script_dialog_overlays::JavaScriptDialogRequest>( - web::JAVASCRIPT_DIALOG_TYPE_CONFIRM, - browser_->GetWebStateList()->GetWebStateAt(0), GURL::EmptyGURL(), - /*is_main_frame=*/true, @"message", - /*default_text_field_value=*/nil)); + queue->AddRequest( + OverlayRequest::CreateWithConfig<JavaScriptConfirmDialogRequest>( + browser_->GetWebStateList()->GetWebStateAt(0), GURL::EmptyGURL(), + /*is_main_frame=*/true, @"message")); queue->CancelAllRequests(); const auto& events = GetEvents(); @@ -225,12 +222,11 @@ OverlayRequestQueue* queue = OverlayRequestQueue::FromWebState( browser_->GetWebStateList()->GetWebStateAt(0), OverlayModality::kWebContentArea); - queue->AddRequest(OverlayRequest::CreateWithConfig< - java_script_dialog_overlays::JavaScriptDialogRequest>( - web::JAVASCRIPT_DIALOG_TYPE_PROMPT, - browser_->GetWebStateList()->GetWebStateAt(0), GURL::EmptyGURL(), - /*is_main_frame=*/true, @"message", - /*default_text_field_value=*/nil)); + queue->AddRequest( + OverlayRequest::CreateWithConfig<JavaScriptPromptDialogRequest>( + browser_->GetWebStateList()->GetWebStateAt(0), GURL::EmptyGURL(), + /*is_main_frame=*/true, @"message", + /*default_text_field_value=*/nil)); queue->CancelAllRequests(); const auto& events = GetEvents();
diff --git a/ios/chrome/browser/overlays/public/web_content_area/BUILD.gn b/ios/chrome/browser/overlays/public/web_content_area/BUILD.gn index 5c530c81..0649293 100644 --- a/ios/chrome/browser/overlays/public/web_content_area/BUILD.gn +++ b/ios/chrome/browser/overlays/public/web_content_area/BUILD.gn
@@ -14,8 +14,6 @@ "java_script_alert_dialog_overlay.mm", "java_script_confirm_dialog_overlay.h", "java_script_confirm_dialog_overlay.mm", - "java_script_dialog_overlay.h", - "java_script_dialog_overlay.mm", "java_script_dialog_overlay_utils.h", "java_script_dialog_overlay_utils.mm", "java_script_prompt_dialog_overlay.h", @@ -53,7 +51,6 @@ "http_auth_overlay_unittest.mm", "java_script_alert_dialog_overlay_unittest.mm", "java_script_confirm_dialog_overlay_unittest.mm", - "java_script_dialog_overlay_unittest.mm", "java_script_dialog_overlay_utils_unittest.mm", "java_script_prompt_dialog_overlay_unittest.mm", ]
diff --git a/ios/chrome/browser/overlays/public/web_content_area/java_script_dialog_overlay.h b/ios/chrome/browser/overlays/public/web_content_area/java_script_dialog_overlay.h deleted file mode 100644 index f7e3fde..0000000 --- a/ios/chrome/browser/overlays/public/web_content_area/java_script_dialog_overlay.h +++ /dev/null
@@ -1,82 +0,0 @@ -// Copyright 2020 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef IOS_CHROME_BROWSER_OVERLAYS_PUBLIC_WEB_CONTENT_AREA_JAVA_SCRIPT_DIALOG_OVERLAY_H_ -#define IOS_CHROME_BROWSER_OVERLAYS_PUBLIC_WEB_CONTENT_AREA_JAVA_SCRIPT_DIALOG_OVERLAY_H_ - -#include "base/memory/weak_ptr.h" -#include "ios/chrome/browser/overlays/public/overlay_request_config.h" -#include "ios/chrome/browser/overlays/public/overlay_response_info.h" -#include "ios/web/public/ui/java_script_dialog_type.h" -#include "ios/web/public/web_state.h" -#include "url/gurl.h" - -namespace java_script_dialog_overlays { - -// Configuration object for OverlayRequests for JavaScript dialogs. -class JavaScriptDialogRequest - : public OverlayRequestConfig<JavaScriptDialogRequest> { - public: - ~JavaScriptDialogRequest() override; - - web::JavaScriptDialogType type() const { return type_; } - web::WebState* web_state() const { return weak_web_state_.get(); } - const GURL& url() const { return url_; } - bool is_main_frame() const { return is_main_frame_; } - NSString* message() const { return message_; } - - // The default text shown in the text field. Only used for prompts. - NSString* default_text_field_value() const { - return default_text_field_value_; - } - - private: - OVERLAY_USER_DATA_SETUP(JavaScriptDialogRequest); - JavaScriptDialogRequest(web::JavaScriptDialogType type, - web::WebState* web_state, - const GURL& url, - bool is_main_frame, - NSString* message, - NSString* default_text_field_value); - - // OverlayUserData: - void CreateAuxiliaryData(base::SupportsUserData* user_data) override; - - const web::JavaScriptDialogType type_; - base::WeakPtr<web::WebState> weak_web_state_; - const GURL url_; - bool is_main_frame_; - NSString* message_ = nil; - NSString* default_text_field_value_ = nil; -}; - -// Response type used for JavaScript dialogs. -class JavaScriptDialogResponse - : public OverlayResponseInfo<JavaScriptDialogResponse> { - public: - ~JavaScriptDialogResponse() override; - - // The action selected by the user. - enum class Action : short { - kConfirm, // Used when the user taps the OK button on a dialog. - kCancel, // Used when the user taps the Cancel button on a dialog. - kBlockDialogs // Used when the user taps the blocking option on a dialog, - // indicating that subsequent dialogs from the page should be - // blocked. - }; - Action action() const { return action_; } - // The user input. - NSString* user_input() const { return user_input_; } - - private: - OVERLAY_USER_DATA_SETUP(JavaScriptDialogResponse); - JavaScriptDialogResponse(Action action, NSString* user_input); - - Action action_; - NSString* user_input_ = nil; -}; - -} // java_script_dialog_overlays - -#endif // IOS_CHROME_BROWSER_OVERLAYS_PUBLIC_WEB_CONTENT_AREA_JAVA_SCRIPT_DIALOG_OVERLAY_H_
diff --git a/ios/chrome/browser/overlays/public/web_content_area/java_script_dialog_overlay.mm b/ios/chrome/browser/overlays/public/web_content_area/java_script_dialog_overlay.mm deleted file mode 100644 index b4b54a1..0000000 --- a/ios/chrome/browser/overlays/public/web_content_area/java_script_dialog_overlay.mm +++ /dev/null
@@ -1,157 +0,0 @@ -// Copyright 2020 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#import "ios/chrome/browser/overlays/public/web_content_area/java_script_dialog_overlay.h" - -#import "base/bind.h" -#import "base/logging.h" -#import "components/strings/grit/components_strings.h" -#import "ios/chrome/browser/overlays/public/overlay_response.h" -#import "ios/chrome/browser/overlays/public/web_content_area/alert_constants.h" -#import "ios/chrome/browser/overlays/public/web_content_area/alert_overlay.h" -#import "ios/chrome/browser/ui/dialogs/java_script_dialog_blocking_state.h" -#import "ios/chrome/browser/ui/elements/text_field_configuration.h" -#import "ios/chrome/grit/ios_strings.h" -#import "ui/base/l10n/l10n_util.h" - -#if !defined(__has_feature) || !__has_feature(objc_arc) -#error "This file requires ARC support." -#endif - -using alert_overlays::AlertRequest; -using alert_overlays::AlertResponse; -using alert_overlays::ButtonConfig; - -namespace java_script_dialog_overlays { -namespace { -// The index of the OK button in the alert button array. -const size_t kButtonIndexOk = 0; - -// Whether a cancel button should be added for an overlay with `type`. -bool DialogsWithTypeUseCancelButtons(web::JavaScriptDialogType type) { - return type != web::JAVASCRIPT_DIALOG_TYPE_ALERT; -} - -// Whether the dialog blocking button should be added for an overlay from -// `source`. -bool ShouldAddBlockDialogsButton(web::WebState* web_state) { - if (!web_state) - return false; - JavaScriptDialogBlockingState* blocking_state = - JavaScriptDialogBlockingState::FromWebState(web_state); - return blocking_state && blocking_state->show_blocking_option(); -} - -// The index of the dialog blocking button for a dialog with `type`. -size_t GetBlockingOptionIndex(web::JavaScriptDialogType type) { - return DialogsWithTypeUseCancelButtons(type) ? 2 : 1; -} - -// Creates an JavaScript dialog response for a dialog with `type` from a -// response created with an AlertResponse. -std::unique_ptr<OverlayResponse> CreateJavaScriptDialogResponse( - web::JavaScriptDialogType type, - std::unique_ptr<OverlayResponse> response) { - AlertResponse* alert_response = response->GetInfo<AlertResponse>(); - if (!alert_response) - return nullptr; - - JavaScriptDialogResponse::Action action = - JavaScriptDialogResponse::Action::kCancel; - NSString* user_input = nil; - size_t button_index = alert_response->tapped_button_index(); - if (button_index == kButtonIndexOk) { - action = JavaScriptDialogResponse::Action::kConfirm; - user_input = [alert_response->text_field_values() firstObject]; - } else if (button_index == GetBlockingOptionIndex(type)) { - action = JavaScriptDialogResponse::Action::kBlockDialogs; - } - - return OverlayResponse::CreateWithInfo<JavaScriptDialogResponse>(action, - user_input); -} -} // namespace - -#pragma mark - JavaScriptDialogRequest - -OVERLAY_USER_DATA_SETUP_IMPL(JavaScriptDialogRequest); - -JavaScriptDialogRequest::JavaScriptDialogRequest( - web::JavaScriptDialogType type, - web::WebState* web_state, - const GURL& url, - bool is_main_frame, - NSString* message, - NSString* default_text_field_value) - : type_(type), - weak_web_state_(web_state->GetWeakPtr()), - url_(url), - is_main_frame_(is_main_frame), - message_(message), - default_text_field_value_(default_text_field_value) {} - -JavaScriptDialogRequest::~JavaScriptDialogRequest() = default; - -void JavaScriptDialogRequest::CreateAuxiliaryData( - base::SupportsUserData* user_data) { - NSString* accessibility_identifier = kJavaScriptDialogAccessibilityIdentifier; - - // If the dialog is from the main frame, use the message text as the alert's - // title. Otherwise, use a title indicating that the dialog is from an iframe - // and use the message text as the alert's message. - NSString* alert_title = nil; - NSString* alert_message = nil; - if (is_main_frame_) { - alert_title = message(); - } else { - alert_title = l10n_util::GetNSString( - IDS_JAVASCRIPT_MESSAGEBOX_TITLE_NONSTANDARD_URL_IFRAME); - alert_message = message(); - } - - // Add a text field with the default value for prompts. - NSArray<TextFieldConfiguration*>* text_field_configs = nil; - if (type() == web::JAVASCRIPT_DIALOG_TYPE_PROMPT) { - NSString* text_field_identifier = - kJavaScriptDialogTextFieldAccessibilityIdentifier; - text_field_configs = @[ [[TextFieldConfiguration alloc] - initWithText:default_text_field_value() - placeholder:nil - accessibilityIdentifier:text_field_identifier - autocapitalizationType:UITextAutocapitalizationTypeSentences - secureTextEntry:NO] ]; - } - - // Add the buttons. - std::vector<ButtonConfig> button_configs{ - ButtonConfig(l10n_util::GetNSString(IDS_OK))}; - if (DialogsWithTypeUseCancelButtons(type())) { - button_configs.push_back(ButtonConfig(l10n_util::GetNSString(IDS_CANCEL), - UIAlertActionStyleCancel)); - } - if (ShouldAddBlockDialogsButton(web_state())) { - NSString* action_title = - l10n_util::GetNSString(IDS_IOS_JAVA_SCRIPT_DIALOG_BLOCKING_BUTTON_TEXT); - button_configs.push_back( - ButtonConfig(action_title, UIAlertActionStyleDestructive)); - } - - // Create the alert config. - AlertRequest::CreateForUserData( - user_data, alert_title, alert_message, accessibility_identifier, - text_field_configs, button_configs, - base::BindRepeating(&CreateJavaScriptDialogResponse, type())); -} - -#pragma mark - JavaScriptDialogResponse - -OVERLAY_USER_DATA_SETUP_IMPL(JavaScriptDialogResponse); - -JavaScriptDialogResponse::JavaScriptDialogResponse(Action action, - NSString* user_input) - : action_(action), user_input_([user_input copy]) {} - -JavaScriptDialogResponse::~JavaScriptDialogResponse() = default; - -} // java_script_dialog_overlays
diff --git a/ios/chrome/browser/overlays/public/web_content_area/java_script_dialog_overlay_unittest.mm b/ios/chrome/browser/overlays/public/web_content_area/java_script_dialog_overlay_unittest.mm deleted file mode 100644 index 4568074..0000000 --- a/ios/chrome/browser/overlays/public/web_content_area/java_script_dialog_overlay_unittest.mm +++ /dev/null
@@ -1,242 +0,0 @@ -// Copyright 2020 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#import "ios/chrome/browser/overlays/public/web_content_area/java_script_dialog_overlay.h" - -#import "components/strings/grit/components_strings.h" -#import "ios/chrome/browser/overlays/public/overlay_request.h" -#import "ios/chrome/browser/overlays/public/overlay_response.h" -#import "ios/chrome/browser/overlays/public/web_content_area/alert_constants.h" -#import "ios/chrome/browser/overlays/public/web_content_area/alert_overlay.h" -#import "ios/chrome/browser/ui/dialogs/java_script_dialog_blocking_state.h" -#import "ios/chrome/browser/ui/elements/text_field_configuration.h" -#import "ios/chrome/grit/ios_strings.h" -#import "ios/web/public/test/fakes/fake_web_state.h" -#import "testing/gtest_mac.h" -#import "testing/platform_test.h" -#import "ui/base/l10n/l10n_util.h" -#import "url/gurl.h" - -#if !defined(__has_feature) || !__has_feature(objc_arc) -#error "This file requires ARC support." -#endif - -using alert_overlays::AlertRequest; -using alert_overlays::AlertResponse; -using alert_overlays::ButtonConfig; -using java_script_dialog_overlays::JavaScriptDialogRequest; -using java_script_dialog_overlays::JavaScriptDialogResponse; - -// Test fixture for JavaScript dialog overlays. -class JavaScriptDialogOverlayTest - : public testing::TestWithParam<web::JavaScriptDialogType> { - protected: - JavaScriptDialogOverlayTest() - : url_("http://www.chromium.test"), - message_(@"message"), - default_text_field_value_(@"default_text_field_value") {} - - std::unique_ptr<OverlayRequest> CreateRequest(bool is_main_frame = true) { - return OverlayRequest::CreateWithConfig<JavaScriptDialogRequest>( - GetParam(), &web_state_, url_, is_main_frame, message_, - default_text_field_value_); - } - - // Whether dialogs for this fixture's type have a cancel button. - bool DialogHasCancelButton() { - return GetParam() != web::JAVASCRIPT_DIALOG_TYPE_ALERT; - } - - // Whether dialogs for this fixture's type have a prompt. - bool DialogHasTextField() { - return GetParam() == web::JAVASCRIPT_DIALOG_TYPE_PROMPT; - } - - web::FakeWebState web_state_; - GURL url_; - NSString* message_ = nil; - NSString* default_text_field_value_ = nil; -}; - -// Tests that the alert config's values are set correctly for dialogs from the -// main frame. -TEST_P(JavaScriptDialogOverlayTest, MainFrameDialogTitleAndMessage) { - std::unique_ptr<OverlayRequest> request = CreateRequest(); - AlertRequest* config = request->GetConfig<AlertRequest>(); - ASSERT_TRUE(config); - - // Check the title and message strings. - EXPECT_NSEQ(message_, config->title()); - EXPECT_FALSE(config->message()); -} - -// Tests that the alert config's values are set correctly for dialogs from an -// iframe. -TEST_P(JavaScriptDialogOverlayTest, IFrameDialogTitleAndMessage) { - std::unique_ptr<OverlayRequest> request = - CreateRequest(/*is_main_frame=*/false); - AlertRequest* config = request->GetConfig<AlertRequest>(); - ASSERT_TRUE(config); - - // Check the title and message strings. - NSString* iframe_title = l10n_util::GetNSString( - IDS_JAVASCRIPT_MESSAGEBOX_TITLE_NONSTANDARD_URL_IFRAME); - EXPECT_NSEQ(iframe_title, config->title()); - EXPECT_NSEQ(message_, config->message()); -} - -// Tests that the text field configs are set up correctly. -TEST_P(JavaScriptDialogOverlayTest, TextFieldConfigSetup) { - std::unique_ptr<OverlayRequest> request = CreateRequest(); - AlertRequest* config = request->GetConfig<AlertRequest>(); - ASSERT_TRUE(config); - - // Check the text fields. - TextFieldConfiguration* text_field_config = - [config->text_field_configs() firstObject]; - if (DialogHasTextField()) { - EXPECT_TRUE(text_field_config); - EXPECT_FALSE(text_field_config.placeholder); - EXPECT_NSEQ(default_text_field_value_, text_field_config.text); - EXPECT_NSEQ(kJavaScriptDialogTextFieldAccessibilityIdentifier, - text_field_config.accessibilityIdentifier); - } else { - EXPECT_FALSE(text_field_config); - } -} - -// Tests that the button configs are set up correctly. -TEST_P(JavaScriptDialogOverlayTest, ButtonConfigSetup) { - std::unique_ptr<OverlayRequest> request = CreateRequest(); - AlertRequest* config = request->GetConfig<AlertRequest>(); - ASSERT_TRUE(config); - - // Check the button configs. - bool has_cancel_button = DialogHasCancelButton(); - const std::vector<ButtonConfig>& button_configs = config->button_configs(); - ASSERT_EQ(has_cancel_button ? 2U : 1U, button_configs.size()); - EXPECT_NSEQ(l10n_util::GetNSString(IDS_OK), button_configs[0].title); - EXPECT_EQ(UIAlertActionStyleDefault, button_configs[0].style); - if (has_cancel_button) { - EXPECT_NSEQ(l10n_util::GetNSString(IDS_CANCEL), button_configs[1].title); - EXPECT_EQ(UIAlertActionStyleCancel, button_configs[1].style); - } -} - -// Tests that the blocking option is successfully added. -TEST_P(JavaScriptDialogOverlayTest, BlockingOptionSetup) { - JavaScriptDialogBlockingState::CreateForWebState(&web_state_); - JavaScriptDialogBlockingState::FromWebState(&web_state_) - ->JavaScriptDialogWasShown(); - - std::unique_ptr<OverlayRequest> request = CreateRequest(); - AlertRequest* config = request->GetConfig<AlertRequest>(); - ASSERT_TRUE(config); - - // Check the dialog suppression button config. - const std::vector<ButtonConfig>& button_configs = config->button_configs(); - ASSERT_FALSE(button_configs.empty()); - NSString* blocking_option_title = - l10n_util::GetNSString(IDS_IOS_JAVA_SCRIPT_DIALOG_BLOCKING_BUTTON_TEXT); - EXPECT_NSEQ(blocking_option_title, button_configs.back().title); - EXPECT_EQ(UIAlertActionStyleDestructive, button_configs.back().style); -} - -// Tests that an alert response after tapping the OK button is correctly -// converted to a JavaScriptDialogResponse. -TEST_P(JavaScriptDialogOverlayTest, ResponseConversionOk) { - std::unique_ptr<OverlayRequest> request = CreateRequest(); - AlertRequest* config = request->GetConfig<AlertRequest>(); - ASSERT_TRUE(config); - - // Simulate a response where the OK button is tapped. - NSString* user_input = @"user_input"; - std::unique_ptr<OverlayResponse> alert_response = - OverlayResponse::CreateWithInfo<AlertResponse>( - /*tapped_button_index=*/0, @[ user_input ]); - - // Since the OK button is tapped, the kConfirm action should be used and the - // text field input should be supplied to the JavaScriptDialogResponse. - std::unique_ptr<OverlayResponse> response = - config->response_converter().Run(std::move(alert_response)); - ASSERT_TRUE(response.get()); - - JavaScriptDialogResponse* dialog_response = - response->GetInfo<JavaScriptDialogResponse>(); - ASSERT_TRUE(dialog_response); - - EXPECT_EQ(JavaScriptDialogResponse::Action::kConfirm, - dialog_response->action()); - EXPECT_NSEQ(user_input, dialog_response->user_input()); -} - -// Tests that an alert response after tapping the Cancel button is correctly -// converted to a JavaScriptDialogResponse. -TEST_P(JavaScriptDialogOverlayTest, ResponseConversionCancel) { - if (!DialogHasCancelButton()) - return; - - std::unique_ptr<OverlayRequest> request = CreateRequest(); - AlertRequest* config = request->GetConfig<AlertRequest>(); - ASSERT_TRUE(config); - - // Simulate a response where the Cancel button is tapped. - NSString* user_input = @"user_input"; - std::unique_ptr<OverlayResponse> alert_response = - OverlayResponse::CreateWithInfo<AlertResponse>( - /*tapped_button_index=*/1, @[ user_input ]); - - // Since the Cancel button is tapped, the kCancel action should be used and - // the text field input should be nil. - std::unique_ptr<OverlayResponse> response = - config->response_converter().Run(std::move(alert_response)); - ASSERT_TRUE(response.get()); - - JavaScriptDialogResponse* dialog_response = - response->GetInfo<JavaScriptDialogResponse>(); - ASSERT_TRUE(dialog_response); - - EXPECT_EQ(JavaScriptDialogResponse::Action::kCancel, - dialog_response->action()); - EXPECT_FALSE(dialog_response->user_input()); -} - -// Tests that an alert response after tapping the blocking option is correctly -// converted to a JavaScriptDialogResponse. -TEST_P(JavaScriptDialogOverlayTest, ResponseConversionBlockDialogs) { - JavaScriptDialogBlockingState::CreateForWebState(&web_state_); - JavaScriptDialogBlockingState::FromWebState(&web_state_) - ->JavaScriptDialogWasShown(); - - std::unique_ptr<OverlayRequest> request = CreateRequest(); - AlertRequest* config = request->GetConfig<AlertRequest>(); - ASSERT_TRUE(config); - - // Simulate a response where the blocking option is tapped. - NSString* user_input = @"user_input"; - size_t blocking_option_button_index = config->button_configs().size() - 1; - std::unique_ptr<OverlayResponse> alert_response = - OverlayResponse::CreateWithInfo<AlertResponse>( - blocking_option_button_index, @[ user_input ]); - - // Since the Cancel button is tapped, the kBlockDialogs action should be used - // and the text field input should be nil. - std::unique_ptr<OverlayResponse> response = - config->response_converter().Run(std::move(alert_response)); - ASSERT_TRUE(response.get()); - - JavaScriptDialogResponse* dialog_response = - response->GetInfo<JavaScriptDialogResponse>(); - ASSERT_TRUE(dialog_response); - - EXPECT_EQ(JavaScriptDialogResponse::Action::kBlockDialogs, - dialog_response->action()); - EXPECT_FALSE(dialog_response->user_input()); -} - -INSTANTIATE_TEST_SUITE_P(/* No InstantiationName */, - JavaScriptDialogOverlayTest, - testing::Values(web::JAVASCRIPT_DIALOG_TYPE_ALERT, - web::JAVASCRIPT_DIALOG_TYPE_CONFIRM, - web::JAVASCRIPT_DIALOG_TYPE_PROMPT));
diff --git a/ios/chrome/browser/passwords/BUILD.gn b/ios/chrome/browser/passwords/BUILD.gn index a2729d6..3706d9b 100644 --- a/ios/chrome/browser/passwords/BUILD.gn +++ b/ios/chrome/browser/passwords/BUILD.gn
@@ -123,6 +123,8 @@ "ios_chrome_account_password_store_factory.mm", "ios_chrome_affiliation_service_factory.h", "ios_chrome_affiliation_service_factory.mm", + "ios_chrome_affiliations_prefetcher_factory.cc", + "ios_chrome_affiliations_prefetcher_factory.h", "ios_chrome_password_change_success_tracker_factory.cc", "ios_chrome_password_change_success_tracker_factory.h", "ios_chrome_password_reuse_manager_factory.cc",
diff --git a/ios/chrome/browser/passwords/ios_chrome_affiliations_prefetcher_factory.cc b/ios/chrome/browser/passwords/ios_chrome_affiliations_prefetcher_factory.cc new file mode 100644 index 0000000..1d96c3d0 --- /dev/null +++ b/ios/chrome/browser/passwords/ios_chrome_affiliations_prefetcher_factory.cc
@@ -0,0 +1,43 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ios/chrome/browser/passwords/ios_chrome_affiliations_prefetcher_factory.h" + +#include "base/no_destructor.h" +#include "components/keyed_service/ios/browser_state_dependency_manager.h" +#include "components/password_manager/core/browser/affiliation/affiliations_prefetcher.h" +#include "ios/chrome/browser/passwords/ios_chrome_affiliation_service_factory.h" +#include "ios/web/public/browser_state.h" + +IOSChromeAffiliationsPrefetcherFactory* +IOSChromeAffiliationsPrefetcherFactory::GetInstance() { + static base::NoDestructor<IOSChromeAffiliationsPrefetcherFactory> instance; + return instance.get(); +} + +password_manager::AffiliationsPrefetcher* +IOSChromeAffiliationsPrefetcherFactory::GetForBrowserState( + web::BrowserState* browser_state) { + return static_cast<password_manager::AffiliationsPrefetcher*>( + GetInstance()->GetServiceForBrowserState(browser_state, /*create=*/true)); +} + +IOSChromeAffiliationsPrefetcherFactory::IOSChromeAffiliationsPrefetcherFactory() + : BrowserStateKeyedServiceFactory( + "AffiliationsPrefetcher", + BrowserStateDependencyManager::GetInstance()) { + DependsOn(IOSChromeAffiliationServiceFactory::GetInstance()); +} + +IOSChromeAffiliationsPrefetcherFactory:: + ~IOSChromeAffiliationsPrefetcherFactory() = default; + +std::unique_ptr<KeyedService> +IOSChromeAffiliationsPrefetcherFactory::BuildServiceInstanceFor( + web::BrowserState* browser_state) const { + password_manager::AffiliationService* affiliation_service = + IOSChromeAffiliationServiceFactory::GetForBrowserState(browser_state); + return std::make_unique<password_manager::AffiliationsPrefetcher>( + affiliation_service); +}
diff --git a/ios/chrome/browser/passwords/ios_chrome_affiliations_prefetcher_factory.h b/ios/chrome/browser/passwords/ios_chrome_affiliations_prefetcher_factory.h new file mode 100644 index 0000000..7aa65bd --- /dev/null +++ b/ios/chrome/browser/passwords/ios_chrome_affiliations_prefetcher_factory.h
@@ -0,0 +1,33 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_BROWSER_PASSWORDS_IOS_CHROME_AFFILIATIONS_PREFETCHER_FACTORY_H_ +#define IOS_CHROME_BROWSER_PASSWORDS_IOS_CHROME_AFFILIATIONS_PREFETCHER_FACTORY_H_ + +#include "base/no_destructor.h" +#include "components/keyed_service/ios/browser_state_keyed_service_factory.h" + +namespace password_manager { +class AffiliationsPrefetcher; +} // namespace password_manager + +// Creates instances of AffiliationsPrefetcher per BrowserState. +class IOSChromeAffiliationsPrefetcherFactory + : public BrowserStateKeyedServiceFactory { + public: + static IOSChromeAffiliationsPrefetcherFactory* GetInstance(); + static password_manager::AffiliationsPrefetcher* GetForBrowserState( + web::BrowserState* browser_state); + + private: + friend class base::NoDestructor<IOSChromeAffiliationsPrefetcherFactory>; + + IOSChromeAffiliationsPrefetcherFactory(); + ~IOSChromeAffiliationsPrefetcherFactory() override; + + std::unique_ptr<KeyedService> BuildServiceInstanceFor( + web::BrowserState* browser_state) const override; +}; + +#endif // IOS_CHROME_BROWSER_PASSWORDS_IOS_CHROME_AFFILIATIONS_PREFETCHER_FACTORY_H_
diff --git a/ios/chrome/browser/passwords/ios_chrome_password_store_factory.mm b/ios/chrome/browser/passwords/ios_chrome_password_store_factory.mm index 6380f89..28854ed8 100644 --- a/ios/chrome/browser/passwords/ios_chrome_password_store_factory.mm +++ b/ios/chrome/browser/passwords/ios_chrome_password_store_factory.mm
@@ -12,6 +12,7 @@ #import "base/no_destructor.h" #import "components/keyed_service/core/service_access_type.h" #import "components/keyed_service/ios/browser_state_dependency_manager.h" +#import "components/password_manager/core/browser/affiliation/affiliations_prefetcher.h" #import "components/password_manager/core/browser/login_database.h" #import "components/password_manager/core/browser/password_manager_util.h" #import "components/password_manager/core/browser/password_store_built_in_backend.h" @@ -23,6 +24,7 @@ #import "ios/chrome/browser/browser_state/chrome_browser_state.h" #import "ios/chrome/browser/passwords/credentials_cleaner_runner_factory.h" #import "ios/chrome/browser/passwords/ios_chrome_affiliation_service_factory.h" +#import "ios/chrome/browser/passwords/ios_chrome_affiliations_prefetcher_factory.h" #import "ios/chrome/browser/passwords/ios_password_store_utils.h" #import "ios/chrome/browser/sync/sync_service_factory.h" #import "services/network/public/cpp/shared_url_loader_factory.h" @@ -62,6 +64,7 @@ BrowserStateDependencyManager::GetInstance()) { DependsOn(CredentialsCleanerRunnerFactory::GetInstance()); DependsOn(IOSChromeAffiliationServiceFactory::GetInstance()); + DependsOn(IOSChromeAffiliationsPrefetcherFactory::GetInstance()); } IOSChromePasswordStoreFactory::~IOSChromePasswordStoreFactory() {} @@ -94,6 +97,9 @@ DelayReportingPasswordStoreMetrics( ChromeBrowserState::FromBrowserState(context)); } + + IOSChromeAffiliationsPrefetcherFactory::GetForBrowserState(context) + ->RegisterPasswordStore(store.get()); return store; }
diff --git a/ios/chrome/browser/prerender/preload_controller.mm b/ios/chrome/browser/prerender/preload_controller.mm index badc23a..f414196 100644 --- a/ios/chrome/browser/prerender/preload_controller.mm +++ b/ios/chrome/browser/prerender/preload_controller.mm
@@ -126,13 +126,30 @@ } // web::JavaScriptDialogPresenter: - void RunJavaScriptDialog(web::WebState* web_state, - const GURL& origin_url, - web::JavaScriptDialogType dialog_type, - NSString* message_text, - NSString* default_prompt_text, - web::DialogClosedCallback callback) override { - std::move(callback).Run(NO, nil); + void RunJavaScriptAlertDialog(web::WebState* web_state, + const GURL& origin_url, + NSString* message_text, + base::OnceClosure callback) override { + std::move(callback).Run(); + [cancel_handler_ schedulePrerenderCancel]; + } + + void RunJavaScriptConfirmDialog( + web::WebState* web_state, + const GURL& origin_url, + NSString* message_text, + base::OnceCallback<void(bool success)> callback) override { + std::move(callback).Run(/*success=*/false); + [cancel_handler_ schedulePrerenderCancel]; + } + + void RunJavaScriptPromptDialog( + web::WebState* web_state, + const GURL& origin_url, + NSString* message_text, + NSString* default_prompt_text, + base::OnceCallback<void(NSString* user_input)> callback) override { + std::move(callback).Run(/*user_input=*/nil); [cancel_handler_ schedulePrerenderCancel]; }
diff --git a/ios/chrome/browser/providers/BUILD.gn b/ios/chrome/browser/providers/BUILD.gn index 48df5eb..95bf066c 100644 --- a/ios/chrome/browser/providers/BUILD.gn +++ b/ios/chrome/browser/providers/BUILD.gn
@@ -49,6 +49,7 @@ "//ios/chrome/browser/providers/push_notification:chromium_push_notification", "//ios/chrome/browser/providers/risk_data:chromium_risk_data", "//ios/chrome/browser/providers/signin:chromium_signin_error", + "//ios/chrome/browser/providers/signin:chromium_signin_identity", "//ios/chrome/browser/providers/signin:chromium_signin_resources", "//ios/chrome/browser/providers/signin:chromium_signin_sso", "//ios/chrome/browser/providers/signin:chromium_trusted_vault",
diff --git a/ios/chrome/browser/providers/signin/BUILD.gn b/ios/chrome/browser/providers/signin/BUILD.gn index d0a5e34..eb5325d 100644 --- a/ios/chrome/browser/providers/signin/BUILD.gn +++ b/ios/chrome/browser/providers/signin/BUILD.gn
@@ -12,6 +12,16 @@ frameworks = [ "Foundation.framework" ] } +source_set("chromium_signin_identity") { + configs += [ "//build/config/compiler:enable_arc" ] + sources = [ "chromium_signin_identity.mm" ] + deps = [ + "//base", + "//ios/public/provider/chrome/browser/signin:signin_identity_api", + ] + frameworks = [ "Foundation.framework" ] +} + source_set("chromium_signin_resources") { configs += [ "//build/config/compiler:enable_arc" ] sources = [ "chromium_signin_resources.mm" ]
diff --git a/ios/chrome/browser/providers/signin/chromium_signin_identity.mm b/ios/chrome/browser/providers/signin/chromium_signin_identity.mm new file mode 100644 index 0000000..ae9c477 --- /dev/null +++ b/ios/chrome/browser/providers/signin/chromium_signin_identity.mm
@@ -0,0 +1,204 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "ios/public/provider/chrome/browser/signin/signin_identity_api.h" + +#import "base/bind.h" +#import "base/callback_helpers.h" +#import "base/notreached.h" +#import "base/task/sequenced_task_runner.h" + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +namespace ios { +namespace provider { +namespace { + +// Null implementation of SystemIdentityManager. +// +// Since this object never returns any identities, none of the method that +// take an identity as a parameter should be called (since all identities +// must be obtained from the SystemIdentityManager) and thus they assert. +// +// The existence of this object simplify SystemIdentityManager usage as the +// client code does not have to check that the object exists. +class ChromiumSystemIdentityManager final : public SystemIdentityManager { + public: + ChromiumSystemIdentityManager(); + ~ChromiumSystemIdentityManager() final; + + // SystemIdentityManager implementation. + bool HandleSessionOpenURLContexts( + UIScene* scene, + NSSet<UIOpenURLContext*>* url_contexts) final; + void ApplicationDidDiscardSceneSessions( + NSSet<UISceneSession*>* scene_sessions) final; + void DismissDialogs() final; + DismissViewCallback PresentAccountDetailsController( + id<SystemIdentity> identity, + UIViewController* view_controller, + bool animated) final; + DismissViewCallback PresentWebAndAppSettingDetailsController( + id<SystemIdentity> identity, + UIViewController* view_controller, + bool animated) final; + id<SystemIdentityInteractionManager> CreateInteractionManager() final; + void IterateOverIdentities(IdentityIteratorCallback callback) final; + void ForgetIdentity(id<SystemIdentity> identity, + ForgetIdentityCallback callback) final; + void GetAccessToken(id<SystemIdentity> identity, + const std::set<std::string>& scopes, + AccessTokenCallback callback) final; + void GetAccessToken(id<SystemIdentity> identity, + const std::string& client_id, + const std::set<std::string>& scopes, + AccessTokenCallback callback) final; + void FetchAvatarForIdentity(id<SystemIdentity> identity) final; + UIImage* GetCachedAvatarForIdentity(id<SystemIdentity> identity) final; + void GetHostedDomain(id<SystemIdentity> identity, + HostedDomainCallback callback) final; + NSString* GetCachedHostedDomainForIdentity(id<SystemIdentity> identity) final; + void FetchCapabilities(id<SystemIdentity> identity, + const std::set<std::string>& names, + FetchCapabilitiesCallback callback) final; + bool HandleMDMNotification(id<SystemIdentity> identity, + id<RefreshAccessTokenError> error, + HandleMDMCallback callback) final; + bool IsMDMError(id<SystemIdentity> identity, NSError* error) final; +}; + +ChromiumSystemIdentityManager::ChromiumSystemIdentityManager() = default; + +ChromiumSystemIdentityManager::~ChromiumSystemIdentityManager() = default; + +bool ChromiumSystemIdentityManager::HandleSessionOpenURLContexts( + UIScene* scene, + NSSet<UIOpenURLContext*>* url_contexts) { + // Nothing to do. + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + return false; +} + +void ChromiumSystemIdentityManager::ApplicationDidDiscardSceneSessions( + NSSet<UISceneSession*>* scene_sessions) { + // Nothing to do. + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +} + +void ChromiumSystemIdentityManager::DismissDialogs() { + // Nothing to do. + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +} + +SystemIdentityManager::DismissViewCallback +ChromiumSystemIdentityManager::PresentAccountDetailsController( + id<SystemIdentity> identity, + UIViewController* view_controller, + bool animated) { + NOTREACHED(); + return {}; +} + +SystemIdentityManager::DismissViewCallback +ChromiumSystemIdentityManager::PresentWebAndAppSettingDetailsController( + id<SystemIdentity> identity, + UIViewController* view_controller, + bool animated) { + NOTREACHED(); + return {}; +} + +id<SystemIdentityInteractionManager> +ChromiumSystemIdentityManager::CreateInteractionManager() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + return nil; +} + +void ChromiumSystemIdentityManager::IterateOverIdentities( + IdentityIteratorCallback callback) { + // Nothing to do, there is no identities. + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +} + +void ChromiumSystemIdentityManager::ForgetIdentity( + id<SystemIdentity> identity, + ForgetIdentityCallback callback) { + NOTREACHED(); +} + +void ChromiumSystemIdentityManager::GetAccessToken( + id<SystemIdentity> identity, + const std::set<std::string>& scopes, + AccessTokenCallback callback) { + NOTREACHED(); +} + +void ChromiumSystemIdentityManager::GetAccessToken( + id<SystemIdentity> identity, + const std::string& client_id, + const std::set<std::string>& scopes, + AccessTokenCallback callback) { + NOTREACHED(); +} + +void ChromiumSystemIdentityManager::FetchAvatarForIdentity( + id<SystemIdentity> identity) { + NOTREACHED(); +} + +UIImage* ChromiumSystemIdentityManager::GetCachedAvatarForIdentity( + id<SystemIdentity> identity) { + NOTREACHED(); + return nil; +} + +void ChromiumSystemIdentityManager::GetHostedDomain( + id<SystemIdentity> identity, + HostedDomainCallback callback) { + NOTREACHED(); +} + +NSString* ChromiumSystemIdentityManager::GetCachedHostedDomainForIdentity( + id<SystemIdentity> identity) { + NOTREACHED(); + return @""; +} + +void ChromiumSystemIdentityManager::FetchCapabilities( + id<SystemIdentity> identity, + const std::set<std::string>& names, + FetchCapabilitiesCallback callback) { + NOTREACHED(); +} + +bool ChromiumSystemIdentityManager::HandleMDMNotification( + id<SystemIdentity> identity, + id<RefreshAccessTokenError> error, + HandleMDMCallback callback) { + NOTREACHED(); + return false; +} + +bool ChromiumSystemIdentityManager::IsMDMError(id<SystemIdentity> identity, + NSError* error) { + NOTREACHED(); + return false; +} + +} // anonymous namespace + +bool IsSigninSupported() { + return false; +} + +std::unique_ptr<SystemIdentityManager> CreateSystemIdentityManager( + id<SingleSignOnService> sso_service) { + // Signin is not supported in Chromium, return a null object. + return std::make_unique<ChromiumSystemIdentityManager>(); +} + +} // namespace provider +} // namespace ios
diff --git a/ios/chrome/browser/sessions/session_service_ios.h b/ios/chrome/browser/sessions/session_service_ios.h index 0210645b..f208d8f 100644 --- a/ios/chrome/browser/sessions/session_service_ios.h +++ b/ios/chrome/browser/sessions/session_service_ios.h
@@ -9,6 +9,7 @@ #include "base/callback.h" #include "base/files/file_path.h" +#include "base/ios/block_types.h" #include "base/task/sequenced_task_runner.h" @class SessionIOS; @@ -27,9 +28,9 @@ (const scoped_refptr<base::SequencedTaskRunner>&)taskRunner NS_DESIGNATED_INITIALIZER; -// Block until task runner is complete. Should only be used by fast terminate -// experiment. -- (void)shutdown; +// Block and call `completion` when task runner is complete. Should only be used +// by fast terminate experiment. +- (void)shutdownWithCompletion:(ProceduralBlock)completion; // Saves the session (list of tabs) returned by `factory`. The save location // is derived from the scene identifier `sessionID` and the ChromeBrowserState
diff --git a/ios/chrome/browser/sessions/session_service_ios.mm b/ios/chrome/browser/sessions/session_service_ios.mm index e5f3a2b..a217d4c3 100644 --- a/ios/chrome/browser/sessions/session_service_ios.mm +++ b/ios/chrome/browser/sessions/session_service_ios.mm
@@ -99,12 +99,8 @@ return self; } -- (void)shutdown { - dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); - _taskRunner->PostTask(FROM_HERE, base::BindOnce(^{ - dispatch_semaphore_signal(semaphore); - })); - dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); +- (void)shutdownWithCompletion:(ProceduralBlock)completion { + _taskRunner->PostTask(FROM_HERE, base::BindOnce(completion)); } - (void)saveSession:(__weak SessionIOSFactory*)factory
diff --git a/ios/chrome/browser/signin/BUILD.gn b/ios/chrome/browser/signin/BUILD.gn index e4288d8..530e15d0a 100644 --- a/ios/chrome/browser/signin/BUILD.gn +++ b/ios/chrome/browser/signin/BUILD.gn
@@ -181,9 +181,44 @@ ] } +source_set("fake_system_identity_manager") { + testonly = true + configs += [ "//build/config/compiler:enable_arc" ] + sources = [ + "fake_refresh_access_token_error.h", + "fake_refresh_access_token_error.mm", + "fake_system_identity_details.h", + "fake_system_identity_details.mm", + "fake_system_identity_interaction_manager.h", + "fake_system_identity_interaction_manager.mm", + "fake_system_identity_manager.h", + "fake_system_identity_manager.mm", + "fake_system_identity_manager_storage.h", + "fake_system_identity_manager_storage.mm", + ] + public = [ + "fake_system_identity_interaction_manager.h", + "fake_system_identity_manager.h", + ] + public_deps = + [ "//ios/public/provider/chrome/browser/signin:signin_resources_api" ] + deps = [ + ":fake_account_details_view_controller", + ":fake_system_identity", + ":system_identity", + ":system_identity_manager", + "//google_apis", + "//ios/public/provider/chrome/browser/signin:signin_error_api", + ] + frameworks = [ "Foundation.framework" ] +} + source_set("fake_account_details_view_controller") { testonly = true - visibility = [ "//ios/public/provider/chrome/browser/signin:test_support" ] + visibility = [ + ":fake_system_identity_manager", + "//ios/public/provider/chrome/browser/signin:test_support", + ] configs += [ "//build/config/compiler:enable_arc" ] sources = [ "fake_account_details_view_controller.h",
diff --git a/ios/chrome/browser/signin/fake_refresh_access_token_error.h b/ios/chrome/browser/signin/fake_refresh_access_token_error.h new file mode 100644 index 0000000..e89f55d --- /dev/null +++ b/ios/chrome/browser/signin/fake_refresh_access_token_error.h
@@ -0,0 +1,29 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_BROWSER_SIGNIN_FAKE_REFRESH_ACCESS_TOKEN_ERROR_H_ +#define IOS_CHROME_BROWSER_SIGNIN_FAKE_REFRESH_ACCESS_TOKEN_ERROR_H_ + +#import <Foundation/Foundation.h> + +#include "ios/chrome/browser/signin/refresh_access_token_error.h" +#include "ios/chrome/browser/signin/system_identity_manager.h" + +using HandleMDMNotificationCallback = + base::RepeatingCallback<void(SystemIdentityManager::HandleMDMCallback)>; + +// Fake implementation of RefreshAccessTokenError. +@interface FakeRefreshAccessTokenError : NSObject <RefreshAccessTokenError> + +- (instancetype)initWithCallback:(HandleMDMNotificationCallback)callback + NS_DESIGNATED_INITIALIZER; + +- (instancetype)init NS_UNAVAILABLE; + +// Callback passed to the initializer. +@property(nonatomic, readonly) HandleMDMNotificationCallback callback; + +@end + +#endif // IOS_CHROME_BROWSER_SIGNIN_FAKE_REFRESH_ACCESS_TOKEN_ERROR_H_
diff --git a/ios/chrome/browser/signin/fake_refresh_access_token_error.mm b/ios/chrome/browser/signin/fake_refresh_access_token_error.mm new file mode 100644 index 0000000..573311c --- /dev/null +++ b/ios/chrome/browser/signin/fake_refresh_access_token_error.mm
@@ -0,0 +1,33 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "ios/chrome/browser/signin/fake_refresh_access_token_error.h" + +#import "base/mac/foundation_util.h" + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +@implementation FakeRefreshAccessTokenError + +- (instancetype)initWithCallback:(HandleMDMNotificationCallback)callback { + if ((self = [super init])) { + DCHECK(!callback.is_null()); + _callback = callback; + } + return self; +} + +#pragma mark - RefreshAccessTokenError + +- (BOOL)isInvalidGrantError { + return NO; +} + +- (BOOL)isEqualToError:(id<RefreshAccessTokenError>)error { + return self == error; +} + +@end
diff --git a/ios/chrome/browser/signin/fake_system_identity.h b/ios/chrome/browser/signin/fake_system_identity.h index 04661f95..851190260 100644 --- a/ios/chrome/browser/signin/fake_system_identity.h +++ b/ios/chrome/browser/signin/fake_system_identity.h
@@ -41,6 +41,10 @@ gaiaID:(NSString*)gaiaID name:(NSString*)name; +// Returns a SystemIdentity based on `name` and `domain`. All other +// values will be derived from those. ++ (instancetype)identityWithName:(NSString*)name domain:(NSString*)domain; + // Redeclared as readwrite. @property(strong, nonatomic, readwrite) NSString* userEmail; @property(strong, nonatomic, readwrite) NSString* gaiaID;
diff --git a/ios/chrome/browser/signin/fake_system_identity.mm b/ios/chrome/browser/signin/fake_system_identity.mm index 2cde2358..552ee05 100644 --- a/ios/chrome/browser/signin/fake_system_identity.mm +++ b/ios/chrome/browser/signin/fake_system_identity.mm
@@ -79,6 +79,31 @@ name:name]; } ++ (instancetype)identityWithName:(NSString*)name domain:(NSString*)domain { + DCHECK(name.length); + DCHECK(domain.length); + + NSString* gaiaID = nil; + NSString* email = [NSString stringWithFormat:@"%@@%@", name, domain]; + if ([domain isEqualToString:@"gmail.com"]) { + // Consumer domain, use "%(name)ID" as Gaia ID. + gaiaID = [NSString stringWithFormat:@"%@ID", name]; + } else if ([domain isEqualToString:@"google.com"]) { + // Managed domain, use "%(name)ManagedID" as Gaia ID. + gaiaID = [NSString stringWithFormat:@"%@ManagedID", name]; + } else { + // Other domain, include the domain in the Gaia ID, replacing "." with "-". + gaiaID = [NSString + stringWithFormat:@"%@-%@-ID", name, + [domain stringByReplacingOccurrencesOfString:@"." + withString:@"-"]]; + } + + return [[FakeSystemIdentity alloc] initWithEmail:email + gaiaID:gaiaID + name:name]; +} + - (instancetype)initWithEmail:(NSString*)email gaiaID:(NSString*)gaiaID name:(NSString*)name {
diff --git a/ios/chrome/browser/signin/fake_system_identity_details.h b/ios/chrome/browser/signin/fake_system_identity_details.h new file mode 100644 index 0000000..964680f --- /dev/null +++ b/ios/chrome/browser/signin/fake_system_identity_details.h
@@ -0,0 +1,39 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_BROWSER_SIGNIN_FAKE_SYSTEM_IDENTITY_DETAILS_H_ +#define IOS_CHROME_BROWSER_SIGNIN_FAKE_SYSTEM_IDENTITY_DETAILS_H_ + +#import <UIKit/UIKit.h> + +@class FakeRefreshAccessTokenError; +@protocol SystemIdentity; + +// Helper object used by FakeSystemIdentityManager to attach state to +// a SystemIdentity object via an association. +@interface FakeSystemIdentityDetails : NSObject + +// The identity. +@property(nonatomic, readonly, strong) id<SystemIdentity> identity; + +// The capabilities for the associated SystemIdentity. May be nil. +@property(nonatomic, copy) NSDictionary<NSString*, NSNumber*>* capabilities; + +// The avatar cached for the associated SystemIdentity. May be nil. +@property(nonatomic, strong) UIImage* cachedAvatar; + +// If non-nil, fetching access token for the associated SystemIdentity +// will be considered as failing, and the `error` value will be passed +// to the observers. +@property(nonatomic, strong) FakeRefreshAccessTokenError* error; + +// Designated initializer. +- (instancetype)initWithIdentity:(id<SystemIdentity>)identity + NS_DESIGNATED_INITIALIZER; + +- (instancetype)init NS_UNAVAILABLE; + +@end + +#endif // IOS_CHROME_BROWSER_SIGNIN_FAKE_SYSTEM_IDENTITY_DETAILS_H_
diff --git a/ios/chrome/browser/signin/fake_system_identity_details.mm b/ios/chrome/browser/signin/fake_system_identity_details.mm new file mode 100644 index 0000000..de6e348 --- /dev/null +++ b/ios/chrome/browser/signin/fake_system_identity_details.mm
@@ -0,0 +1,23 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "ios/chrome/browser/signin/fake_system_identity_details.h" + +#import "base/check.h" + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +@implementation FakeSystemIdentityDetails + +- (instancetype)initWithIdentity:(id<SystemIdentity>)identity { + if ((self = [super init])) { + _identity = identity; + DCHECK(_identity); + } + return self; +} + +@end
diff --git a/ios/chrome/browser/signin/fake_system_identity_interaction_manager.h b/ios/chrome/browser/signin/fake_system_identity_interaction_manager.h new file mode 100644 index 0000000..7a64572 --- /dev/null +++ b/ios/chrome/browser/signin/fake_system_identity_interaction_manager.h
@@ -0,0 +1,44 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_BROWSER_SIGNIN_FAKE_SYSTEM_IDENTITY_INTERACTION_MANAGER_H_ +#define IOS_CHROME_BROWSER_SIGNIN_FAKE_SYSTEM_IDENTITY_INTERACTION_MANAGER_H_ + +#import <Foundation/Foundation.h> + +#include "base/memory/weak_ptr.h" +#include "ios/chrome/browser/signin/system_identity_interaction_manager.h" + +class FakeSystemIdentityManager; + +@interface FakeSystemIdentityInteractionManager + : NSObject <SystemIdentityInteractionManager> + +- (instancetype)initWithManager: + (base::WeakPtr<FakeSystemIdentityManager>)manager NS_DESIGNATED_INITIALIZER; + +- (instancetype)init NS_UNAVAILABLE; + +// Simulates the user tapping the sign-in button. +- (void)simulateDidTapAddAccount; + +// Simulates the user tapping the cancel button. +- (void)simulateDidTapCancel; + +// Simulates the user encountering an error not handled by SystemIdentity. +- (void)simulateDidThrowUnhandledError; + +// Simulates the auth activity being interrupted. +- (void)simulateDidInterrupt; + +// Returns whether the activity view is presented. +@property(nonatomic, readonly) BOOL isActivityViewPresented; + +// Stores the identity to use when sign-in tap is simulated. Must be non +// nil before calling `-simulateDidTapAddAccount` method. +@property(nonatomic, strong) id<SystemIdentity> identity; + +@end + +#endif // IOS_CHROME_BROWSER_SIGNIN_FAKE_SYSTEM_IDENTITY_INTERACTION_MANAGER_H_
diff --git a/ios/chrome/browser/signin/fake_system_identity_interaction_manager.mm b/ios/chrome/browser/signin/fake_system_identity_interaction_manager.mm new file mode 100644 index 0000000..36d620f --- /dev/null +++ b/ios/chrome/browser/signin/fake_system_identity_interaction_manager.mm
@@ -0,0 +1,249 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "ios/chrome/browser/signin/fake_system_identity_interaction_manager.h" + +#import <UIKit/UIKit.h> + +#import "ios/chrome/browser/signin/fake_system_identity_manager.h" +#import "ios/public/provider/chrome/browser/signin/signin_error_api.h" + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +@interface FakeAuthActivityViewController : UIViewController + +- (instancetype)initWithManager:(FakeSystemIdentityInteractionManager*)manager + NS_DESIGNATED_INITIALIZER; + +- (instancetype)initWithCoder:(NSCoder*)coder NS_UNAVAILABLE; + +- (instancetype)initWithNibName:(NSString*)nibNameOrNil + bundle:(NSBundle*)nibBundleOrNil NS_UNAVAILABLE; + +@end + +@implementation FakeAuthActivityViewController { + __weak FakeSystemIdentityInteractionManager* _manager; + UIButton* _cancelButton; + UIButton* _signInButton; +} + +- (instancetype)initWithManager:(FakeSystemIdentityInteractionManager*)manager { + if ((self = [super initWithNibName:nil bundle:nil])) { + _manager = manager; + } + return self; +} + +#pragma mark - NSObject + +- (void)dealloc { + [_signInButton removeTarget:self + action:@selector(didTapSignIn:) + forControlEvents:UIControlEventTouchUpInside]; + [_cancelButton removeTarget:self + action:@selector(didTapCancel:) + forControlEvents:UIControlEventTouchUpInside]; +} + +#pragma mark - UIViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + + // Obnovious color, this is a test screen. + UIView* mainView = self.view; + mainView.backgroundColor = [UIColor magentaColor]; + mainView.accessibilityIdentifier = @"FakeAddAccountViewIdentifier"; + + // TODO(crbug.com/1400696): Since those buttons have no accessibility + // identitifer, EarlGrey probably can't interact with them. So they + // likely are not useful (unless EarlGrey select them by their title). + // + // Investigate whether they can be removed or whether they should be + // given accessibility identifier to allow EarlGrey to interact with + // them. + _signInButton = [self addButtonWithTitle:@"Sign in" + action:@selector(didTapSignIn:) + accessibilitIdentifier:nil]; + + _cancelButton = [self addButtonWithTitle:@"Cancel" + action:@selector(didTapCancel:) + accessibilitIdentifier:@"cancel"]; +} + +- (void)viewWillLayoutSubviews { + [super viewWillLayoutSubviews]; + + const CGRect bounds = self.view.bounds; + const CGFloat midX = CGRectGetMidX(bounds); + const CGFloat midY = CGRectGetMidY(bounds); + + [self sizeButtonToFitWithCenter:CGPointMake(midX, midY - 50) + button:_signInButton]; + [self sizeButtonToFitWithCenter:CGPointMake(midX, midY + 50) + button:_cancelButton]; +} + +#pragma mark - Private methods + +- (UIButton*)addButtonWithTitle:(NSString*)title + action:(SEL)action + accessibilitIdentifier:(NSString*)accessibilityIdentitier { + UIButton* button = [UIButton buttonWithType:UIButtonTypeCustom]; + [button setTitle:title forState:UIControlStateNormal]; + [button setAccessibilityIdentifier:accessibilityIdentitier]; + [button addTarget:self + action:action + forControlEvents:UIControlEventTouchUpInside]; + [self.view addSubview:button]; + return button; +} + +- (void)sizeButtonToFitWithCenter:(CGPoint)center button:(UIButton*)button { + [button setCenter:center]; + [button sizeToFit]; +} + +- (void)didTapSignIn:(id)sender { + [_manager simulateDidTapAddAccount]; +} + +- (void)didTapCancel:(id)sender { + [_manager simulateDidTapCancel]; +} + +@end + +@implementation FakeSystemIdentityInteractionManager { + base::WeakPtr<FakeSystemIdentityManager> _manager; + SigninCompletionBlock _signinCompletion; + FakeAuthActivityViewController* _authActivityViewController; + BOOL _isActivityViewPresented; +} + +- (instancetype)initWithManager: + (base::WeakPtr<FakeSystemIdentityManager>)manager { + if ((self = [super init])) { + _manager = manager; + } + return self; +} + +- (void)simulateDidTapAddAccount { + using std::swap; + id<SystemIdentity> identity; + swap(_identity, identity); + + [self dismissAndRunCompletionCallbackWithError:nil + identity:identity + animated:YES + completion:nil]; +} + +- (void)simulateDidTapCancel { + [self cancelAuthActivityAnimated:YES completion:nil]; +} + +- (void)simulateDidThrowUnhandledError { + NSError* error = [NSError errorWithDomain:@"Unhandled" code:-1 userInfo:nil]; + [self dismissAndRunCompletionCallbackWithError:error + identity:nil + animated:YES + completion:nil]; +} + +- (void)simulateDidInterrupt { + // When the auth activity view is interrupted, its completion callback is + // invoked with the user cancel error. + [self simulateDidTapCancel]; +} + +#pragma mark - SystemIdentityInteractionManager + +- (void)startAuthActivityWithViewController:(UIViewController*)viewController + userEmail:(NSString*)userEmail + completion:(SigninCompletionBlock)completion { + _signinCompletion = completion; + _authActivityViewController = + [[FakeAuthActivityViewController alloc] initWithManager:self]; + + __weak FakeSystemIdentityInteractionManager* weakSelf = self; + [viewController presentViewController:_authActivityViewController + animated:YES + completion:^{ + [weakSelf onActivityViewPresented]; + }]; +} + +- (void)cancelAuthActivityAnimated:(BOOL)animated + completion:(ProceduralBlock)completion { + NSError* error = ios::provider::CreateUserCancelledSigninError(); + [self dismissAndRunCompletionCallbackWithError:error + identity:nil + animated:animated + completion:completion]; +} + +#pragma mark - Properties + +- (BOOL)isActivityViewPresented { + return _isActivityViewPresented; +} + +#pragma mark - Private methods + +- (void)dismissAndRunCompletionCallbackWithError:(NSError*)error + identity:(id<SystemIdentity>)identity + animated:(BOOL)animated + completion:(ProceduralBlock)completion { + DCHECK(_authActivityViewController); + DCHECK(_isActivityViewPresented); + DCHECK(error || identity) + << "An identity must be set to close the dialog successfully"; + + if (identity) { + FakeSystemIdentityManager* manager = _manager.get(); + if (manager) { + manager->AddIdentity(identity); + } else { + // Fail with an error if the identity manager has been destroyed. + error = [NSError errorWithDomain:@"RuntimeError" code:-1 userInfo:nil]; + identity = nil; + } + } + + __weak FakeSystemIdentityInteractionManager* weakSelf = self; + [_authActivityViewController.presentingViewController + dismissViewControllerAnimated:animated + completion:^{ + [weakSelf runCompletionCallbackWithError:error + identity:identity + completion:completion]; + }]; +} + +- (void)runCompletionCallbackWithError:(NSError*)error + identity:(id<SystemIdentity>)identity + completion:(ProceduralBlock)completion { + _authActivityViewController = nil; + if (_signinCompletion) { + SigninCompletionBlock signinCompletion = nil; + std::swap(_signinCompletion, signinCompletion); + signinCompletion(identity, error); + } + if (completion) { + completion(); + } + _isActivityViewPresented = NO; +} + +- (void)onActivityViewPresented { + DCHECK(!_isActivityViewPresented); + _isActivityViewPresented = YES; +} + +@end
diff --git a/ios/chrome/browser/signin/fake_system_identity_manager.h b/ios/chrome/browser/signin/fake_system_identity_manager.h new file mode 100644 index 0000000..2efea7be --- /dev/null +++ b/ios/chrome/browser/signin/fake_system_identity_manager.h
@@ -0,0 +1,163 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_BROWSER_SIGNIN_FAKE_SYSTEM_IDENTITY_MANAGER_H_ +#define IOS_CHROME_BROWSER_SIGNIN_FAKE_SYSTEM_IDENTITY_MANAGER_H_ + +#import <Foundation/Foundation.h> + +#include "base/callback.h" +#include "base/location.h" +#include "base/memory/weak_ptr.h" +#include "base/observer_list.h" +#include "base/sequence_checker.h" +#include "ios/chrome/browser/signin/system_identity_manager.h" +#include "ios/chrome/browser/signin/system_identity_manager_observer.h" + +@protocol SystemIdentity; +@class FakeSystemIdentityManagerStorage; + +// An implementation of SystemIdentityManager that is used during test. +// It allows faking the list of identities available on the system. +class FakeSystemIdentityManager final : public SystemIdentityManager { + public: + // Callback used to mock HandleMDMNotification for errors created with + // `CreateRefreshAccessTokenFailure()`. + using HandleMDMNotificationCallback = + base::RepeatingCallback<void(HandleMDMCallback)>; + + FakeSystemIdentityManager(); + explicit FakeSystemIdentityManager(NSArray<id<SystemIdentity>>* identities); + ~FakeSystemIdentityManager() final; + + // Converts `manager` into a `FakeSystemIdentityManager*` if possible + // or fail if the conversion is not valid. Must be used to get access + // to FakeSystemIdentityManager API in tests. + static FakeSystemIdentityManager* FromSystemIdentityManager( + SystemIdentityManager* manager); + + // Adds `identity` to the available idendities. + void AddIdentity(id<SystemIdentity> identity); + + // Adds fake identities given their names. + void AddIdentities(NSArray<NSString*>* names); + + // Adds fake managed identities given their names. + void AddManagedIdentities(NSArray<NSString*>* names); + + // Simulates `identity` removed from another application. + void ForgetIdentityFromOtherApplication(id<SystemIdentity> identity); + + // Adds a `capabilities` for `identity`. Requires the identity to have been + // added to the available identites first. + void SetCapabilities(id<SystemIdentity> identity, + NSDictionary<NSString*, NSNumber*>* capabilities); + + // Simulates reloading the identities from the keychain. + void FireSystemIdentityReloaded(); + + // Simulates an updated notification for `identity`. + void FireIdentityUpdatedNotification(id<SystemIdentity> identity); + + // Waits until all asynchronous callbacks have been completed. + void WaitForServiceCallbacksToComplete(); + + // Simulates a failure next time the access token for `identity` would be + // fetched and return the error that would be sent to the observers. The + // callback will be invoked each time `HandleMDMNotification()` is called + // with the returned error object. + // + // Only a single error can be scheduled, so if this method is called a + // second time without refreshing the access token, only the second error + // will be sent to the observers. + id<RefreshAccessTokenError> CreateRefreshAccessTokenFailure( + id<SystemIdentity> identity, + HandleMDMNotificationCallback callback); + + // SystemIdentityManager implementation. + bool HandleSessionOpenURLContexts( + UIScene* scene, + NSSet<UIOpenURLContext*>* url_contexts) final; + void ApplicationDidDiscardSceneSessions( + NSSet<UISceneSession*>* scene_sessions) final; + void DismissDialogs() final; + DismissViewCallback PresentAccountDetailsController( + id<SystemIdentity> identity, + UIViewController* view_controller, + bool animated) final; + DismissViewCallback PresentWebAndAppSettingDetailsController( + id<SystemIdentity> identity, + UIViewController* view_controller, + bool animated) final; + id<SystemIdentityInteractionManager> CreateInteractionManager() final; + void IterateOverIdentities(IdentityIteratorCallback callback) final; + void ForgetIdentity(id<SystemIdentity> identity, + ForgetIdentityCallback callback) final; + void GetAccessToken(id<SystemIdentity> identity, + const std::set<std::string>& scopes, + AccessTokenCallback callback) final; + void GetAccessToken(id<SystemIdentity> identity, + const std::string& client_id, + const std::set<std::string>& scopes, + AccessTokenCallback callback) final; + void FetchAvatarForIdentity(id<SystemIdentity> identity) final; + UIImage* GetCachedAvatarForIdentity(id<SystemIdentity> identity) final; + void GetHostedDomain(id<SystemIdentity> identity, + HostedDomainCallback callback) final; + NSString* GetCachedHostedDomainForIdentity(id<SystemIdentity> identity) final; + void FetchCapabilities(id<SystemIdentity> identity, + const std::set<std::string>& names, + FetchCapabilitiesCallback callback) final; + bool HandleMDMNotification(id<SystemIdentity> identity, + id<RefreshAccessTokenError> error, + HandleMDMCallback callback) final; + bool IsMDMError(id<SystemIdentity> identity, NSError* error) final; + + private: + // Returns a weak pointer to the current instance. + base::WeakPtr<FakeSystemIdentityManager> GetWeakPtr(); + + // Helper used to implement the asynchronous part of `ForgetIdentity`. + void ForgetIdentityAsync(id<SystemIdentity> identity, + ForgetIdentityCallback callback, + bool notify_user); + + // Helper used to implement the asynchronous part of `GetAccessToken`. + void GetAccessTokenAsync(id<SystemIdentity> identity, + AccessTokenCallback callback); + + // Helper used to implement the asynchronous part of `FetchAvatarForIdentity`. + void FetchAvatarForIdentityAsync(id<SystemIdentity> identity); + + // Helper used to implement the asynchronous part of `GetHostedDomain`. + void GetHostedDomainAsync(id<SystemIdentity> identity, + HostedDomainCallback callback); + + // Helper used to implement the asynchronous part of `GetHostedDomain`. + void FetchCapabilitiesAsync(id<SystemIdentity> identity, + const std::set<std::string>& names, + FetchCapabilitiesCallback callback); + + // Posts `closure` to be executed asynchronously on the current sequence + // while maintaining a counter of pending callbacks. The counter is used + // to implement `WaitForServiceCallbacksToComplete()`. + void PostClosure(base::Location from_here, base::OnceClosure closure); + + // Runs `closure` updating the counter of pending callbaks. Resume the + // execution of `WaitForServiceCallbacksToComplete()` when the counter + // reaches 0. + void ExecuteClosure(base::OnceClosure closure); + + // Counter of pending callback and closure used to resume the execution + // of `WaitForServiceCallbacksToComplete()` when the counter reaches 0. + size_t pending_callbacks_ = 0; + base::OnceClosure resume_closure_; + + // Stores identities. + __strong FakeSystemIdentityManagerStorage* storage_ = nil; + + base::WeakPtrFactory<FakeSystemIdentityManager> weak_ptr_factory_{this}; +}; + +#endif // IOS_CHROME_BROWSER_SIGNIN_FAKE_SYSTEM_IDENTITY_MANAGER_H_
diff --git a/ios/chrome/browser/signin/fake_system_identity_manager.mm b/ios/chrome/browser/signin/fake_system_identity_manager.mm new file mode 100644 index 0000000..532a059 --- /dev/null +++ b/ios/chrome/browser/signin/fake_system_identity_manager.mm
@@ -0,0 +1,429 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "ios/chrome/browser/signin/fake_system_identity_manager.h" + +#import "base/bind.h" +#import "base/run_loop.h" +#import "base/strings/sys_string_conversions.h" +#import "base/task/sequenced_task_runner.h" +#import "base/time/time.h" +#import "google_apis/gaia/gaia_auth_util.h" +#import "ios/chrome/browser/signin/fake_account_details_view_controller.h" +#import "ios/chrome/browser/signin/fake_refresh_access_token_error.h" +#import "ios/chrome/browser/signin/fake_system_identity.h" +#import "ios/chrome/browser/signin/fake_system_identity_details.h" +#import "ios/chrome/browser/signin/fake_system_identity_interaction_manager.h" +#import "ios/chrome/browser/signin/fake_system_identity_manager_storage.h" +#import "ios/chrome/browser/signin/refresh_access_token_error.h" +#import "ios/chrome/browser/signin/system_identity.h" +#import "ios/public/provider/chrome/browser/signin/signin_resources_api.h" + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +namespace { + +// Expiration duration of the fake access token returned by `GetAccessToken()`. +// Needs to be cover the execution of a typical test, as tests usually set up +// their mock to expect just one token request and rely on the tokens being +// served from cache. +constexpr base::TimeDelta kAccessTokenExpiration = base::Minutes(5); + +// Returns a hosted domain for identity. +NSString* FakeGetHostedDomainForIdentity(id<SystemIdentity> identity) { + return base::SysUTF8ToNSString( + gaia::ExtractDomainName(base::SysNSStringToUTF8(identity.userEmail))); +} + +// Stores a pointer to the last created FakeSystemIdentityManager*. Used to +// check whether the conversion is possible in `FromSystemIdentityManager()`. +FakeSystemIdentityManager* gFakeSystemIdentityManager = nullptr; + +} // anonymous namespace + +FakeSystemIdentityManager::FakeSystemIdentityManager() + : FakeSystemIdentityManager(nil) {} + +FakeSystemIdentityManager::FakeSystemIdentityManager( + NSArray<id<SystemIdentity>>* identities) + : storage_([[FakeSystemIdentityManagerStorage alloc] init]) { + DCHECK(!gFakeSystemIdentityManager); + gFakeSystemIdentityManager = this; + + for (id<SystemIdentity> identity in identities) { + [storage_ addIdentity:identity]; + } +} + +FakeSystemIdentityManager::~FakeSystemIdentityManager() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK_EQ(gFakeSystemIdentityManager, this); + gFakeSystemIdentityManager = nullptr; +} + +// static +FakeSystemIdentityManager* FakeSystemIdentityManager::FromSystemIdentityManager( + SystemIdentityManager* manager) { + DCHECK_EQ(gFakeSystemIdentityManager, manager); + return gFakeSystemIdentityManager; +} + +void FakeSystemIdentityManager::AddIdentity(id<SystemIdentity> identity) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + [storage_ addIdentity:identity]; + FireIdentityListChanged(/*notify_user*/ false); +} + +void FakeSystemIdentityManager::AddIdentities(NSArray<NSString*>* names) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + for (NSString* name in names) { + [storage_ addIdentity:[FakeSystemIdentity identityWithName:name + domain:@"gmail.com"]]; + } +} + +void FakeSystemIdentityManager::AddManagedIdentities( + NSArray<NSString*>* names) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + for (NSString* name in names) { + [storage_ addIdentity:[FakeSystemIdentity identityWithName:name + domain:@"google.com"]]; + } +} + +void FakeSystemIdentityManager::ForgetIdentityFromOtherApplication( + id<SystemIdentity> identity) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + if (![storage_ containsIdentity:identity]) + return; + + ForgetIdentityAsync(identity, base::DoNothing(), /*notify_user*/ true); +} + +void FakeSystemIdentityManager::SetCapabilities( + id<SystemIdentity> identity, + NSDictionary<NSString*, NSNumber*>* capabilities) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK([storage_ containsIdentity:identity]); + FakeSystemIdentityDetails* details = [storage_ detailsForIdentity:identity]; + details.capabilities = capabilities; +} + +void FakeSystemIdentityManager::FireSystemIdentityReloaded() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + FireIdentityListChanged(/*notify_user*/ true); +} + +void FakeSystemIdentityManager::FireIdentityUpdatedNotification( + id<SystemIdentity> identity) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + FireIdentityUpdated(identity); +} + +void FakeSystemIdentityManager::WaitForServiceCallbacksToComplete() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + while (pending_callbacks_) { + DCHECK(resume_closure_.is_null()); + + base::RunLoop run_loop; + resume_closure_ = run_loop.QuitClosure(); + run_loop.Run(); + } +} + +id<RefreshAccessTokenError> +FakeSystemIdentityManager::CreateRefreshAccessTokenFailure( + id<SystemIdentity> identity, + HandleMDMNotificationCallback callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK([storage_ containsIdentity:identity]); + FakeSystemIdentityDetails* details = [storage_ detailsForIdentity:identity]; + details.error = [[FakeRefreshAccessTokenError alloc] + initWithCallback:std::move(callback)]; + return details.error; +} + +bool FakeSystemIdentityManager::HandleSessionOpenURLContexts( + UIScene* scene, + NSSet<UIOpenURLContext*>* url_contexts) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + // Ignored. + return false; +} + +void FakeSystemIdentityManager::ApplicationDidDiscardSceneSessions( + NSSet<UISceneSession*>* scene_sessions) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + // Ignored. +} + +void FakeSystemIdentityManager::DismissDialogs() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + // Ignored. +} + +FakeSystemIdentityManager::DismissViewCallback +FakeSystemIdentityManager::PresentAccountDetailsController( + id<SystemIdentity> identity, + UIViewController* view_controller, + bool animated) { + UIViewController* account_details_view_controller = + [[FakeAccountDetailsViewController alloc] initWithIdentity:identity]; + [view_controller presentViewController:account_details_view_controller + animated:animated + completion:nil]; + + return base::BindOnce(^(BOOL dismiss_animated) { + [account_details_view_controller + dismissViewControllerAnimated:dismiss_animated + completion:nil]; + }); +} + +FakeSystemIdentityManager::DismissViewCallback +FakeSystemIdentityManager::PresentWebAndAppSettingDetailsController( + id<SystemIdentity> identity, + UIViewController* view_controller, + bool animated) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + return base::DoNothing(); +} + +id<SystemIdentityInteractionManager> +FakeSystemIdentityManager::CreateInteractionManager() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + return [[FakeSystemIdentityInteractionManager alloc] + initWithManager:GetWeakPtr()]; +} + +void FakeSystemIdentityManager::IterateOverIdentities( + IdentityIteratorCallback callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + for (FakeSystemIdentityDetails* details in storage_) { + if (callback.Run(details.identity) == IteratorResult::kInterruptIteration) + break; + } +} + +void FakeSystemIdentityManager::ForgetIdentity( + id<SystemIdentity> identity, + ForgetIdentityCallback callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + // Forgetting an identity is an asynchronous operation (as it requires some + // network calls). + PostClosure(FROM_HERE, + base::BindOnce(&FakeSystemIdentityManager::ForgetIdentityAsync, + GetWeakPtr(), identity, std::move(callback), + /*notify_user*/ false)); +} + +void FakeSystemIdentityManager::GetAccessToken( + id<SystemIdentity> identity, + const std::set<std::string>& scopes, + AccessTokenCallback callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + GetAccessToken(identity, /*client_id*/ {}, scopes, std::move(callback)); +} + +void FakeSystemIdentityManager::GetAccessToken( + id<SystemIdentity> identity, + const std::string& client_id, + const std::set<std::string>& scopes, + AccessTokenCallback callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + // Fetching the access token is an asynchronous operation (as it requires + // some network calls). + PostClosure(FROM_HERE, + base::BindOnce(&FakeSystemIdentityManager::GetAccessTokenAsync, + GetWeakPtr(), identity, std::move(callback))); +} + +void FakeSystemIdentityManager::FetchAvatarForIdentity( + id<SystemIdentity> identity) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + // Fetching the avatar is an asynchronous operation (as it requires some + // network calls). + PostClosure( + FROM_HERE, + base::BindOnce(&FakeSystemIdentityManager::FetchAvatarForIdentityAsync, + GetWeakPtr(), identity)); +} + +UIImage* FakeSystemIdentityManager::GetCachedAvatarForIdentity( + id<SystemIdentity> identity) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK([storage_ containsIdentity:identity]); + FakeSystemIdentityDetails* details = [storage_ detailsForIdentity:identity]; + return details.cachedAvatar; +} + +void FakeSystemIdentityManager::GetHostedDomain(id<SystemIdentity> identity, + HostedDomainCallback callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + // Fetching the hosted domain is an asynchronous operation (as it requires + // some network calls). + PostClosure(FROM_HERE, + base::BindOnce(&FakeSystemIdentityManager::GetHostedDomainAsync, + GetWeakPtr(), identity, std::move(callback))); +} + +NSString* FakeSystemIdentityManager::GetCachedHostedDomainForIdentity( + id<SystemIdentity> identity) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + NSString* domain = FakeGetHostedDomainForIdentity(identity); + return [domain isEqualToString:@"gmail.com"] ? @"" : domain; +} + +void FakeSystemIdentityManager::FetchCapabilities( + id<SystemIdentity> identity, + const std::set<std::string>& names, + FetchCapabilitiesCallback callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + // Fetching the hosted domain is an asynchronous operation (as it requires + // some network calls). + PostClosure( + FROM_HERE, + base::BindOnce(&FakeSystemIdentityManager::FetchCapabilitiesAsync, + GetWeakPtr(), identity, names, std::move(callback))); +} + +bool FakeSystemIdentityManager::HandleMDMNotification( + id<SystemIdentity> identity, + id<RefreshAccessTokenError> error, + HandleMDMCallback callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK([storage_ containsIdentity:identity]); + FakeSystemIdentityDetails* details = [storage_ detailsForIdentity:identity]; + if (![details.error isEqualToError:error]) { + return false; + } + + // Handling MDM error is asynchronous operation (as it requires some + // network calls). + PostClosure(FROM_HERE, + base::BindOnce(details.error.callback, std::move(callback))); + return true; +} + +bool FakeSystemIdentityManager::IsMDMError(id<SystemIdentity> identity, + NSError* error) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + return false; +} + +base::WeakPtr<FakeSystemIdentityManager> +FakeSystemIdentityManager::GetWeakPtr() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + return weak_ptr_factory_.GetWeakPtr(); +} + +void FakeSystemIdentityManager::ForgetIdentityAsync( + id<SystemIdentity> identity, + ForgetIdentityCallback callback, + bool notify_user) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK([storage_ containsIdentity:identity]); + [storage_ removeIdentity:identity]; + + FireIdentityListChanged(notify_user); + + std::move(callback).Run(/*error*/ nil); +} + +void FakeSystemIdentityManager::GetAccessTokenAsync( + id<SystemIdentity> identity, + AccessTokenCallback callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK([storage_ containsIdentity:identity]); + FakeSystemIdentityDetails* details = [storage_ detailsForIdentity:identity]; + if (details.error) { + NSError* error = [NSError errorWithDomain:@"com.google.HTTPStatus" + code:-1 + userInfo:nil]; + + FireIdentityAccessTokenRefreshFailed(identity, details.error); + std::move(callback).Run(absl::nullopt, error); + } else { + const base::Time valid_until = base::Time::Now() + kAccessTokenExpiration; + AccessTokenInfo info{TimeFormatHTTP(valid_until), valid_until}; + std::move(callback).Run(std::move(info), nil); + } +} + +void FakeSystemIdentityManager::FetchAvatarForIdentityAsync( + id<SystemIdentity> identity) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK([storage_ containsIdentity:identity]); + FakeSystemIdentityDetails* details = [storage_ detailsForIdentity:identity]; + if (!details.cachedAvatar) { + details.cachedAvatar = ios::provider::GetSigninDefaultAvatar(); + } + + FireIdentityUpdated(identity); +} + +void FakeSystemIdentityManager::GetHostedDomainAsync( + id<SystemIdentity> identity, + HostedDomainCallback callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + std::move(callback).Run(FakeGetHostedDomainForIdentity(identity), nil); +} + +void FakeSystemIdentityManager::FetchCapabilitiesAsync( + id<SystemIdentity> identity, + const std::set<std::string>& names, + FetchCapabilitiesCallback callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK([storage_ containsIdentity:identity]); + FakeSystemIdentityDetails* details = [storage_ detailsForIdentity:identity]; + + std::map<std::string, CapabilityResult> capabilities; + for (const std::string& name : names) { + NSString* key = base::SysUTF8ToNSString(name); + NSNumber* value = details.capabilities[key]; + CapabilityResult capability = CapabilityResult::kUnknown; + if (value) { + const int int_value = value.intValue; + switch (int_value) { + case static_cast<int>(CapabilityResult::kUnknown): + case static_cast<int>(CapabilityResult::kTrue): + case static_cast<int>(CapabilityResult::kFalse): + capability = static_cast<CapabilityResult>(int_value); + break; + default: + NOTREACHED() << "unexpected capability value: " << int_value; + break; + } + } + capabilities.insert({name, capability}); + } + + std::move(callback).Run(capabilities); +} + +void FakeSystemIdentityManager::PostClosure(base::Location from_here, + base::OnceClosure closure) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + ++pending_callbacks_; + base::SequencedTaskRunner::GetCurrentDefault()->PostTask( + from_here, base::BindOnce(&FakeSystemIdentityManager::ExecuteClosure, + GetWeakPtr(), std::move(closure))); +} + +void FakeSystemIdentityManager::ExecuteClosure(base::OnceClosure closure) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK_GT(pending_callbacks_, 0u); + if (--pending_callbacks_ == 0u) { + if (!resume_closure_.is_null()) { + base::SequencedTaskRunner::GetCurrentDefault()->PostTask( + FROM_HERE, std::move(resume_closure_)); + } + } + + if (!closure.is_null()) { + std::move(closure).Run(); + } +}
diff --git a/ios/chrome/browser/signin/fake_system_identity_manager_storage.h b/ios/chrome/browser/signin/fake_system_identity_manager_storage.h new file mode 100644 index 0000000..16c3cf8 --- /dev/null +++ b/ios/chrome/browser/signin/fake_system_identity_manager_storage.h
@@ -0,0 +1,35 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_BROWSER_SIGNIN_FAKE_SYSTEM_IDENTITY_MANAGER_STORAGE_H_ +#define IOS_CHROME_BROWSER_SIGNIN_FAKE_SYSTEM_IDENTITY_MANAGER_STORAGE_H_ + +#import <Foundation/Foundation.h> + +@protocol SystemIdentity; +@class FakeSystemIdentityDetails; + +// Stores identities. The key is the identity's gaia id, and identities +// are not stored directly, but a wrapper object is used, allowing to +// store extra information about the identity. +// +// This class remembers the insertion order as unit tests depends on the +// order being stable and deterministic. +@interface FakeSystemIdentityManagerStorage : NSObject <NSFastEnumeration> + +// Returns whether `identity` is contained in the store. +- (BOOL)containsIdentity:(id<SystemIdentity>)identity; + +// Returns details for `identity` or nil if the identity is unknown. +- (FakeSystemIdentityDetails*)detailsForIdentity:(id<SystemIdentity>)identity; + +// Adds `identity`. Does nothing if `identity` is already stored. +- (void)addIdentity:(id<SystemIdentity>)identity; + +// Removes `identity`. Does nothing if `identity` is not stored. +- (void)removeIdentity:(id<SystemIdentity>)identity; + +@end + +#endif // IOS_CHROME_BROWSER_SIGNIN_FAKE_SYSTEM_IDENTITY_MANAGER_STORAGE_H_
diff --git a/ios/chrome/browser/signin/fake_system_identity_manager_storage.mm b/ios/chrome/browser/signin/fake_system_identity_manager_storage.mm new file mode 100644 index 0000000..0edc7cfa --- /dev/null +++ b/ios/chrome/browser/signin/fake_system_identity_manager_storage.mm
@@ -0,0 +1,99 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "ios/chrome/browser/signin/fake_system_identity_manager_storage.h" + +#import "base/check.h" +#import "ios/chrome/browser/signin/fake_system_identity_details.h" +#import "ios/chrome/browser/signin/system_identity.h" + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +@implementation FakeSystemIdentityManagerStorage { + // Stores the key in insertion order. + __strong NSMutableArray<NSString*>* _orderedKeys; + + // Stores details about the identities, keyed by gaia id. + __strong NSMutableDictionary<NSString*, FakeSystemIdentityDetails*>* _details; + + // Counter incremented when the structure is mutated. Used to detect that + // the storage has been mutated during iteration by NSFastEnumeration. + unsigned long _mutations; +} + +- (instancetype)init { + if ((self = [super init])) { + _orderedKeys = [[NSMutableArray alloc] init]; + _details = [[NSMutableDictionary alloc] init]; + _mutations = 0; + } + return self; +} + +- (BOOL)containsIdentity:(id<SystemIdentity>)identity { + return [self detailsForIdentity:identity] != nil; +} + +- (FakeSystemIdentityDetails*)detailsForIdentity:(id<SystemIdentity>)identity { + return [_details objectForKey:identity.gaiaID]; +} + +- (void)addIdentity:(id<SystemIdentity>)identity { + NSString* key = identity.gaiaID; + if ([_details objectForKey:key]) + return; + + DCHECK(![_orderedKeys containsObject:key]); + _details[key] = [[FakeSystemIdentityDetails alloc] initWithIdentity:identity]; + [_orderedKeys addObject:key]; + + // Storage has changed, invalidate current iterations. + ++_mutations; +} + +- (void)removeIdentity:(id<SystemIdentity>)identity { + NSString* key = identity.gaiaID; + if (![_details objectForKey:key]) + return; + + DCHECK([_orderedKeys containsObject:key]); + [_details removeObjectForKey:key]; + [_orderedKeys removeObject:key]; + + // Storage has changed, invalidate current iterations. + ++_mutations; +} + +- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState*)state + objects:(id __unsafe_unretained[])buffer + count:(NSUInteger)len { + // `state` is set to zero by the runtime before the enumeration starts. + // Initialize the structure and mark it as such by changing the `state` + // value. + if (state->state == 0) { + state->state = 1; + state->extra[0] = 0; // Index of iteration position in _orderedKeys. + state->mutationsPtr = &_mutations; // Detect mutations. + } + + // Iterate over as many object as possible, starting from + // previously recorded position. + NSUInteger index; + NSUInteger start = state->extra[0]; + NSUInteger count = _orderedKeys.count; + for (index = 0; index < len && start + index < count; ++index) { + NSString* key = [_orderedKeys objectAtIndex:(start + index)]; + buffer[index] = [_details objectForKey:key]; + } + + // Update iteration state. + state->extra[0] = start + index; + state->itemsPtr = buffer; + + return index; +} + +@end
diff --git a/ios/chrome/browser/ui/authentication/signin/forced_signin/forced_signin_egtest.mm b/ios/chrome/browser/ui/authentication/signin/forced_signin/forced_signin_egtest.mm index ba6c18c..2f34641 100644 --- a/ios/chrome/browser/ui/authentication/signin/forced_signin/forced_signin_egtest.mm +++ b/ios/chrome/browser/ui/authentication/signin/forced_signin/forced_signin_egtest.mm
@@ -19,6 +19,7 @@ #import "ios/chrome/browser/ui/authentication/views/views_constants.h" #import "ios/chrome/browser/ui/first_run/first_run_app_interface.h" #import "ios/chrome/browser/ui/first_run/first_run_constants.h" +#import "ios/chrome/browser/ui/settings/google_services/google_services_settings_constants.h" #import "ios/chrome/browser/ui/settings/google_services/manage_sync_settings_constants.h" #import "ios/chrome/browser/ui/ui_feature_flags.h" #import "ios/chrome/common/string_util.h" @@ -194,6 +195,31 @@ "<body>Hello World!</body></html>"); return std::move(http_response); } +// Returns grey matcher for an item in Google Service Settings with `titleID` +// and `detailTextID`. +id<GREYMatcher> GetItemMatcherWithTitleAndTextIDs(int titleID, + int detailTextID) { + NSString* accessibilityLabel = l10n_util::GetNSString(titleID); + if (detailTextID) { + accessibilityLabel = + [NSString stringWithFormat:@"%@, %@", accessibilityLabel, + l10n_util::GetNSString(detailTextID)]; + } + return grey_allOf(grey_accessibilityLabel(accessibilityLabel), + grey_kindOfClassName(@"UITableViewCell"), + grey_sufficientlyVisible(), nil); +} + +// Opens the Google services settings. +void OpenGoogleServicesSettings() { + [ChromeEarlGreyUI openSettingsMenu]; + [ChromeEarlGreyUI + tapSettingsMenuButton:chrome_test_util::GoogleServicesSettingsButton()]; + [[EarlGrey + selectElementWithMatcher:grey_accessibilityID( + kGoogleServicesSettingsViewIdentifier)] + assertWithMatcher:grey_notNil()]; +} } // namespace @@ -1211,4 +1237,35 @@ [ChromeEarlGrey waitForMatcher:GetForcedSigninScreenMatcher()]; } +// Tests that the sign-in item in Google Service Settings can't be used when +// sign-in is forced by policy. +- (void)testGoogleServiceSettingsUI { + // Add an identity to sign-in to enable the "Continue as ..." button in the + // sign-in screen. + FakeSystemIdentity* fakeIdentity = [FakeSystemIdentity fakeIdentity1]; + [SigninEarlGrey addFakeIdentity:fakeIdentity]; + + // Enable forced sign-in and sign in from the prompt. + SetSigninEnterprisePolicyValue(BrowserSigninMode::kForced); + ScrollToElementAndAssertVisibility( + GetContinueButtonWithIdentityMatcher(fakeIdentity)); + [[EarlGrey selectElementWithMatcher:GetContinueButtonWithIdentityMatcher( + fakeIdentity)] + performAction:grey_tap()]; + + // Open Google services settings and verify that sign-in item is greyed out. + OpenGoogleServicesSettings(); + id<GREYMatcher> signinMatcher = GetItemMatcherWithTitleAndTextIDs( + IDS_IOS_GOOGLE_SERVICES_SETTINGS_ALLOW_SIGNIN_TEXT, + IDS_IOS_GOOGLE_SERVICES_SETTINGS_ALLOW_SIGNIN_DETAIL); + [[EarlGrey selectElementWithMatcher:signinMatcher] + assertWithMatcher:grey_sufficientlyVisible()]; + + // Assert the sign-in item shows the "On" label in replacement of the toggle + // switch. + [[EarlGrey selectElementWithMatcher:grey_text(l10n_util::GetNSString( + IDS_IOS_SETTING_ON))] + assertWithMatcher:grey_sufficientlyVisible()]; +} + @end
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/card_view_controller_egtest.mm b/ios/chrome/browser/ui/autofill/manual_fill/card_view_controller_egtest.mm index e21d1e6..a4d14287 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/card_view_controller_egtest.mm +++ b/ios/chrome/browser/ui/autofill/manual_fill/card_view_controller_egtest.mm
@@ -422,7 +422,8 @@ // Tests that the credit card View Controller is dismissed when tapping the // keyboard. -- (void)testTappingKeyboardDismissCreditCardControllerPopOver { +// TODO(crbug.com/1400980): reenable this flaky test. +- (void)DISABLED_testTappingKeyboardDismissCreditCardControllerPopOver { if (![ChromeEarlGrey isIPadIdiom]) { return; }
diff --git a/ios/chrome/browser/ui/dialogs/overlay_java_script_dialog_presenter.h b/ios/chrome/browser/ui/dialogs/overlay_java_script_dialog_presenter.h index fe5b06e4..022b654fe 100644 --- a/ios/chrome/browser/ui/dialogs/overlay_java_script_dialog_presenter.h +++ b/ios/chrome/browser/ui/dialogs/overlay_java_script_dialog_presenter.h
@@ -19,12 +19,21 @@ ~OverlayJavaScriptDialogPresenter() override; // web::JavaScriptDialogPresenter: - void RunJavaScriptDialog(web::WebState* web_state, - const GURL& origin_url, - web::JavaScriptDialogType dialog_type, - NSString* message_text, - NSString* default_prompt_text, - web::DialogClosedCallback callback) override; + void RunJavaScriptAlertDialog(web::WebState* web_state, + const GURL& origin_url, + NSString* message_text, + base::OnceClosure callback) override; + void RunJavaScriptConfirmDialog( + web::WebState* web_state, + const GURL& origin_url, + NSString* message_text, + base::OnceCallback<void(bool success)> callback) override; + void RunJavaScriptPromptDialog( + web::WebState* web_state, + const GURL& origin_url, + NSString* message_text, + NSString* default_prompt_text, + base::OnceCallback<void(NSString* user_input)> callback) override; void CancelDialogs(web::WebState* web_state) override; };
diff --git a/ios/chrome/browser/ui/dialogs/overlay_java_script_dialog_presenter.mm b/ios/chrome/browser/ui/dialogs/overlay_java_script_dialog_presenter.mm index 2e3359f..1cbca86d 100644 --- a/ios/chrome/browser/ui/dialogs/overlay_java_script_dialog_presenter.mm +++ b/ios/chrome/browser/ui/dialogs/overlay_java_script_dialog_presenter.mm
@@ -11,7 +11,9 @@ #import "ios/chrome/browser/overlays/public/overlay_request.h" #import "ios/chrome/browser/overlays/public/overlay_request_queue.h" #import "ios/chrome/browser/overlays/public/overlay_response.h" -#import "ios/chrome/browser/overlays/public/web_content_area/java_script_dialog_overlay.h" +#import "ios/chrome/browser/overlays/public/web_content_area/java_script_alert_dialog_overlay.h" +#import "ios/chrome/browser/overlays/public/web_content_area/java_script_confirm_dialog_overlay.h" +#import "ios/chrome/browser/overlays/public/web_content_area/java_script_prompt_dialog_overlay.h" #import "ios/chrome/browser/ui/dialogs/java_script_dialog_blocking_state.h" #import "ios/web/public/web_state.h" @@ -19,14 +21,12 @@ #error "This file requires ARC support." #endif -using java_script_dialog_overlays::JavaScriptDialogRequest; -using java_script_dialog_overlays::JavaScriptDialogResponse; - namespace { -// Completion callback for JavaScript dialog overlays. -void HandleJavaScriptDialogResponse(web::DialogClosedCallback callback, - base::WeakPtr<web::WebState> weak_web_state, - OverlayResponse* response) { +// Completion callback for JavaScript alert dialog overlay. +void HandleJavaScriptAlertDialogResponse( + base::OnceClosure callback, + base::WeakPtr<web::WebState> weak_web_state, + OverlayResponse* response) { // Notify the blocking state that the dialog was shown. web::WebState* web_state = weak_web_state.get(); JavaScriptDialogBlockingState* blocking_state = @@ -35,25 +35,94 @@ if (blocking_state) blocking_state->JavaScriptDialogWasShown(); - JavaScriptDialogResponse* dialog_response = - response ? response->GetInfo<JavaScriptDialogResponse>() : nullptr; + JavaScriptAlertDialogResponse* dialog_response = + response ? response->GetInfo<JavaScriptAlertDialogResponse>() : nullptr; if (!dialog_response) { // A null response is used if the dialog was not closed by user interaction. // This occurs either for navigation or because of WebState closures. - std::move(callback).Run(/*success=*/false, /*user_input=*/nil); + std::move(callback).Run(); return; } // Update the blocking state if the suppression action was selected. - JavaScriptDialogResponse::Action action = dialog_response->action(); + JavaScriptAlertDialogResponse::Action action = dialog_response->action(); if (blocking_state && - action == JavaScriptDialogResponse::Action::kBlockDialogs) { + action == JavaScriptAlertDialogResponse::Action::kBlockDialogs) { blocking_state->JavaScriptDialogBlockingOptionSelected(); } - bool confirmed = action == JavaScriptDialogResponse::Action::kConfirm; - NSString* user_input = confirmed ? dialog_response->user_input() : nil; - std::move(callback).Run(confirmed, user_input); + std::move(callback).Run(); +} + +// Completion callback for JavaScript confirmation dialog overlay. +void HandleJavaScriptConfirmDialogResponse( + base::OnceCallback<void(BOOL success)> callback, + base::WeakPtr<web::WebState> weak_web_state, + OverlayResponse* response) { + // Notify the blocking state that the dialog was shown. + web::WebState* web_state = weak_web_state.get(); + JavaScriptDialogBlockingState* blocking_state = + web_state ? JavaScriptDialogBlockingState::FromWebState(web_state) + : nullptr; + if (blocking_state) { + blocking_state->JavaScriptDialogWasShown(); + } + + JavaScriptConfirmDialogResponse* dialog_response = + response ? response->GetInfo<JavaScriptConfirmDialogResponse>() : nullptr; + if (!dialog_response) { + // A null response is used if the dialog was not closed by user interaction. + // This occurs either for navigation or because of WebState closures. + std::move(callback).Run(/*success=*/false); + return; + } + + // Update the blocking state if the suppression action was selected. + JavaScriptConfirmDialogResponse::Action action = dialog_response->action(); + if (blocking_state && + action == JavaScriptConfirmDialogResponse::Action::kBlockDialogs) { + blocking_state->JavaScriptDialogBlockingOptionSelected(); + } + + bool confirmed = action == JavaScriptConfirmDialogResponse::Action::kConfirm; + std::move(callback).Run(confirmed); +} + +// Completion callback for JavaScript prompt dialog overlay. +void HandleJavaScriptPromptDialogResponse( + base::OnceCallback<void(NSString* user_input)> callback, + base::WeakPtr<web::WebState> weak_web_state, + OverlayResponse* response) { + // Notify the blocking state that the dialog was shown. + web::WebState* web_state = weak_web_state.get(); + JavaScriptDialogBlockingState* blocking_state = + web_state ? JavaScriptDialogBlockingState::FromWebState(web_state) + : nullptr; + if (blocking_state) { + blocking_state->JavaScriptDialogWasShown(); + } + + JavaScriptPromptDialogResponse* dialog_response = + response ? response->GetInfo<JavaScriptPromptDialogResponse>() : nullptr; + if (!dialog_response) { + // A null response is used if the dialog was not closed by user interaction. + // This occurs either for navigation or because of WebState closures. + std::move(callback).Run(/*user_input=*/nil); + return; + } + + // Update the blocking state if the suppression action was selected. + JavaScriptPromptDialogResponse::Action action = dialog_response->action(); + if (blocking_state && + action == JavaScriptPromptDialogResponse::Action::kBlockDialogs) { + blocking_state->JavaScriptDialogBlockingOptionSelected(); + } + + NSString* user_input = nil; + if (action == JavaScriptPromptDialogResponse::Action::kConfirm) { + user_input = dialog_response->user_input(); + } + std::move(callback).Run(user_input); } } // namespace @@ -67,17 +136,15 @@ OverlayJavaScriptDialogPresenter::~OverlayJavaScriptDialogPresenter() = default; -void OverlayJavaScriptDialogPresenter::RunJavaScriptDialog( +void OverlayJavaScriptDialogPresenter::RunJavaScriptAlertDialog( web::WebState* web_state, const GURL& origin_url, - web::JavaScriptDialogType dialog_type, NSString* message_text, - NSString* default_prompt_text, - web::DialogClosedCallback callback) { + base::OnceClosure callback) { JavaScriptDialogBlockingState::CreateForWebState(web_state); if (JavaScriptDialogBlockingState::FromWebState(web_state)->blocked()) { // Block the dialog if needed. - std::move(callback).Run(NO, nil); + std::move(callback).Run(); return; } @@ -85,11 +152,62 @@ origin_url.DeprecatedGetOriginAsURL() == web_state->GetLastCommittedURL().DeprecatedGetOriginAsURL(); std::unique_ptr<OverlayRequest> request = - OverlayRequest::CreateWithConfig<JavaScriptDialogRequest>( - dialog_type, web_state, origin_url, from_main_frame_origin, - message_text, default_prompt_text); + OverlayRequest::CreateWithConfig<JavaScriptAlertDialogRequest>( + web_state, origin_url, from_main_frame_origin, message_text); request->GetCallbackManager()->AddCompletionCallback( - base::BindOnce(&HandleJavaScriptDialogResponse, std::move(callback), + base::BindOnce(&HandleJavaScriptAlertDialogResponse, std::move(callback), + web_state->GetWeakPtr())); + OverlayRequestQueue::FromWebState(web_state, OverlayModality::kWebContentArea) + ->AddRequest(std::move(request)); +} + +void OverlayJavaScriptDialogPresenter::RunJavaScriptConfirmDialog( + web::WebState* web_state, + const GURL& origin_url, + NSString* message_text, + base::OnceCallback<void(bool success)> callback) { + JavaScriptDialogBlockingState::CreateForWebState(web_state); + if (JavaScriptDialogBlockingState::FromWebState(web_state)->blocked()) { + // Block the dialog if needed. + std::move(callback).Run(/*success=*/false); + return; + } + + bool from_main_frame_origin = + origin_url.DeprecatedGetOriginAsURL() == + web_state->GetLastCommittedURL().DeprecatedGetOriginAsURL(); + std::unique_ptr<OverlayRequest> request = + OverlayRequest::CreateWithConfig<JavaScriptConfirmDialogRequest>( + web_state, origin_url, from_main_frame_origin, message_text); + request->GetCallbackManager()->AddCompletionCallback( + base::BindOnce(&HandleJavaScriptConfirmDialogResponse, + std::move(callback), web_state->GetWeakPtr())); + OverlayRequestQueue::FromWebState(web_state, OverlayModality::kWebContentArea) + ->AddRequest(std::move(request)); +} + +void OverlayJavaScriptDialogPresenter::RunJavaScriptPromptDialog( + web::WebState* web_state, + const GURL& origin_url, + NSString* message_text, + NSString* default_prompt_text, + base::OnceCallback<void(NSString* user_input)> callback) { + JavaScriptDialogBlockingState::CreateForWebState(web_state); + if (JavaScriptDialogBlockingState::FromWebState(web_state)->blocked()) { + // Block the dialog if needed. + std::move(callback).Run(/*user_input=*/nil); + return; + } + + bool from_main_frame_origin = + origin_url.DeprecatedGetOriginAsURL() == + web_state->GetLastCommittedURL().DeprecatedGetOriginAsURL(); + std::unique_ptr<OverlayRequest> request = + OverlayRequest::CreateWithConfig<JavaScriptPromptDialogRequest>( + web_state, origin_url, from_main_frame_origin, message_text, + default_prompt_text); + request->GetCallbackManager()->AddCompletionCallback( + base::BindOnce(&HandleJavaScriptPromptDialogResponse, std::move(callback), web_state->GetWeakPtr())); OverlayRequestQueue::FromWebState(web_state, OverlayModality::kWebContentArea) ->AddRequest(std::move(request));
diff --git a/ios/chrome/browser/ui/dialogs/overlay_java_script_dialog_presenter_unittest.mm b/ios/chrome/browser/ui/dialogs/overlay_java_script_dialog_presenter_unittest.mm index 4a5f510..52e7747 100644 --- a/ios/chrome/browser/ui/dialogs/overlay_java_script_dialog_presenter_unittest.mm +++ b/ios/chrome/browser/ui/dialogs/overlay_java_script_dialog_presenter_unittest.mm
@@ -8,7 +8,9 @@ #import "ios/chrome/browser/overlays/public/overlay_request.h" #import "ios/chrome/browser/overlays/public/overlay_request_queue.h" #import "ios/chrome/browser/overlays/public/overlay_response.h" -#import "ios/chrome/browser/overlays/public/web_content_area/java_script_dialog_overlay.h" +#import "ios/chrome/browser/overlays/public/web_content_area/java_script_alert_dialog_overlay.h" +#import "ios/chrome/browser/overlays/public/web_content_area/java_script_confirm_dialog_overlay.h" +#import "ios/chrome/browser/overlays/public/web_content_area/java_script_prompt_dialog_overlay.h" #import "ios/web/public/test/fakes/fake_web_state.h" #import "testing/gtest/include/gtest/gtest.h" #import "testing/gtest_mac.h" @@ -18,8 +20,6 @@ #error "This file requires ARC support." #endif -using java_script_dialog_overlays::JavaScriptDialogRequest; - // Test fixture for OverlayJavaScriptDialogPresenter. class OverlayJavaScriptDialogPresenterTest : public PlatformTest { protected: @@ -32,76 +32,113 @@ // Tests that the presenter adds an OverlayRequest configured with a // JavaScriptAlertRequest. -TEST_F(OverlayJavaScriptDialogPresenterTest, RunAlert) { - web::DialogClosedCallback callback = - base::BindOnce(^(bool success, NSString* user_input){ - }); - presenter_.RunJavaScriptDialog(&web_state_, url_, - web::JAVASCRIPT_DIALOG_TYPE_ALERT, @"", @"", - std::move(callback)); +TEST_F(OverlayJavaScriptDialogPresenterTest, RunJavaScriptAlertDialog) { + presenter_.RunJavaScriptAlertDialog(&web_state_, url_, @"", + base::DoNothing()); // Verify that an alert OverlayRequest is added to the queue. OverlayRequest* request = OverlayRequestQueue::FromWebState( &web_state_, OverlayModality::kWebContentArea) ->front_request(); ASSERT_TRUE(request); - JavaScriptDialogRequest* dialog_request = - request->GetConfig<JavaScriptDialogRequest>(); + ASSERT_TRUE(request->GetConfig<JavaScriptAlertDialogRequest>()); +} + +// Tests that the presenter adds an OverlayRequest configured with a +// JavaScriptConfirmationOverlayRequestConfig. +TEST_F(OverlayJavaScriptDialogPresenterTest, RunJavaScriptConfirmDialog) { + presenter_.RunJavaScriptConfirmDialog(&web_state_, url_, @"", + base::DoNothing()); + + // Verify that an alert OverlayRequest is added to the queue. + OverlayRequest* request = OverlayRequestQueue::FromWebState( + &web_state_, OverlayModality::kWebContentArea) + ->front_request(); + ASSERT_TRUE(request); + ASSERT_TRUE(request->GetConfig<JavaScriptConfirmDialogRequest>()); +} + +// Tests that the presenter adds an OverlayRequest configured with a +// JavaScriptPromptOverlayRequestConfig. +TEST_F(OverlayJavaScriptDialogPresenterTest, RunJavaScriptPromptDialog) { + presenter_.RunJavaScriptPromptDialog(&web_state_, url_, @"", @"", + base::DoNothing()); + + // Verify that an alert OverlayRequest is added to the queue. + OverlayRequest* request = OverlayRequestQueue::FromWebState( + &web_state_, OverlayModality::kWebContentArea) + ->front_request(); + ASSERT_TRUE(request); + ASSERT_TRUE(request->GetConfig<JavaScriptPromptDialogRequest>()); +} + +// Tests that the presenter removes all requests from the queue when +// CancelDialogs() is called. +TEST_F(OverlayJavaScriptDialogPresenterTest, RunJavaScriptDialogCancelDialogs) { + presenter_.RunJavaScriptAlertDialog(&web_state_, url_, @"", + base::DoNothing()); + OverlayRequestQueue* queue = OverlayRequestQueue::FromWebState( + &web_state_, OverlayModality::kWebContentArea); + ASSERT_TRUE(queue->front_request()); + + // Cancel the requests and verify that the queue is emptied. + presenter_.CancelDialogs(&web_state_); + ASSERT_FALSE(queue->front_request()); +} + +// Tests that the presenter adds an OverlayRequest configured with a +// JavaScriptAlertRequest. +TEST_F(OverlayJavaScriptDialogPresenterTest, RunAlert) { + presenter_.RunJavaScriptAlertDialog(&web_state_, url_, @"", + base::DoNothing()); + + // Verify that an alert OverlayRequest is added to the queue. + OverlayRequest* request = OverlayRequestQueue::FromWebState( + &web_state_, OverlayModality::kWebContentArea) + ->front_request(); + ASSERT_TRUE(request); + JavaScriptAlertDialogRequest* dialog_request = + request->GetConfig<JavaScriptAlertDialogRequest>(); ASSERT_TRUE(dialog_request); - EXPECT_EQ(web::JAVASCRIPT_DIALOG_TYPE_ALERT, dialog_request->type()); } // Tests that the presenter adds an OverlayRequest configured with a // JavaScriptConfirmationOverlayRequestConfig. TEST_F(OverlayJavaScriptDialogPresenterTest, RunConfirmation) { - web::DialogClosedCallback callback = - base::BindOnce(^(bool success, NSString* user_input){ - }); - presenter_.RunJavaScriptDialog(&web_state_, url_, - web::JAVASCRIPT_DIALOG_TYPE_CONFIRM, @"", @"", - std::move(callback)); + presenter_.RunJavaScriptConfirmDialog(&web_state_, url_, @"", + base::DoNothing()); // Verify that an alert OverlayRequest is added to the queue. OverlayRequest* request = OverlayRequestQueue::FromWebState( &web_state_, OverlayModality::kWebContentArea) ->front_request(); ASSERT_TRUE(request); - JavaScriptDialogRequest* dialog_request = - request->GetConfig<JavaScriptDialogRequest>(); + JavaScriptConfirmDialogRequest* dialog_request = + request->GetConfig<JavaScriptConfirmDialogRequest>(); ASSERT_TRUE(dialog_request); - EXPECT_EQ(web::JAVASCRIPT_DIALOG_TYPE_CONFIRM, dialog_request->type()); } // Tests that the presenter adds an OverlayRequest configured with a // JavaScriptPromptOverlayRequestConfig. TEST_F(OverlayJavaScriptDialogPresenterTest, RunPrompt) { - web::DialogClosedCallback callback = - base::BindOnce(^(bool success, NSString* user_input){ - }); - presenter_.RunJavaScriptDialog(&web_state_, url_, - web::JAVASCRIPT_DIALOG_TYPE_PROMPT, @"", @"", - std::move(callback)); + presenter_.RunJavaScriptPromptDialog(&web_state_, url_, @"", @"", + base::DoNothing()); // Verify that an alert OverlayRequest is added to the queue. OverlayRequest* request = OverlayRequestQueue::FromWebState( &web_state_, OverlayModality::kWebContentArea) ->front_request(); ASSERT_TRUE(request); - JavaScriptDialogRequest* dialog_request = - request->GetConfig<JavaScriptDialogRequest>(); + JavaScriptPromptDialogRequest* dialog_request = + request->GetConfig<JavaScriptPromptDialogRequest>(); ASSERT_TRUE(dialog_request); - EXPECT_EQ(web::JAVASCRIPT_DIALOG_TYPE_PROMPT, dialog_request->type()); } // Tests that the presenter removes all requests from the queue when // CancelDialogs() is called. TEST_F(OverlayJavaScriptDialogPresenterTest, CancelDialogs) { - web::DialogClosedCallback callback = - base::BindOnce(^(bool success, NSString* user_input){ - }); - presenter_.RunJavaScriptDialog(&web_state_, url_, - web::JAVASCRIPT_DIALOG_TYPE_ALERT, @"", @"", - std::move(callback)); + presenter_.RunJavaScriptAlertDialog(&web_state_, url_, @"", + base::DoNothing()); OverlayRequestQueue* queue = OverlayRequestQueue::FromWebState( &web_state_, OverlayModality::kWebContentArea); ASSERT_TRUE(queue->front_request());
diff --git a/ios/chrome/browser/ui/location_bar/location_bar_steady_view_mediator_unittest.mm b/ios/chrome/browser/ui/location_bar/location_bar_steady_view_mediator_unittest.mm index 5734381b..906bb6ca 100644 --- a/ios/chrome/browser/ui/location_bar/location_bar_steady_view_mediator_unittest.mm +++ b/ios/chrome/browser/ui/location_bar/location_bar_steady_view_mediator_unittest.mm
@@ -11,7 +11,7 @@ #import "ios/chrome/browser/overlays/public/overlay_request.h" #import "ios/chrome/browser/overlays/public/overlay_request_queue.h" #import "ios/chrome/browser/overlays/public/web_content_area/http_auth_overlay.h" -#import "ios/chrome/browser/overlays/public/web_content_area/java_script_dialog_overlay.h" +#import "ios/chrome/browser/overlays/public/web_content_area/java_script_alert_dialog_overlay.h" #import "ios/chrome/browser/overlays/test/fake_overlay_presentation_context.h" #import "ios/chrome/browser/ui/location_bar/test/fake_location_bar_steady_view_consumer.h" #import "ios/chrome/browser/web_state_list/web_state_list.h" @@ -27,8 +27,6 @@ #error "This file requires ARC support." #endif -using java_script_dialog_overlays::JavaScriptDialogRequest; - // Test fixture for LocationBarSteadyViewMediator. class LocationBarSteadyViewMediatorTest : public PlatformTest { protected: @@ -76,10 +74,10 @@ // longer shareable. OverlayRequestQueue* queue = OverlayRequestQueue::FromWebState( web_state, OverlayModality::kWebContentArea); - queue->AddRequest(OverlayRequest::CreateWithConfig<JavaScriptDialogRequest>( - web::JAVASCRIPT_DIALOG_TYPE_ALERT, web_state, kUrl, - /*is_main_frame=*/true, @"message", - /*default_text_field_value=*/nil)); + queue->AddRequest( + OverlayRequest::CreateWithConfig<JavaScriptAlertDialogRequest>( + web_state, kUrl, + /*is_main_frame=*/true, @"message")); EXPECT_FALSE(consumer_.locationShareable); // Cancel the request and verify that the location is shareable again.
diff --git a/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_row_cell.mm b/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_row_cell.mm index da77b3ee..9d73d50 100644 --- a/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_row_cell.mm +++ b/ios/chrome/browser/ui/omnibox/popup/omnibox_popup_row_cell.mm
@@ -231,8 +231,6 @@ } else if (self.window) { // The layout guides may have been repositioned, so remove the constraints // and add them again. - [NSLayoutConstraint - deactivateConstraints:self.nonDeletingLayoutGuideConstraints]; [self attachToLayoutGuides]; } } @@ -372,19 +370,18 @@ iconXOffset += kImageAdditionalOffsetVariation2PopoutOmnibox; } + [NSLayoutConstraint + deactivateConstraints:self.nonDeletingLayoutGuideConstraints]; self.nonDeletingLayoutGuideConstraints = @[ [self.leadingIconView.centerXAnchor constraintEqualToAnchor:imageLayoutGuide.centerXAnchor constant:iconXOffset], - stackViewToLayoutGuideLeading, - stackViewToLayoutGuideTrailing, - ]; - - [NSLayoutConstraint activateConstraints:@[ [self.leadingIconView.widthAnchor constraintEqualToAnchor:imageLayoutGuide.widthAnchor], + stackViewToLayoutGuideLeading, + stackViewToLayoutGuideTrailing, stackViewToCellTrailing, - ]]; + ]; [NSLayoutConstraint activateConstraints:self.nonDeletingLayoutGuideConstraints];
diff --git a/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator.mm b/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator.mm index 3fa92c0..e6a9b26d 100644 --- a/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator.mm +++ b/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator.mm
@@ -1530,6 +1530,8 @@ // Dismisses the menu and opens a new tab. - (void)openTab { RecordAction(UserMetricsAction("MobileMenuNewTab")); + RecordAction(UserMetricsAction("MobileTabNewTab")); + [self.popupMenuCommandsHandler dismissPopupMenuAnimated:YES]; [self.dispatcher openURLInNewTab:[OpenNewTabCommand commandWithIncognito:NO]]; }
diff --git a/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator_unittest.mm b/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator_unittest.mm index bef0160..16b95bc 100644 --- a/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator_unittest.mm +++ b/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator_unittest.mm
@@ -29,7 +29,7 @@ #import "ios/chrome/browser/overlays/public/overlay_presenter.h" #import "ios/chrome/browser/overlays/public/overlay_request.h" #import "ios/chrome/browser/overlays/public/overlay_request_queue.h" -#import "ios/chrome/browser/overlays/public/web_content_area/java_script_dialog_overlay.h" +#import "ios/chrome/browser/overlays/public/web_content_area/java_script_alert_dialog_overlay.h" #import "ios/chrome/browser/overlays/test/fake_overlay_presentation_context.h" #import "ios/chrome/browser/passwords/ios_chrome_password_store_factory.h" #import "ios/chrome/browser/policy/enterprise_policy_test_helper.h" @@ -63,7 +63,6 @@ #endif using bookmarks::BookmarkModel; -using java_script_dialog_overlays::JavaScriptDialogRequest; namespace { const int kNumberOfWebStates = 3; @@ -383,10 +382,10 @@ // longer shareable. OverlayRequestQueue* queue = OverlayRequestQueue::FromWebState( web_state_, OverlayModality::kWebContentArea); - queue->AddRequest(OverlayRequest::CreateWithConfig<JavaScriptDialogRequest>( - web::JAVASCRIPT_DIALOG_TYPE_ALERT, web_state_, kUrl, - /*is_main_frame=*/true, @"message", - /*default_text_field_value=*/nil)); + queue->AddRequest( + OverlayRequest::CreateWithConfig<JavaScriptAlertDialogRequest>( + web_state_, kUrl, + /*is_main_frame=*/true, @"message")); EXPECT_TRUE(HasItem(kToolsMenuReadLater, /*enabled=*/NO)); // Cancel the request and verify that the "Add to Reading List" button is
diff --git a/ios/chrome/browser/ui/popup_menu/popup_menu_action_handler.mm b/ios/chrome/browser/ui/popup_menu/popup_menu_action_handler.mm index 23553da..867f4700 100644 --- a/ios/chrome/browser/ui/popup_menu/popup_menu_action_handler.mm +++ b/ios/chrome/browser/ui/popup_menu/popup_menu_action_handler.mm
@@ -63,6 +63,8 @@ break; case PopupMenuActionOpenNewTab: RecordAction(UserMetricsAction("MobileMenuNewTab")); + RecordAction(UserMetricsAction("MobileTabNewTab")); + [self.dispatcher openURLInNewTab:[OpenNewTabCommand commandWithIncognito:NO originPoint:origin]];
diff --git a/ios/chrome/browser/ui/popup_menu/popup_menu_mediator_unittest.mm b/ios/chrome/browser/ui/popup_menu/popup_menu_mediator_unittest.mm index 829a9f6..b0ff69f 100644 --- a/ios/chrome/browser/ui/popup_menu/popup_menu_mediator_unittest.mm +++ b/ios/chrome/browser/ui/popup_menu/popup_menu_mediator_unittest.mm
@@ -30,7 +30,7 @@ #import "ios/chrome/browser/overlays/public/overlay_presenter.h" #import "ios/chrome/browser/overlays/public/overlay_request.h" #import "ios/chrome/browser/overlays/public/overlay_request_queue.h" -#import "ios/chrome/browser/overlays/public/web_content_area/java_script_dialog_overlay.h" +#import "ios/chrome/browser/overlays/public/web_content_area/java_script_alert_dialog_overlay.h" #import "ios/chrome/browser/overlays/test/fake_overlay_presentation_context.h" #import "ios/chrome/browser/passwords/ios_chrome_password_store_factory.h" #import "ios/chrome/browser/policy/enterprise_policy_test_helper.h" @@ -66,7 +66,6 @@ #endif using bookmarks::BookmarkModel; -using java_script_dialog_overlays::JavaScriptDialogRequest; @interface FakePopupMenuConsumer : NSObject <PopupMenuConsumer> @property(nonatomic, strong) @@ -475,10 +474,10 @@ // longer shareable. OverlayRequestQueue* queue = OverlayRequestQueue::FromWebState( web_state_, OverlayModality::kWebContentArea); - queue->AddRequest(OverlayRequest::CreateWithConfig<JavaScriptDialogRequest>( - web::JAVASCRIPT_DIALOG_TYPE_ALERT, web_state_, kUrl, - /*is_main_frame=*/true, @"message", - /*default_text_field_value=*/nil)); + queue->AddRequest( + OverlayRequest::CreateWithConfig<JavaScriptAlertDialogRequest>( + web_state_, kUrl, + /*is_main_frame=*/true, @"message")); EXPECT_TRUE(HasItem(consumer, kToolsMenuReadLater, /*enabled=*/NO)); // Cancel the request and verify that the "Add to Reading List" button is
diff --git a/ios/chrome/browser/ui/settings/google_services/BUILD.gn b/ios/chrome/browser/ui/settings/google_services/BUILD.gn index caa27d8..49e7f0dd 100644 --- a/ios/chrome/browser/ui/settings/google_services/BUILD.gn +++ b/ios/chrome/browser/ui/settings/google_services/BUILD.gn
@@ -154,6 +154,7 @@ "//components/signin/public/base", "//components/strings", "//ios/chrome/app/strings", + "//ios/chrome/browser/policy:eg_test_support+eg2", "//ios/chrome/browser/policy:policy_util", "//ios/chrome/browser/prefs:pref_names", "//ios/chrome/browser/signin:fake_system_identity", @@ -164,6 +165,7 @@ "//ios/chrome/browser/ui/elements:eg_test_support+eg2", "//ios/chrome/browser/ui/settings:constants", "//ios/chrome/browser/ui/settings/google_services:constants", + "//ios/chrome/common/ui/promo_style:constants", "//ios/chrome/test/earl_grey:eg_test_support+eg2", "//ios/chrome/test/earl_grey:switches", "//ios/testing/earl_grey:eg_test_support+eg2",
diff --git a/ios/chrome/browser/ui/settings/google_services/google_services_settings_egtest.mm b/ios/chrome/browser/ui/settings/google_services/google_services_settings_egtest.mm index d2cd442d..c1983ede 100644 --- a/ios/chrome/browser/ui/settings/google_services/google_services_settings_egtest.mm +++ b/ios/chrome/browser/ui/settings/google_services/google_services_settings_egtest.mm
@@ -8,6 +8,7 @@ #import "components/policy/policy_constants.h" #import "components/signin/public/base/signin_pref_names.h" #import "components/signin/public/base/signin_switches.h" +#import "ios/chrome/browser/policy/policy_earl_grey_utils.h" #import "ios/chrome/browser/policy/policy_util.h" #import "ios/chrome/browser/prefs/pref_names.h" #import "ios/chrome/browser/signin/fake_system_identity.h" @@ -75,6 +76,12 @@ @"Settings done button not visible"); } +// Sets up the sign-in policy value dynamically at runtime. +void SetSigninEnterprisePolicyValue(BrowserSigninMode signinMode) { + policy_test_utils::SetPolicy(static_cast<int>(signinMode), + policy::key::kBrowserSignin); +} + } // namespace // Integration tests using the Google services settings screen. @@ -418,19 +425,10 @@ [SigninEarlGrey verifySignedInWithFakeIdentity:fakeIdentity]; } -// TODO(crbug.com/1247487): Fix this test. // Tests that the sign-in cell can't be used when sign-in is disabled by policy. -- (void)DISABLED_testSigninDisabledByPolicy { - AppLaunchConfiguration config; - config.additional_args.push_back(std::string("-") + - test_switches::kSignInAtStartup); - // Relaunch the app to take the configuration into account. - [[AppLaunchManager sharedManager] ensureAppLaunchedWithConfiguration:config]; - +- (void)testSigninDisabledByPolicy { // Disable browser sign-in. - [self setUpSigninDisabledEnterprisePolicy]; - [ChromeEarlGrey setIntegerValue:static_cast<int>(BrowserSigninMode::kDisabled) - forLocalStatePref:prefs::kBrowserSigninPolicy]; + SetSigninEnterprisePolicyValue(BrowserSigninMode::kDisabled); // Open Google services settings and verify the sign-in cell shows the // sign-in cell (even if greyed out). @@ -446,48 +444,6 @@ [[EarlGrey selectElementWithMatcher:grey_text(l10n_util::GetNSString( IDS_IOS_SETTING_OFF))] assertWithMatcher:grey_sufficientlyVisible()]; - - // Clean-up policy. - [ChromeEarlGrey setIntegerValue:static_cast<int>(BrowserSigninMode::kEnabled) - forLocalStatePref:prefs::kBrowserSigninPolicy]; - [[NSUserDefaults standardUserDefaults] - removeObjectForKey:kPolicyLoaderIOSConfigurationKey]; -} - -// TODO(crbug.com/1247487): Fix this test. -// Tests that the sign-in cell can't be used when sign-in is forced by policy. -- (void)DISABLED_testSigninForcedByPolicy { - AppLaunchConfiguration config; - config.additional_args.push_back(std::string("-") + - test_switches::kSignInAtStartup); - // Relaunch the app to take the configuration into account. - [[AppLaunchManager sharedManager] ensureAppLaunchedWithConfiguration:config]; - - // Force browser sign-in. - [self setUpSigninForcedEnterprisePolicy]; - [ChromeEarlGrey setIntegerValue:static_cast<int>(BrowserSigninMode::kForced) - forLocalStatePref:prefs::kBrowserSigninPolicy]; - - // Open Google services settings and verify the sign-in cell shows the - // sign-in cell (even if greyed out). - [self openGoogleServicesSettings]; - id<GREYMatcher> signinMatcher = [self - cellMatcherWithTitleID:IDS_IOS_GOOGLE_SERVICES_SETTINGS_ALLOW_SIGNIN_TEXT - detailTextID: - IDS_IOS_GOOGLE_SERVICES_SETTINGS_ALLOW_SIGNIN_DETAIL]; - [[EarlGrey selectElementWithMatcher:signinMatcher] - assertWithMatcher:grey_sufficientlyVisible()]; - - // Assert that sign-in cell shows the "Off" status instead of the knob. - [[EarlGrey selectElementWithMatcher:grey_text(l10n_util::GetNSString( - IDS_IOS_SETTING_OFF))] - assertWithMatcher:grey_sufficientlyVisible()]; - - // Clean-up policy. - [ChromeEarlGrey setIntegerValue:static_cast<int>(BrowserSigninMode::kEnabled) - forLocalStatePref:prefs::kBrowserSigninPolicy]; - [[NSUserDefaults standardUserDefaults] - removeObjectForKey:kPolicyLoaderIOSConfigurationKey]; } #pragma mark - Helpers
diff --git a/ios/chrome/browser/ui/settings/sync/sync_encryption_table_view_controller.mm b/ios/chrome/browser/ui/settings/sync/sync_encryption_table_view_controller.mm index b4f522bc..302a655 100644 --- a/ios/chrome/browser/ui/settings/sync/sync_encryption_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/sync/sync_encryption_table_view_controller.mm
@@ -61,6 +61,9 @@ SettingsControllerProtocol> { std::unique_ptr<SyncObserverBridge> _syncObserver; BOOL _isUsingExplicitPassphrase; + + // Whether Settings have been dismissed. + BOOL _settingsAreDismissed; } @property(nonatomic, assign, readonly) Browser* browser; @@ -167,8 +170,8 @@ - (void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath { - DCHECK(self.browser) << "tableView:didSelectRowAtIndexPath called after " - "-settingsWillBeDismissed"; + DCHECK(!_settingsAreDismissed) << "tableView:didSelectRowAtIndexPath called " + "after -settingsWillBeDismissed"; DCHECK_EQ(indexPath.section, [self.tableViewModel sectionForSectionIdentifier:SectionIdentifierEncryption]); @@ -214,14 +217,21 @@ } - (void)settingsWillBeDismissed { + DCHECK(!_settingsAreDismissed); + + // Remove observer bridges. _syncObserver.reset(); + + // Clear C++ ivars. _browser = nil; + + _settingsAreDismissed = YES; } #pragma mark SyncObserverModelBridge - (void)onSyncStateChanged { - DCHECK(self.browser) + DCHECK(!_settingsAreDismissed) << "onSyncStateChanged called after -settingsWillBeDismissed"; ChromeBrowserState* browserState = self.browser->GetBrowserState(); syncer::SyncService* service =
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_view_controller.mm b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_view_controller.mm index b0281be..4f12e13e 100644 --- a/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_view_controller.mm +++ b/ios/chrome/browser/ui/tab_switcher/tab_grid/tab_grid_view_controller.mm
@@ -2515,6 +2515,7 @@ } - (void)newTabButtonTapped:(id)sender { + base::RecordAction(base::UserMetricsAction("MobileTabNewTab")); [self openNewTabInPage:self.currentPage focusOmnibox:NO]; // Record metrics for button taps switch (self.currentPage) { @@ -2535,6 +2536,7 @@ - (void)plusSignButtonTapped:(id)sender { switch (self.currentPage) { case TabGridPageIncognitoTabs: + base::RecordAction(base::UserMetricsAction("MobileTabNewTab")); [self.incognitoTabsDelegate addNewItem]; if (self.currentState == ViewRevealState::Peeked) { base::RecordAction( @@ -2545,6 +2547,7 @@ } break; case TabGridPageRegularTabs: + base::RecordAction(base::UserMetricsAction("MobileTabNewTab")); [self.regularTabsDelegate addNewItem]; if (self.currentState == ViewRevealState::Peeked) { base::RecordAction(
diff --git a/ios/chrome/browser/ui/tabs/tab_strip_controller.mm b/ios/chrome/browser/ui/tabs/tab_strip_controller.mm index e3b9710..93411d8 100644 --- a/ios/chrome/browser/ui/tabs/tab_strip_controller.mm +++ b/ios/chrome/browser/ui/tabs/tab_strip_controller.mm
@@ -708,11 +708,13 @@ } - (void)recordUserMetrics:(id)sender { - if (sender == _buttonNewTab) + if (sender == _buttonNewTab) { base::RecordAction(UserMetricsAction("MobileTabStripNewTab")); - else + base::RecordAction(UserMetricsAction("MobileTabNewTab")); + } else { LOG(WARNING) << "Trying to record metrics for unknown sender " << base::SysNSStringToUTF8([sender description]); + } } - (void)sendNewTabCommand {
diff --git a/ios/chrome/browser/ui/toolbar/adaptive_toolbar_view_controller.mm b/ios/chrome/browser/ui/toolbar/adaptive_toolbar_view_controller.mm index 590161758..5e5c3ce 100644 --- a/ios/chrome/browser/ui/toolbar/adaptive_toolbar_view_controller.mm +++ b/ios/chrome/browser/ui/toolbar/adaptive_toolbar_view_controller.mm
@@ -417,6 +417,7 @@ base::RecordAction(base::UserMetricsAction("MobileToolbarShareMenu")); } else if (sender == self.view.openNewTabButton) { base::RecordAction(base::UserMetricsAction("MobileToolbarNewTabShortcut")); + base::RecordAction(base::UserMetricsAction("MobileTabNewTab")); } else { NOTREACHED(); }
diff --git a/ios/chrome/browser/web/web_state_delegate_browser_agent_unittest.mm b/ios/chrome/browser/web/web_state_delegate_browser_agent_unittest.mm index ad8edd5..d04845f 100644 --- a/ios/chrome/browser/web/web_state_delegate_browser_agent_unittest.mm +++ b/ios/chrome/browser/web/web_state_delegate_browser_agent_unittest.mm
@@ -11,7 +11,7 @@ #import "ios/chrome/browser/overlays/public/overlay_request.h" #import "ios/chrome/browser/overlays/public/overlay_request_queue.h" #import "ios/chrome/browser/overlays/public/web_content_area/http_auth_overlay.h" -#import "ios/chrome/browser/overlays/public/web_content_area/java_script_dialog_overlay.h" +#import "ios/chrome/browser/overlays/public/web_content_area/java_script_alert_dialog_overlay.h" #import "ios/chrome/browser/snapshots/snapshot_tab_helper.h" #import "ios/chrome/browser/web/blocked_popup_tab_helper.h" #import "ios/chrome/browser/web_state_list/tab_insertion_browser_agent.h" @@ -20,7 +20,6 @@ #import "ios/web/public/navigation/navigation_item.h" #import "ios/web/public/test/web_task_environment.h" #import "ios/web/public/ui/java_script_dialog_presenter.h" -#import "ios/web/public/ui/java_script_dialog_type.h" #import "ios/web/public/web_state.h" #import "testing/gtest/include/gtest/gtest.h" #import "testing/gtest_mac.h" @@ -30,8 +29,6 @@ #error "This file requires ARC support." #endif -using java_script_dialog_overlays::JavaScriptDialogRequest; - const char kURL1[] = "https://www.some.url.com"; const char kURL2[] = "https://www.some.url2.com"; @@ -188,12 +185,8 @@ // Present a JavaScript alert. GURL kOriginUrl("http://chromium.test"); - web::DialogClosedCallback callback = - base::BindOnce(^(bool success, NSString* user_input){ - }); - presenter->RunJavaScriptDialog(web_state, kOriginUrl, - web::JAVASCRIPT_DIALOG_TYPE_ALERT, @"", @"", - std::move(callback)); + presenter->RunJavaScriptAlertDialog(web_state, kOriginUrl, @"", + base::DoNothing()); // Verify that JavaScript alert OverlayRequest has been added to the // WebState's queue. @@ -202,5 +195,5 @@ ASSERT_TRUE(queue); OverlayRequest* request = queue->front_request(); EXPECT_TRUE(request); - EXPECT_TRUE(request->GetConfig<JavaScriptDialogRequest>()); + EXPECT_TRUE(request->GetConfig<JavaScriptAlertDialogRequest>()); }
diff --git a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_te.xtb b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_te.xtb index b0e138bb..4d5eea3b 100644 --- a/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_te.xtb +++ b/ios/chrome/share_extension/strings/resources/ios_share_extension_strings_te.xtb
@@ -3,8 +3,8 @@ <translationbundle lang="te"> <translation id="1613742542373525524">APPLICATION_NAME ఈ లింక్ను హ్యాండిల్ చేయలేదు.</translation> <translation id="4655616150233109325">Chromeలో తెరువు</translation> -<translation id="601731541915429022">పఠన లిస్ట్కు జోడించు</translation> -<translation id="6930009216791986919">బుక్మార్క్లకు జోడించు</translation> +<translation id="601731541915429022">పఠన లిస్ట్కు జోడించండి</translation> +<translation id="6930009216791986919">బుక్మార్క్లకు జోడించండి</translation> <translation id="6965382102122355670">సరే</translation> <translation id="8258999165172757081">జోడించబడింది</translation> </translationbundle> \ No newline at end of file
diff --git a/ios/chrome/test/app/sync_test_util.mm b/ios/chrome/test/app/sync_test_util.mm index c378caf3..501b139a8 100644 --- a/ios/chrome/test/app/sync_test_util.mm +++ b/ios/chrome/test/app/sync_test_util.mm
@@ -9,8 +9,10 @@ #import "base/bind.h" #import "base/check.h" +#import "base/files/file_path.h" #import "base/guid.h" #import "base/memory/ptr_util.h" +#import "base/path_service.h" #import "base/strings/sys_string_conversions.h" #import "base/strings/utf_string_conversions.h" #import "base/test/ios/wait_util.h" @@ -90,7 +92,11 @@ void SetUpFakeSyncServer() { DCHECK(!gSyncFakeServer); - gSyncFakeServer = new fake_server::FakeServer(); + + base::FilePath dir_path; + DCHECK(base::PathService::Get(base::DIR_APP_DATA, &dir_path)) + << "couldn't create directory for Sync Fake Server"; + gSyncFakeServer = new fake_server::FakeServer(dir_path); OverrideSyncNetwork(fake_server::CreateFakeServerHttpPostProviderFactory( gSyncFakeServer->AsWeakPtr())); }
diff --git a/ios/chrome/test/providers/signin/BUILD.gn b/ios/chrome/test/providers/signin/BUILD.gn index 42022add..c402b205 100644 --- a/ios/chrome/test/providers/signin/BUILD.gn +++ b/ios/chrome/test/providers/signin/BUILD.gn
@@ -6,6 +6,7 @@ testonly = true deps = [ ":signin_error", + ":signin_identity", ":signin_resources", ":signin_sso", ":trusted_vault", @@ -23,6 +24,17 @@ frameworks = [ "Foundation.framework" ] } +source_set("signin_identity") { + testonly = true + configs += [ "//build/config/compiler:enable_arc" ] + sources = [ "test_signin_identity.mm" ] + deps = [ + "//ios/chrome/browser/signin:fake_system_identity_manager", + "//ios/public/provider/chrome/browser/signin:signin_identity_api", + ] + frameworks = [ "Foundation.framework" ] +} + source_set("signin_resources") { testonly = true configs += [ "//build/config/compiler:enable_arc" ]
diff --git a/ios/chrome/test/providers/signin/test_signin_identity.mm b/ios/chrome/test/providers/signin/test_signin_identity.mm new file mode 100644 index 0000000..a742c12 --- /dev/null +++ b/ios/chrome/test/providers/signin/test_signin_identity.mm
@@ -0,0 +1,25 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "ios/chrome/browser/signin/fake_system_identity_manager.h" +#import "ios/public/provider/chrome/browser/signin/signin_identity_api.h" + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +namespace ios { +namespace provider { + +bool IsSigninSupported() { + return true; +} + +std::unique_ptr<SystemIdentityManager> CreateSystemIdentityManager( + id<SingleSignOnService> sso_service) { + return std::make_unique<FakeSystemIdentityManager>(); +} + +} // namespace provider +} // namespace ios
diff --git a/ios/chrome/widget_kit_extension/BUILD.gn b/ios/chrome/widget_kit_extension/BUILD.gn index 00e0a2b..ebd0ba90 100644 --- a/ios/chrome/widget_kit_extension/BUILD.gn +++ b/ios/chrome/widget_kit_extension/BUILD.gn
@@ -35,6 +35,17 @@ [ "entitlements/external/widget_kit_extension.appex.entitlements" ] } +source_set("crash_helper") { + sources = [ + "crash_helper.h", + "crash_helper.mm", + ] + + deps = [ "//ios/chrome/common/crash_report" ] + frameworks = [ "Foundation.framework" ] + configs += [ "//build/config/compiler:enable_arc" ] +} + swift_source_set("widget_kit_extension_swift") { sources = [ "dino_game_widget.swift", @@ -47,6 +58,7 @@ bridge_header = "widget_kit_swift_bridge.h" deps = [ + ":crash_helper", ":system_strings", "resources:lockscreen_chrome_logo", "resources:lockscreen_game_logo",
diff --git a/ios/chrome/widget_kit_extension/crash_helper.h b/ios/chrome/widget_kit_extension/crash_helper.h new file mode 100644 index 0000000..3451d34 --- /dev/null +++ b/ios/chrome/widget_kit_extension/crash_helper.h
@@ -0,0 +1,14 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_WIDGET_KIT_EXTENSION_CRASH_HELPER_H_ +#define IOS_CHROME_WIDGET_KIT_EXTENSION_CRASH_HELPER_H_ + +#import <Foundation/Foundation.h> + +@interface CrashHelper : NSObject ++ (void)configure; +@end + +#endif // IOS_CHROME_WIDGET_KIT_EXTENSION_CRASH_HELPER_H_
diff --git a/ios/chrome/widget_kit_extension/crash_helper.mm b/ios/chrome/widget_kit_extension/crash_helper.mm new file mode 100644 index 0000000..2d6b912 --- /dev/null +++ b/ios/chrome/widget_kit_extension/crash_helper.mm
@@ -0,0 +1,23 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "ios/chrome/widget_kit_extension/crash_helper.h" + +#import "ios/chrome/common/crash_report/crash_helper.h" + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +@implementation CrashHelper + ++ (void)configure { + if (self == [CrashHelper self]) { + if (crash_helper::common::CanUseCrashpad()) { + crash_helper::common::StartCrashpad(); + } + } +} + +@end
diff --git a/ios/chrome/widget_kit_extension/main.swift b/ios/chrome/widget_kit_extension/main.swift index 05ee2a3..4e2b105 100644 --- a/ios/chrome/widget_kit_extension/main.swift +++ b/ios/chrome/widget_kit_extension/main.swift
@@ -36,6 +36,9 @@ @main struct ChromeWidgets: WidgetBundle { + init() { + CrashHelper.configure() + } @WidgetBundleBuilder var body: some Widget { QuickActionsWidget()
diff --git a/ios/chrome/widget_kit_extension/widget_kit_swift_bridge.h b/ios/chrome/widget_kit_extension/widget_kit_swift_bridge.h index 20f7b7d..fdc1e6a2 100644 --- a/ios/chrome/widget_kit_extension/widget_kit_swift_bridge.h +++ b/ios/chrome/widget_kit_extension/widget_kit_swift_bridge.h
@@ -9,5 +9,6 @@ // Obj-C and have no C++ in them. #import "ios/chrome/common/app_group/app_group_helper.h" +#import "ios/chrome/widget_kit_extension/crash_helper.h" #endif // IOS_CHROME_WIDGET_KIT_EXTENSION_WIDGET_KIT_SWIFT_BRIDGE_H_
diff --git a/ios/public/provider/chrome/browser/signin/BUILD.gn b/ios/public/provider/chrome/browser/signin/BUILD.gn index 4fc26e4..354c031 100644 --- a/ios/public/provider/chrome/browser/signin/BUILD.gn +++ b/ios/public/provider/chrome/browser/signin/BUILD.gn
@@ -20,6 +20,24 @@ ] } +source_set("fetcher") { + configs += [ "//build/config/compiler:enable_arc" ] + sources = [ + "account_capabilities_fetcher_ios.h", + "account_capabilities_fetcher_ios.mm", + ] + deps = [ + ":signin", + "//base", + "//components/signin/internal/identity_manager", + "//components/signin/public/identity_manager", + "//ios/chrome/browser/browser_state", + "//ios/chrome/browser/signin:system_identity", + "//ios/public/provider/chrome/browser/signin:capabilities_types", + "//third_party/abseil-cpp:absl", + ] +} + source_set("signin_error_api") { configs += [ "//build/config/compiler:enable_arc" ] sources = [ "signin_error_api.h" ]
diff --git a/ios/public/provider/chrome/browser/signin/DEPS b/ios/public/provider/chrome/browser/signin/DEPS index 98615e34..c26221c 100644 --- a/ios/public/provider/chrome/browser/signin/DEPS +++ b/ios/public/provider/chrome/browser/signin/DEPS
@@ -1,5 +1,7 @@ include_rules = [ "+components/signin/internal/identity_manager/account_capabilities_constants.h", + "+components/signin/internal/identity_manager/account_capabilities_fetcher.h", + "+components/signin/public/identity_manager/account_info.h", "+components/signin/public/base/signin_metrics.h", "+components/sync/driver/trusted_vault_client.h", "+ios/chrome/browser/signin/system_identity.h",
diff --git a/ios/public/provider/chrome/browser/signin/account_capabilities_fetcher_ios.h b/ios/public/provider/chrome/browser/signin/account_capabilities_fetcher_ios.h new file mode 100644 index 0000000..3346531 --- /dev/null +++ b/ios/public/provider/chrome/browser/signin/account_capabilities_fetcher_ios.h
@@ -0,0 +1,44 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_PUBLIC_PROVIDER_CHROME_BROWSER_SIGNIN_ACCOUNT_CAPABILITIES_FETCHER_IOS_H_ +#define IOS_PUBLIC_PROVIDER_CHROME_BROWSER_SIGNIN_ACCOUNT_CAPABILITIES_FETCHER_IOS_H_ + +#import "components/signin/internal/identity_manager/account_capabilities_fetcher.h" +#import "components/signin/public/identity_manager/account_info.h" +#import "ios/chrome/browser/signin/system_identity.h" +#import "ios/public/provider/chrome/browser/signin/capabilities_dict.h" +#import "ios/public/provider/chrome/browser/signin/chrome_identity_service.h" + +namespace ios { + +// iOS implementation of `AccountCapabilitiesFetcher`. +class AccountCapabilitiesFetcherIOS : public AccountCapabilitiesFetcher { + public: + AccountCapabilitiesFetcherIOS( + const CoreAccountInfo& account_info, + AccountCapabilitiesFetcher::OnCompleteCallback on_complete_callback, + ios::ChromeIdentityService* chrome_identity_service_, + id<SystemIdentity> system_identity); + ~AccountCapabilitiesFetcherIOS() override; + + AccountCapabilitiesFetcherIOS(const AccountCapabilitiesFetcherIOS&) = delete; + AccountCapabilitiesFetcherIOS& operator=( + const AccountCapabilitiesFetcherIOS&) = delete; + + protected: + // AccountCapabilitiesFetcher: + void StartImpl() override; + + private: + void OnCapabilitiesFetched(CapabilitiesDict* capabilities, NSError* error); + + ios::ChromeIdentityService* chrome_identity_service_ = nullptr; + __strong id<SystemIdentity> const system_identity_ = nil; + base::WeakPtrFactory<AccountCapabilitiesFetcherIOS> weak_ptr_factory_{this}; +}; + +} // namespace ios + +#endif // IOS_PUBLIC_PROVIDER_CHROME_BROWSER_SIGNIN_ACCOUNT_CAPABILITIES_FETCHER_IOS_H_
diff --git a/ios/public/provider/chrome/browser/signin/account_capabilities_fetcher_ios.mm b/ios/public/provider/chrome/browser/signin/account_capabilities_fetcher_ios.mm new file mode 100644 index 0000000..13746e89 --- /dev/null +++ b/ios/public/provider/chrome/browser/signin/account_capabilities_fetcher_ios.mm
@@ -0,0 +1,73 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "ios/public/provider/chrome/browser/signin/account_capabilities_fetcher_ios.h" + +#import <Foundation/Foundation.h> +#import <map> + +#import "base/strings/sys_string_conversions.h" +#import "third_party/abseil-cpp/absl/types/optional.h" + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +namespace ios { + +AccountCapabilitiesFetcherIOS::~AccountCapabilitiesFetcherIOS() = default; + +AccountCapabilitiesFetcherIOS::AccountCapabilitiesFetcherIOS( + const CoreAccountInfo& account_info, + AccountCapabilitiesFetcher::OnCompleteCallback on_complete_callback, + ios::ChromeIdentityService* chrome_identity_service, + id<SystemIdentity> system_identity) + : AccountCapabilitiesFetcher(account_info, std::move(on_complete_callback)), + chrome_identity_service_(chrome_identity_service), + system_identity_(system_identity) {} + +void AccountCapabilitiesFetcherIOS::StartImpl() { + const std::vector<std::string> capability_name_vector = + AccountCapabilities::GetSupportedAccountCapabilityNames(); + NSMutableArray<NSString*>* capability_name_array; + for (const std::string& capability : capability_name_vector) { + [capability_name_array addObject:base::SysUTF8ToNSString(capability)]; + } + + __block auto callback = + base::BindOnce(&AccountCapabilitiesFetcherIOS::OnCapabilitiesFetched, + weak_ptr_factory_.GetWeakPtr()); + chrome_identity_service_->FetchCapabilities( + system_identity_, capability_name_array, + ^(CapabilitiesDict* dict, NSError* err) { + std::move(callback).Run(dict, err); + }); +} + +void AccountCapabilitiesFetcherIOS::OnCapabilitiesFetched( + CapabilitiesDict* dict, + NSError* err) { + __block base::flat_map<std::string, bool> capabilities_map; + [dict enumerateKeysAndObjectsUsingBlock:^(NSString* name, NSNumber* value, + BOOL* stop) { + ios::ChromeIdentityCapabilityResult capability_state = + static_cast<ios::ChromeIdentityCapabilityResult>(value.intValue); + switch (value.intValue) { + case static_cast<int>(ios::ChromeIdentityCapabilityResult::kTrue): + case static_cast<int>(ios::ChromeIdentityCapabilityResult::kFalse): + capabilities_map[base::SysNSStringToUTF8(name)] = + capability_state == ios::ChromeIdentityCapabilityResult::kTrue; + break; + case static_cast<int>(ios::ChromeIdentityCapabilityResult::kUnknown): + break; + default: + NOTREACHED(); + } + }]; + absl::optional<AccountCapabilities> account_capabilities = + AccountCapabilities(std::move(capabilities_map)); + CompleteFetchAndMaybeDestroySelf(account_capabilities); +} + +} // namespace ios
diff --git a/ios/public/provider/chrome/browser/signin/chrome_identity_service.h b/ios/public/provider/chrome/browser/signin/chrome_identity_service.h index 48b3da7d..63054e2 100644 --- a/ios/public/provider/chrome/browser/signin/chrome_identity_service.h +++ b/ios/public/provider/chrome/browser/signin/chrome_identity_service.h
@@ -257,7 +257,6 @@ // event, corresponds to an invalid grant error. virtual bool IsInvalidGrantError(NSDictionary* user_info); - protected: // Asynchronously retrieves the list of supported capabilities for the given // Chrome identity. virtual void FetchCapabilities( @@ -265,6 +264,7 @@ NSArray<NSString*>* capabilities, ChromeIdentityCapabilitiesFetchCompletionBlock completion); + protected: // Fires `OnIdentityListChanged` on all observers. // `notify_user` is true if the identity list is updated by an external source // than Chrome. This means that a first party Google app had added or removed
diff --git a/ios/web/public/test/fakes/fake_java_script_dialog_presenter.h b/ios/web/public/test/fakes/fake_java_script_dialog_presenter.h index 43014836fa..11816ca 100644 --- a/ios/web/public/test/fakes/fake_java_script_dialog_presenter.h +++ b/ios/web/public/test/fakes/fake_java_script_dialog_presenter.h
@@ -8,19 +8,37 @@ #include <memory> #include <vector> +#import "base/callback.h" #import "ios/web/public/ui/java_script_dialog_presenter.h" namespace web { -struct FakeJavaScriptDialog { - FakeJavaScriptDialog(); - ~FakeJavaScriptDialog(); +struct FakeJavaScriptAlertDialog { + FakeJavaScriptAlertDialog(); + ~FakeJavaScriptAlertDialog(); WebState* web_state = nullptr; GURL origin_url; - JavaScriptDialogType java_script_dialog_type; + NSString* message_text; + base::OnceClosure callback; +}; + +struct FakeJavaScriptConfirmDialog { + FakeJavaScriptConfirmDialog(); + ~FakeJavaScriptConfirmDialog(); + WebState* web_state = nullptr; + GURL origin_url; + NSString* message_text; + base::OnceCallback<void(bool success)> callback; +}; + +struct FakeJavaScriptPromptDialog { + FakeJavaScriptPromptDialog(); + ~FakeJavaScriptPromptDialog(); + WebState* web_state = nullptr; + GURL origin_url; NSString* message_text; NSString* default_prompt_text; - DialogClosedCallback callback; + base::OnceCallback<void(NSString* user_input)> callback; }; // Fake presenter to check that the JavaScriptDialogPresenter methods are called @@ -32,12 +50,21 @@ ~FakeJavaScriptDialogPresenter() override; // JavaScriptDialogPresenter overrides: - void RunJavaScriptDialog(WebState* web_state, - const GURL& origin_url, - JavaScriptDialogType java_script_dialog_type, - NSString* message_text, - NSString* default_prompt_text, - DialogClosedCallback callback) override; + void RunJavaScriptAlertDialog(WebState* web_state, + const GURL& origin_url, + NSString* message_text, + base::OnceClosure callback) override; + void RunJavaScriptConfirmDialog( + WebState* web_state, + const GURL& origin_url, + NSString* message_text, + base::OnceCallback<void(bool success)> callback) override; + void RunJavaScriptPromptDialog( + WebState* web_state, + const GURL& origin_url, + NSString* message_text, + NSString* default_prompt_text, + base::OnceCallback<void(NSString* user_input)> callback) override; void CancelDialogs(WebState* web_state) override; // Whether callback execution is paused. If a dialog presentation is @@ -55,9 +82,17 @@ bool cancel_dialogs_called() const { return cancel_dialogs_called_; } // Returns a vector of requested dialogs. - const std::vector<std::unique_ptr<FakeJavaScriptDialog>>& requested_dialogs() - const { - return requested_dialogs_; + const std::vector<std::unique_ptr<FakeJavaScriptAlertDialog>>& + requested_alert_dialogs() const { + return requested_alert_dialogs_; + } + const std::vector<std::unique_ptr<FakeJavaScriptConfirmDialog>>& + requested_confirm_dialogs() const { + return requested_confirm_dialogs_; + } + const std::vector<std::unique_ptr<FakeJavaScriptPromptDialog>>& + requested_prompt_dialogs() const { + return requested_prompt_dialogs_; } // Sets `success` argument to be used for RunJavaScriptDialog callback. @@ -74,11 +109,18 @@ // Executes all non-executed callbacks in `requested_dialogs_`. void ExecuteAllDialogCallbacks(); // Executes the callback for `dialog`. - void ExecuteDialogCallback(FakeJavaScriptDialog* dialog); + void ExecuteAlertDialogCallback(FakeJavaScriptAlertDialog* dialog); + void ExecuteConfirmDialogCallback(FakeJavaScriptConfirmDialog* dialog); + void ExecutePromptDialogCallback(FakeJavaScriptPromptDialog* dialog); bool callback_execution_paused_ = false; bool cancel_dialogs_called_ = false; - std::vector<std::unique_ptr<FakeJavaScriptDialog>> requested_dialogs_; + std::vector<std::unique_ptr<FakeJavaScriptAlertDialog>> + requested_alert_dialogs_; + std::vector<std::unique_ptr<FakeJavaScriptConfirmDialog>> + requested_confirm_dialogs_; + std::vector<std::unique_ptr<FakeJavaScriptPromptDialog>> + requested_prompt_dialogs_; bool callback_success_argument_ = false; NSString* callback_user_input_argument_; };
diff --git a/ios/web/public/test/fakes/fake_java_script_dialog_presenter.mm b/ios/web/public/test/fakes/fake_java_script_dialog_presenter.mm index 3d713f9..92ed4a59 100644 --- a/ios/web/public/test/fakes/fake_java_script_dialog_presenter.mm +++ b/ios/web/public/test/fakes/fake_java_script_dialog_presenter.mm
@@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#import <Foundation/Foundation.h> + #import "ios/web/public/test/fakes/fake_java_script_dialog_presenter.h" #if !defined(__has_feature) || !__has_feature(objc_arc) @@ -10,9 +12,17 @@ namespace web { -FakeJavaScriptDialog::FakeJavaScriptDialog() = default; +FakeJavaScriptAlertDialog::FakeJavaScriptAlertDialog() = default; -FakeJavaScriptDialog::~FakeJavaScriptDialog() = default; +FakeJavaScriptAlertDialog::~FakeJavaScriptAlertDialog() = default; + +FakeJavaScriptConfirmDialog::FakeJavaScriptConfirmDialog() = default; + +FakeJavaScriptConfirmDialog::~FakeJavaScriptConfirmDialog() = default; + +FakeJavaScriptPromptDialog::FakeJavaScriptPromptDialog() = default; + +FakeJavaScriptPromptDialog::~FakeJavaScriptPromptDialog() = default; FakeJavaScriptDialogPresenter::FakeJavaScriptDialogPresenter() = default; @@ -22,25 +32,58 @@ set_callback_execution_paused(false); } -void FakeJavaScriptDialogPresenter::RunJavaScriptDialog( +void FakeJavaScriptDialogPresenter::RunJavaScriptAlertDialog( WebState* web_state, const GURL& origin_url, - JavaScriptDialogType java_script_dialog_type, NSString* message_text, - NSString* default_prompt_text, - DialogClosedCallback callback) { - auto dialog = std::make_unique<FakeJavaScriptDialog>(); + base::OnceClosure callback) { + auto dialog = std::make_unique<FakeJavaScriptAlertDialog>(); dialog->web_state = web_state; dialog->origin_url = origin_url; - dialog->java_script_dialog_type = java_script_dialog_type; + dialog->message_text = [message_text copy]; + dialog->callback = std::move(callback); + + requested_alert_dialogs_.push_back(std::move(dialog)); + + if (!callback_execution_paused()) { + ExecuteAlertDialogCallback(requested_alert_dialogs_.back().get()); + } +} + +void FakeJavaScriptDialogPresenter::RunJavaScriptConfirmDialog( + WebState* web_state, + const GURL& origin_url, + NSString* message_text, + base::OnceCallback<void(bool success)> callback) { + auto dialog = std::make_unique<FakeJavaScriptConfirmDialog>(); + dialog->web_state = web_state; + dialog->origin_url = origin_url; + dialog->message_text = [message_text copy]; + dialog->callback = std::move(callback); + + requested_confirm_dialogs_.push_back(std::move(dialog)); + + if (!callback_execution_paused()) { + ExecuteConfirmDialogCallback(requested_confirm_dialogs_.back().get()); + } +} +void FakeJavaScriptDialogPresenter::RunJavaScriptPromptDialog( + WebState* web_state, + const GURL& origin_url, + NSString* message_text, + NSString* default_prompt_text, + base::OnceCallback<void(NSString* user_input)> callback) { + auto dialog = std::make_unique<FakeJavaScriptPromptDialog>(); + dialog->web_state = web_state; + dialog->origin_url = origin_url; dialog->message_text = [message_text copy]; dialog->default_prompt_text = [default_prompt_text copy]; dialog->callback = std::move(callback); - requested_dialogs_.push_back(std::move(dialog)); + requested_prompt_dialogs_.push_back(std::move(dialog)); if (!callback_execution_paused()) - ExecuteDialogCallback(requested_dialogs_.back().get()); + ExecutePromptDialogCallback(requested_prompt_dialogs_.back().get()); } void FakeJavaScriptDialogPresenter::CancelDialogs(WebState* web_state) { @@ -49,17 +92,41 @@ void FakeJavaScriptDialogPresenter::ExecuteAllDialogCallbacks() { DCHECK(!callback_execution_paused()); - for (std::unique_ptr<FakeJavaScriptDialog>& dialog : requested_dialogs_) { - ExecuteDialogCallback(dialog.get()); + for (std::unique_ptr<FakeJavaScriptAlertDialog>& dialog : + requested_alert_dialogs_) { + ExecuteAlertDialogCallback(dialog.get()); + } + for (std::unique_ptr<FakeJavaScriptConfirmDialog>& dialog : + requested_confirm_dialogs_) { + ExecuteConfirmDialogCallback(dialog.get()); + } + for (std::unique_ptr<FakeJavaScriptPromptDialog>& dialog : + requested_prompt_dialogs_) { + ExecutePromptDialogCallback(dialog.get()); } } -void FakeJavaScriptDialogPresenter::ExecuteDialogCallback( - FakeJavaScriptDialog* dialog) { - DialogClosedCallback& callback = dialog->callback; +void FakeJavaScriptDialogPresenter::ExecuteAlertDialogCallback( + FakeJavaScriptAlertDialog* dialog) { + base::OnceClosure& callback = dialog->callback; if (!callback.is_null()) { - std::move(callback).Run(callback_success_argument_, - callback_user_input_argument_); + std::move(callback).Run(); + } +} + +void FakeJavaScriptDialogPresenter::ExecuteConfirmDialogCallback( + FakeJavaScriptConfirmDialog* dialog) { + base::OnceCallback<void(BOOL success)>& callback = dialog->callback; + if (!callback.is_null()) { + std::move(callback).Run(callback_success_argument_); + } +} + +void FakeJavaScriptDialogPresenter::ExecutePromptDialogCallback( + FakeJavaScriptPromptDialog* dialog) { + base::OnceCallback<void(NSString * user_input)>& callback = dialog->callback; + if (!callback.is_null()) { + std::move(callback).Run(callback_user_input_argument_); } }
diff --git a/ios/web/public/ui/BUILD.gn b/ios/web/public/ui/BUILD.gn index 4dace6e..8ccb36e 100644 --- a/ios/web/public/ui/BUILD.gn +++ b/ios/web/public/ui/BUILD.gn
@@ -14,9 +14,7 @@ "crw_context_menu_item.h", "crw_web_view_proxy.h", "crw_web_view_scroll_view_proxy.h", - "java_script_dialog_callback.h", "java_script_dialog_presenter.h", - "java_script_dialog_type.h", "page_display_state.h", ]
diff --git a/ios/web/public/ui/java_script_dialog_callback.h b/ios/web/public/ui/java_script_dialog_callback.h deleted file mode 100644 index 34dc3e8d..0000000 --- a/ios/web/public/ui/java_script_dialog_callback.h +++ /dev/null
@@ -1,22 +0,0 @@ -// Copyright 2016 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef IOS_WEB_PUBLIC_UI_JAVA_SCRIPT_DIALOG_CALLBACK_H_ -#define IOS_WEB_PUBLIC_UI_JAVA_SCRIPT_DIALOG_CALLBACK_H_ - -#import <Foundation/Foundation.h> - -#include "base/callback.h" - -namespace web { - -// Callback for `RunJavaScriptDialog`. The `success` value is true if the user -// responded with OK, `false` if the dialog was cancelled. The `user_input` -// value will exist for prompt alerts only. -typedef base::OnceCallback<void(bool success, NSString* user_input)> - DialogClosedCallback; - -} // namespace web - -#endif // IOS_WEB_PUBLIC_UI_JAVA_SCRIPT_DIALOG_CALLBACK_H_
diff --git a/ios/web/public/ui/java_script_dialog_presenter.h b/ios/web/public/ui/java_script_dialog_presenter.h index 13a0d55..3192533 100644 --- a/ios/web/public/ui/java_script_dialog_presenter.h +++ b/ios/web/public/ui/java_script_dialog_presenter.h
@@ -5,9 +5,9 @@ #ifndef IOS_WEB_PUBLIC_UI_JAVA_SCRIPT_DIALOG_PRESENTER_H_ #define IOS_WEB_PUBLIC_UI_JAVA_SCRIPT_DIALOG_PRESENTER_H_ -#import "ios/web/public/ui/java_script_dialog_callback.h" -#include "ios/web/public/ui/java_script_dialog_type.h" -#include "url/gurl.h" +#import "base/callback.h" +#import "base/functional/callback_forward.h" +#import "url/gurl.h" @class NSString; @@ -19,14 +19,28 @@ public: virtual ~JavaScriptDialogPresenter() = default; - // Requests presentation of a JavaScript dialog. Clients must always call - // `callback` even if they choose not to present the dialog. - virtual void RunJavaScriptDialog(WebState* web_state, - const GURL& origin_url, - JavaScriptDialogType dialog_type, - NSString* message_text, - NSString* default_prompt_text, - DialogClosedCallback callback) = 0; + // Notifies the delegate that a JavaScript alert needs to be presented. + virtual void RunJavaScriptAlertDialog(WebState* web_state, + const GURL& origin_url, + NSString* message_text, + base::OnceClosure callback) = 0; + + // Notifies the delegate that a JavaScript confirmation dialog needs to be + // presented. + virtual void RunJavaScriptConfirmDialog( + WebState* web_state, + const GURL& origin_url, + NSString* message_text, + base::OnceCallback<void(bool success)> callback) = 0; + + // Notifies the delegate that a JavaScript prompt needs to be presented. + virtual void RunJavaScriptPromptDialog( + WebState* web_state, + const GURL& origin_url, + NSString* message_text, + NSString* default_prompt_text, + base::OnceCallback<void(NSString* user_input)> callback) = 0; + // Informs clients that all requested dialogs associated with `web_state` // should be dismissed. virtual void CancelDialogs(WebState* web_state) = 0;
diff --git a/ios/web/public/ui/java_script_dialog_type.h b/ios/web/public/ui/java_script_dialog_type.h deleted file mode 100644 index c38af78..0000000 --- a/ios/web/public/ui/java_script_dialog_type.h +++ /dev/null
@@ -1,22 +0,0 @@ -// Copyright 2016 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef IOS_WEB_PUBLIC_UI_JAVA_SCRIPT_DIALOG_TYPE_H_ -#define IOS_WEB_PUBLIC_UI_JAVA_SCRIPT_DIALOG_TYPE_H_ - -namespace web { - -// Enum specifying different types of JavaScript messages. -enum JavaScriptDialogType { - // Dialog with OK button only. - JAVASCRIPT_DIALOG_TYPE_ALERT = 1, - // Dialog with OK and Cancel button. - JAVASCRIPT_DIALOG_TYPE_CONFIRM, - // Dialog with OK button, Cancel button, and a text field. - JAVASCRIPT_DIALOG_TYPE_PROMPT -}; - -} // namespace web - -#endif // IOS_WEB_PUBLIC_UI_JAVA_SCRIPT_DIALOG_TYPE_H_
diff --git a/ios/web/web_state/ui/crw_web_controller_unittest.mm b/ios/web/web_state/ui/crw_web_controller_unittest.mm index e6dc2608..327b761 100644 --- a/ios/web/web_state/ui/crw_web_controller_unittest.mm +++ b/ios/web/web_state/ui/crw_web_controller_unittest.mm
@@ -325,9 +325,22 @@ FakeJavaScriptDialogPresenter* js_dialog_presenter() { return web_state_delegate_.GetFakeJavaScriptDialogPresenter(); } - const std::vector<std::unique_ptr<FakeJavaScriptDialog>>& - requested_dialogs() { - return js_dialog_presenter()->requested_dialogs(); + const std::vector<std::unique_ptr<FakeJavaScriptAlertDialog>>& + requested_alert_dialogs() { + return js_dialog_presenter()->requested_alert_dialogs(); + } + const std::vector<std::unique_ptr<FakeJavaScriptConfirmDialog>>& + requested_confirm_dialogs() { + return js_dialog_presenter()->requested_confirm_dialogs(); + } + const std::vector<std::unique_ptr<FakeJavaScriptPromptDialog>>& + requested_prompt_dialogs() { + return js_dialog_presenter()->requested_prompt_dialogs(); + } + bool JSDialogPresenterHasDialogs() { + return !requested_alert_dialogs().empty() || + !requested_confirm_dialogs().empty() || + !requested_prompt_dialogs().empty(); } const GURL& page_url() { return page_url_; } @@ -338,64 +351,65 @@ // Tests that window.alert dialog is shown. TEST_F(JavaScriptDialogPresenterTest, Alert) { - ASSERT_TRUE(requested_dialogs().empty()); + ASSERT_FALSE(JSDialogPresenterHasDialogs()); ExecuteJavaScript(@"alert('test')"); - ASSERT_EQ(1U, requested_dialogs().size()); - auto& dialog = requested_dialogs().front(); + ASSERT_EQ(1U, requested_alert_dialogs().size()); + ASSERT_TRUE(requested_confirm_dialogs().empty()); + ASSERT_TRUE(requested_prompt_dialogs().empty()); + auto& dialog = requested_alert_dialogs().front(); EXPECT_EQ(web_state(), dialog->web_state); EXPECT_EQ(page_url(), dialog->origin_url); - EXPECT_EQ(JAVASCRIPT_DIALOG_TYPE_ALERT, dialog->java_script_dialog_type); EXPECT_NSEQ(@"test", dialog->message_text); - EXPECT_FALSE(dialog->default_prompt_text); } // Tests that window.confirm dialog is shown and its result is true. TEST_F(JavaScriptDialogPresenterTest, ConfirmWithTrue) { - ASSERT_TRUE(requested_dialogs().empty()); + ASSERT_FALSE(JSDialogPresenterHasDialogs()); js_dialog_presenter()->set_callback_success_argument(true); EXPECT_NSEQ(@YES, ExecuteJavaScript(@"confirm('test')")); - ASSERT_EQ(1U, requested_dialogs().size()); - auto& dialog = requested_dialogs().front(); + ASSERT_TRUE(requested_alert_dialogs().empty()); + ASSERT_EQ(1U, requested_confirm_dialogs().size()); + ASSERT_TRUE(requested_prompt_dialogs().empty()); + auto& dialog = requested_confirm_dialogs().front(); EXPECT_EQ(web_state(), dialog->web_state); EXPECT_EQ(page_url(), dialog->origin_url); - EXPECT_EQ(JAVASCRIPT_DIALOG_TYPE_CONFIRM, dialog->java_script_dialog_type); EXPECT_NSEQ(@"test", dialog->message_text); - EXPECT_FALSE(dialog->default_prompt_text); } // Tests that window.confirm dialog is shown and its result is false. TEST_F(JavaScriptDialogPresenterTest, ConfirmWithFalse) { - ASSERT_TRUE(requested_dialogs().empty()); + ASSERT_FALSE(JSDialogPresenterHasDialogs()); EXPECT_NSEQ(@NO, ExecuteJavaScript(@"confirm('test')")); - ASSERT_EQ(1U, requested_dialogs().size()); - auto& dialog = requested_dialogs().front(); + ASSERT_TRUE(requested_alert_dialogs().empty()); + ASSERT_EQ(1U, requested_confirm_dialogs().size()); + ASSERT_TRUE(requested_prompt_dialogs().empty()); + auto& dialog = requested_confirm_dialogs().front(); EXPECT_EQ(web_state(), dialog->web_state); EXPECT_EQ(page_url(), dialog->origin_url); - EXPECT_EQ(JAVASCRIPT_DIALOG_TYPE_CONFIRM, dialog->java_script_dialog_type); EXPECT_NSEQ(@"test", dialog->message_text); - EXPECT_FALSE(dialog->default_prompt_text); } // Tests that window.prompt dialog is shown. TEST_F(JavaScriptDialogPresenterTest, Prompt) { - ASSERT_TRUE(requested_dialogs().empty()); + ASSERT_FALSE(JSDialogPresenterHasDialogs()); js_dialog_presenter()->set_callback_user_input_argument(@"Maybe"); EXPECT_NSEQ(@"Maybe", ExecuteJavaScript(@"prompt('Yes?', 'No')")); - ASSERT_EQ(1U, requested_dialogs().size()); - auto& dialog = requested_dialogs().front(); + ASSERT_TRUE(requested_alert_dialogs().empty()); + ASSERT_TRUE(requested_confirm_dialogs().empty()); + ASSERT_EQ(1U, requested_prompt_dialogs().size()); + auto& dialog = requested_prompt_dialogs().front(); EXPECT_EQ(web_state(), dialog->web_state); EXPECT_EQ(page_url(), dialog->origin_url); - EXPECT_EQ(JAVASCRIPT_DIALOG_TYPE_PROMPT, dialog->java_script_dialog_type); EXPECT_NSEQ(@"Yes?", dialog->message_text); EXPECT_NSEQ(@"No", dialog->default_prompt_text); } @@ -403,7 +417,7 @@ // Tests that window.alert, window.confirm and window.prompt dialogs are not // shown if URL of presenting main frame is different from visible URL. TEST_F(JavaScriptDialogPresenterTest, DifferentVisibleUrl) { - ASSERT_TRUE(requested_dialogs().empty()); + ASSERT_FALSE(JSDialogPresenterHasDialogs()); // Change visible URL. AddPendingItem(GURL("https://pending.test/"), ui::PAGE_TRANSITION_TYPED); @@ -412,13 +426,13 @@ web_state()->GetVisibleURL().DeprecatedGetOriginAsURL()); ExecuteJavaScript(@"alert('test')"); - ASSERT_TRUE(requested_dialogs().empty()); + ASSERT_TRUE(requested_alert_dialogs().empty()); EXPECT_NSEQ(@NO, ExecuteJavaScript(@"confirm('test')")); - ASSERT_TRUE(requested_dialogs().empty()); + ASSERT_TRUE(requested_confirm_dialogs().empty()); EXPECT_NSEQ([NSNull null], ExecuteJavaScript(@"prompt('Yes?', 'No')")); - ASSERT_TRUE(requested_dialogs().empty()); + ASSERT_TRUE(requested_prompt_dialogs().empty()); } // Test fixture for testing visible security state.
diff --git a/ios/web/web_state/ui/crw_wk_ui_handler.mm b/ios/web/web_state/ui/crw_wk_ui_handler.mm index c46b0b0..bc1dcde 100644 --- a/ios/web/web_state/ui/crw_wk_ui_handler.mm +++ b/ios/web/web_state/ui/crw_wk_ui_handler.mm
@@ -12,7 +12,6 @@ #import "ios/web/navigation/wk_navigation_util.h" #import "ios/web/public/permissions/permissions.h" #import "ios/web/public/ui/context_menu_params.h" -#import "ios/web/public/ui/java_script_dialog_type.h" #import "ios/web/public/web_client.h" #import "ios/web/web_state/ui/crw_wk_ui_handler_delegate.h" #import "ios/web/web_state/user_interaction_state.h" @@ -21,6 +20,7 @@ #import "ios/web/webui/mojo_facade.h" #import "net/base/mac/url_conversions.h" #import "url/gurl.h" +#import "url/origin.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support." @@ -187,13 +187,16 @@ runJavaScriptAlertPanelWithMessage:(NSString*)message initiatedByFrame:(WKFrameInfo*)frame completionHandler:(void (^)())completionHandler { - [self runJavaScriptDialogOfType:web::JAVASCRIPT_DIALOG_TYPE_ALERT - initiatedByFrame:frame - message:message - defaultText:nil - completion:^(BOOL, NSString*) { - completionHandler(); - }]; + DCHECK(completionHandler); + GURL requestURL = net::GURLWithNSURL(frame.request.URL); + if (![self shouldPresentJavaScriptDialogForRequestURL:requestURL + isMainFrame:frame.mainFrame]) { + completionHandler(); + return; + } + + self.webStateImpl->RunJavaScriptAlertDialog( + requestURL, message, base::BindOnce(completionHandler)); } - (void)webView:(WKWebView*)webView @@ -201,15 +204,17 @@ initiatedByFrame:(WKFrameInfo*)frame completionHandler: (void (^)(BOOL result))completionHandler { - [self runJavaScriptDialogOfType:web::JAVASCRIPT_DIALOG_TYPE_CONFIRM - initiatedByFrame:frame - message:message - defaultText:nil - completion:^(BOOL success, NSString*) { - if (completionHandler) { - completionHandler(success); - } - }]; + DCHECK(completionHandler); + + GURL requestURL = net::GURLWithNSURL(frame.request.URL); + if (![self shouldPresentJavaScriptDialogForRequestURL:requestURL + isMainFrame:frame.mainFrame]) { + completionHandler(NO); + return; + } + + self.webStateImpl->RunJavaScriptConfirmDialog( + requestURL, message, base::BindOnce(completionHandler)); } - (void)webView:(WKWebView*)webView @@ -226,15 +231,17 @@ return; } - [self runJavaScriptDialogOfType:web::JAVASCRIPT_DIALOG_TYPE_PROMPT - initiatedByFrame:frame - message:prompt - defaultText:defaultText - completion:^(BOOL, NSString* input) { - if (completionHandler) { - completionHandler(input); - } - }]; + DCHECK(completionHandler); + + GURL requestURL = net::GURLWithNSURL(frame.request.URL); + if (![self shouldPresentJavaScriptDialogForRequestURL:requestURL + isMainFrame:frame.mainFrame]) { + completionHandler(nil); + return; + } + + self.webStateImpl->RunJavaScriptPromptDialog( + requestURL, prompt, defaultText, base::BindOnce(completionHandler)); } - (void)webView:(WKWebView*)webView @@ -269,42 +276,6 @@ #pragma mark - Helper -// Helper to respond to `webView:runJavaScript...| delegate methods. -// `completionHandler` must not be nil. -- (void)runJavaScriptDialogOfType:(web::JavaScriptDialogType)type - initiatedByFrame:(WKFrameInfo*)frame - message:(NSString*)message - defaultText:(NSString*)defaultText - completion:(void (^)(BOOL, NSString*))completionHandler { - DCHECK(completionHandler); - - // JavaScript dialogs should not be presented if there is no information about - // the requesting page's URL. - GURL requestURL = net::GURLWithNSURL(frame.request.URL); - if (!requestURL.is_valid()) { - completionHandler(NO, nil); - return; - } - - if (self.webStateImpl->GetVisibleURL().DeprecatedGetOriginAsURL() != - requestURL.DeprecatedGetOriginAsURL() && - frame.mainFrame) { - // Dialog was requested by web page's main frame, but visible URL has - // different origin. This could happen if the user has started a new - // browser initiated navigation. There is no value in showing dialogs - // requested by page, which this WebState is about to leave. But presenting - // the dialog can lead to phishing and other abusive behaviors. - completionHandler(NO, nil); - return; - } - - self.webStateImpl->RunJavaScriptDialog( - requestURL, type, message, defaultText, - base::BindOnce(^(bool success, NSString* input) { - completionHandler(success, input); - })); -} - // Helper that displays a prompt to the user that asks for access to // `permissions`. - (void)displayPromptForPermissions:(NSArray<NSNumber*>*)permissions @@ -327,4 +298,27 @@ } } +// Helper that returns whether or not a dialog should be presented for a +// frame with `requestURL`. +- (BOOL)shouldPresentJavaScriptDialogForRequestURL:(const GURL&)requestURL + isMainFrame:(BOOL)isMainFrame { + // JavaScript dialogs should not be presented if there is no information about + // the requesting page's URL. + if (!requestURL.is_valid()) { + return NO; + } + + if (isMainFrame && url::Origin::Create(self.webStateImpl->GetVisibleURL()) != + url::Origin::Create(requestURL)) { + // Dialog was requested by web page's main frame, but visible URL has + // different origin. This could happen if the user has started a new + // browser initiated navigation. There is no value in showing dialogs + // requested by page, which this WebState is about to leave. But presenting + // the dialog can lead to phishing and other abusive behaviors. + return NO; + } + + return YES; +} + @end
diff --git a/ios/web/web_state/web_state_impl.h b/ios/web/web_state/web_state_impl.h index e700972..4e59b2b 100644 --- a/ios/web/web_state/web_state_impl.h +++ b/ios/web/web_state/web_state_impl.h
@@ -23,8 +23,6 @@ #import "ios/web/navigation/navigation_manager_delegate.h" #import "ios/web/navigation/navigation_manager_impl.h" #import "ios/web/public/navigation/web_state_policy_decider.h" -#import "ios/web/public/ui/java_script_dialog_callback.h" -#include "ios/web/public/ui/java_script_dialog_type.h" #import "ios/web/public/web_state.h" #import "ios/web/public/web_state_delegate.h" #include "url/gurl.h" @@ -203,12 +201,25 @@ // Notifies the delegate that a Form Repost dialog needs to be presented. void ShowRepostFormWarningDialog(base::OnceCallback<void(bool)> callback); - // Notifies the delegate that a JavaScript dialog needs to be presented. - void RunJavaScriptDialog(const GURL& origin_url, - JavaScriptDialogType java_script_dialog_type, - NSString* message_text, - NSString* default_prompt_text, - DialogClosedCallback callback); + // Notifies the delegate that a JavaScript alert dialog needs to be presented. + void RunJavaScriptAlertDialog(const GURL& origin_url, + NSString* message_text, + base::OnceClosure callback); + + // Notifies the delegate that a JavaScript confirmation dialog needs to be + // presented. + void RunJavaScriptConfirmDialog( + const GURL& origin_url, + NSString* message_text, + base::OnceCallback<void(bool success)> callback); + + // Notifies the delegate that a JavaScript prompt dialog needs to be + // presented. + void RunJavaScriptPromptDialog( + const GURL& origin_url, + NSString* message_text, + NSString* default_prompt_text, + base::OnceCallback<void(NSString* user_input)> callback); // Returns true if a javascript dialog is running. bool IsJavaScriptDialogRunning();
diff --git a/ios/web/web_state/web_state_impl.mm b/ios/web/web_state/web_state_impl.mm index 5b64a32..ab42575 100644 --- a/ios/web/web_state/web_state_impl.mm +++ b/ios/web/web_state/web_state_impl.mm
@@ -259,15 +259,28 @@ RealizedState()->ShowRepostFormWarningDialog(std::move(callback)); } -void WebStateImpl::RunJavaScriptDialog( +void WebStateImpl::RunJavaScriptAlertDialog(const GURL& origin_url, + NSString* message_text, + base::OnceClosure callback) { + RealizedState()->RunJavaScriptAlertDialog(origin_url, message_text, + std::move(callback)); +} + +void WebStateImpl::RunJavaScriptConfirmDialog( const GURL& origin_url, - JavaScriptDialogType javascript_dialog_type, + NSString* message_text, + base::OnceCallback<void(bool success)> callback) { + RealizedState()->RunJavaScriptConfirmDialog(origin_url, message_text, + std::move(callback)); +} + +void WebStateImpl::RunJavaScriptPromptDialog( + const GURL& origin_url, NSString* message_text, NSString* default_prompt_text, - DialogClosedCallback callback) { - RealizedState()->RunJavaScriptDialog(origin_url, javascript_dialog_type, - message_text, default_prompt_text, - std::move(callback)); + base::OnceCallback<void(NSString* user_input)> callback) { + RealizedState()->RunJavaScriptPromptDialog( + origin_url, message_text, default_prompt_text, std::move(callback)); } bool WebStateImpl::IsJavaScriptDialogRunning() {
diff --git a/ios/web/web_state/web_state_impl_realized_web_state.h b/ios/web/web_state/web_state_impl_realized_web_state.h index 0e0fcdf9..65d1067 100644 --- a/ios/web/web_state/web_state_impl_realized_web_state.h +++ b/ios/web/web_state/web_state_impl_realized_web_state.h
@@ -109,11 +109,18 @@ void SendChangeLoadProgress(double progress); void HandleContextMenu(const ContextMenuParams& params); void ShowRepostFormWarningDialog(base::OnceCallback<void(bool)> callback); - void RunJavaScriptDialog(const GURL& origin_url, - JavaScriptDialogType java_script_dialog_type, - NSString* message_text, - NSString* default_prompt_text, - DialogClosedCallback callback); + void RunJavaScriptAlertDialog(const GURL& origin_url, + NSString* message_text, + base::OnceClosure callback); + void RunJavaScriptConfirmDialog( + const GURL& origin_url, + NSString* message_text, + base::OnceCallback<void(bool success)> callback); + void RunJavaScriptPromptDialog( + const GURL& origin_url, + NSString* message_text, + NSString* default_prompt_text, + base::OnceCallback<void(NSString* user_input)> callback); bool IsJavaScriptDialogRunning() const; WebState* CreateNewWebState(const GURL& url, const GURL& opener_url,
diff --git a/ios/web/web_state/web_state_impl_realized_web_state.mm b/ios/web/web_state/web_state_impl_realized_web_state.mm index a2a77e9..3e54976 100644 --- a/ios/web/web_state/web_state_impl_realized_web_state.mm +++ b/ios/web/web_state/web_state_impl_realized_web_state.mm
@@ -413,23 +413,20 @@ } } -void WebStateImpl::RealizedWebState::RunJavaScriptDialog( +void WebStateImpl::RealizedWebState::RunJavaScriptAlertDialog( const GURL& origin_url, - JavaScriptDialogType java_script_dialog_type, NSString* message_text, - NSString* default_prompt_text, - DialogClosedCallback callback) { + base::OnceClosure callback) { JavaScriptDialogPresenter* presenter = delegate_ ? delegate_->GetJavaScriptDialogPresenter(owner_) : nullptr; if (!presenter) { - std::move(callback).Run(false, nil); + std::move(callback).Run(); return; } running_javascript_dialog_ = true; - presenter->RunJavaScriptDialog( - owner_, origin_url, java_script_dialog_type, message_text, - default_prompt_text, + presenter->RunJavaScriptAlertDialog( + owner_, origin_url, message_text, // Use a lambda to mark the dialog as closed if the `WebState` still // exists, then always run `callback`, even if the `WebState` has been // destroyed (otherwise, WebKit raises an inconsistent state exception). @@ -438,16 +435,90 @@ // are not called, this cannot be implemented by passing the `callback` // to `JavaScriptDialogClosed` as otherwise the call would not happen // if `WebState` is destroyed. + // TODO(crbug.com/1400873): Combine logic across all dialog callbacks. base::BindOnce( [](base::WeakPtr<WebStateImpl> weak_web_state, - DialogClosedCallback callback, bool success, + base::OnceClosure callback) { + if (weak_web_state) { + DCHECK(weak_web_state->pimpl_); + weak_web_state->pimpl_->JavaScriptDialogClosed(); + } + + std::move(callback).Run(); + }, + owner_->weak_factory_.GetWeakPtr(), std::move(callback))); +} + +void WebStateImpl::RealizedWebState::RunJavaScriptConfirmDialog( + const GURL& origin_url, + NSString* message_text, + base::OnceCallback<void(bool success)> callback) { + JavaScriptDialogPresenter* presenter = + delegate_ ? delegate_->GetJavaScriptDialogPresenter(owner_) : nullptr; + if (!presenter) { + std::move(callback).Run(false); + return; + } + + running_javascript_dialog_ = true; + presenter->RunJavaScriptConfirmDialog( + owner_, origin_url, message_text, + // Use a lambda to mark the dialog as closed if the `WebState` still + // exists, then always run `callback`, even if the `WebState` has been + // destroyed (otherwise, WebKit raises an inconsistent state exception). + // + // Since bound callback that take a member function and a `WeakPtr<T>` + // are not called, this cannot be implemented by passing the `callback` + // to `JavaScriptDialogClosed` as otherwise the call would not happen + // if `WebState` is destroyed. + // TODO(crbug.com/1400873): Combine logic across all dialog callbacks. + base::BindOnce( + [](base::WeakPtr<WebStateImpl> weak_web_state, + base::OnceCallback<void(bool success)> callback, bool success) { + if (weak_web_state) { + DCHECK(weak_web_state->pimpl_); + weak_web_state->pimpl_->JavaScriptDialogClosed(); + } + + std::move(callback).Run(success); + }, + owner_->weak_factory_.GetWeakPtr(), std::move(callback))); +} + +void WebStateImpl::RealizedWebState::RunJavaScriptPromptDialog( + const GURL& origin_url, + NSString* message_text, + NSString* default_prompt_text, + base::OnceCallback<void(NSString* user_input)> callback) { + JavaScriptDialogPresenter* presenter = + delegate_ ? delegate_->GetJavaScriptDialogPresenter(owner_) : nullptr; + if (!presenter) { + std::move(callback).Run(nil); + return; + } + + running_javascript_dialog_ = true; + presenter->RunJavaScriptPromptDialog( + owner_, origin_url, message_text, default_prompt_text, + // Use a lambda to mark the dialog as closed if the `WebState` still + // exists, then always run `callback`, even if the `WebState` has been + // destroyed (otherwise, WebKit raises an inconsistent state exception). + // + // Since bound callback that take a member function and a `WeakPtr<T>` + // are not called, this cannot be implemented by passing the `callback` + // to `JavaScriptDialogClosed` as otherwise the call would not happen + // if `WebState` is destroyed. + // TODO(crbug.com/1400873): Combine logic across all dialog callbacks. + base::BindOnce( + [](base::WeakPtr<WebStateImpl> weak_web_state, + base::OnceCallback<void(NSString * user_input)> callback, NSString* user_input) { if (weak_web_state) { DCHECK(weak_web_state->pimpl_); weak_web_state->pimpl_->JavaScriptDialogClosed(); } - std::move(callback).Run(success, user_input); + std::move(callback).Run(user_input); }, owner_->weak_factory_.GetWeakPtr(), std::move(callback))); }
diff --git a/ios/web/web_state/web_state_impl_unittest.mm b/ios/web/web_state/web_state_impl_unittest.mm index cbeccb8..11e9ca2 100644 --- a/ios/web/web_state/web_state_impl_unittest.mm +++ b/ios/web/web_state/web_state_impl_unittest.mm
@@ -438,17 +438,16 @@ FakeJavaScriptDialogPresenter* presenter = delegate.GetFakeJavaScriptDialogPresenter(); EXPECT_FALSE(delegate.get_java_script_dialog_presenter_called()); - EXPECT_TRUE(presenter->requested_dialogs().empty()); + EXPECT_TRUE(presenter->requested_alert_dialogs().empty()); EXPECT_FALSE(presenter->cancel_dialogs_called()); __block bool callback_called = false; - web_state_->RunJavaScriptDialog(GURL(), JAVASCRIPT_DIALOG_TYPE_ALERT, @"", - nil, base::BindOnce(^(bool, NSString*) { - callback_called = true; - })); + web_state_->RunJavaScriptAlertDialog(GURL(), @"", base::BindOnce(^() { + callback_called = true; + })); EXPECT_TRUE(delegate.get_java_script_dialog_presenter_called()); - EXPECT_EQ(1U, presenter->requested_dialogs().size()); + EXPECT_EQ(1U, presenter->requested_alert_dialogs().size()); EXPECT_TRUE(callback_called); EXPECT_FALSE(presenter->cancel_dialogs_called()); @@ -1018,10 +1017,7 @@ // presented. delegate.GetFakeJavaScriptDialogPresenter()->set_callback_execution_paused( true); - web_state_->RunJavaScriptDialog(GURL(), JAVASCRIPT_DIALOG_TYPE_ALERT, - @"message", @"", - base::BindOnce(^(bool, NSString*){ - })); + web_state_->RunJavaScriptAlertDialog(GURL(), @"message", base::DoNothing()); // Verify that CanTakeSnapshot() returns no while the dialog is presented. EXPECT_FALSE(web_state_->CanTakeSnapshot()); @@ -1044,10 +1040,7 @@ // presented. delegate.GetFakeJavaScriptDialogPresenter()->set_callback_execution_paused( true); - web_state_->RunJavaScriptDialog(GURL(), JAVASCRIPT_DIALOG_TYPE_ALERT, - @"message", @"", - base::BindOnce(^(bool, NSString*){ - })); + web_state_->RunJavaScriptAlertDialog(GURL(), @"message", base::DoNothing()); // Verify that IsJavaScriptDialogRunning() returns true while the dialog is // presented. @@ -1081,10 +1074,7 @@ // presented. delegate.GetFakeJavaScriptDialogPresenter()->set_callback_execution_paused( true); - web_state_->RunJavaScriptDialog(GURL(), JAVASCRIPT_DIALOG_TYPE_ALERT, - @"message", @"", - base::BindOnce(^(bool, NSString*){ - })); + web_state_->RunJavaScriptAlertDialog(GURL(), @"message", base::DoNothing()); // Attempt to create a PDF for this page and validate that it return nil. __block NSData* callback_data_when_dialog = nil;
diff --git a/ios/web_view/internal/web_view_java_script_dialog_presenter.h b/ios/web_view/internal/web_view_java_script_dialog_presenter.h index 93b2f04c..a43fed9 100644 --- a/ios/web_view/internal/web_view_java_script_dialog_presenter.h +++ b/ios/web_view/internal/web_view_java_script_dialog_presenter.h
@@ -5,6 +5,8 @@ #ifndef IOS_WEB_VIEW_INTERNAL_WEB_VIEW_JAVA_SCRIPT_DIALOG_PRESENTER_H_ #define IOS_WEB_VIEW_INTERNAL_WEB_VIEW_JAVA_SCRIPT_DIALOG_PRESENTER_H_ +#import <Foundation/Foundation.h> + #import "ios/web/public/ui/java_script_dialog_presenter.h" @class CWVWebView; @@ -30,31 +32,24 @@ void SetUIDelegate(id<CWVUIDelegate> ui_delegate); // web::JavaScriptDialogPresenter overrides: - void RunJavaScriptDialog(web::WebState* web_state, - const GURL& origin_url, - web::JavaScriptDialogType dialog_type, - NSString* message_text, - NSString* default_prompt_text, - web::DialogClosedCallback callback) override; + void RunJavaScriptAlertDialog(web::WebState* web_state, + const GURL& origin_url, + NSString* message_text, + base::OnceClosure callback) override; + void RunJavaScriptConfirmDialog( + web::WebState* web_state, + const GURL& origin_url, + NSString* message_text, + base::OnceCallback<void(bool success)> callback) override; + void RunJavaScriptPromptDialog( + web::WebState* web_state, + const GURL& origin_url, + NSString* message_text, + NSString* default_prompt_text, + base::OnceCallback<void(NSString* user_input)> callback) override; void CancelDialogs(web::WebState* web_state) override; private: - // Displays JavaScript alert. - void HandleJavaScriptAlert(const GURL& origin_url, - NSString* message_text, - web::DialogClosedCallback callback); - - // Displays JavaScript confirm dialog. - void HandleJavaScriptConfirmDialog(const GURL& origin_url, - NSString* message_text, - web::DialogClosedCallback callback); - - // Displays JavaScript text prompt. - void HandleJavaScriptTextPrompt(const GURL& origin_url, - NSString* message_text, - NSString* default_prompt_text, - web::DialogClosedCallback callback); - // The underlying delegate handling the dialog UI. __weak id<CWVUIDelegate> ui_delegate_ = nil; // The web view which originated the dialogs.
diff --git a/ios/web_view/internal/web_view_java_script_dialog_presenter.mm b/ios/web_view/internal/web_view_java_script_dialog_presenter.mm index 865080c5..2203264 100644 --- a/ios/web_view/internal/web_view_java_script_dialog_presenter.mm +++ b/ios/web_view/internal/web_view_java_script_dialog_presenter.mm
@@ -20,93 +20,73 @@ WebViewJavaScriptDialogPresenter::~WebViewJavaScriptDialogPresenter() = default; -void WebViewJavaScriptDialogPresenter::RunJavaScriptDialog( +void WebViewJavaScriptDialogPresenter::RunJavaScriptAlertDialog( web::WebState* web_state, const GURL& origin_url, - web::JavaScriptDialogType dialog_type, NSString* message_text, - NSString* default_prompt_text, - web::DialogClosedCallback callback) { - switch (dialog_type) { - case web::JAVASCRIPT_DIALOG_TYPE_ALERT: - HandleJavaScriptAlert(origin_url, message_text, std::move(callback)); - break; - case web::JAVASCRIPT_DIALOG_TYPE_CONFIRM: - HandleJavaScriptConfirmDialog(origin_url, message_text, - std::move(callback)); - break; - case web::JAVASCRIPT_DIALOG_TYPE_PROMPT: - HandleJavaScriptTextPrompt(origin_url, message_text, default_prompt_text, - std::move(callback)); - break; - } -} - -void WebViewJavaScriptDialogPresenter::HandleJavaScriptAlert( - const GURL& origin_url, - NSString* message_text, - web::DialogClosedCallback callback) { - if (![ui_delegate_ respondsToSelector:@selector - (webView:runJavaScriptAlertPanelWithMessage:pageURL - :completionHandler:)]) { - std::move(callback).Run(NO, nil); + base::OnceClosure callback) { + SEL delegate_method = @selector(webView: + runJavaScriptAlertPanelWithMessage:pageURL:completionHandler:); + if (![ui_delegate_ respondsToSelector:delegate_method]) { + std::move(callback).Run(); return; } - __block web::DialogClosedCallback scoped_callback = std::move(callback); + __block base::OnceClosure scoped_callback = std::move(callback); [ui_delegate_ webView:web_view_ runJavaScriptAlertPanelWithMessage:message_text pageURL:net::NSURLWithGURL(origin_url) completionHandler:^{ if (!scoped_callback.is_null()) { - std::move(scoped_callback).Run(YES, nil); + std::move(scoped_callback).Run(); } }]; } -void WebViewJavaScriptDialogPresenter::HandleJavaScriptConfirmDialog( +void WebViewJavaScriptDialogPresenter::RunJavaScriptConfirmDialog( + web::WebState* web_state, const GURL& origin_url, NSString* message_text, - web::DialogClosedCallback callback) { - if (![ui_delegate_ respondsToSelector:@selector - (webView:runJavaScriptConfirmPanelWithMessage:pageURL - :completionHandler:)]) { - std::move(callback).Run(NO, nil); + base::OnceCallback<void(bool success)> callback) { + SEL delegate_method = @selector(webView: + runJavaScriptConfirmPanelWithMessage:pageURL:completionHandler:); + if (![ui_delegate_ respondsToSelector:delegate_method]) { + std::move(callback).Run(false); return; } - __block web::DialogClosedCallback scoped_callback = std::move(callback); + __block base::OnceCallback<void(bool success)> scoped_callback = + std::move(callback); [ui_delegate_ webView:web_view_ runJavaScriptConfirmPanelWithMessage:message_text pageURL:net::NSURLWithGURL(origin_url) completionHandler:^(BOOL is_confirmed) { if (!scoped_callback.is_null()) { - std::move(scoped_callback).Run(is_confirmed, nil); + std::move(scoped_callback).Run(is_confirmed); } }]; } -void WebViewJavaScriptDialogPresenter::HandleJavaScriptTextPrompt( +void WebViewJavaScriptDialogPresenter::RunJavaScriptPromptDialog( + web::WebState* web_state, const GURL& origin_url, NSString* message_text, NSString* default_prompt_text, - web::DialogClosedCallback callback) { - if (![ui_delegate_ respondsToSelector:@selector - (webView:runJavaScriptTextInputPanelWithPrompt:defaultText - :pageURL:completionHandler:)]) { - std::move(callback).Run(NO, nil); + base::OnceCallback<void(NSString* user_input)> callback) { + SEL delegate_method = @selector(webView: + runJavaScriptTextInputPanelWithPrompt:defaultText:pageURL + :completionHandler:); + if (![ui_delegate_ respondsToSelector:delegate_method]) { + std::move(callback).Run(nil); return; } - __block web::DialogClosedCallback scoped_callback = std::move(callback); + __block base::OnceCallback<void(NSString * user_input)> scoped_callback = + std::move(callback); [ui_delegate_ webView:web_view_ runJavaScriptTextInputPanelWithPrompt:message_text defaultText:default_prompt_text pageURL:net::NSURLWithGURL(origin_url) completionHandler:^(NSString* text_input) { if (!scoped_callback.is_null()) { - if (text_input == nil) { - std::move(scoped_callback).Run(NO, nil); - } else { - std::move(scoped_callback).Run(YES, text_input); - } + std::move(scoped_callback).Run(text_input); } }]; }
diff --git a/media/capture/video/chromeos/request_manager.cc b/media/capture/video/chromeos/request_manager.cc index be160c3..6ef0b07 100644 --- a/media/capture/video/chromeos/request_manager.cc +++ b/media/capture/video/chromeos/request_manager.cc
@@ -15,6 +15,7 @@ #include "base/bind.h" #include "base/callback_helpers.h" #include "base/containers/contains.h" +#include "base/functional/callback_helpers.h" #include "base/posix/safe_strerror.h" #include "base/strings/string_number_conversions.h" #include "base/trace_event/typed_macros.h" @@ -1052,13 +1053,16 @@ gfx::GpuMemoryBuffer* gmb = stream_buffer_manager_->GetGpuMemoryBufferById( StreamType::kJpegOutput, buffer_ipc_id); CHECK(gmb); - if (video_capture_use_gmb_ && !gmb->Map()) { + if (!gmb->Map()) { device_context_->SetErrorState( media::VideoCaptureError:: kCrosHalV3BufferManagerFailedToCreateGpuMemoryBuffer, FROM_HERE, "Failed to map GPU memory buffer"); return; } + base::ScopedClosureRunner unmap_gmb(base::BindOnce( + [](gfx::GpuMemoryBuffer* gmb) { gmb->Unmap(); }, base::Unretained(gmb))); + const Camera3JpegBlob* header = reinterpret_cast<Camera3JpegBlob*>( reinterpret_cast<const uintptr_t>(gmb->memory(0)) + buffer_dimension.width() - sizeof(Camera3JpegBlob)); @@ -1066,9 +1070,6 @@ device_context_->SetErrorState( media::VideoCaptureError::kCrosHalV3BufferManagerInvalidJpegBlob, FROM_HERE, "Invalid JPEG blob"); - if (video_capture_use_gmb_) { - gmb->Unmap(); - } return; } // Still capture result from HALv3 already has orientation info in EXIF, @@ -1103,9 +1104,6 @@ } stream_buffer_manager_->ReleaseBufferFromCaptureResult( StreamType::kJpegOutput, buffer_ipc_id); - if (video_capture_use_gmb_) { - gmb->Unmap(); - } } void RequestManager::UpdateCaptureSettings(
diff --git a/media/capture/video/chromeos/stream_buffer_manager.cc b/media/capture/video/chromeos/stream_buffer_manager.cc index 1f50d1f..4a6a004 100644 --- a/media/capture/video/chromeos/stream_buffer_manager.cc +++ b/media/capture/video/chromeos/stream_buffer_manager.cc
@@ -98,6 +98,9 @@ DLOG(WARNING) << "Failed to map original buffer"; return std::move(buffer_pair.vcd_buffer); } + base::ScopedClosureRunner unmap_original_gmb( + base::BindOnce([](gfx::GpuMemoryBuffer* gmb) { gmb->Unmap(); }, + base::Unretained(original_gmb.get()))); const size_t original_width = stream_context->buffer_dimension.width(); const size_t original_height = stream_context->buffer_dimension.height(); @@ -138,7 +141,6 @@ static_cast<uint8_t*>(original_gmb->memory(1)), original_gmb->stride(1), temp_uv_width, temp_uv_height); - original_gmb->Unmap(); return std::move(buffer_pair.vcd_buffer); } @@ -149,7 +151,6 @@ client_type, format->frame_size, format->pixel_format, &rotated_buffer)) { DLOG(WARNING) << "Failed to reserve video capture buffer"; - original_gmb->Unmap(); return std::move(buffer_pair.vcd_buffer); } @@ -160,9 +161,11 @@ if (!rotated_gmb || !rotated_gmb->Map()) { DLOG(WARNING) << "Failed to map rotated buffer"; - original_gmb->Unmap(); return std::move(buffer_pair.vcd_buffer); } + base::ScopedClosureRunner unmap_rotated_gmb( + base::BindOnce([](gfx::GpuMemoryBuffer* gmb) { gmb->Unmap(); }, + base::Unretained(rotated_gmb.get()))); libyuv::NV12ToI420Rotate( static_cast<uint8_t*>(original_gmb->memory(0)), original_gmb->stride(0), @@ -173,8 +176,6 @@ libyuv::MergeUVPlane(temp_u, temp_uv_height, temp_v, temp_uv_height, static_cast<uint8_t*>(rotated_gmb->memory(1)), rotated_gmb->stride(1), temp_uv_height, temp_uv_width); - rotated_gmb->Unmap(); - original_gmb->Unmap(); return std::move(rotated_buffer); } @@ -476,20 +477,6 @@ } void StreamBufferManager::DestroyCurrentStreamsAndBuffers() { - for (const auto& iter : stream_context_) { - if (iter.second) { - if (!CanReserveBufferFromPool(iter.first)) { - // The GMB is mapped by default only when it's allocated locally. - for (auto& buf : iter.second->buffers) { - auto& buf_pair = buf.second; - if (buf_pair.gmb) { - buf_pair.gmb->Unmap(); - } - } - iter.second->buffers.clear(); - } - } - } stream_context_.clear(); }
diff --git a/media/gpu/BUILD.gn b/media/gpu/BUILD.gn index 3d80f96..f5aabae 100644 --- a/media/gpu/BUILD.gn +++ b/media/gpu/BUILD.gn
@@ -401,10 +401,17 @@ sources = [ "command_buffer_helper.cc", "command_buffer_helper.h", - "gles2_decoder_helper.cc", - "gles2_decoder_helper.h", ] + if (!is_android) { + # This code is used only by the legacy VDA implementation, which is not + # supported on Android. + sources += [ + "gles2_decoder_helper.cc", + "gles2_decoder_helper.h", + ] + } + public_deps = [ "//base", "//gpu/command_buffer/common",
diff --git a/media/gpu/command_buffer_helper.cc b/media/gpu/command_buffer_helper.cc index 3f96a49..27c7a75 100644 --- a/media/gpu/command_buffer_helper.cc +++ b/media/gpu/command_buffer_helper.cc
@@ -21,13 +21,16 @@ #include "gpu/ipc/service/command_buffer_stub.h" #include "gpu/ipc/service/gpu_channel.h" #include "gpu/ipc/service/gpu_channel_manager.h" -#include "media/gpu/gles2_decoder_helper.h" #include "ui/gl/gl_context.h" #if BUILDFLAG(IS_WIN) #include "gpu/command_buffer/service/dxgi_shared_handle_manager.h" #endif +#if !BUILDFLAG(IS_ANDROID) +#include "media/gpu/gles2_decoder_helper.h" +#endif + namespace media { namespace { @@ -56,12 +59,40 @@ #endif // BUILDFLAG(IS_MAC) , stub_->channel()->task_runner()); +#if !BUILDFLAG(IS_ANDROID) decoder_helper_ = GLES2DecoderHelper::Create(stub_->decoder_context()); +#endif } CommandBufferHelperImpl(const CommandBufferHelperImpl&) = delete; CommandBufferHelperImpl& operator=(const CommandBufferHelperImpl&) = delete; + void WaitForSyncToken(gpu::SyncToken sync_token, + base::OnceClosure done_cb) override { + DVLOG(2) << __func__; + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + + if (!stub_) { + return; + } + + // TODO(sandersd): Do we need to keep a ref to |this| while there are + // pending waits? If we destruct while they are pending, they will never + // run. + stub_->channel()->scheduler()->ScheduleTask( + gpu::Scheduler::Task(wait_sequence_id_, std::move(done_cb), + std::vector<gpu::SyncToken>({sync_token}))); + } + + // Const variant of GetSharedImageStub() for internal callers. + gpu::SharedImageStub* shared_image_stub() const { + if (!stub_) { + return nullptr; + } + return stub_->channel()->shared_image_stub(); + } + +#if !BUILDFLAG(IS_ANDROID) gl::GLContext* GetGLContext() override { DVLOG(2) << __func__; DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); @@ -76,13 +107,6 @@ return shared_image_stub(); } - // Const variant of above method for internal callers. - gpu::SharedImageStub* shared_image_stub() const { - if (!stub_) - return nullptr; - return stub_->channel()->shared_image_stub(); - } - #if BUILDFLAG(IS_WIN) gpu::DXGISharedHandleManager* GetDXGISharedHandleManager() override { if (!stub_) @@ -193,22 +217,6 @@ return decoder_helper_->CreateMailbox(textures_[service_id].get()); } - void WaitForSyncToken(gpu::SyncToken sync_token, - base::OnceClosure done_cb) override { - DVLOG(2) << __func__; - DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); - - if (!stub_) - return; - - // TODO(sandersd): Do we need to keep a ref to |this| while there are - // pending waits? If we destruct while they are pending, they will never - // run. - stub_->channel()->scheduler()->ScheduleTask( - gpu::Scheduler::Task(wait_sequence_id_, std::move(done_cb), - std::vector<gpu::SyncToken>({sync_token}))); - } - void SetWillDestroyStubCB(WillDestroyStubCB will_destroy_stub_cb) override { DCHECK(!will_destroy_stub_cb_); will_destroy_stub_cb_ = std::move(will_destroy_stub_cb); @@ -230,6 +238,7 @@ ->feature_flags() .arb_texture_rectangle; } +#endif private: // Helper class to forward memory tracking calls to shared image stub. @@ -303,7 +312,9 @@ DVLOG(3) << __func__; DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); +#if !BUILDFLAG(IS_ANDROID) decoder_helper_ = nullptr; +#endif // If the last reference to |this| is in a |done_cb|, destroying the wait // sequence can delete |this|. Clearing |stub_| first prevents DestroyStub() @@ -319,8 +330,10 @@ // Wait tasks are scheduled on our own sequence so that we can't inadvertently // block the command buffer. gpu::SequenceId wait_sequence_id_; +#if !BUILDFLAG(IS_ANDROID) // TODO(sandersd): Merge GLES2DecoderHelper implementation into this class. std::unique_ptr<GLES2DecoderHelper> decoder_helper_; +#endif std::map<GLuint, std::unique_ptr<gpu::gles2::AbstractTexture>> textures_; WillDestroyStubCB will_destroy_stub_cb_;
diff --git a/media/gpu/command_buffer_helper.h b/media/gpu/command_buffer_helper.h index ca4d893..0749318 100644 --- a/media/gpu/command_buffer_helper.h +++ b/media/gpu/command_buffer_helper.h
@@ -51,6 +51,20 @@ CommandBufferHelper(const CommandBufferHelper&) = delete; CommandBufferHelper& operator=(const CommandBufferHelper&) = delete; + // Waits for a SyncToken, then runs |done_cb|. + // + // |done_cb| may be destructed without running if the stub is destroyed. + // + // TODO(sandersd): Currently it is possible to lose the stub while + // PictureBufferManager is waiting for all picture buffers, which results in a + // decoding softlock. Notification of wait failure (or just context/stub lost) + // is probably necessary. + // TODO(blundell): Consider inlining this method in the one Android caller and + // eliminating this class being built on Android altogether. + virtual void WaitForSyncToken(gpu::SyncToken sync_token, + base::OnceClosure done_cb) = 0; + +#if !BUILDFLAG(IS_ANDROID) // Gets the associated GLContext. // // Used by DXVAVDA to test for D3D11 support, and by V4L2VDA to create @@ -129,17 +143,6 @@ // be to add a HasStub() method, and not define behavior when it is false. virtual gpu::Mailbox CreateMailbox(GLuint service_id) = 0; - // Waits for a SyncToken, then runs |done_cb|. - // - // |done_cb| may be destructed without running if the stub is destroyed. - // - // TODO(sandersd): Currently it is possible to lose the stub while - // PictureBufferManager is waiting for all picture buffers, which results in a - // decoding softlock. Notification of wait failure (or just context/stub lost) - // is probably necessary. - virtual void WaitForSyncToken(gpu::SyncToken sync_token, - base::OnceClosure done_cb) = 0; - // Set the callback to be called when our stub is destroyed. This callback // may not change the current context. virtual void SetWillDestroyStubCB(WillDestroyStubCB will_destroy_stub_cb) = 0; @@ -149,6 +152,7 @@ // Does this command buffer support ARB_texture_rectangle. virtual bool SupportsTextureRectangle() const = 0; +#endif protected: explicit CommandBufferHelper(
diff --git a/media/gpu/test/fake_command_buffer_helper.cc b/media/gpu/test/fake_command_buffer_helper.cc index 1f76df4..035e67c 100644 --- a/media/gpu/test/fake_command_buffer_helper.cc +++ b/media/gpu/test/fake_command_buffer_helper.cc
@@ -61,6 +61,17 @@ waits_.erase(sync_token); } +void FakeCommandBufferHelper::WaitForSyncToken(gpu::SyncToken sync_token, + base::OnceClosure done_cb) { + DVLOG(2) << __func__; + DCHECK(task_runner_->BelongsToCurrentThread()); + DCHECK(!waits_.count(sync_token)); + if (has_stub_) { + waits_.emplace(sync_token, std::move(done_cb)); + } +} + +#if !BUILDFLAG(IS_ANDROID) gl::GLContext* FakeCommandBufferHelper::GetGLContext() { DVLOG(4) << __func__; DCHECK(task_runner_->BelongsToCurrentThread()); @@ -161,15 +172,6 @@ return gpu::Mailbox::Generate(); } -void FakeCommandBufferHelper::WaitForSyncToken(gpu::SyncToken sync_token, - base::OnceClosure done_cb) { - DVLOG(2) << __func__; - DCHECK(task_runner_->BelongsToCurrentThread()); - DCHECK(!waits_.count(sync_token)); - if (has_stub_) - waits_.emplace(sync_token, std::move(done_cb)); -} - void FakeCommandBufferHelper::SetWillDestroyStubCB( WillDestroyStubCB will_destroy_stub_cb) { DCHECK(!will_destroy_stub_cb_); @@ -183,5 +185,6 @@ bool FakeCommandBufferHelper::SupportsTextureRectangle() const { return false; } +#endif } // namespace media
diff --git a/media/gpu/test/fake_command_buffer_helper.h b/media/gpu/test/fake_command_buffer_helper.h index d5c7ee4..319c7d2 100644 --- a/media/gpu/test/fake_command_buffer_helper.h +++ b/media/gpu/test/fake_command_buffer_helper.h
@@ -23,6 +23,8 @@ FakeCommandBufferHelper(const FakeCommandBufferHelper&) = delete; FakeCommandBufferHelper& operator=(const FakeCommandBufferHelper&) = delete; + void WaitForSyncToken(gpu::SyncToken sync_token, + base::OnceClosure done_cb) override; // Signal stub destruction. All textures will be deleted. Listeners will // be notified that we have a current context unless one calls ContextLost // before this. @@ -40,6 +42,7 @@ // Test whether a texture exists (has not been destroyed). bool HasTexture(GLuint service_id); +#if !BUILDFLAG(IS_ANDROID) // CommandBufferHelper implementation. gl::GLContext* GetGLContext() override; gpu::SharedImageStub* GetSharedImageStub() override; @@ -65,11 +68,10 @@ bool BindClientManagedImage(GLuint service_id, gl::GLImage* image) override; #endif gpu::Mailbox CreateMailbox(GLuint service_id) override; - void WaitForSyncToken(gpu::SyncToken sync_token, - base::OnceClosure done_cb) override; void SetWillDestroyStubCB(WillDestroyStubCB will_destroy_stub_cb) override; bool IsPassthrough() const override; bool SupportsTextureRectangle() const override; +#endif private: ~FakeCommandBufferHelper() override;
diff --git a/net/first_party_sets/first_party_sets_cache_filter.h b/net/first_party_sets/first_party_sets_cache_filter.h index 81ad165d..93a61e8 100644 --- a/net/first_party_sets/first_party_sets_cache_filter.h +++ b/net/first_party_sets/first_party_sets_cache_filter.h
@@ -62,12 +62,6 @@ network::mojom::FirstPartySetsCacheFilterDataView, FirstPartySetsCacheFilter>; - const base::flat_map<net::SchemefulSite, int64_t>& filter() const { - return filter_; - } - - int64_t browser_run_id() const { return browser_run_id_; } - // The filter used to bypass cache. The key is site may be bypassed for // cache access, the value indicates the browser run of which the site // was marked to be cleared.
diff --git a/net/first_party_sets/first_party_sets_context_config.cc b/net/first_party_sets/first_party_sets_context_config.cc index b8deadd..448ed081 100644 --- a/net/first_party_sets/first_party_sets_context_config.cc +++ b/net/first_party_sets/first_party_sets_context_config.cc
@@ -10,7 +10,7 @@ FirstPartySetsContextConfig::FirstPartySetsContextConfig() = default; FirstPartySetsContextConfig::FirstPartySetsContextConfig( - FirstPartySetsContextConfig::OverrideSets customizations) + base::flat_map<SchemefulSite, FirstPartySetEntryOverride> customizations) : customizations_(std::move(customizations)) {} FirstPartySetsContextConfig::FirstPartySetsContextConfig(
diff --git a/net/first_party_sets/first_party_sets_context_config.h b/net/first_party_sets/first_party_sets_context_config.h index aead998..57e9d5a 100644 --- a/net/first_party_sets/first_party_sets_context_config.h +++ b/net/first_party_sets/first_party_sets_context_config.h
@@ -25,11 +25,9 @@ // info in the given network context. class NET_EXPORT FirstPartySetsContextConfig { public: - using OverrideSets = - base::flat_map<SchemefulSite, FirstPartySetEntryOverride>; - FirstPartySetsContextConfig(); - explicit FirstPartySetsContextConfig(OverrideSets customizations); + explicit FirstPartySetsContextConfig( + base::flat_map<SchemefulSite, FirstPartySetEntryOverride> customizations); FirstPartySetsContextConfig(FirstPartySetsContextConfig&& other); FirstPartySetsContextConfig& operator=(FirstPartySetsContextConfig&& other); @@ -69,9 +67,7 @@ network::mojom::FirstPartySetsContextConfigDataView, FirstPartySetsContextConfig>; - const OverrideSets& customizations() const { return customizations_; } - - OverrideSets customizations_; + base::flat_map<SchemefulSite, FirstPartySetEntryOverride> customizations_; }; } // namespace net
diff --git a/net/first_party_sets/global_first_party_sets.cc b/net/first_party_sets/global_first_party_sets.cc index 2618851..e076681 100644 --- a/net/first_party_sets/global_first_party_sets.cc +++ b/net/first_party_sets/global_first_party_sets.cc
@@ -499,15 +499,15 @@ std::ostream& operator<<(std::ostream& os, const GlobalFirstPartySets& sets) { os << "{entries = {"; - for (const auto& [site, entry] : sets.entries()) { + for (const auto& [site, entry] : sets.entries_) { os << "{" << site.Serialize() << ": " << entry << "}, "; } os << "}, aliases = {"; - for (const auto& [alias, canonical] : sets.aliases()) { + for (const auto& [alias, canonical] : sets.aliases_) { os << "{" << alias.Serialize() << ": " << canonical.Serialize() << "}, "; } os << "}, manual_config = {"; - sets.manual_config().ForEachCustomizationEntry( + sets.ForEachManualConfigEntry( [&](const net::SchemefulSite& site, const FirstPartySetEntryOverride& override) { os << "{" << site.Serialize() << ": " << override << "},";
diff --git a/net/first_party_sets/global_first_party_sets.h b/net/first_party_sets/global_first_party_sets.h index 5cbd7bc..fdac238 100644 --- a/net/first_party_sets/global_first_party_sets.h +++ b/net/first_party_sets/global_first_party_sets.h
@@ -186,18 +186,6 @@ base::FunctionRef<bool(const SchemefulSite&, const FirstPartySetEntry&)> f) const; - const base::flat_map<SchemefulSite, FirstPartySetEntry>& entries() const { - return entries_; - } - - const base::flat_map<SchemefulSite, SchemefulSite>& aliases() const { - return aliases_; - } - - const FirstPartySetsContextConfig& manual_config() const { - return manual_config_; - } - // The version associated with the component_updater-provided public sets. // This may be invalid if the "First-Party Sets" component has not been // installed yet, or has been corrupted. Entries and aliases from invalid
diff --git a/net/quic/quic_chromium_packet_writer.cc b/net/quic/quic_chromium_packet_writer.cc index 70488cc..af60e5a8 100644 --- a/net/quic/quic_chromium_packet_writer.cc +++ b/net/quic/quic_chromium_packet_writer.cc
@@ -134,6 +134,7 @@ scoped_refptr<ReusableIOBuffer> packet) { DCHECK(!force_write_blocked_); packet_ = std::move(packet); + socket_->SetDontClose(true); quic::WriteResult result = WritePacketToSocketImpl(); if (result.error_code != ERR_IO_PENDING) OnWriteComplete(result.error_code); @@ -228,6 +229,8 @@ delegate_->OnWriteError(rv); else if (!force_write_blocked_) delegate_->OnWriteUnblocked(); + + socket_->SetDontClose(false); } bool QuicChromiumPacketWriter::MaybeRetryAfterWriteError(int rv) {
diff --git a/net/socket/datagram_client_socket.h b/net/socket/datagram_client_socket.h index ee21b719..1ab9555a 100644 --- a/net/socket/datagram_client_socket.h +++ b/net/socket/datagram_client_socket.h
@@ -85,6 +85,11 @@ // Set iOS Network Service Type for socket option SO_NET_SERVICE_TYPE. // No-op by default. virtual void SetIOSNetworkServiceType(int ios_network_service_type) {} + + // Set "don't close" flag for socket. + // No-op by default. + // TODO(nidhijaju): Remove this method once crbug.com/1383390 is fixed. + virtual void SetDontClose(bool dont_close) {} }; } // namespace net
diff --git a/net/socket/udp_client_socket.cc b/net/socket/udp_client_socket.cc index 9da4f0f36d..161e32cd 100644 --- a/net/socket/udp_client_socket.cc +++ b/net/socket/udp_client_socket.cc
@@ -173,4 +173,10 @@ #endif } +void UDPClientSocket::SetDontClose(bool dont_close) { +#if BUILDFLAG(IS_POSIX) + socket_.SetDontClose(dont_close); +#endif +} + } // namespace net
diff --git a/net/socket/udp_client_socket.h b/net/socket/udp_client_socket.h index 8b1e6ea3..cdfadb5 100644 --- a/net/socket/udp_client_socket.h +++ b/net/socket/udp_client_socket.h
@@ -72,6 +72,7 @@ int SetMulticastInterface(uint32_t interface_index) override; void SetIOSNetworkServiceType(int ios_network_service_type) override; + void SetDontClose(bool dont_close) override; private: UDPSocket socket_;
diff --git a/net/socket/udp_socket_posix.cc b/net/socket/udp_socket_posix.cc index d924fe6..aad2203 100644 --- a/net/socket/udp_socket_posix.cc +++ b/net/socket/udp_socket_posix.cc
@@ -223,6 +223,7 @@ void UDPSocketPosix::Close() { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + CHECK(!dont_close_); owned_socket_count_.Reset(); @@ -1071,4 +1072,8 @@ return OK; } +void UDPSocketPosix::SetDontClose(bool dont_close) { + dont_close_ = dont_close; +} + } // namespace net
diff --git a/net/socket/udp_socket_posix.h b/net/socket/udp_socket_posix.h index a2c7aed..306feb8a 100644 --- a/net/socket/udp_socket_posix.h +++ b/net/socket/udp_socket_posix.h
@@ -272,6 +272,9 @@ // Sets iOS Network Service Type for option SO_NET_SERVICE_TYPE. int SetIOSNetworkServiceType(int ios_network_service_type); + // Sets "don't close" flag for the socket. + void SetDontClose(bool dont_close); + private: enum SocketOptions { SOCKET_OPTION_MULTICAST_LOOP = 1 << 0 @@ -451,6 +454,9 @@ // UDPSocket is destroyed. OwnedUDPSocketCount owned_socket_count_; + // Flag to signify if |socket_| should not be closed. + bool dont_close_ = false; + THREAD_CHECKER(thread_checker_); };
diff --git a/services/network/public/cpp/first_party_sets_mojom_traits.h b/services/network/public/cpp/first_party_sets_mojom_traits.h index 2c0d432..644aab2 100644 --- a/services/network/public/cpp/first_party_sets_mojom_traits.h +++ b/services/network/public/cpp/first_party_sets_mojom_traits.h
@@ -119,17 +119,17 @@ static const base::flat_map<net::SchemefulSite, net::FirstPartySetEntry>& sets(const net::GlobalFirstPartySets& sets) { - return sets.entries(); + return sets.entries_; } static const base::flat_map<net::SchemefulSite, net::SchemefulSite>& aliases( const net::GlobalFirstPartySets& sets) { - return sets.aliases(); + return sets.aliases_; } static const net::FirstPartySetsContextConfig& manual_config( const net::GlobalFirstPartySets& sets) { - return sets.manual_config(); + return sets.manual_config_; } static bool Read(network::mojom::GlobalFirstPartySetsDataView sets, @@ -156,7 +156,7 @@ static const base::flat_map<net::SchemefulSite, net::FirstPartySetEntryOverride>& customizations(const net::FirstPartySetsContextConfig& config) { - return config.customizations(); + return config.customizations_; } static bool Read(network::mojom::FirstPartySetsContextConfigDataView config, @@ -169,12 +169,12 @@ net::FirstPartySetsCacheFilter> { static const base::flat_map<net::SchemefulSite, int64_t>& filter( const net::FirstPartySetsCacheFilter& cache_filter) { - return cache_filter.filter(); + return cache_filter.filter_; } static int64_t browser_run_id( const net::FirstPartySetsCacheFilter& cache_filter) { - return cache_filter.browser_run_id(); + return cache_filter.browser_run_id_; } static bool Read(
diff --git a/testing/buildbot/client.v8.fyi.json b/testing/buildbot/client.v8.fyi.json index 33541a5..66122af05 100644 --- a/testing/buildbot/client.v8.fyi.json +++ b/testing/buildbot/client.v8.fyi.json
@@ -629,45 +629,6 @@ }, { "args": [ - "webgl2_conformance", - "--show-stdout", - "--browser=release", - "--passthrough", - "-v", - "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --force_high_performance_gpu", - "--webgl-conformance-version=2.0.1", - "--read-abbreviated-json-results-from=../../content/test/data/gpu/webgl2_conformance_tests_output.json", - "--jobs=4" - ], - "isolate_name": "telemetry_gpu_integration_test", - "merge": { - "args": [], - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "webgl2_conformance_tests", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "should_retry_with_patch": false, - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "10de:2184-440.100", - "os": "Ubuntu-18.04.5|Ubuntu-18.04.6", - "pool": "chromium.tests.gpu" - } - ], - "idempotent": false, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", - "shards": 20 - }, - "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" - }, - { - "args": [ "webgl1_conformance", "--show-stdout", "--browser=release", @@ -974,45 +935,6 @@ }, { "args": [ - "webgl2_conformance", - "--show-stdout", - "--browser=release", - "--passthrough", - "-v", - "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --force_high_performance_gpu", - "--webgl-conformance-version=2.0.1", - "--read-abbreviated-json-results-from=../../content/test/data/gpu/webgl2_conformance_tests_output.json", - "--jobs=4" - ], - "isolate_name": "telemetry_gpu_integration_test", - "merge": { - "args": [], - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "webgl2_conformance_tests", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "should_retry_with_patch": false, - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "10de:2184-440.100", - "os": "Ubuntu-18.04.5|Ubuntu-18.04.6", - "pool": "chromium.tests.gpu" - } - ], - "idempotent": false, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", - "shards": 20 - }, - "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" - }, - { - "args": [ "webgl1_conformance", "--show-stdout", "--browser=release", @@ -1326,46 +1248,6 @@ }, { "args": [ - "webgl2_conformance", - "--show-stdout", - "--browser=release", - "--passthrough", - "-v", - "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --force_high_performance_gpu", - "--webgl-conformance-version=2.0.1", - "--read-abbreviated-json-results-from=../../content/test/data/gpu/webgl2_conformance_tests_output.json", - "--jobs=4" - ], - "isolate_name": "telemetry_gpu_integration_test", - "merge": { - "args": [], - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "webgl2_conformance_tests", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "should_retry_with_patch": false, - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "cpu": "x86-64", - "display_attached": "1", - "gpu": "8086:3e9b", - "os": "Mac-12.5" - } - ], - "idempotent": false, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", - "shards": 20 - }, - "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" - }, - { - "args": [ "webgl1_conformance", "--show-stdout", "--browser=release", @@ -2217,45 +2099,6 @@ }, { "args": [ - "webgl2_conformance", - "--show-stdout", - "--browser=release", - "--passthrough", - "-v", - "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --force_high_performance_gpu", - "--webgl-conformance-version=2.0.1", - "--read-abbreviated-json-results-from=../../content/test/data/gpu/webgl2_conformance_tests_output.json", - "--jobs=4" - ], - "isolate_name": "telemetry_gpu_integration_test", - "merge": { - "args": [], - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "webgl2_conformance_tests", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "should_retry_with_patch": false, - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "10de:2184-27.21.14.5638", - "os": "Windows-10-18363", - "pool": "chromium.tests.gpu" - } - ], - "idempotent": false, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", - "shards": 20 - }, - "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" - }, - { - "args": [ "webgl1_conformance", "--show-stdout", "--browser=release",
diff --git a/testing/buildbot/test_suites.pyl b/testing/buildbot/test_suites.pyl index a5fb2aa..5ab0efcd 100644 --- a/testing/buildbot/test_suites.pyl +++ b/testing/buildbot/test_suites.pyl
@@ -3498,33 +3498,6 @@ }, }, - 'gpu_webgl2_conformance_telemetry_tests': { - 'webgl2_conformance_tests': { - 'telemetry_test_name': 'webgl2_conformance', - 'args': [ - '--webgl-conformance-version=2.0.1', - # The current working directory when run via isolate is - # out/Debug or out/Release. Reference this file relatively to - # it. - '--read-abbreviated-json-results-from=../../content/test/data/gpu/webgl2_conformance_tests_output.json', - # On dual-GPU devices we want the high-performance GPU to be active - '--extra-browser-args=--force_high_performance_gpu', - '$$MAGIC_SUBSTITUTION_GPUParallelJobs', - ], - 'android_args': [ - '$$MAGIC_SUBSTITUTION_GPUTelemetryNoRootForUnrootedDevices', - ], - 'mixins': [ - 'has_native_resultdb_integration', - ], - 'swarming': { - # These tests currently take about an hour and fifteen minutes - # to run. Split them into roughly 5-minute shards. - 'shards': 20, - }, - }, - }, - 'gpu_webgl2_conformance_validating_telemetry_tests': { 'webgl2_conformance_validating_tests': { 'telemetry_test_name': 'webgl2_conformance', @@ -6327,7 +6300,6 @@ 'gpu_v8_desktop_passthrough_telemetry_tests': [ 'gpu_common_and_optional_telemetry_tests', 'gpu_passthrough_telemetry_tests', - 'gpu_webgl2_conformance_telemetry_tests', 'gpu_webgl_conformance_telemetry_tests', ],
diff --git a/third_party/abseil-cpp/BUILD.gn b/third_party/abseil-cpp/BUILD.gn index 048e5d47..f17ae8f2 100644 --- a/third_party/abseil-cpp/BUILD.gn +++ b/third_party/abseil-cpp/BUILD.gn
@@ -195,6 +195,7 @@ "absl/container:node_slot_policy_test", "absl/container:sample_element_size_test", "absl/crc:crc32c_test", + "absl/crc:crc_cord_state_test", "absl/crc:crc_memcpy_test", "absl/crc:non_temporal_memcpy_test", "absl/functional:any_invocable_test",
diff --git a/third_party/abseil-cpp/CMake/AbseilDll.cmake b/third_party/abseil-cpp/CMake/AbseilDll.cmake index 00ea86e..436ba767 100644 --- a/third_party/abseil-cpp/CMake/AbseilDll.cmake +++ b/third_party/abseil-cpp/CMake/AbseilDll.cmake
@@ -98,6 +98,8 @@ "crc/internal/crc32_x86_arm_combined_simd.h" "crc/internal/crc.cc" "crc/internal/crc.h" + "crc/internal/crc_cord_state.cc" + "crc/internal/crc_cord_state.h" "crc/internal/crc_internal.h" "crc/internal/crc_x86_arm_combined.cc" "crc/internal/crc_memcpy_fallback.cc"
diff --git a/third_party/abseil-cpp/README.chromium b/third_party/abseil-cpp/README.chromium index 99e8228..d3ba4b9 100644 --- a/third_party/abseil-cpp/README.chromium +++ b/third_party/abseil-cpp/README.chromium
@@ -4,7 +4,7 @@ License: Apache 2.0 License File: LICENSE Version: 0 -Revision: c96db73c09dbb528eca6d19a50bd258b37e9fd5e +Revision: a13ef44bf3f2ef5399c6fc587a18f3b203b4d37a Security Critical: yes Description:
diff --git a/third_party/abseil-cpp/WORKSPACE b/third_party/abseil-cpp/WORKSPACE index 072fa93..a412adb 100644 --- a/third_party/abseil-cpp/WORKSPACE +++ b/third_party/abseil-cpp/WORKSPACE
@@ -39,10 +39,10 @@ # Google benchmark. http_archive( - name = "com_github_google_benchmark", # 2021-09-20T09:19:51Z - sha256 = "62e2f2e6d8a744d67e4bbc212fcfd06647080de4253c97ad5c6749e09faf2cb0", - strip_prefix = "benchmark-0baacde3618ca617da95375e0af13ce1baadea47", - urls = ["https://github.com/google/benchmark/archive/0baacde3618ca617da95375e0af13ce1baadea47.zip"], + name = "com_github_google_benchmark", # 2022-12-10T23:42:44Z + sha256 = "a62735f4f4bebc069225aa725dc68eb6836dcdbf550424b5f18e2673e7d40f2c", + strip_prefix = "benchmark-da652a748675b679947710117329e9f77f374f2d", + urls = ["https://github.com/google/benchmark/archive/da652a748675b679947710117329e9f77f374f2d.zip"], ) # Bazel Skylib.
diff --git a/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc b/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc index fae1279..7922083 100644 --- a/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +++ b/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc
@@ -16,6 +16,7 @@ #include <atomic> #include <cstddef> +#include <cstring> #include "absl/base/config.h" @@ -90,7 +91,7 @@ return reinterpret_cast<void*>(reinterpret_cast<uintptr_t>(slot) - slot_size); } -void DropDeletesWithoutResize(CommonFields& common, size_t& growth_left, +void DropDeletesWithoutResize(CommonFields& common, const PolicyFunctions& policy, void* tmp_space) { void* set = &common; void* slot_array = common.slots_; @@ -167,12 +168,11 @@ slot_ptr = PrevSlot(slot_ptr, slot_size); } } - ResetGrowthLeft(common, growth_left); + ResetGrowthLeft(common); common.infoz().RecordRehash(total_probe_length); } -void EraseMetaOnly(CommonFields& c, size_t& growth_left, ctrl_t* it, - size_t slot_size) { +void EraseMetaOnly(CommonFields& c, ctrl_t* it, size_t slot_size) { assert(IsFull(*it) && "erasing a dangling iterator"); --c.size_; const auto index = static_cast<size_t>(it - c.control_); @@ -183,22 +183,22 @@ // We count how many consecutive non empties we have to the right and to the // left of `it`. If the sum is >= kWidth then there is at least one probe // window that might have seen a full group. - bool was_never_full = - empty_before && empty_after && - static_cast<size_t>(empty_after.TrailingZeros() + - empty_before.LeadingZeros()) < Group::kWidth; + bool was_never_full = empty_before && empty_after && + static_cast<size_t>(empty_after.TrailingZeros()) + + empty_before.LeadingZeros() < + Group::kWidth; SetCtrl(c, index, was_never_full ? ctrl_t::kEmpty : ctrl_t::kDeleted, slot_size); - growth_left += (was_never_full ? 1 : 0); + c.growth_left_ += (was_never_full ? 1 : 0); c.infoz().RecordErase(); } -void ClearBackingArray(CommonFields& c, size_t& growth_left, - const PolicyFunctions& policy, bool reuse) { +void ClearBackingArray(CommonFields& c, const PolicyFunctions& policy, + bool reuse) { if (reuse) { c.size_ = 0; - ResetCtrl(c, growth_left, policy.slot_size); + ResetCtrl(c, policy.slot_size); c.infoz().RecordStorageChanged(0, c.capacity_); } else { void* set = &c; @@ -207,7 +207,7 @@ c.slots_ = nullptr; c.size_ = 0; c.capacity_ = 0; - growth_left = 0; + c.growth_left_ = 0; c.infoz().RecordClearedReservation(); assert(c.size_ == 0); c.infoz().RecordStorageChanged(0, 0);
diff --git a/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h b/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h index f7c63467..8a33106f 100644 --- a/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +++ b/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h
@@ -740,14 +740,19 @@ control_(that.control_), slots_(that.slots_), size_(that.size_), - capacity_(that.capacity_) { + capacity_(that.capacity_), + growth_left_(that.growth_left_) { that.control_ = EmptyGroup(); that.slots_ = nullptr; that.size_ = 0; that.capacity_ = 0; + that.growth_left_ = 0; } CommonFields& operator=(CommonFields&&) = default; + HashtablezInfoHandle& infoz() { return *this; } + const HashtablezInfoHandle& infoz() const { return *this; } + // TODO(b/259599413): Investigate removing some of these fields: // - control/slots can be derived from each other // - size can be moved into the slot array @@ -768,8 +773,8 @@ // The total number of available slots. size_t capacity_ = 0; - HashtablezInfoHandle& infoz() { return *this; } - const HashtablezInfoHandle& infoz() const { return *this; } + // The number of slots we can still fill without needing to rehash. + size_t growth_left_ = 0; }; // Returns he number of "cloned control bytes". @@ -968,21 +973,20 @@ // performance critical routines. FindInfo find_first_non_full_outofline(const CommonFields&, size_t); -inline void ResetGrowthLeft(CommonFields& common, size_t& growth_left) { - growth_left = CapacityToGrowth(common.capacity_) - common.size_; +inline void ResetGrowthLeft(CommonFields& common) { + common.growth_left_ = CapacityToGrowth(common.capacity_) - common.size_; } // Sets `ctrl` to `{kEmpty, kSentinel, ..., kEmpty}`, marking the entire // array as marked as empty. -inline void ResetCtrl(CommonFields& common, size_t& growth_left, - size_t slot_size) { +inline void ResetCtrl(CommonFields& common, size_t slot_size) { const size_t capacity = common.capacity_; ctrl_t* ctrl = common.control_; std::memset(ctrl, static_cast<int8_t>(ctrl_t::kEmpty), capacity + 1 + NumClonedBytes()); ctrl[capacity] = ctrl_t::kSentinel; SanitizerPoisonMemoryRegion(common.slots_, slot_size * capacity); - ResetGrowthLeft(common, growth_left); + ResetGrowthLeft(common); } // Sets `ctrl[i]` to `h`. @@ -1027,8 +1031,7 @@ } template <typename Alloc, size_t SizeOfSlot, size_t AlignOfSlot> -ABSL_ATTRIBUTE_NOINLINE void InitializeSlots(CommonFields& c, - size_t& growth_left, Alloc alloc) { +ABSL_ATTRIBUTE_NOINLINE void InitializeSlots(CommonFields& c, Alloc alloc) { assert(c.capacity_); // Folks with custom allocators often make unwarranted assumptions about the // behavior of their classes vis-a-vis trivial destructability and what @@ -1045,7 +1048,7 @@ Allocate<AlignOfSlot>(&alloc, AllocSize(cap, SizeOfSlot, AlignOfSlot))); c.control_ = reinterpret_cast<ctrl_t*>(mem); c.slots_ = mem + SlotOffset(cap, AlignOfSlot); - ResetCtrl(c, growth_left, SizeOfSlot); + ResetCtrl(c, SizeOfSlot); if (sample_size) { c.infoz() = Sample(sample_size); } @@ -1073,12 +1076,11 @@ // ClearBackingArray clears the backing array, either modifying it in place, // or creating a new one based on the value of "reuse". // REQUIRES: c.capacity > 0 -void ClearBackingArray(CommonFields& c, size_t& growth_left, - const PolicyFunctions& policy, bool reuse); +void ClearBackingArray(CommonFields& c, const PolicyFunctions& policy, + bool reuse); // Type-erased version of raw_hash_set::erase_meta_only. -void EraseMetaOnly(CommonFields& c, size_t& growth_left, ctrl_t* it, - size_t slot_size); +void EraseMetaOnly(CommonFields& c, ctrl_t* it, size_t slot_size); // Function to place in PolicyFunctions::dealloc for raw_hash_sets // that are using std::allocator. This allows us to share the same @@ -1106,7 +1108,7 @@ } // Type-erased version of raw_hash_set::drop_deletes_without_resize. -void DropDeletesWithoutResize(CommonFields& common, size_t& growth_left, +void DropDeletesWithoutResize(CommonFields& common, const PolicyFunctions& policy, void* tmp_space); // A SwissTable. @@ -1130,7 +1132,7 @@ // the storage of the hashtable will be allocated and the elements will be // constructed and destroyed. template <class Policy, class Hash, class Eq, class Alloc> -class raw_hash_set : private CommonFields { +class raw_hash_set { using PolicyTraits = hash_policy_traits<Policy>; using KeyArgImpl = KeyArg<IsTransparent<Eq>::value && IsTransparent<Hash>::value>; @@ -1298,9 +1300,9 @@ using pointer = typename raw_hash_set::const_pointer; using difference_type = typename raw_hash_set::difference_type; - const_iterator() {} + const_iterator() = default; // Implicit construction from iterator. - const_iterator(iterator i) : inner_(std::move(i)) {} + const_iterator(iterator i) : inner_(std::move(i)) {} // NOLINT reference operator*() const { return *inner_; } pointer operator->() const { return inner_.operator->(); } @@ -1328,6 +1330,8 @@ using node_type = node_handle<Policy, hash_policy_traits<Policy>, Alloc>; using insert_return_type = InsertReturnType<iterator, node_type>; + // Note: can't use `= default` due to non-default noexcept (causes + // problems for some compilers). NOLINTNEXTLINE raw_hash_set() noexcept( std::is_nothrow_default_constructible<hasher>::value&& std::is_nothrow_default_constructible<key_equal>::value&& @@ -1337,7 +1341,7 @@ size_t bucket_count, const hasher& hash = hasher(), const key_equal& eq = key_equal(), const allocator_type& alloc = allocator_type()) - : settings_(0u, hash, eq, alloc) { + : settings_(CommonFields{}, hash, eq, alloc) { if (bucket_count) { common().capacity_ = NormalizeCapacity(bucket_count); initialize_slots(); @@ -1462,15 +1466,13 @@ : // Hash, equality and allocator are copied instead of moved because // `that` must be left valid. If Hash is std::function<Key>, moving it // would create a nullptr functor that cannot be called. - CommonFields(std::move(that)), - settings_(absl::exchange(that.growth_left(), size_t{0}), + settings_(absl::exchange(that.common(), CommonFields{}), that.hash_ref(), that.eq_ref(), that.alloc_ref()) {} raw_hash_set(raw_hash_set&& that, const allocator_type& a) - : settings_(0, that.hash_ref(), that.eq_ref(), a) { + : settings_(CommonFields{}, that.hash_ref(), that.eq_ref(), a) { if (a == that.alloc_ref()) { std::swap(common(), that.common()); - std::swap(growth_left(), that.growth_left()); } else { reserve(that.size()); // Note: this will copy elements of dense_set and unordered_set instead of @@ -1494,6 +1496,7 @@ std::is_nothrow_move_assignable<key_equal>::value) { // TODO(sbenza): We should only use the operations from the noexcept clause // to make sure we actually adhere to that contract. + // NOLINTNEXTLINE: not returning *this for performance. return move_assign( std::move(that), typename AllocTraits::propagate_on_container_move_assignment()); @@ -1545,7 +1548,7 @@ // Already guaranteed to be empty; so nothing to do. } else { destroy_slots(); - ClearBackingArray(common(), growth_left(), GetPolicyFunctions(), + ClearBackingArray(common(), GetPolicyFunctions(), /*reuse=*/cap < 128); } } @@ -1843,7 +1846,6 @@ typename AllocTraits::propagate_on_container_swap{})) { using std::swap; swap(common(), that.common()); - swap(growth_left(), that.growth_left()); swap(hash_ref(), that.hash_ref()); swap(eq_ref(), that.eq_ref()); SwapAlloc(alloc_ref(), that.alloc_ref(), @@ -1853,7 +1855,7 @@ void rehash(size_t n) { if (n == 0 && capacity() == 0) return; if (n == 0 && size() == 0) { - ClearBackingArray(common(), growth_left(), GetPolicyFunctions(), + ClearBackingArray(common(), GetPolicyFunctions(), /*reuse=*/false); return; } @@ -2079,7 +2081,7 @@ // This merely updates the pertinent control byte. This can be used in // conjunction with Policy::transfer to move the object to another place. void erase_meta_only(const_iterator it) { - EraseMetaOnly(common(), growth_left(), it.inner_.ctrl_, sizeof(slot_type)); + EraseMetaOnly(common(), it.inner_.ctrl_, sizeof(slot_type)); } // Allocates a backing array for `self` and initializes its control bytes. @@ -2094,7 +2096,7 @@ using CharAlloc = typename absl::allocator_traits<Alloc>::template rebind_alloc<char>; InitializeSlots<CharAlloc, sizeof(slot_type), alignof(slot_type)>( - common(), growth_left(), CharAlloc(alloc_ref())); + common(), CharAlloc(alloc_ref())); } ABSL_ATTRIBUTE_NOINLINE void resize(size_t new_capacity) { @@ -2134,8 +2136,7 @@ inline void drop_deletes_without_resize() { // Stack-allocate space for swapping elements. alignas(slot_type) unsigned char tmp[sizeof(slot_type)]; - DropDeletesWithoutResize(common(), growth_left(), GetPolicyFunctions(), - tmp); + DropDeletesWithoutResize(common(), GetPolicyFunctions(), tmp); } // Called whenever the table *might* need to conditionally grow. @@ -2305,15 +2306,15 @@ // side-effect. // // See `CapacityToGrowth()`. - size_t& growth_left() { return settings_.template get<0>(); } + size_t& growth_left() { return common().growth_left_; } // Prefetch the heap-allocated memory region to resolve potential TLB misses. // This is intended to overlap with execution of calculating the hash for a // key. void prefetch_heap_block() const { base_internal::PrefetchT2(control()); } - CommonFields& common() { return *this; } - const CommonFields& common() const { return *this; } + CommonFields& common() { return settings_.template get<0>(); } + const CommonFields& common() const { return settings_.template get<0>(); } ctrl_t* control() const { return common().control_; } slot_type* slot_array() const { @@ -2369,13 +2370,12 @@ return value; } - // Bundle together growth_left (number of slots that can be filled without - // rehashing) plus other objects which might be empty. CompressedTuple will - // ensure that sizeof is not affected by any of the empty fields that occur - // after growth_left. - absl::container_internal::CompressedTuple<size_t /* growth_left */, hasher, - key_equal, allocator_type> - settings_{0u, hasher{}, key_equal{}, allocator_type{}}; + // Bundle together CommonFields plus other objects which might be empty. + // CompressedTuple will ensure that sizeof is not affected by any of the empty + // fields that occur after CommonFields. + absl::container_internal::CompressedTuple<CommonFields, hasher, key_equal, + allocator_type> + settings_{CommonFields{}, hasher{}, key_equal{}, allocator_type{}}; }; // Erases all elements that satisfy the predicate `pred` from the container `c`.
diff --git a/third_party/abseil-cpp/absl/container/internal/raw_hash_set_test.cc b/third_party/abseil-cpp/absl/container/internal/raw_hash_set_test.cc index 74351c09..eb0757b2 100644 --- a/third_party/abseil-cpp/absl/container/internal/raw_hash_set_test.cc +++ b/third_party/abseil-cpp/absl/container/internal/raw_hash_set_test.cc
@@ -399,7 +399,7 @@ struct StringTable : raw_hash_set<StringPolicy, StringHash, StringEq, std::allocator<int>> { using Base = typename StringTable::raw_hash_set; - StringTable() {} + StringTable() = default; using Base::Base; }; @@ -419,7 +419,7 @@ template <typename T> struct CustomAlloc : std::allocator<T> { - CustomAlloc() {} + CustomAlloc() = default; template <typename U> explicit CustomAlloc(const CustomAlloc<U>& /*other*/) {} @@ -446,7 +446,7 @@ struct BadTable : raw_hash_set<IntPolicy, BadFastHash, std::equal_to<int>, std::allocator<int>> { using Base = typename BadTable::raw_hash_set; - BadTable() {} + BadTable() = default; using Base::Base; }; @@ -1003,7 +1003,7 @@ // We are checking that original and second are close enough to each other // that they are probably still in the same group. This is not strictly // guaranteed. - EXPECT_LT(std::abs(original - second), + EXPECT_LT(static_cast<size_t>(std::abs(original - second)), capacity * sizeof(IntTable::value_type)); } @@ -1080,19 +1080,6 @@ // Ratios total_probe_length/size for every tested table. std::vector<double> single_table_ratios; - friend ProbeStats operator+(const ProbeStats& a, const ProbeStats& b) { - ProbeStats res = a; - res.all_probes_histogram.resize(std::max(res.all_probes_histogram.size(), - b.all_probes_histogram.size())); - std::transform(b.all_probes_histogram.begin(), b.all_probes_histogram.end(), - res.all_probes_histogram.begin(), - res.all_probes_histogram.begin(), std::plus<size_t>()); - res.single_table_ratios.insert(res.single_table_ratios.end(), - b.single_table_ratios.begin(), - b.single_table_ratios.end()); - return res; - } - // Average ratio total_probe_length/size over tables. double AvgRatio() const { return std::accumulate(single_table_ratios.begin(), @@ -1555,7 +1542,7 @@ struct ExplicitAllocIntTable : raw_hash_set<IntPolicy, container_internal::hash_default_hash<int64_t>, std::equal_to<int64_t>, Alloc<int64_t>> { - ExplicitAllocIntTable() {} + ExplicitAllocIntTable() = default; }; TEST(Table, AllocWithExplicitCtor) { @@ -1943,7 +1930,7 @@ EXPECT_FALSE(res.inserted); EXPECT_THAT(*res.position, Pair(k0, "")); EXPECT_TRUE(res.node); - EXPECT_FALSE(node); + EXPECT_FALSE(node); // NOLINT(bugprone-use-after-move) } TEST(Nodes, HintInsert) { @@ -1953,7 +1940,7 @@ auto it = t.insert(t.begin(), std::move(node)); EXPECT_THAT(t, UnorderedElementsAre(1, 2, 3)); EXPECT_EQ(*it, 1); - EXPECT_FALSE(node); + EXPECT_FALSE(node); // NOLINT(bugprone-use-after-move) node = t.extract(2); EXPECT_THAT(t, UnorderedElementsAre(1, 3)); @@ -1963,7 +1950,7 @@ it = t.insert(t.begin(), std::move(node)); EXPECT_EQ(*it, 2); // The node was not emptied by the insert call. - EXPECT_TRUE(node); + EXPECT_TRUE(node); // NOLINT(bugprone-use-after-move) } IntTable MakeSimpleTable(size_t size) {
diff --git a/third_party/abseil-cpp/absl/crc/BUILD.bazel b/third_party/abseil-cpp/absl/crc/BUILD.bazel index bceb7258..1c58f46 100644 --- a/third_party/abseil-cpp/absl/crc/BUILD.bazel +++ b/third_party/abseil-cpp/absl/crc/BUILD.bazel
@@ -163,6 +163,34 @@ ], ) +cc_library( + name = "crc_cord_state", + srcs = ["internal/crc_cord_state.cc"], + hdrs = ["internal/crc_cord_state.h"], + copts = ABSL_DEFAULT_COPTS, + linkopts = ABSL_DEFAULT_LINKOPTS, + visibility = ["//absl/strings:__pkg__"], + deps = [ + ":crc32c", + "//absl/base:config", + "//absl/numeric:bits", + "//absl/strings", + ], +) + +cc_test( + name = "crc_cord_state_test", + srcs = ["internal/crc_cord_state_test.cc"], + copts = ABSL_TEST_COPTS, + linkopts = ABSL_DEFAULT_LINKOPTS, + visibility = ["//visibility:private"], + deps = [ + ":crc32c", + ":crc_cord_state", + "@com_google_googletest//:gtest_main", + ], +) + cc_binary( name = "crc32c_benchmark", testonly = 1, @@ -176,6 +204,7 @@ deps = [ ":crc32c", "//absl/memory", + "//absl/strings", "@com_github_google_benchmark//:benchmark_main", ], )
diff --git a/third_party/abseil-cpp/absl/crc/BUILD.gn b/third_party/abseil-cpp/absl/crc/BUILD.gn index 35fad6e..0310454 100644 --- a/third_party/abseil-cpp/absl/crc/BUILD.gn +++ b/third_party/abseil-cpp/absl/crc/BUILD.gn
@@ -108,3 +108,26 @@ ":non_temporal_memcpy", ] } + +absl_source_set("crc_cord_state") { + public = [ "internal/crc_cord_state.h" ] + sources = [ "internal/crc_cord_state.cc" ] + deps = [ + ":crc32c", + "//third_party/abseil-cpp/absl/base:config", + "//third_party/abseil-cpp/absl/numeric:bits", + "//third_party/abseil-cpp/absl/strings", + ] + visibility = [ + "//third_party/abseil-cpp/absl/strings:*", + "//third_party/abseil-cpp/absl/crc/*", + ] +} + +absl_test("crc_cord_state_test") { + sources = [ "internal/crc_cord_state_test.cc" ] + deps = [ + ":crc32c", + ":crc_cord_state", + ] +}
diff --git a/third_party/abseil-cpp/absl/crc/CMakeLists.txt b/third_party/abseil-cpp/absl/crc/CMakeLists.txt index e1093c9..72ea2094 100644 --- a/third_party/abseil-cpp/absl/crc/CMakeLists.txt +++ b/third_party/abseil-cpp/absl/crc/CMakeLists.txt
@@ -146,3 +146,31 @@ absl::non_temporal_memcpy GTest::gtest_main ) + +absl_cc_library( + NAME + crc_cord_state + HDRS + "internal/crc_cord_state.h" + SRCS + "internal/crc_cord_state.cc" + COPTS + ${ABSL_DEFAULT_COPTS} + DEPS + absl::crc32c + absl::config + absl::strings +) + +absl_cc_test( + NAME + crc_cord_state_test + SRCS + "internal/crc_cord_state_test.cc" + COPTS + ${ABSL_DEFAULT_COPTS} + DEPS + absl::crc_cord_state + absl::crc32c + GTest::gtest_main +)
diff --git a/third_party/abseil-cpp/absl/crc/crc32c_benchmark.cc b/third_party/abseil-cpp/absl/crc/crc32c_benchmark.cc index df99d5c..3b46ef36 100644 --- a/third_party/abseil-cpp/absl/crc/crc32c_benchmark.cc +++ b/third_party/abseil-cpp/absl/crc/crc32c_benchmark.cc
@@ -17,6 +17,7 @@ #include "absl/crc/crc32c.h" #include "absl/crc/internal/crc32c.h" #include "absl/memory/memory.h" +#include "absl/strings/string_view.h" #include "benchmark/benchmark.h" namespace { @@ -52,7 +53,27 @@ benchmark::DoNotOptimize(crc); } } -BENCHMARK(BM_Extend)->Arg(0)->Arg(1)->Arg(100)->Arg(10000)->Arg(500000); +BENCHMARK(BM_Extend)->Arg(0)->Arg(1)->Arg(100)->Arg(10000)->Arg(500000)->Arg( + 100 * 1000 * 1000); + +// Make working set >> CPU cache size to benchmark prefetches better +void BM_ExtendCacheMiss(benchmark::State& state) { + int len = state.range(0); + constexpr int total = 300 * 1000 * 1000; + std::string extension = TestString(total); + absl::crc32c_t base = absl::crc32c_t{0xC99465AA}; // CRC32C of "Hello World" + for (auto s : state) { + for (int i = 0; i < total; i += len * 2) { + benchmark::DoNotOptimize(base); + benchmark::DoNotOptimize(extension); + absl::crc32c_t crc = + absl::ExtendCrc32c(base, absl::string_view(&extension[i], len)); + benchmark::DoNotOptimize(crc); + } + } + state.SetBytesProcessed(static_cast<int64_t>(state.iterations()) * total / 2); +} +BENCHMARK(BM_ExtendCacheMiss)->Arg(10)->Arg(100)->Arg(1000)->Arg(100000); void BM_ExtendByZeroes(benchmark::State& state) { absl::crc32c_t base = absl::crc32c_t{0xC99465AA}; // CRC32C of "Hello World"
diff --git a/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc b/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc index 8b16d84..d61b701 100644 --- a/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +++ b/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc
@@ -211,6 +211,10 @@ #elif defined(__aarch64__) && defined(__linux__) +#ifndef HWCAP_CPUID +#define HWCAP_CPUID (1 << 11) +#endif + #define ABSL_INTERNAL_AARCH64_ID_REG_READ(id, val) \ asm("mrs %0, " #id : "=r"(val))
diff --git a/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h b/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h index f6c2a21..f23cd75 100644 --- a/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +++ b/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h
@@ -38,7 +38,8 @@ #define ABSL_CRC_INTERNAL_HAVE_X86_SIMD #elif defined(__aarch64__) && defined(__LITTLE_ENDIAN__) && \ - defined(__ARM_FEATURE_CRC32) && defined(__ARM_NEON) + defined(__ARM_FEATURE_CRC32) && defined(__ARM_NEON) && \ + defined(__ARM_FEATURE_CRYPTO) #include <arm_acle.h> #include <arm_neon.h> @@ -254,7 +255,7 @@ } inline V128 V128_ShiftLeft64(const V128 l, const V128 r) { - return vshlq_u64(l, r); + return vshlq_u64(l, vreinterpretq_s64_u64(r)); } #endif
diff --git a/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc b/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc new file mode 100644 index 0000000..d0be0dd --- /dev/null +++ b/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc
@@ -0,0 +1,130 @@ +// Copyright 2022 The Abseil Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "absl/crc/internal/crc_cord_state.h" + +#include <cassert> + +#include "absl/base/config.h" +#include "absl/numeric/bits.h" + +namespace absl { +ABSL_NAMESPACE_BEGIN +namespace crc_internal { + +CrcCordState::RefcountedRep* CrcCordState::RefSharedEmptyRep() { + static CrcCordState::RefcountedRep* empty = new CrcCordState::RefcountedRep; + + assert(empty->count.load(std::memory_order_relaxed) >= 1); + assert(empty->rep.removed_prefix.length == 0); + assert(empty->rep.prefix_crc.empty()); + + Ref(empty); + return empty; +} + +CrcCordState::CrcCordState() : refcounted_rep_(new RefcountedRep) {} + +CrcCordState::CrcCordState(const CrcCordState& other) + : refcounted_rep_(other.refcounted_rep_) { + Ref(refcounted_rep_); +} + +CrcCordState::CrcCordState(CrcCordState&& other) + : refcounted_rep_(other.refcounted_rep_) { + // Make `other` valid for use after move. + other.refcounted_rep_ = RefSharedEmptyRep(); +} + +CrcCordState& CrcCordState::operator=(const CrcCordState& other) { + if (this != &other) { + Unref(refcounted_rep_); + refcounted_rep_ = other.refcounted_rep_; + Ref(refcounted_rep_); + } + return *this; +} + +CrcCordState& CrcCordState::operator=(CrcCordState&& other) { + if (this != &other) { + Unref(refcounted_rep_); + refcounted_rep_ = other.refcounted_rep_; + // Make `other` valid for use after move. + other.refcounted_rep_ = RefSharedEmptyRep(); + } + return *this; +} + +CrcCordState::~CrcCordState() { + Unref(refcounted_rep_); +} + +crc32c_t CrcCordState::Checksum() const { + if (rep().prefix_crc.empty()) { + return absl::crc32c_t{0}; + } + if (IsNormalized()) { + return rep().prefix_crc.back().crc; + } + return absl::RemoveCrc32cPrefix( + rep().removed_prefix.crc, rep().prefix_crc.back().crc, + rep().prefix_crc.back().length - rep().removed_prefix.length); +} + +CrcCordState::PrefixCrc CrcCordState::NormalizedPrefixCrcAtNthChunk( + size_t n) const { + assert(n < NumChunks()); + if (IsNormalized()) { + return rep().prefix_crc[n]; + } + size_t length = rep().prefix_crc[n].length - rep().removed_prefix.length; + return PrefixCrc(length, + absl::RemoveCrc32cPrefix(rep().removed_prefix.crc, + rep().prefix_crc[n].crc, length)); +} + +void CrcCordState::Normalize() { + if (IsNormalized() || rep().prefix_crc.empty()) { + return; + } + + Rep* r = mutable_rep(); + for (auto& prefix_crc : r->prefix_crc) { + size_t remaining = prefix_crc.length - r->removed_prefix.length; + prefix_crc.crc = absl::RemoveCrc32cPrefix(r->removed_prefix.crc, + prefix_crc.crc, remaining); + prefix_crc.length = remaining; + } + r->removed_prefix = PrefixCrc(); +} + +void CrcCordState::Poison() { + Rep* rep = mutable_rep(); + if (NumChunks() > 0) { + for (auto& prefix_crc : rep->prefix_crc) { + // This is basically CRC32::Scramble(). + uint32_t crc = static_cast<uint32_t>(prefix_crc.crc); + crc += 0x2e76e41b; + crc = absl::rotr(crc, 17); + prefix_crc.crc = crc32c_t{crc}; + } + } else { + // Add a fake corrupt chunk. + rep->prefix_crc.push_back(PrefixCrc(0, crc32c_t{1})); + } +} + +} // namespace crc_internal +ABSL_NAMESPACE_END +} // namespace absl
diff --git a/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.h b/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.h new file mode 100644 index 0000000..d305424c --- /dev/null +++ b/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.h
@@ -0,0 +1,159 @@ +// Copyright 2022 The Abseil Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef ABSL_CRC_INTERNAL_CRC_CORD_STATE_H_ +#define ABSL_CRC_INTERNAL_CRC_CORD_STATE_H_ + +#include <atomic> +#include <cstddef> +#include <deque> + +#include "absl/base/config.h" +#include "absl/crc/crc32c.h" + +namespace absl { +ABSL_NAMESPACE_BEGIN +namespace crc_internal { + +// CrcCordState is a copy-on-write class that holds the chunked CRC32C data +// that allows CrcCord to perform efficient substring operations. CrcCordState +// is used as a member variable in CrcCord. When a CrcCord is converted to a +// Cord, the CrcCordState is shallow-copied into the root node of the Cord. If +// the converted Cord is modified outside of CrcCord, the CrcCordState is +// discarded from the Cord. If the Cord is converted back to a CrcCord, and the +// Cord is still carrying the CrcCordState in its root node, the CrcCord can +// re-use the CrcCordState, making the construction of the CrcCord cheap. +// +// CrcCordState does not try to encapsulate the CRC32C state (CrcCord requires +// knowledge of how CrcCordState represents the CRC32C state). It does +// encapsulate the copy-on-write nature of the state. +class CrcCordState { + public: + // Constructors. + CrcCordState(); + CrcCordState(const CrcCordState&); + CrcCordState(CrcCordState&&); + + // Destructor. Atomically unreferences the data. + ~CrcCordState(); + + // Copy and move operators. + CrcCordState& operator=(const CrcCordState&); + CrcCordState& operator=(CrcCordState&&); + + // A (length, crc) pair. + struct PrefixCrc { + PrefixCrc() = default; + PrefixCrc(size_t length_arg, absl::crc32c_t crc_arg) + : length(length_arg), crc(crc_arg) {} + + size_t length = 0; + + // TODO(absl-team): Memory stomping often zeros out memory. If this struct + // gets overwritten, we could end up with {0, 0}, which is the correct CRC + // for a string of length 0. Consider storing a scrambled value and + // unscrambling it before verifying it. + absl::crc32c_t crc = absl::crc32c_t{0}; + }; + + // The representation of the chunked CRC32C data. + struct Rep { + // `removed_prefix` is the crc and length of any prefix that has been + // removed from the Cord (for example, by calling + // `CrcCord::RemovePrefix()`). To get the checkum of any prefix of the cord, + // this value must be subtracted from `prefix_crc`. See `Checksum()` for an + // example. + // + // CrcCordState is said to be "normalized" if removed_prefix.length == 0. + PrefixCrc removed_prefix; + + // A deque of (length, crc) pairs, representing length and crc of a prefix + // of the Cord, before removed_prefix has been subtracted. The lengths of + // the prefixes are stored in increasing order. If the Cord is not empty, + // the last value in deque is the contains the CRC32C of the entire Cord + // when removed_prefix is subtracted from it. + std::deque<PrefixCrc> prefix_crc; + }; + + // Returns a reference to the representation of the chunked CRC32C data. + const Rep& rep() const { return refcounted_rep_->rep; } + + // Returns a mutable reference to the representation of the chunked CRC32C + // data. Calling this function will copy the data if another instance also + // holds a reference to the data, so it is important to call rep() instead if + // the data may not be mutated. + Rep* mutable_rep() { + if (refcounted_rep_->count.load(std::memory_order_acquire) != 1) { + RefcountedRep* copy = new RefcountedRep; + copy->rep = refcounted_rep_->rep; + Unref(refcounted_rep_); + refcounted_rep_ = copy; + } + return &refcounted_rep_->rep; + } + + // Returns the CRC32C of the entire Cord. + absl::crc32c_t Checksum() const; + + // Returns true if the chunked CRC32C cached is normalized. + bool IsNormalized() const { return rep().removed_prefix.length == 0; } + + // Normalizes the chunked CRC32C checksum cache by substracting any removed + // prefix from the chunks. + void Normalize(); + + // Returns the number of cached chunks. + size_t NumChunks() const { return rep().prefix_crc.size(); } + + // Helper that returns the (length, crc) of the `n`-th cached chunked. + PrefixCrc NormalizedPrefixCrcAtNthChunk(size_t n) const; + + // Poisons all chunks to so that Checksum() will likely be incorrect with high + // probability. + void Poison(); + + private: + struct RefcountedRep { + std::atomic<int32_t> count{1}; + Rep rep; + }; + + // Adds a reference to the shared global empty `RefcountedRep`, and returns a + // pointer to the `RefcountedRep`. This is an optimization to avoid unneeded + // allocations when the allocation is unlikely to ever be used. The returned + // pointer can be `Unref()`ed when it is no longer needed. Since the returned + // instance will always have a reference counter greater than 1, attempts to + // modify it (by calling `mutable_rep()`) will create a new unshared copy. + static RefcountedRep* RefSharedEmptyRep(); + + static void Ref(RefcountedRep* r) { + assert(r != nullptr); + r->count.fetch_add(1, std::memory_order_relaxed); + } + + static void Unref(RefcountedRep* r) { + assert(r != nullptr); + if (r->count.fetch_sub(1, std::memory_order_acq_rel) == 1) { + delete r; + } + } + + RefcountedRep* refcounted_rep_; +}; + +} // namespace crc_internal +ABSL_NAMESPACE_END +} // namespace absl + +#endif // ABSL_CRC_INTERNAL_CRC_CORD_STATE_H_
diff --git a/third_party/abseil-cpp/absl/crc/internal/crc_cord_state_test.cc b/third_party/abseil-cpp/absl/crc/internal/crc_cord_state_test.cc new file mode 100644 index 0000000..e2c8e3c --- /dev/null +++ b/third_party/abseil-cpp/absl/crc/internal/crc_cord_state_test.cc
@@ -0,0 +1,124 @@ +// Copyright 2022 The Abseil Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "absl/crc/internal/crc_cord_state.h" + +#include <algorithm> +#include <cstdint> +#include <string> +#include <utility> + +#include "gtest/gtest.h" +#include "absl/crc/crc32c.h" + +namespace { + +TEST(CrcCordState, Default) { + absl::crc_internal::CrcCordState state; + EXPECT_TRUE(state.IsNormalized()); + EXPECT_EQ(state.Checksum(), absl::crc32c_t{0}); + state.Normalize(); + EXPECT_EQ(state.Checksum(), absl::crc32c_t{0}); +} + +TEST(CrcCordState, Normalize) { + absl::crc_internal::CrcCordState state; + auto* rep = state.mutable_rep(); + rep->prefix_crc.push_back( + absl::crc_internal::CrcCordState::PrefixCrc(1000, absl::crc32c_t{1000})); + rep->prefix_crc.push_back( + absl::crc_internal::CrcCordState::PrefixCrc(2000, absl::crc32c_t{2000})); + rep->removed_prefix = + absl::crc_internal::CrcCordState::PrefixCrc(500, absl::crc32c_t{500}); + + // The removed_prefix means state is not normalized. + EXPECT_FALSE(state.IsNormalized()); + + absl::crc32c_t crc = state.Checksum(); + state.Normalize(); + EXPECT_TRUE(state.IsNormalized()); + + // The checksum should not change as a result of calling Normalize(). + EXPECT_EQ(state.Checksum(), crc); + EXPECT_EQ(rep->removed_prefix.length, 0); +} + +TEST(CrcCordState, Copy) { + absl::crc_internal::CrcCordState state; + auto* rep = state.mutable_rep(); + rep->prefix_crc.push_back( + absl::crc_internal::CrcCordState::PrefixCrc(1000, absl::crc32c_t{1000})); + + absl::crc_internal::CrcCordState copy = state; + + EXPECT_EQ(state.Checksum(), absl::crc32c_t{1000}); + EXPECT_EQ(copy.Checksum(), absl::crc32c_t{1000}); +} + +TEST(CrcCordState, UnsharedSelfCopy) { + absl::crc_internal::CrcCordState state; + auto* rep = state.mutable_rep(); + rep->prefix_crc.push_back( + absl::crc_internal::CrcCordState::PrefixCrc(1000, absl::crc32c_t{1000})); + + const absl::crc_internal::CrcCordState& ref = state; + state = ref; + + EXPECT_EQ(state.Checksum(), absl::crc32c_t{1000}); +} + +TEST(CrcCordState, Move) { + absl::crc_internal::CrcCordState state; + auto* rep = state.mutable_rep(); + rep->prefix_crc.push_back( + absl::crc_internal::CrcCordState::PrefixCrc(1000, absl::crc32c_t{1000})); + + absl::crc_internal::CrcCordState moved = std::move(state); + EXPECT_EQ(moved.Checksum(), absl::crc32c_t{1000}); +} + +TEST(CrcCordState, UnsharedSelfMove) { + absl::crc_internal::CrcCordState state; + auto* rep = state.mutable_rep(); + rep->prefix_crc.push_back( + absl::crc_internal::CrcCordState::PrefixCrc(1000, absl::crc32c_t{1000})); + + absl::crc_internal::CrcCordState& ref = state; + state = std::move(ref); + + EXPECT_EQ(state.Checksum(), absl::crc32c_t{1000}); +} + +TEST(CrcCordState, PoisonDefault) { + absl::crc_internal::CrcCordState state; + state.Poison(); + EXPECT_NE(state.Checksum(), absl::crc32c_t{0}); +} + +TEST(CrcCordState, PoisonData) { + absl::crc_internal::CrcCordState state; + auto* rep = state.mutable_rep(); + rep->prefix_crc.push_back( + absl::crc_internal::CrcCordState::PrefixCrc(1000, absl::crc32c_t{1000})); + rep->prefix_crc.push_back( + absl::crc_internal::CrcCordState::PrefixCrc(2000, absl::crc32c_t{2000})); + rep->removed_prefix = + absl::crc_internal::CrcCordState::PrefixCrc(500, absl::crc32c_t{500}); + + absl::crc32c_t crc = state.Checksum(); + state.Poison(); + EXPECT_NE(state.Checksum(), crc); +} + +} // namespace
diff --git a/third_party/abseil-cpp/absl/crc/internal/crc_internal.h b/third_party/abseil-cpp/absl/crc/internal/crc_internal.h index 7a503433..0611b38 100644 --- a/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +++ b/third_party/abseil-cpp/absl/crc/internal/crc_internal.h
@@ -29,6 +29,8 @@ // Prefetch constants used in some Extend() implementations constexpr int kPrefetchHorizon = ABSL_CACHELINE_SIZE * 4; // Prefetch this far +// Shorter prefetch distance for smaller buffers +constexpr int kPrefetchHorizonMedium = ABSL_CACHELINE_SIZE * 1; static_assert(kPrefetchHorizon >= 64, "CRCPrefetchHorizon less than loop len"); // We require the Scramble() function:
diff --git a/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc b/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc index 2112f609..d71191e3 100644 --- a/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +++ b/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc
@@ -29,13 +29,8 @@ #include "absl/memory/memory.h" #include "absl/numeric/bits.h" -#if defined(__aarch64__) && defined(__LITTLE_ENDIAN__) && \ - defined(__ARM_FEATURE_CRC32) && defined(__ARM_NEON) -#define ABSL_INTERNAL_CAN_USE_SIMD_CRC32C -#elif defined(__SSE4_2__) && defined(__PCLMUL__) -#define ABSL_INTERNAL_CAN_USE_SIMD_CRC32C -#elif defined(_MSC_VER) && defined(__AVX__) -// MSVC AVX support (/arch:AVX) implies SSE 4.2 and PCLMUL support. +#if defined(ABSL_CRC_INTERNAL_HAVE_ARM_SIMD) || \ + defined(ABSL_CRC_INTERNAL_HAVE_X86_SIMD) #define ABSL_INTERNAL_CAN_USE_SIMD_CRC32C #endif @@ -434,6 +429,12 @@ ABSL_INTERNAL_STEP8BY3(l64, l641, l642, p, p1, p2); ABSL_INTERNAL_STEP8BY3(l64, l641, l642, p, p1, p2); ABSL_INTERNAL_STEP8BY3(l64, l641, l642, p, p1, p2); + base_internal::PrefetchT0( + reinterpret_cast<const char*>(p + kPrefetchHorizonMedium)); + base_internal::PrefetchT0( + reinterpret_cast<const char*>(p1 + kPrefetchHorizonMedium)); + base_internal::PrefetchT0( + reinterpret_cast<const char*>(p2 + kPrefetchHorizonMedium)); } // Don't run crc on last 8 bytes. ABSL_INTERNAL_STEP8BY3(l64, l641, l642, p, p1, p2);
diff --git a/third_party/abseil-cpp/absl/flags/flag_benchmark.cc b/third_party/abseil-cpp/absl/flags/flag_benchmark.cc index fc572d9..758a6a55 100644 --- a/third_party/abseil-cpp/absl/flags/flag_benchmark.cc +++ b/third_party/abseil-cpp/absl/flags/flag_benchmark.cc
@@ -241,10 +241,11 @@ } // namespace +#ifdef __llvm__ +// To view disassembly use: gdb ${BINARY} -batch -ex "disassemble /s $FUNC" #define InvokeGetFlag(T) \ T AbslInvokeGetFlag##T() { return absl::GetFlag(SINGLE_FLAG(T)); } \ int odr##T = (benchmark::DoNotOptimize(AbslInvokeGetFlag##T), 1); BENCHMARKED_TYPES(InvokeGetFlag) - -// To veiw disassembly use: gdb ${BINARY} -batch -ex "disassemble /s $FUNC" +#endif // __llvm__
diff --git a/third_party/abseil-cpp/absl/hash/BUILD.bazel b/third_party/abseil-cpp/absl/hash/BUILD.bazel index bcc316f..4a95f05 100644 --- a/third_party/abseil-cpp/absl/hash/BUILD.bazel +++ b/third_party/abseil-cpp/absl/hash/BUILD.bazel
@@ -157,7 +157,6 @@ deps = [ "//absl/base:config", "//absl/base:endian", - "//absl/numeric:bits", "//absl/numeric:int128", ], )
diff --git a/third_party/abseil-cpp/absl/hash/BUILD.gn b/third_party/abseil-cpp/absl/hash/BUILD.gn index 2170f4e8..754c8d9f 100644 --- a/third_party/abseil-cpp/absl/hash/BUILD.gn +++ b/third_party/abseil-cpp/absl/hash/BUILD.gn
@@ -85,7 +85,6 @@ deps = [ "//third_party/abseil-cpp/absl/base:config", "//third_party/abseil-cpp/absl/base:endian", - "//third_party/abseil-cpp/absl/numeric:bits", "//third_party/abseil-cpp/absl/numeric:int128", ] visibility = [ ":*" ]
diff --git a/third_party/abseil-cpp/absl/hash/CMakeLists.txt b/third_party/abseil-cpp/absl/hash/CMakeLists.txt index 15691254..0514c29 100644 --- a/third_party/abseil-cpp/absl/hash/CMakeLists.txt +++ b/third_party/abseil-cpp/absl/hash/CMakeLists.txt
@@ -140,7 +140,6 @@ COPTS ${ABSL_DEFAULT_COPTS} DEPS - absl::bits absl::config absl::endian absl::int128
diff --git a/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc b/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc index e05e788..c917457a 100644 --- a/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +++ b/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc
@@ -15,7 +15,6 @@ #include "absl/hash/internal/low_level_hash.h" #include "absl/base/internal/unaligned_access.h" -#include "absl/numeric/bits.h" #include "absl/numeric/int128.h" namespace absl { @@ -23,20 +22,9 @@ namespace hash_internal { static uint64_t Mix(uint64_t v0, uint64_t v1) { -#if !defined(__aarch64__) - // The default bit-mixer uses 64x64->128-bit multiplication. absl::uint128 p = v0; p *= v1; return absl::Uint128Low64(p) ^ absl::Uint128High64(p); -#else - // The default bit-mixer above would perform poorly on some ARM microarchs, - // where calculating a 128-bit product requires a sequence of two - // instructions with a high combined latency and poor throughput. - // Instead, we mix bits using only 64-bit arithmetic, which is faster. - uint64_t p = v0 ^ absl::rotl(v1, 40); - p *= v1 ^ absl::rotl(v0, 39); - return p ^ (p >> 11); -#endif } uint64_t LowLevelHash(const void* data, size_t len, uint64_t seed,
diff --git a/third_party/abseil-cpp/absl/hash/internal/low_level_hash_test.cc b/third_party/abseil-cpp/absl/hash/internal/low_level_hash_test.cc index ae930b3..589a3d8 100644 --- a/third_party/abseil-cpp/absl/hash/internal/low_level_hash_test.cc +++ b/third_party/abseil-cpp/absl/hash/internal/low_level_hash_test.cc
@@ -452,54 +452,6 @@ 0xdd497891465a2cc1, 0x6f1fe8c57a33072e, 0x2c9f4ec078c460c0, 0x9a725bde8f6a1437, 0x6ce545fa3ef61e4d, }; -#elif defined(__aarch64__) - constexpr uint64_t kGolden[kNumGoldenOutputs] = { - 0x45c0aadee165dcbe, 0x25ed8587f6f20d06, 0x5f23ae668ce7926d, - 0xfef74d1da0846719, 0x54478408e68cb7d4, 0xee27ddaf88c6fe68, - 0xb7ac7031e81867ca, 0xf1168f818ec6c36d, 0x1dd0b734a83b019a, - 0xd6ae30d4142b54fe, 0xcd860c721ccb80fb, 0x068acf8493794756, - 0xd4ada0be58681307, 0x13ffe0f64ca540ed, 0xffc1d7a3401aec02, - 0xd81c4d865cf95fb9, 0x1dd0793acede62e0, 0xa6722abbca8fe4cf, - 0x5453d3e4111a7e40, 0xf29b3e3204c9dcd2, 0x23be2980e43117f7, - 0x74e2ccbc286f08eb, 0x19ef7c0f9496003a, 0xbfbf1c3e49b27987, - 0x6e6c179eb4a82c70, 0x07f4e184216bc4fc, 0xf17fbc4254927554, - 0xe57696b70a45b1b6, 0x6d3b144631b320e8, 0xccf8729792c75a2d, - 0xe832495b41fa980b, 0x5c96cfdc7b227d34, 0xc4dca234ef4e43f4, - 0x5fc801abf9abe307, 0xe41e3c5076d88f4d, 0x522346200ddec3c3, - 0x72bed1946fd7aaa4, 0x0ac1f84dcc335f96, 0x3af78db5e0a47670, - 0x6100ebf1481f1caf, 0xf5fd10037fc651a3, 0xa01227d8944665f3, - 0x7217681c4bbc9420, 0x4adee538e3eb10d1, 0x35e1761ad96de9a7, - 0x8b370aef9613bfba, 0x824506f749eeaf59, 0x85e805fa04423991, - 0xb61e9c33283c3de7, 0xc79721bbcb039ed6, 0x04e1c19a3a1e6639, - 0x6aaf6346b68dd638, 0x601a4b496be6d0c4, 0x3ece355f91c41787, - 0xd2fc8998448d7888, 0xd7529804f843efa9, 0xabdcc38a288536aa, - 0xdd323e48a9718648, 0x2090279c0030a52a, 0xe2f90faca88a3cd1, - 0x3e0c4e92fc50e4aa, 0xa26d308798e801dd, 0x432eefeedee8c02e, - 0xca4ce494614b77df, 0xbba82911e838066d, 0x4b00821016adee4b, - 0x4cf6e526dfb5a20f, 0x5b8466495142cba2, 0xe28ac1406e88a68c, - 0x8511e5f9d3100999, 0x05acbfe02798890b, 0x74c249c7ce4a8425, - 0xdbe7468d09bc34bc, 0x11079ab10e3b9b58, 0xb7788dec9032035a, - 0xb7e8daa786513f80, 0x34c3288831f46b45, 0x014cce5f0c21ecc6, - 0xc6a8f7b024551a28, 0x49784e902e207fd8, 0x4720d32af0b55158, - 0x8df3ec5de0c1da00, 0xf4db677b2c9e6853, 0xaa419abea78d312d, - 0x181e0f91bd757443, 0xa8c45136fada083b, 0x91303b93f5f0582c, - 0x883b95c6ddc62a08, 0x93186a8875fe952b, 0xd94f533928e957e2, - 0x6ba343003e10c172, 0xc8623b620c715d6a, 0x8ca0c512e180e244, - 0xdc9b74c2536b6216, 0x8eb5fdc61b295d96, 0x2ad83966b37c95ba, - 0xb90bf154ac5edec9, 0x902cf847b326cfb3, 0x7b02d0c0ca7808ca, - 0x492f310d003ea15f, 0x3eb6497a47c95990, 0x5d46b0ced31428b7, - 0x081afa67d1986157, 0x043482ec286b20eb, 0xc103c8f18c1a2a53, - 0xe8e9995a81481e83, 0x6bb3295822bc90b5, 0xeec75297a3fa5672, - 0x591c8440c4857412, 0x74947f455aaf24ad, 0xcf0e571586ec77a9, - 0x0c2553ea8c0400ad, 0x380219118066255f, 0x7595adb88b15ebe2, - 0xb33c00696c64ae23, 0xa143516ddd7c9857, 0x39179af229248d26, - 0x65d387a6f2ee2079, 0x89f8a9b21cd2f195, 0xbfef032d25df92e6, - 0x6b7e18a36c69da71, 0x4b3b15f6c28974e6, 0x032a75917f6c544c, - 0xe3b97ecca6d287cd, 0xa4a563110d3cda81, 0x35e09e8134f4e7f1, - 0xc9419dd03a9a390e, 0x7b86fae9000fd329, 0x1e044f8d54fe74c3, - 0x9c4991d7a47e9666, 0xfb485f3a1df4fdb6, 0xb11519969eeb94ff, - 0x3224ea1c44caeb8d, 0x86570bbd7cc6b80d, - }; #else constexpr uint64_t kGolden[kNumGoldenOutputs] = { 0xe5a40d39ab796423, 0x1766974bf7527d81, 0x5c3bbbe230db17a8,
diff --git a/third_party/abseil-cpp/absl/log/BUILD.bazel b/third_party/abseil-cpp/absl/log/BUILD.bazel index a420f21a..1091644 100644 --- a/third_party/abseil-cpp/absl/log/BUILD.bazel +++ b/third_party/abseil-cpp/absl/log/BUILD.bazel
@@ -294,6 +294,7 @@ "//absl/base:config", "//absl/base:core_headers", "//absl/log/internal:test_helpers", + "//absl/status", "@com_google_googletest//:gtest", ], )
diff --git a/third_party/abseil-cpp/absl/log/BUILD.gn b/third_party/abseil-cpp/absl/log/BUILD.gn index c2848ebc..6500e1a 100644 --- a/third_party/abseil-cpp/absl/log/BUILD.gn +++ b/third_party/abseil-cpp/absl/log/BUILD.gn
@@ -191,6 +191,7 @@ "//third_party/abseil-cpp/absl/base:config", "//third_party/abseil-cpp/absl/base:core_headers", "//third_party/abseil-cpp/absl/log/internal:test_helpers", + "//third_party/abseil-cpp/absl/status", "//third_party/googletest:gmock", "//third_party/googletest:gtest", ]
diff --git a/third_party/abseil-cpp/absl/log/CMakeLists.txt b/third_party/abseil-cpp/absl/log/CMakeLists.txt index 36a60da3..de2eaf39 100644 --- a/third_party/abseil-cpp/absl/log/CMakeLists.txt +++ b/third_party/abseil-cpp/absl/log/CMakeLists.txt
@@ -686,6 +686,7 @@ absl::config absl::core_headers absl::log_internal_test_helpers + absl::status GTest::gmock GTest::gtest_main ) @@ -729,6 +730,7 @@ absl::config absl::core_headers absl::log_internal_test_helpers + absl::status GTest::gmock GTest::gtest_main )
diff --git a/third_party/abseil-cpp/absl/log/absl_check.h b/third_party/abseil-cpp/absl/log/absl_check.h index b8428bf7..14a2307 100644 --- a/third_party/abseil-cpp/absl/log/absl_check.h +++ b/third_party/abseil-cpp/absl/log/absl_check.h
@@ -37,45 +37,69 @@ #include "absl/log/internal/check_impl.h" -#define ABSL_CHECK(condition) ABSL_CHECK_IMPL(condition) -#define ABSL_QCHECK(condition) ABSL_QCHECK_IMPL(condition) -#define ABSL_PCHECK(condition) ABSL_PCHECK_IMPL(condition) -#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL(condition) +#define ABSL_CHECK(condition) ABSL_CHECK_IMPL((condition), #condition) +#define ABSL_QCHECK(condition) ABSL_QCHECK_IMPL((condition), #condition) +#define ABSL_PCHECK(condition) ABSL_PCHECK_IMPL((condition), #condition) +#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition) -#define ABSL_CHECK_EQ(val1, val2) ABSL_CHECK_EQ_IMPL(val1, val2) -#define ABSL_CHECK_NE(val1, val2) ABSL_CHECK_NE_IMPL(val1, val2) -#define ABSL_CHECK_LE(val1, val2) ABSL_CHECK_LE_IMPL(val1, val2) -#define ABSL_CHECK_LT(val1, val2) ABSL_CHECK_LT_IMPL(val1, val2) -#define ABSL_CHECK_GE(val1, val2) ABSL_CHECK_GE_IMPL(val1, val2) -#define ABSL_CHECK_GT(val1, val2) ABSL_CHECK_GT_IMPL(val1, val2) -#define ABSL_QCHECK_EQ(val1, val2) ABSL_QCHECK_EQ_IMPL(val1, val2) -#define ABSL_QCHECK_NE(val1, val2) ABSL_QCHECK_NE_IMPL(val1, val2) -#define ABSL_QCHECK_LE(val1, val2) ABSL_QCHECK_LE_IMPL(val1, val2) -#define ABSL_QCHECK_LT(val1, val2) ABSL_QCHECK_LT_IMPL(val1, val2) -#define ABSL_QCHECK_GE(val1, val2) ABSL_QCHECK_GE_IMPL(val1, val2) -#define ABSL_QCHECK_GT(val1, val2) ABSL_QCHECK_GT_IMPL(val1, val2) -#define ABSL_DCHECK_EQ(val1, val2) ABSL_DCHECK_EQ_IMPL(val1, val2) -#define ABSL_DCHECK_NE(val1, val2) ABSL_DCHECK_NE_IMPL(val1, val2) -#define ABSL_DCHECK_LE(val1, val2) ABSL_DCHECK_LE_IMPL(val1, val2) -#define ABSL_DCHECK_LT(val1, val2) ABSL_DCHECK_LT_IMPL(val1, val2) -#define ABSL_DCHECK_GE(val1, val2) ABSL_DCHECK_GE_IMPL(val1, val2) -#define ABSL_DCHECK_GT(val1, val2) ABSL_DCHECK_GT_IMPL(val1, val2) +#define ABSL_CHECK_EQ(val1, val2) \ + ABSL_CHECK_EQ_IMPL((val1), #val1, (val2), #val2) +#define ABSL_CHECK_NE(val1, val2) \ + ABSL_CHECK_NE_IMPL((val1), #val1, (val2), #val2) +#define ABSL_CHECK_LE(val1, val2) \ + ABSL_CHECK_LE_IMPL((val1), #val1, (val2), #val2) +#define ABSL_CHECK_LT(val1, val2) \ + ABSL_CHECK_LT_IMPL((val1), #val1, (val2), #val2) +#define ABSL_CHECK_GE(val1, val2) \ + ABSL_CHECK_GE_IMPL((val1), #val1, (val2), #val2) +#define ABSL_CHECK_GT(val1, val2) \ + ABSL_CHECK_GT_IMPL((val1), #val1, (val2), #val2) +#define ABSL_QCHECK_EQ(val1, val2) \ + ABSL_QCHECK_EQ_IMPL((val1), #val1, (val2), #val2) +#define ABSL_QCHECK_NE(val1, val2) \ + ABSL_QCHECK_NE_IMPL((val1), #val1, (val2), #val2) +#define ABSL_QCHECK_LE(val1, val2) \ + ABSL_QCHECK_LE_IMPL((val1), #val1, (val2), #val2) +#define ABSL_QCHECK_LT(val1, val2) \ + ABSL_QCHECK_LT_IMPL((val1), #val1, (val2), #val2) +#define ABSL_QCHECK_GE(val1, val2) \ + ABSL_QCHECK_GE_IMPL((val1), #val1, (val2), #val2) +#define ABSL_QCHECK_GT(val1, val2) \ + ABSL_QCHECK_GT_IMPL((val1), #val1, (val2), #val2) +#define ABSL_DCHECK_EQ(val1, val2) \ + ABSL_DCHECK_EQ_IMPL((val1), #val1, (val2), #val2) +#define ABSL_DCHECK_NE(val1, val2) \ + ABSL_DCHECK_NE_IMPL((val1), #val1, (val2), #val2) +#define ABSL_DCHECK_LE(val1, val2) \ + ABSL_DCHECK_LE_IMPL((val1), #val1, (val2), #val2) +#define ABSL_DCHECK_LT(val1, val2) \ + ABSL_DCHECK_LT_IMPL((val1), #val1, (val2), #val2) +#define ABSL_DCHECK_GE(val1, val2) \ + ABSL_DCHECK_GE_IMPL((val1), #val1, (val2), #val2) +#define ABSL_DCHECK_GT(val1, val2) \ + ABSL_DCHECK_GT_IMPL((val1), #val1, (val2), #val2) -#define ABSL_CHECK_OK(status) ABSL_CHECK_OK_IMPL(status) -#define ABSL_QCHECK_OK(status) ABSL_QCHECK_OK_IMPL(status) -#define ABSL_DCHECK_OK(status) ABSL_DCHECK_OK_IMPL(status) +#define ABSL_CHECK_OK(status) ABSL_CHECK_OK_IMPL((status), #status) +#define ABSL_QCHECK_OK(status) ABSL_QCHECK_OK_IMPL((status), #status) +#define ABSL_DCHECK_OK(status) ABSL_DCHECK_OK_IMPL((status), #status) -#define ABSL_CHECK_STREQ(s1, s2) ABSL_CHECK_STREQ_IMPL(s1, s2) -#define ABSL_CHECK_STRNE(s1, s2) ABSL_CHECK_STRNE_IMPL(s1, s2) -#define ABSL_CHECK_STRCASEEQ(s1, s2) ABSL_CHECK_STRCASEEQ_IMPL(s1, s2) -#define ABSL_CHECK_STRCASENE(s1, s2) ABSL_CHECK_STRCASENE_IMPL(s1, s2) -#define ABSL_QCHECK_STREQ(s1, s2) ABSL_QCHECK_STREQ_IMPL(s1, s2) -#define ABSL_QCHECK_STRNE(s1, s2) ABSL_QCHECK_STRNE_IMPL(s1, s2) -#define ABSL_QCHECK_STRCASEEQ(s1, s2) ABSL_QCHECK_STRCASEEQ_IMPL(s1, s2) -#define ABSL_QCHECK_STRCASENE(s1, s2) ABSL_QCHECK_STRCASENE_IMPL(s1, s2) -#define ABSL_DCHECK_STREQ(s1, s2) ABSL_DCHECK_STREQ_IMPL(s1, s2) -#define ABSL_DCHECK_STRNE(s1, s2) ABSL_DCHECK_STRNE_IMPL(s1, s2) -#define ABSL_DCHECK_STRCASEEQ(s1, s2) ABSL_DCHECK_STRCASEEQ_IMPL(s1, s2) -#define ABSL_DCHECK_STRCASENE(s1, s2) ABSL_DCHECK_STRCASENE_IMPL(s1, s2) +#define ABSL_CHECK_STREQ(s1, s2) ABSL_CHECK_STREQ_IMPL((s1), #s1, (s2), #s2) +#define ABSL_CHECK_STRNE(s1, s2) ABSL_CHECK_STRNE_IMPL((s1), #s1, (s2), #s2) +#define ABSL_CHECK_STRCASEEQ(s1, s2) \ + ABSL_CHECK_STRCASEEQ_IMPL((s1), #s1, (s2), #s2) +#define ABSL_CHECK_STRCASENE(s1, s2) \ + ABSL_CHECK_STRCASENE_IMPL((s1), #s1, (s2), #s2) +#define ABSL_QCHECK_STREQ(s1, s2) ABSL_QCHECK_STREQ_IMPL((s1), #s1, (s2), #s2) +#define ABSL_QCHECK_STRNE(s1, s2) ABSL_QCHECK_STRNE_IMPL((s1), #s1, (s2), #s2) +#define ABSL_QCHECK_STRCASEEQ(s1, s2) \ + ABSL_QCHECK_STRCASEEQ_IMPL((s1), #s1, (s2), #s2) +#define ABSL_QCHECK_STRCASENE(s1, s2) \ + ABSL_QCHECK_STRCASENE_IMPL((s1), #s1, (s2), #s2) +#define ABSL_DCHECK_STREQ(s1, s2) ABSL_DCHECK_STREQ_IMPL((s1), #s1, (s2), #s2) +#define ABSL_DCHECK_STRNE(s1, s2) ABSL_DCHECK_STRNE_IMPL((s1), #s1, (s2), #s2) +#define ABSL_DCHECK_STRCASEEQ(s1, s2) \ + ABSL_DCHECK_STRCASEEQ_IMPL((s1), #s1, (s2), #s2) +#define ABSL_DCHECK_STRCASENE(s1, s2) \ + ABSL_DCHECK_STRCASENE_IMPL((s1), #s1, (s2), #s2) #endif // ABSL_LOG_ABSL_CHECK_H_
diff --git a/third_party/abseil-cpp/absl/log/absl_check_test.cc b/third_party/abseil-cpp/absl/log/absl_check_test.cc index 2c4853d..8ddacdb1 100644 --- a/third_party/abseil-cpp/absl/log/absl_check_test.cc +++ b/third_party/abseil-cpp/absl/log/absl_check_test.cc
@@ -16,6 +16,7 @@ #include "absl/log/absl_check.h" #define ABSL_TEST_CHECK ABSL_CHECK +#define ABSL_TEST_CHECK_OK ABSL_CHECK_OK #define ABSL_TEST_CHECK_EQ ABSL_CHECK_EQ #define ABSL_TEST_CHECK_NE ABSL_CHECK_NE #define ABSL_TEST_CHECK_GE ABSL_CHECK_GE @@ -28,6 +29,7 @@ #define ABSL_TEST_CHECK_STRCASENE ABSL_CHECK_STRCASENE #define ABSL_TEST_DCHECK ABSL_DCHECK +#define ABSL_TEST_DCHECK_OK ABSL_DCHECK_OK #define ABSL_TEST_DCHECK_EQ ABSL_DCHECK_EQ #define ABSL_TEST_DCHECK_NE ABSL_DCHECK_NE #define ABSL_TEST_DCHECK_GE ABSL_DCHECK_GE @@ -40,6 +42,7 @@ #define ABSL_TEST_DCHECK_STRCASENE ABSL_DCHECK_STRCASENE #define ABSL_TEST_QCHECK ABSL_QCHECK +#define ABSL_TEST_QCHECK_OK ABSL_QCHECK_OK #define ABSL_TEST_QCHECK_EQ ABSL_QCHECK_EQ #define ABSL_TEST_QCHECK_NE ABSL_QCHECK_NE #define ABSL_TEST_QCHECK_GE ABSL_QCHECK_GE
diff --git a/third_party/abseil-cpp/absl/log/check.h b/third_party/abseil-cpp/absl/log/check.h index 172436a6..33145a57 100644 --- a/third_party/abseil-cpp/absl/log/check.h +++ b/third_party/abseil-cpp/absl/log/check.h
@@ -54,7 +54,7 @@ // Might produce a message like: // // Check failed: !cheese.empty() Out of Cheese -#define CHECK(condition) ABSL_CHECK_IMPL(condition) +#define CHECK(condition) ABSL_CHECK_IMPL((condition), #condition) // QCHECK() // @@ -62,7 +62,7 @@ // not run registered error handlers (as `QFATAL`). It is useful when the // problem is definitely unrelated to program flow, e.g. when validating user // input. -#define QCHECK(condition) ABSL_QCHECK_IMPL(condition) +#define QCHECK(condition) ABSL_QCHECK_IMPL((condition), #condition) // PCHECK() // @@ -77,7 +77,7 @@ // Might produce a message like: // // Check failed: fd != -1 posix is difficult: No such file or directory [2] -#define PCHECK(condition) ABSL_PCHECK_IMPL(condition) +#define PCHECK(condition) ABSL_PCHECK_IMPL((condition), #condition) // DCHECK() // @@ -85,7 +85,7 @@ // `DLOG`). Unlike with `CHECK` (but as with `assert`), it is not safe to rely // on evaluation of `condition`: when `NDEBUG` is enabled, DCHECK does not // evaluate the condition. -#define DCHECK(condition) ABSL_DCHECK_IMPL(condition) +#define DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition) // `CHECK_EQ` and friends are syntactic sugar for `CHECK(x == y)` that // automatically output the expression being tested and the evaluated values on @@ -113,24 +113,24 @@ // // WARNING: Passing `NULL` as an argument to `CHECK_EQ` and similar macros does // not compile. Use `nullptr` instead. -#define CHECK_EQ(val1, val2) ABSL_CHECK_EQ_IMPL(val1, val2) -#define CHECK_NE(val1, val2) ABSL_CHECK_NE_IMPL(val1, val2) -#define CHECK_LE(val1, val2) ABSL_CHECK_LE_IMPL(val1, val2) -#define CHECK_LT(val1, val2) ABSL_CHECK_LT_IMPL(val1, val2) -#define CHECK_GE(val1, val2) ABSL_CHECK_GE_IMPL(val1, val2) -#define CHECK_GT(val1, val2) ABSL_CHECK_GT_IMPL(val1, val2) -#define QCHECK_EQ(val1, val2) ABSL_QCHECK_EQ_IMPL(val1, val2) -#define QCHECK_NE(val1, val2) ABSL_QCHECK_NE_IMPL(val1, val2) -#define QCHECK_LE(val1, val2) ABSL_QCHECK_LE_IMPL(val1, val2) -#define QCHECK_LT(val1, val2) ABSL_QCHECK_LT_IMPL(val1, val2) -#define QCHECK_GE(val1, val2) ABSL_QCHECK_GE_IMPL(val1, val2) -#define QCHECK_GT(val1, val2) ABSL_QCHECK_GT_IMPL(val1, val2) -#define DCHECK_EQ(val1, val2) ABSL_DCHECK_EQ_IMPL(val1, val2) -#define DCHECK_NE(val1, val2) ABSL_DCHECK_NE_IMPL(val1, val2) -#define DCHECK_LE(val1, val2) ABSL_DCHECK_LE_IMPL(val1, val2) -#define DCHECK_LT(val1, val2) ABSL_DCHECK_LT_IMPL(val1, val2) -#define DCHECK_GE(val1, val2) ABSL_DCHECK_GE_IMPL(val1, val2) -#define DCHECK_GT(val1, val2) ABSL_DCHECK_GT_IMPL(val1, val2) +#define CHECK_EQ(val1, val2) ABSL_CHECK_EQ_IMPL((val1), #val1, (val2), #val2) +#define CHECK_NE(val1, val2) ABSL_CHECK_NE_IMPL((val1), #val1, (val2), #val2) +#define CHECK_LE(val1, val2) ABSL_CHECK_LE_IMPL((val1), #val1, (val2), #val2) +#define CHECK_LT(val1, val2) ABSL_CHECK_LT_IMPL((val1), #val1, (val2), #val2) +#define CHECK_GE(val1, val2) ABSL_CHECK_GE_IMPL((val1), #val1, (val2), #val2) +#define CHECK_GT(val1, val2) ABSL_CHECK_GT_IMPL((val1), #val1, (val2), #val2) +#define QCHECK_EQ(val1, val2) ABSL_QCHECK_EQ_IMPL((val1), #val1, (val2), #val2) +#define QCHECK_NE(val1, val2) ABSL_QCHECK_NE_IMPL((val1), #val1, (val2), #val2) +#define QCHECK_LE(val1, val2) ABSL_QCHECK_LE_IMPL((val1), #val1, (val2), #val2) +#define QCHECK_LT(val1, val2) ABSL_QCHECK_LT_IMPL((val1), #val1, (val2), #val2) +#define QCHECK_GE(val1, val2) ABSL_QCHECK_GE_IMPL((val1), #val1, (val2), #val2) +#define QCHECK_GT(val1, val2) ABSL_QCHECK_GT_IMPL((val1), #val1, (val2), #val2) +#define DCHECK_EQ(val1, val2) ABSL_DCHECK_EQ_IMPL((val1), #val1, (val2), #val2) +#define DCHECK_NE(val1, val2) ABSL_DCHECK_NE_IMPL((val1), #val1, (val2), #val2) +#define DCHECK_LE(val1, val2) ABSL_DCHECK_LE_IMPL((val1), #val1, (val2), #val2) +#define DCHECK_LT(val1, val2) ABSL_DCHECK_LT_IMPL((val1), #val1, (val2), #val2) +#define DCHECK_GE(val1, val2) ABSL_DCHECK_GE_IMPL((val1), #val1, (val2), #val2) +#define DCHECK_GT(val1, val2) ABSL_DCHECK_GT_IMPL((val1), #val1, (val2), #val2) // `CHECK_OK` and friends validate that the provided `absl::Status` or // `absl::StatusOr<T>` is OK. If it isn't, they print a failure message that @@ -146,9 +146,9 @@ // Might produce a message like: // // Check failed: FunctionReturnsStatus(x, y, z) is OK (ABORTED: timeout) oops! -#define CHECK_OK(status) ABSL_CHECK_OK_IMPL(status) -#define QCHECK_OK(status) ABSL_QCHECK_OK_IMPL(status) -#define DCHECK_OK(status) ABSL_DCHECK_OK_IMPL(status) +#define CHECK_OK(status) ABSL_CHECK_OK_IMPL((status), #status) +#define QCHECK_OK(status) ABSL_QCHECK_OK_IMPL((status), #status) +#define DCHECK_OK(status) ABSL_DCHECK_OK_IMPL((status), #status) // `CHECK_STREQ` and friends provide `CHECK_EQ` functionality for C strings, // i.e., nul-terminated char arrays. The `CASE` versions are case-insensitive. @@ -163,17 +163,21 @@ // Example: // // CHECK_STREQ(Foo().c_str(), Bar().c_str()); -#define CHECK_STREQ(s1, s2) ABSL_CHECK_STREQ_IMPL(s1, s2) -#define CHECK_STRNE(s1, s2) ABSL_CHECK_STRNE_IMPL(s1, s2) -#define CHECK_STRCASEEQ(s1, s2) ABSL_CHECK_STRCASEEQ_IMPL(s1, s2) -#define CHECK_STRCASENE(s1, s2) ABSL_CHECK_STRCASENE_IMPL(s1, s2) -#define QCHECK_STREQ(s1, s2) ABSL_QCHECK_STREQ_IMPL(s1, s2) -#define QCHECK_STRNE(s1, s2) ABSL_QCHECK_STRNE_IMPL(s1, s2) -#define QCHECK_STRCASEEQ(s1, s2) ABSL_QCHECK_STRCASEEQ_IMPL(s1, s2) -#define QCHECK_STRCASENE(s1, s2) ABSL_QCHECK_STRCASENE_IMPL(s1, s2) -#define DCHECK_STREQ(s1, s2) ABSL_DCHECK_STREQ_IMPL(s1, s2) -#define DCHECK_STRNE(s1, s2) ABSL_DCHECK_STRNE_IMPL(s1, s2) -#define DCHECK_STRCASEEQ(s1, s2) ABSL_DCHECK_STRCASEEQ_IMPL(s1, s2) -#define DCHECK_STRCASENE(s1, s2) ABSL_DCHECK_STRCASENE_IMPL(s1, s2) +#define CHECK_STREQ(s1, s2) ABSL_CHECK_STREQ_IMPL((s1), #s1, (s2), #s2) +#define CHECK_STRNE(s1, s2) ABSL_CHECK_STRNE_IMPL((s1), #s1, (s2), #s2) +#define CHECK_STRCASEEQ(s1, s2) ABSL_CHECK_STRCASEEQ_IMPL((s1), #s1, (s2), #s2) +#define CHECK_STRCASENE(s1, s2) ABSL_CHECK_STRCASENE_IMPL((s1), #s1, (s2), #s2) +#define QCHECK_STREQ(s1, s2) ABSL_QCHECK_STREQ_IMPL((s1), #s1, (s2), #s2) +#define QCHECK_STRNE(s1, s2) ABSL_QCHECK_STRNE_IMPL((s1), #s1, (s2), #s2) +#define QCHECK_STRCASEEQ(s1, s2) \ + ABSL_QCHECK_STRCASEEQ_IMPL((s1), #s1, (s2), #s2) +#define QCHECK_STRCASENE(s1, s2) \ + ABSL_QCHECK_STRCASENE_IMPL((s1), #s1, (s2), #s2) +#define DCHECK_STREQ(s1, s2) ABSL_DCHECK_STREQ_IMPL((s1), #s1, (s2), #s2) +#define DCHECK_STRNE(s1, s2) ABSL_DCHECK_STRNE_IMPL((s1), #s1, (s2), #s2) +#define DCHECK_STRCASEEQ(s1, s2) \ + ABSL_DCHECK_STRCASEEQ_IMPL((s1), #s1, (s2), #s2) +#define DCHECK_STRCASENE(s1, s2) \ + ABSL_DCHECK_STRCASENE_IMPL((s1), #s1, (s2), #s2) #endif // ABSL_LOG_CHECK_H_
diff --git a/third_party/abseil-cpp/absl/log/check_test.cc b/third_party/abseil-cpp/absl/log/check_test.cc index a03183a..f44a686e 100644 --- a/third_party/abseil-cpp/absl/log/check_test.cc +++ b/third_party/abseil-cpp/absl/log/check_test.cc
@@ -16,6 +16,7 @@ #include "absl/log/check.h" #define ABSL_TEST_CHECK CHECK +#define ABSL_TEST_CHECK_OK CHECK_OK #define ABSL_TEST_CHECK_EQ CHECK_EQ #define ABSL_TEST_CHECK_NE CHECK_NE #define ABSL_TEST_CHECK_GE CHECK_GE @@ -28,6 +29,7 @@ #define ABSL_TEST_CHECK_STRCASENE CHECK_STRCASENE #define ABSL_TEST_DCHECK DCHECK +#define ABSL_TEST_DCHECK_OK DCHECK_OK #define ABSL_TEST_DCHECK_EQ DCHECK_EQ #define ABSL_TEST_DCHECK_NE DCHECK_NE #define ABSL_TEST_DCHECK_GE DCHECK_GE @@ -40,6 +42,7 @@ #define ABSL_TEST_DCHECK_STRCASENE DCHECK_STRCASENE #define ABSL_TEST_QCHECK QCHECK +#define ABSL_TEST_QCHECK_OK QCHECK_OK #define ABSL_TEST_QCHECK_EQ QCHECK_EQ #define ABSL_TEST_QCHECK_NE QCHECK_NE #define ABSL_TEST_QCHECK_GE QCHECK_GE
diff --git a/third_party/abseil-cpp/absl/log/check_test_impl.h b/third_party/abseil-cpp/absl/log/check_test_impl.h index bcf5711f..d5c0aee4 100644 --- a/third_party/abseil-cpp/absl/log/check_test_impl.h +++ b/third_party/abseil-cpp/absl/log/check_test_impl.h
@@ -30,6 +30,9 @@ #include "absl/base/attributes.h" #include "absl/base/config.h" #include "absl/log/internal/test_helpers.h" +#include "absl/status/status.h" + +// NOLINTBEGIN(misc-definitions-in-headers) namespace absl_log_internal { @@ -118,6 +121,80 @@ #endif // GTEST_HAS_DEATH_TEST +template <int a, int b> +constexpr int sum() { + return a + b; +} +#define MACRO_ONE 1 +#define TEMPLATE_SUM(a, b) sum<a, b>() +#define CONCAT(a, b) a b +#define IDENTITY(x) x + +TEST(CHECKTest, TestPassingMacroExpansion) { + ABSL_TEST_CHECK(IDENTITY(true)); + ABSL_TEST_CHECK_EQ(TEMPLATE_SUM(MACRO_ONE, 2), 3); + ABSL_TEST_CHECK_STREQ(CONCAT("x", "y"), "xy"); +} + +#if GTEST_HAS_DEATH_TEST + +TEST(CHECKTest, TestMacroExpansionInMessage) { + auto MessageGen = []() { ABSL_TEST_CHECK(IDENTITY(false)); }; + EXPECT_DEATH(MessageGen(), HasSubstr("IDENTITY(false)")); +} + +TEST(CHECKTest, TestNestedMacroExpansionInMessage) { + EXPECT_DEATH(ABSL_TEST_CHECK(IDENTITY(false)), HasSubstr("IDENTITY(false)")); +} + +TEST(CHECKTest, TestMacroExpansionCompare) { + EXPECT_DEATH(ABSL_TEST_CHECK_EQ(IDENTITY(false), IDENTITY(true)), + HasSubstr("IDENTITY(false) == IDENTITY(true)")); + EXPECT_DEATH(ABSL_TEST_CHECK_GT(IDENTITY(1), IDENTITY(2)), + HasSubstr("IDENTITY(1) > IDENTITY(2)")); +} + +TEST(CHECKTest, TestMacroExpansionStrCompare) { + EXPECT_DEATH(ABSL_TEST_CHECK_STREQ(IDENTITY("x"), IDENTITY("y")), + HasSubstr("IDENTITY(\"x\") == IDENTITY(\"y\")")); + EXPECT_DEATH(ABSL_TEST_CHECK_STRCASENE(IDENTITY("a"), IDENTITY("A")), + HasSubstr("IDENTITY(\"a\") != IDENTITY(\"A\")")); +} + +TEST(CHECKTest, TestMacroExpansionStatus) { + EXPECT_DEATH( + ABSL_TEST_CHECK_OK(IDENTITY(absl::FailedPreconditionError("message"))), + HasSubstr("IDENTITY(absl::FailedPreconditionError(\"message\"))")); +} + +TEST(CHECKTest, TestMacroExpansionComma) { + EXPECT_DEATH(ABSL_TEST_CHECK(TEMPLATE_SUM(MACRO_ONE, 2) == 4), + HasSubstr("TEMPLATE_SUM(MACRO_ONE, 2) == 4")); +} + +TEST(CHECKTest, TestMacroExpansionCommaCompare) { + EXPECT_DEATH( + ABSL_TEST_CHECK_EQ(TEMPLATE_SUM(2, MACRO_ONE), TEMPLATE_SUM(3, 2)), + HasSubstr("TEMPLATE_SUM(2, MACRO_ONE) == TEMPLATE_SUM(3, 2)")); + EXPECT_DEATH( + ABSL_TEST_CHECK_GT(TEMPLATE_SUM(2, MACRO_ONE), TEMPLATE_SUM(3, 2)), + HasSubstr("TEMPLATE_SUM(2, MACRO_ONE) > TEMPLATE_SUM(3, 2)")); +} + +TEST(CHECKTest, TestMacroExpansionCommaStrCompare) { + EXPECT_DEATH(ABSL_TEST_CHECK_STREQ(CONCAT("x", "y"), "z"), + HasSubstr("CONCAT(\"x\", \"y\") == \"z\"")); + EXPECT_DEATH(ABSL_TEST_CHECK_STRNE(CONCAT("x", "y"), "xy"), + HasSubstr("CONCAT(\"x\", \"y\") != \"xy\"")); +} + +#endif // GTEST_HAS_DEATH_TEST + +#undef TEMPLATE_SUM +#undef CONCAT +#undef MACRO +#undef ONE + #if GTEST_HAS_DEATH_TEST TEST(CHECKDeachTest, TestOrderOfInvocationsBetweenCheckAndMessage) { @@ -446,4 +523,6 @@ } // namespace absl_log_internal +// NOLINTEND(misc-definitions-in-headers) + #endif // ABSL_LOG_CHECK_TEST_IMPL_H_
diff --git a/third_party/abseil-cpp/absl/log/internal/BUILD.bazel b/third_party/abseil-cpp/absl/log/internal/BUILD.bazel index 1ad9a9d..0827688 100644 --- a/third_party/abseil-cpp/absl/log/internal/BUILD.bazel +++ b/third_party/abseil-cpp/absl/log/internal/BUILD.bazel
@@ -344,6 +344,8 @@ name = "proto", srcs = ["proto.cc"], hdrs = ["proto.h"], + copts = ABSL_DEFAULT_COPTS, + linkopts = ABSL_DEFAULT_LINKOPTS, deps = [ "//absl/base", "//absl/base:config",
diff --git a/third_party/abseil-cpp/absl/log/internal/check_impl.h b/third_party/abseil-cpp/absl/log/internal/check_impl.h index 301b2915..c9c28e3 100644 --- a/third_party/abseil-cpp/absl/log/internal/check_impl.h +++ b/third_party/abseil-cpp/absl/log/internal/check_impl.h
@@ -22,102 +22,129 @@ #include "absl/log/internal/strip.h" // CHECK -#define ABSL_CHECK_IMPL(condition) \ +#define ABSL_CHECK_IMPL(condition, condition_text) \ ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS, \ ABSL_PREDICT_FALSE(!(condition))) \ - ABSL_LOG_INTERNAL_CHECK(#condition).InternalStream() + ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream() -#define ABSL_QCHECK_IMPL(condition) \ +#define ABSL_QCHECK_IMPL(condition, condition_text) \ ABSL_LOG_INTERNAL_CONDITION_QFATAL(STATELESS, \ ABSL_PREDICT_FALSE(!(condition))) \ - ABSL_LOG_INTERNAL_QCHECK(#condition).InternalStream() + ABSL_LOG_INTERNAL_QCHECK(condition_text).InternalStream() -#define ABSL_PCHECK_IMPL(condition) ABSL_CHECK_IMPL(condition).WithPerror() +#define ABSL_PCHECK_IMPL(condition, condition_text) \ + ABSL_CHECK_IMPL(condition, condition_text).WithPerror() #ifndef NDEBUG -#define ABSL_DCHECK_IMPL(condition) ABSL_CHECK_IMPL(condition) +#define ABSL_DCHECK_IMPL(condition, condition_text) \ + ABSL_CHECK_IMPL(condition, condition_text) #else -#define ABSL_DCHECK_IMPL(condition) ABSL_CHECK_IMPL(true || (condition)) +#define ABSL_DCHECK_IMPL(condition, condition_text) \ + ABSL_CHECK_IMPL(true || (condition), "true") #endif // CHECK_EQ -#define ABSL_CHECK_EQ_IMPL(val1, val2) \ - ABSL_LOG_INTERNAL_CHECK_OP(Check_EQ, ==, val1, val2) -#define ABSL_CHECK_NE_IMPL(val1, val2) \ - ABSL_LOG_INTERNAL_CHECK_OP(Check_NE, !=, val1, val2) -#define ABSL_CHECK_LE_IMPL(val1, val2) \ - ABSL_LOG_INTERNAL_CHECK_OP(Check_LE, <=, val1, val2) -#define ABSL_CHECK_LT_IMPL(val1, val2) \ - ABSL_LOG_INTERNAL_CHECK_OP(Check_LT, <, val1, val2) -#define ABSL_CHECK_GE_IMPL(val1, val2) \ - ABSL_LOG_INTERNAL_CHECK_OP(Check_GE, >=, val1, val2) -#define ABSL_CHECK_GT_IMPL(val1, val2) \ - ABSL_LOG_INTERNAL_CHECK_OP(Check_GT, >, val1, val2) -#define ABSL_QCHECK_EQ_IMPL(val1, val2) \ - ABSL_LOG_INTERNAL_QCHECK_OP(Check_EQ, ==, val1, val2) -#define ABSL_QCHECK_NE_IMPL(val1, val2) \ - ABSL_LOG_INTERNAL_QCHECK_OP(Check_NE, !=, val1, val2) -#define ABSL_QCHECK_LE_IMPL(val1, val2) \ - ABSL_LOG_INTERNAL_QCHECK_OP(Check_LE, <=, val1, val2) -#define ABSL_QCHECK_LT_IMPL(val1, val2) \ - ABSL_LOG_INTERNAL_QCHECK_OP(Check_LT, <, val1, val2) -#define ABSL_QCHECK_GE_IMPL(val1, val2) \ - ABSL_LOG_INTERNAL_QCHECK_OP(Check_GE, >=, val1, val2) -#define ABSL_QCHECK_GT_IMPL(val1, val2) \ - ABSL_LOG_INTERNAL_QCHECK_OP(Check_GT, >, val1, val2) +#define ABSL_CHECK_EQ_IMPL(val1, val1_text, val2, val2_text) \ + ABSL_LOG_INTERNAL_CHECK_OP(Check_EQ, ==, val1, val1_text, val2, val2_text) +#define ABSL_CHECK_NE_IMPL(val1, val1_text, val2, val2_text) \ + ABSL_LOG_INTERNAL_CHECK_OP(Check_NE, !=, val1, val1_text, val2, val2_text) +#define ABSL_CHECK_LE_IMPL(val1, val1_text, val2, val2_text) \ + ABSL_LOG_INTERNAL_CHECK_OP(Check_LE, <=, val1, val1_text, val2, val2_text) +#define ABSL_CHECK_LT_IMPL(val1, val1_text, val2, val2_text) \ + ABSL_LOG_INTERNAL_CHECK_OP(Check_LT, <, val1, val1_text, val2, val2_text) +#define ABSL_CHECK_GE_IMPL(val1, val1_text, val2, val2_text) \ + ABSL_LOG_INTERNAL_CHECK_OP(Check_GE, >=, val1, val1_text, val2, val2_text) +#define ABSL_CHECK_GT_IMPL(val1, val1_text, val2, val2_text) \ + ABSL_LOG_INTERNAL_CHECK_OP(Check_GT, >, val1, val1_text, val2, val2_text) +#define ABSL_QCHECK_EQ_IMPL(val1, val1_text, val2, val2_text) \ + ABSL_LOG_INTERNAL_QCHECK_OP(Check_EQ, ==, val1, val1_text, val2, val2_text) +#define ABSL_QCHECK_NE_IMPL(val1, val1_text, val2, val2_text) \ + ABSL_LOG_INTERNAL_QCHECK_OP(Check_NE, !=, val1, val1_text, val2, val2_text) +#define ABSL_QCHECK_LE_IMPL(val1, val1_text, val2, val2_text) \ + ABSL_LOG_INTERNAL_QCHECK_OP(Check_LE, <=, val1, val1_text, val2, val2_text) +#define ABSL_QCHECK_LT_IMPL(val1, val1_text, val2, val2_text) \ + ABSL_LOG_INTERNAL_QCHECK_OP(Check_LT, <, val1, val1_text, val2, val2_text) +#define ABSL_QCHECK_GE_IMPL(val1, val1_text, val2, val2_text) \ + ABSL_LOG_INTERNAL_QCHECK_OP(Check_GE, >=, val1, val1_text, val2, val2_text) +#define ABSL_QCHECK_GT_IMPL(val1, val1_text, val2, val2_text) \ + ABSL_LOG_INTERNAL_QCHECK_OP(Check_GT, >, val1, val1_text, val2, val2_text) #ifndef NDEBUG -#define ABSL_DCHECK_EQ_IMPL(val1, val2) ABSL_CHECK_EQ_IMPL(val1, val2) -#define ABSL_DCHECK_NE_IMPL(val1, val2) ABSL_CHECK_NE_IMPL(val1, val2) -#define ABSL_DCHECK_LE_IMPL(val1, val2) ABSL_CHECK_LE_IMPL(val1, val2) -#define ABSL_DCHECK_LT_IMPL(val1, val2) ABSL_CHECK_LT_IMPL(val1, val2) -#define ABSL_DCHECK_GE_IMPL(val1, val2) ABSL_CHECK_GE_IMPL(val1, val2) -#define ABSL_DCHECK_GT_IMPL(val1, val2) ABSL_CHECK_GT_IMPL(val1, val2) +#define ABSL_DCHECK_EQ_IMPL(val1, val1_text, val2, val2_text) \ + ABSL_CHECK_EQ_IMPL(val1, val1_text, val2, val2_text) +#define ABSL_DCHECK_NE_IMPL(val1, val1_text, val2, val2_text) \ + ABSL_CHECK_NE_IMPL(val1, val1_text, val2, val2_text) +#define ABSL_DCHECK_LE_IMPL(val1, val1_text, val2, val2_text) \ + ABSL_CHECK_LE_IMPL(val1, val1_text, val2, val2_text) +#define ABSL_DCHECK_LT_IMPL(val1, val1_text, val2, val2_text) \ + ABSL_CHECK_LT_IMPL(val1, val1_text, val2, val2_text) +#define ABSL_DCHECK_GE_IMPL(val1, val1_text, val2, val2_text) \ + ABSL_CHECK_GE_IMPL(val1, val1_text, val2, val2_text) +#define ABSL_DCHECK_GT_IMPL(val1, val1_text, val2, val2_text) \ + ABSL_CHECK_GT_IMPL(val1, val1_text, val2, val2_text) #else // ndef NDEBUG -#define ABSL_DCHECK_EQ_IMPL(val1, val2) ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2) -#define ABSL_DCHECK_NE_IMPL(val1, val2) ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2) -#define ABSL_DCHECK_LE_IMPL(val1, val2) ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2) -#define ABSL_DCHECK_LT_IMPL(val1, val2) ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2) -#define ABSL_DCHECK_GE_IMPL(val1, val2) ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2) -#define ABSL_DCHECK_GT_IMPL(val1, val2) ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2) +#define ABSL_DCHECK_EQ_IMPL(val1, val1_text, val2, val2_text) \ + ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2) +#define ABSL_DCHECK_NE_IMPL(val1, val1_text, val2, val2_text) \ + ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2) +#define ABSL_DCHECK_LE_IMPL(val1, val1_text, val2, val2_text) \ + ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2) +#define ABSL_DCHECK_LT_IMPL(val1, val1_text, val2, val2_text) \ + ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2) +#define ABSL_DCHECK_GE_IMPL(val1, val1_text, val2, val2_text) \ + ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2) +#define ABSL_DCHECK_GT_IMPL(val1, val1_text, val2, val2_text) \ + ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2) #endif // def NDEBUG // CHECK_OK -#define ABSL_CHECK_OK_IMPL(status) ABSL_LOG_INTERNAL_CHECK_OK(status) -#define ABSL_QCHECK_OK_IMPL(status) ABSL_LOG_INTERNAL_QCHECK_OK(status) +#define ABSL_CHECK_OK_IMPL(status, status_text) \ + ABSL_LOG_INTERNAL_CHECK_OK(status, status_text) +#define ABSL_QCHECK_OK_IMPL(status, status_text) \ + ABSL_LOG_INTERNAL_QCHECK_OK(status, status_text) #ifndef NDEBUG -#define ABSL_DCHECK_OK_IMPL(status) ABSL_LOG_INTERNAL_CHECK_OK(status) +#define ABSL_DCHECK_OK_IMPL(status, status_text) \ + ABSL_LOG_INTERNAL_CHECK_OK(status, status_text) #else -#define ABSL_DCHECK_OK_IMPL(status) \ +#define ABSL_DCHECK_OK_IMPL(status, status_text) \ ABSL_LOG_INTERNAL_DCHECK_NOP(status, nullptr) #endif // CHECK_STREQ -#define ABSL_CHECK_STREQ_IMPL(s1, s2) \ - ABSL_LOG_INTERNAL_CHECK_STROP(strcmp, ==, true, s1, s2) -#define ABSL_CHECK_STRNE_IMPL(s1, s2) \ - ABSL_LOG_INTERNAL_CHECK_STROP(strcmp, !=, false, s1, s2) -#define ABSL_CHECK_STRCASEEQ_IMPL(s1, s2) \ - ABSL_LOG_INTERNAL_CHECK_STROP(strcasecmp, ==, true, s1, s2) -#define ABSL_CHECK_STRCASENE_IMPL(s1, s2) \ - ABSL_LOG_INTERNAL_CHECK_STROP(strcasecmp, !=, false, s1, s2) -#define ABSL_QCHECK_STREQ_IMPL(s1, s2) \ - ABSL_LOG_INTERNAL_QCHECK_STROP(strcmp, ==, true, s1, s2) -#define ABSL_QCHECK_STRNE_IMPL(s1, s2) \ - ABSL_LOG_INTERNAL_QCHECK_STROP(strcmp, !=, false, s1, s2) -#define ABSL_QCHECK_STRCASEEQ_IMPL(s1, s2) \ - ABSL_LOG_INTERNAL_QCHECK_STROP(strcasecmp, ==, true, s1, s2) -#define ABSL_QCHECK_STRCASENE_IMPL(s1, s2) \ - ABSL_LOG_INTERNAL_QCHECK_STROP(strcasecmp, !=, false, s1, s2) +#define ABSL_CHECK_STREQ_IMPL(s1, s1_text, s2, s2_text) \ + ABSL_LOG_INTERNAL_CHECK_STROP(strcmp, ==, true, s1, s1_text, s2, s2_text) +#define ABSL_CHECK_STRNE_IMPL(s1, s1_text, s2, s2_text) \ + ABSL_LOG_INTERNAL_CHECK_STROP(strcmp, !=, false, s1, s1_text, s2, s2_text) +#define ABSL_CHECK_STRCASEEQ_IMPL(s1, s1_text, s2, s2_text) \ + ABSL_LOG_INTERNAL_CHECK_STROP(strcasecmp, ==, true, s1, s1_text, s2, s2_text) +#define ABSL_CHECK_STRCASENE_IMPL(s1, s1_text, s2, s2_text) \ + ABSL_LOG_INTERNAL_CHECK_STROP(strcasecmp, !=, false, s1, s1_text, s2, s2_text) +#define ABSL_QCHECK_STREQ_IMPL(s1, s1_text, s2, s2_text) \ + ABSL_LOG_INTERNAL_QCHECK_STROP(strcmp, ==, true, s1, s1_text, s2, s2_text) +#define ABSL_QCHECK_STRNE_IMPL(s1, s1_text, s2, s2_text) \ + ABSL_LOG_INTERNAL_QCHECK_STROP(strcmp, !=, false, s1, s1_text, s2, s2_text) +#define ABSL_QCHECK_STRCASEEQ_IMPL(s1, s1_text, s2, s2_text) \ + ABSL_LOG_INTERNAL_QCHECK_STROP(strcasecmp, ==, true, s1, s1_text, s2, s2_text) +#define ABSL_QCHECK_STRCASENE_IMPL(s1, s1_text, s2, s2_text) \ + ABSL_LOG_INTERNAL_QCHECK_STROP(strcasecmp, !=, false, s1, s1_text, s2, \ + s2_text) #ifndef NDEBUG -#define ABSL_DCHECK_STREQ_IMPL(s1, s2) ABSL_CHECK_STREQ_IMPL(s1, s2) -#define ABSL_DCHECK_STRCASEEQ_IMPL(s1, s2) ABSL_CHECK_STRCASEEQ_IMPL(s1, s2) -#define ABSL_DCHECK_STRNE_IMPL(s1, s2) ABSL_CHECK_STRNE_IMPL(s1, s2) -#define ABSL_DCHECK_STRCASENE_IMPL(s1, s2) ABSL_CHECK_STRCASENE_IMPL(s1, s2) +#define ABSL_DCHECK_STREQ_IMPL(s1, s1_text, s2, s2_text) \ + ABSL_CHECK_STREQ_IMPL(s1, s1_text, s2, s2_text) +#define ABSL_DCHECK_STRCASEEQ_IMPL(s1, s1_text, s2, s2_text) \ + ABSL_CHECK_STRCASEEQ_IMPL(s1, s1_text, s2, s2_text) +#define ABSL_DCHECK_STRNE_IMPL(s1, s1_text, s2, s2_text) \ + ABSL_CHECK_STRNE_IMPL(s1, s1_text, s2, s2_text) +#define ABSL_DCHECK_STRCASENE_IMPL(s1, s1_text, s2, s2_text) \ + ABSL_CHECK_STRCASENE_IMPL(s1, s1_text, s2, s2_text) #else // ndef NDEBUG -#define ABSL_DCHECK_STREQ_IMPL(s1, s2) ABSL_LOG_INTERNAL_DCHECK_NOP(s1, s2) -#define ABSL_DCHECK_STRCASEEQ_IMPL(s1, s2) ABSL_LOG_INTERNAL_DCHECK_NOP(s1, s2) -#define ABSL_DCHECK_STRNE_IMPL(s1, s2) ABSL_LOG_INTERNAL_DCHECK_NOP(s1, s2) -#define ABSL_DCHECK_STRCASENE_IMPL(s1, s2) ABSL_LOG_INTERNAL_DCHECK_NOP(s1, s2) +#define ABSL_DCHECK_STREQ_IMPL(s1, s1_text, s2, s2_text) \ + ABSL_LOG_INTERNAL_DCHECK_NOP(s1, s2) +#define ABSL_DCHECK_STRCASEEQ_IMPL(s1, s1_text, s2, s2_text) \ + ABSL_LOG_INTERNAL_DCHECK_NOP(s1, s2) +#define ABSL_DCHECK_STRNE_IMPL(s1, s1_text, s2, s2_text) \ + ABSL_LOG_INTERNAL_DCHECK_NOP(s1, s2) +#define ABSL_DCHECK_STRCASENE_IMPL(s1, s1_text, s2, s2_text) \ + ABSL_LOG_INTERNAL_DCHECK_NOP(s1, s2) #endif // def NDEBUG #endif // ABSL_LOG_INTERNAL_CHECK_IMPL_H_
diff --git a/third_party/abseil-cpp/absl/log/internal/check_op.h b/third_party/abseil-cpp/absl/log/internal/check_op.h index 559e5afc..4907b89 100644 --- a/third_party/abseil-cpp/absl/log/internal/check_op.h +++ b/third_party/abseil-cpp/absl/log/internal/check_op.h
@@ -57,35 +57,40 @@ ::absl::log_internal::NullStream().InternalStream() #endif -#define ABSL_LOG_INTERNAL_CHECK_OP(name, op, val1, val2) \ +#define ABSL_LOG_INTERNAL_CHECK_OP(name, op, val1, val1_text, val2, val2_text) \ while ( \ ::std::string* absl_log_internal_check_op_result ABSL_ATTRIBUTE_UNUSED = \ ::absl::log_internal::name##Impl( \ ::absl::log_internal::GetReferenceableValue(val1), \ ::absl::log_internal::GetReferenceableValue(val2), \ - ABSL_LOG_INTERNAL_STRIP_STRING_LITERAL(#val1 " " #op \ - " " #val2))) \ + ABSL_LOG_INTERNAL_STRIP_STRING_LITERAL(val1_text \ + " " #op " " val2_text))) \ ABSL_LOG_INTERNAL_CHECK(*absl_log_internal_check_op_result).InternalStream() -#define ABSL_LOG_INTERNAL_QCHECK_OP(name, op, val1, val2) \ - while (::std::string* absl_log_internal_qcheck_op_result = \ - ::absl::log_internal::name##Impl( \ - ::absl::log_internal::GetReferenceableValue(val1), \ - ::absl::log_internal::GetReferenceableValue(val2), \ - ABSL_LOG_INTERNAL_STRIP_STRING_LITERAL(#val1 " " #op \ - " " #val2))) \ +#define ABSL_LOG_INTERNAL_QCHECK_OP(name, op, val1, val1_text, val2, \ + val2_text) \ + while (::std::string* absl_log_internal_qcheck_op_result = \ + ::absl::log_internal::name##Impl( \ + ::absl::log_internal::GetReferenceableValue(val1), \ + ::absl::log_internal::GetReferenceableValue(val2), \ + ABSL_LOG_INTERNAL_STRIP_STRING_LITERAL( \ + val1_text " " #op " " val2_text))) \ ABSL_LOG_INTERNAL_QCHECK(*absl_log_internal_qcheck_op_result).InternalStream() -#define ABSL_LOG_INTERNAL_CHECK_STROP(func, op, expected, s1, s2) \ +#define ABSL_LOG_INTERNAL_CHECK_STROP(func, op, expected, s1, s1_text, s2, \ + s2_text) \ while (::std::string* absl_log_internal_check_strop_result = \ ::absl::log_internal::Check##func##expected##Impl( \ (s1), (s2), \ - ABSL_LOG_INTERNAL_STRIP_STRING_LITERAL(#s1 " " #op " " #s2))) \ + ABSL_LOG_INTERNAL_STRIP_STRING_LITERAL(s1_text " " #op \ + " " s2_text))) \ ABSL_LOG_INTERNAL_CHECK(*absl_log_internal_check_strop_result) \ .InternalStream() -#define ABSL_LOG_INTERNAL_QCHECK_STROP(func, op, expected, s1, s2) \ +#define ABSL_LOG_INTERNAL_QCHECK_STROP(func, op, expected, s1, s1_text, s2, \ + s2_text) \ while (::std::string* absl_log_internal_qcheck_strop_result = \ ::absl::log_internal::Check##func##expected##Impl( \ (s1), (s2), \ - ABSL_LOG_INTERNAL_STRIP_STRING_LITERAL(#s1 " " #op " " #s2))) \ + ABSL_LOG_INTERNAL_STRIP_STRING_LITERAL(s1_text " " #op \ + " " s2_text))) \ ABSL_LOG_INTERNAL_QCHECK(*absl_log_internal_qcheck_strop_result) \ .InternalStream() // This one is tricky: @@ -108,33 +113,35 @@ // * As usual, no braces so we can stream into the expansion with `operator<<`. // * Also as usual, it must expand to a single (partial) statement with no // ambiguous-else problems. -#define ABSL_LOG_INTERNAL_CHECK_OK(val) \ - for (::std::pair<const ::absl::Status*, ::std::string*> \ - absl_log_internal_check_ok_goo; \ - absl_log_internal_check_ok_goo.first = \ - ::absl::log_internal::AsStatus(val), \ - absl_log_internal_check_ok_goo.second = \ - ABSL_PREDICT_TRUE(absl_log_internal_check_ok_goo.first->ok()) \ - ? nullptr \ - : ::absl::status_internal::MakeCheckFailString( \ - absl_log_internal_check_ok_goo.first, \ - ABSL_LOG_INTERNAL_STRIP_STRING_LITERAL(#val " is OK")), \ - !ABSL_PREDICT_TRUE(absl_log_internal_check_ok_goo.first->ok());) \ - ABSL_LOG_INTERNAL_CHECK(*absl_log_internal_check_ok_goo.second) \ +#define ABSL_LOG_INTERNAL_CHECK_OK(val, val_text) \ + for (::std::pair<const ::absl::Status*, ::std::string*> \ + absl_log_internal_check_ok_goo; \ + absl_log_internal_check_ok_goo.first = \ + ::absl::log_internal::AsStatus(val), \ + absl_log_internal_check_ok_goo.second = \ + ABSL_PREDICT_TRUE(absl_log_internal_check_ok_goo.first->ok()) \ + ? nullptr \ + : ::absl::status_internal::MakeCheckFailString( \ + absl_log_internal_check_ok_goo.first, \ + ABSL_LOG_INTERNAL_STRIP_STRING_LITERAL(val_text \ + " is OK")), \ + !ABSL_PREDICT_TRUE(absl_log_internal_check_ok_goo.first->ok());) \ + ABSL_LOG_INTERNAL_CHECK(*absl_log_internal_check_ok_goo.second) \ .InternalStream() -#define ABSL_LOG_INTERNAL_QCHECK_OK(val) \ - for (::std::pair<const ::absl::Status*, ::std::string*> \ - absl_log_internal_check_ok_goo; \ - absl_log_internal_check_ok_goo.first = \ - ::absl::log_internal::AsStatus(val), \ - absl_log_internal_check_ok_goo.second = \ - ABSL_PREDICT_TRUE(absl_log_internal_check_ok_goo.first->ok()) \ - ? nullptr \ - : ::absl::status_internal::MakeCheckFailString( \ - absl_log_internal_check_ok_goo.first, \ - ABSL_LOG_INTERNAL_STRIP_STRING_LITERAL(#val " is OK")), \ - !ABSL_PREDICT_TRUE(absl_log_internal_check_ok_goo.first->ok());) \ - ABSL_LOG_INTERNAL_QCHECK(*absl_log_internal_check_ok_goo.second) \ +#define ABSL_LOG_INTERNAL_QCHECK_OK(val, val_text) \ + for (::std::pair<const ::absl::Status*, ::std::string*> \ + absl_log_internal_check_ok_goo; \ + absl_log_internal_check_ok_goo.first = \ + ::absl::log_internal::AsStatus(val), \ + absl_log_internal_check_ok_goo.second = \ + ABSL_PREDICT_TRUE(absl_log_internal_check_ok_goo.first->ok()) \ + ? nullptr \ + : ::absl::status_internal::MakeCheckFailString( \ + absl_log_internal_check_ok_goo.first, \ + ABSL_LOG_INTERNAL_STRIP_STRING_LITERAL(val_text \ + " is OK")), \ + !ABSL_PREDICT_TRUE(absl_log_internal_check_ok_goo.first->ok());) \ + ABSL_LOG_INTERNAL_QCHECK(*absl_log_internal_check_ok_goo.second) \ .InternalStream() namespace absl {
diff --git a/third_party/abseil-cpp/absl/log/internal/proto.cc b/third_party/abseil-cpp/absl/log/internal/proto.cc index 86c459b..9a2b1a3 100644 --- a/third_party/abseil-cpp/absl/log/internal/proto.cc +++ b/third_party/abseil-cpp/absl/log/internal/proto.cc
@@ -29,7 +29,7 @@ namespace { void EncodeRawVarint(uint64_t value, size_t size, absl::Span<char> *buf) { for (size_t s = 0; s < size; s++) { - (*buf)[s] = (value & 0x7f) | (s + 1 == size ? 0 : 0x80); + (*buf)[s] = static_cast<char>((value & 0x7f) | (s + 1 == size ? 0 : 0x80)); value >>= 7; } buf->remove_prefix(size); @@ -61,7 +61,7 @@ } EncodeRawVarint(tag_type, tag_type_size, buf); for (size_t s = 0; s < sizeof(value); s++) { - (*buf)[s] = value & 0xff; + (*buf)[s] = static_cast<char>(value & 0xff); value >>= 8; } buf->remove_prefix(sizeof(value)); @@ -77,7 +77,7 @@ } EncodeRawVarint(tag_type, tag_type_size, buf); for (size_t s = 0; s < sizeof(value); s++) { - (*buf)[s] = value & 0xff; + (*buf)[s] = static_cast<char>(value & 0xff); value >>= 8; } buf->remove_prefix(sizeof(value)); @@ -143,8 +143,9 @@ void EncodeMessageLength(absl::Span<char> msg, const absl::Span<char> *buf) { if (!msg.data()) return; - const uint64_t length_size = msg.size(); - EncodeRawVarint(buf->data() - msg.data() - length_size, length_size, &msg); + const size_t length_size = msg.size(); + EncodeRawVarint(static_cast<uint64_t>(buf->data() - msg.data()) - length_size, + length_size, &msg); } namespace {
diff --git a/third_party/abseil-cpp/absl/numeric/bits_benchmark.cc b/third_party/abseil-cpp/absl/numeric/bits_benchmark.cc index 719bfa8..1b7f35d 100644 --- a/third_party/abseil-cpp/absl/numeric/bits_benchmark.cc +++ b/third_party/abseil-cpp/absl/numeric/bits_benchmark.cc
@@ -34,7 +34,7 @@ values.push_back(absl::Uniform<T>(rng, 0, std::numeric_limits<T>::max())); } - while (state.KeepRunningBatch(count)) { + while (state.KeepRunningBatch(static_cast<int64_t>(count))) { for (size_t i = 0; i < count; ++i) { benchmark::DoNotOptimize(values[i]); } @@ -56,7 +56,7 @@ values.push_back(absl::Uniform<T>(rng, 1, std::numeric_limits<T>::max())); } - while (state.KeepRunningBatch(count)) { + while (state.KeepRunningBatch(static_cast<int64_t>(count))) { for (size_t i = 0; i < count; ++i) { const T value = values[i]; ABSL_ASSUME(value > 0);
diff --git a/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h b/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h index ef1489b..371f6c4 100644 --- a/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +++ b/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h
@@ -199,6 +199,14 @@ sample = new T(); { absl::MutexLock sample_lock(&sample->init_mu); + // If flag initialization happens to occur (perhaps in another thread) + // while in this block, it will lock `graveyard_` which is usually always + // locked before any sample. This will appear as a lock inversion. + // However, this code is run exactly once per sample, and this sample + // cannot be accessed until after it is returned from this method. This + // means that this lock state can never be recreated, so we can safely + // inform the deadlock detector to ignore it. + sample->init_mu.ForgetDeadlockInfo(); sample->PrepareForSampling(std::forward<Targs>(args)...); } PushNew(sample);
diff --git a/third_party/abseil-cpp/absl/random/internal/BUILD.bazel b/third_party/abseil-cpp/absl/random/internal/BUILD.bazel index fd5b619..f8419ec 100644 --- a/third_party/abseil-cpp/absl/random/internal/BUILD.bazel +++ b/third_party/abseil-cpp/absl/random/internal/BUILD.bazel
@@ -24,9 +24,11 @@ "absl_random_randen_copts_init", ) -package(default_visibility = [ +default_package_visibility = [ "//absl/random:__pkg__", -]) +] + +package(default_visibility = default_package_visibility) licenses(["notice"]) @@ -248,6 +250,8 @@ hdrs = ["randen_engine.h"], copts = ABSL_DEFAULT_COPTS, linkopts = ABSL_DEFAULT_LINKOPTS, + visibility = default_package_visibility + [ + ], deps = [ ":iostream_state_saver", ":randen",
diff --git a/third_party/abseil-cpp/absl/random/internal/BUILD.gn b/third_party/abseil-cpp/absl/random/internal/BUILD.gn index 199fe6d8..ff20294 100644 --- a/third_party/abseil-cpp/absl/random/internal/BUILD.gn +++ b/third_party/abseil-cpp/absl/random/internal/BUILD.gn
@@ -11,6 +11,7 @@ "//third_party/abseil-cpp/absl/numeric:bits", "//third_party/abseil-cpp/absl/numeric:int128", ] + visibility = ["//third_party/abseil-cpp/absl/random/*"] } absl_source_set("distribution_caller") { @@ -20,6 +21,7 @@ "//third_party/abseil-cpp/absl/base:fast_type_id", "//third_party/abseil-cpp/absl/utility", ] + visibility = ["//third_party/abseil-cpp/absl/random/*"] } absl_source_set("fast_uniform_bits") { @@ -29,6 +31,7 @@ "//third_party/abseil-cpp/absl/base:config", "//third_party/abseil-cpp/absl/meta:type_traits", ] + visibility = ["//third_party/abseil-cpp/absl/random/*"] } absl_source_set("seed_material") { @@ -47,6 +50,7 @@ "//third_party/abseil-cpp/absl/types:optional", "//third_party/abseil-cpp/absl/types:span", ] + visibility = ["//third_party/abseil-cpp/absl/random/*"] } absl_source_set("pool_urbg") { @@ -64,6 +68,7 @@ "//third_party/abseil-cpp/absl/random:seed_gen_exception", "//third_party/abseil-cpp/absl/types:span", ] + visibility = ["//third_party/abseil-cpp/absl/random/*"] } absl_source_set("explicit_seed_seq") { @@ -73,12 +78,14 @@ "//third_party/abseil-cpp/absl/base:config", "//third_party/abseil-cpp/absl/base:endian", ] + visibility = ["//third_party/abseil-cpp/absl/random/*"] } absl_source_set("sequence_urbg") { testonly = true public = [ "sequence_urbg.h" ] deps = [ "//third_party/abseil-cpp/absl/base:config" ] + visibility = ["//third_party/abseil-cpp/absl/random/*"] } absl_source_set("salted_seed_seq") { @@ -90,6 +97,7 @@ "//third_party/abseil-cpp/absl/types:optional", "//third_party/abseil-cpp/absl/types:span", ] + visibility = ["//third_party/abseil-cpp/absl/random/*"] } absl_source_set("iostream_state_saver") { @@ -98,6 +106,7 @@ "//third_party/abseil-cpp/absl/meta:type_traits", "//third_party/abseil-cpp/absl/numeric:int128", ] + visibility = ["//third_party/abseil-cpp/absl/random/*"] } absl_source_set("generate_real") { @@ -108,11 +117,13 @@ "//third_party/abseil-cpp/absl/meta:type_traits", "//third_party/abseil-cpp/absl/numeric:bits", ] + visibility = ["//third_party/abseil-cpp/absl/random/*"] } absl_source_set("fastmath") { public = [ "fastmath.h" ] deps = [ "//third_party/abseil-cpp/absl/numeric:bits" ] + visibility = ["//third_party/abseil-cpp/absl/random/*"] } absl_source_set("wide_multiply") { @@ -123,6 +134,7 @@ "//third_party/abseil-cpp/absl/numeric:bits", "//third_party/abseil-cpp/absl/numeric:int128", ] + visibility = ["//third_party/abseil-cpp/absl/random/*"] } absl_source_set("nonsecure_base") { @@ -136,6 +148,7 @@ "//third_party/abseil-cpp/absl/meta:type_traits", "//third_party/abseil-cpp/absl/types:span", ] + visibility = ["//third_party/abseil-cpp/absl/random/*"] } absl_source_set("pcg_engine") { @@ -148,6 +161,7 @@ "//third_party/abseil-cpp/absl/numeric:bits", "//third_party/abseil-cpp/absl/numeric:int128", ] + visibility = ["//third_party/abseil-cpp/absl/random/*"] } absl_source_set("randen_engine") { @@ -158,6 +172,7 @@ "//third_party/abseil-cpp/absl/base:endian", "//third_party/abseil-cpp/absl/meta:type_traits", ] + visibility = ["//third_party/abseil-cpp/absl/random/*"] } absl_source_set("platform") { @@ -170,6 +185,7 @@ "//build:chromeos_buildflags", "//third_party/abseil-cpp/absl/base:config", ] + visibility = ["//third_party/abseil-cpp/absl/random/*"] } absl_source_set("randen") { @@ -181,6 +197,7 @@ ":randen_slow", "//third_party/abseil-cpp/absl/base:raw_logging_internal", ] + visibility = ["//third_party/abseil-cpp/absl/random/*"] } absl_source_set("randen_slow") { @@ -193,6 +210,7 @@ "//third_party/abseil-cpp/absl/base:endian", "//third_party/abseil-cpp/absl/numeric:int128", ] + visibility = ["//third_party/abseil-cpp/absl/random/*"] } absl_source_set("randen_hwaes") { @@ -206,6 +224,7 @@ ":randen_hwaes_impl", "//third_party/abseil-cpp/absl/base:config", ] + visibility = ["//third_party/abseil-cpp/absl/random/*"] } absl_source_set("randen_hwaes_impl") { @@ -219,6 +238,7 @@ "//third_party/abseil-cpp/absl/base:core_headers", "//third_party/abseil-cpp/absl/numeric:int128", ] + visibility = ["//third_party/abseil-cpp/absl/random/*"] } executable("gaussian_distribution_gentables") { @@ -227,6 +247,7 @@ "//third_party/abseil-cpp/absl/base:core_headers", "//third_party/abseil-cpp/absl/random:distributions", ] + visibility = ["//third_party/abseil-cpp/absl/random/*"] } absl_source_set("distribution_test_util") { @@ -247,6 +268,7 @@ "//third_party/abseil-cpp/absl/strings:str_format", "//third_party/abseil-cpp/absl/types:span", ] + visibility = ["//third_party/abseil-cpp/absl/random/*"] } # TODO(danilchap): Enable when can be compiled on all chromium bots. @@ -272,4 +294,5 @@ "//third_party/abseil-cpp/absl/meta:type_traits", "//third_party/abseil-cpp/absl/numeric:int128", ] + visibility = ["//third_party/abseil-cpp/absl/random/*"] }
diff --git a/third_party/abseil-cpp/absl/strings/BUILD.bazel b/third_party/abseil-cpp/absl/strings/BUILD.bazel index 3c852989..d86f59f0f 100644 --- a/third_party/abseil-cpp/absl/strings/BUILD.bazel +++ b/third_party/abseil-cpp/absl/strings/BUILD.bazel
@@ -324,6 +324,7 @@ "//absl/container:compressed_tuple", "//absl/container:inlined_vector", "//absl/container:layout", + "//absl/crc:crc_cord_state", "//absl/functional:function_ref", "//absl/meta:type_traits", "//absl/types:span", @@ -405,6 +406,7 @@ ":cord_internal", ":cord_rep_test_util", "//absl/base:config", + "//absl/crc:crc_cord_state", "@com_google_googletest//:gtest_main", ], ) @@ -463,6 +465,7 @@ "//absl/base:raw_logging_internal", "//absl/container:fixed_array", "//absl/container:inlined_vector", + "//absl/crc:crc_cord_state", "//absl/functional:function_ref", "//absl/meta:type_traits", "//absl/numeric:bits", @@ -659,6 +662,7 @@ ":cordz_update_scope", ":cordz_update_tracker", "//absl/base:config", + "//absl/crc:crc_cord_state", "//absl/synchronization", "//absl/synchronization:thread_pool", "@com_google_googletest//:gtest_main",
diff --git a/third_party/abseil-cpp/absl/strings/BUILD.gn b/third_party/abseil-cpp/absl/strings/BUILD.gn index 49575f5..2d93c95f 100644 --- a/third_party/abseil-cpp/absl/strings/BUILD.gn +++ b/third_party/abseil-cpp/absl/strings/BUILD.gn
@@ -158,6 +158,7 @@ "//third_party/abseil-cpp/absl/container:compressed_tuple", "//third_party/abseil-cpp/absl/container:inlined_vector", "//third_party/abseil-cpp/absl/container:layout", + "//third_party/abseil-cpp/absl/crc:crc_cord_state", "//third_party/abseil-cpp/absl/functional:function_ref", "//third_party/abseil-cpp/absl/meta:type_traits", "//third_party/abseil-cpp/absl/types:span", @@ -204,6 +205,7 @@ ":cord_internal", ":cord_rep_test_util", "//third_party/abseil-cpp/absl/base:config", + "//third_party/abseil-cpp/absl/crc:crc_cord_state", ] } @@ -251,6 +253,7 @@ "//third_party/abseil-cpp/absl/base:raw_logging_internal", "//third_party/abseil-cpp/absl/container:fixed_array", "//third_party/abseil-cpp/absl/container:inlined_vector", + "//third_party/abseil-cpp/absl/crc:crc_cord_state", "//third_party/abseil-cpp/absl/functional:function_ref", "//third_party/abseil-cpp/absl/meta:type_traits", "//third_party/abseil-cpp/absl/numeric:bits", @@ -400,6 +403,7 @@ ":cordz_update_scope", ":cordz_update_tracker", "//third_party/abseil-cpp/absl/base:config", + "//third_party/abseil-cpp/absl/crc:crc_cord_state", "//third_party/abseil-cpp/absl/synchronization", "//third_party/abseil-cpp/absl/synchronization:thread_pool", ]
diff --git a/third_party/abseil-cpp/absl/strings/CMakeLists.txt b/third_party/abseil-cpp/absl/strings/CMakeLists.txt index 33e4ff1..a23b34a 100644 --- a/third_party/abseil-cpp/absl/strings/CMakeLists.txt +++ b/third_party/abseil-cpp/absl/strings/CMakeLists.txt
@@ -605,6 +605,7 @@ absl::compressed_tuple absl::config absl::core_headers + absl::crc_cord_state absl::endian absl::inlined_vector absl::layout @@ -783,6 +784,7 @@ absl::cordz_statistics absl::cordz_update_scope absl::cordz_update_tracker + absl::crc_cord_state absl::thread_pool GTest::gmock_main ) @@ -882,6 +884,7 @@ absl::cordz_update_scope absl::cordz_update_tracker absl::core_headers + absl::crc_cord_state absl::endian absl::fixed_array absl::function_ref @@ -1054,6 +1057,7 @@ absl::config absl::cord_internal absl::cord_rep_test_util + absl::crc_cord_state GTest::gmock_main )
diff --git a/third_party/abseil-cpp/absl/strings/cord.cc b/third_party/abseil-cpp/absl/strings/cord.cc index 92822c05..0bac4164 100644 --- a/third_party/abseil-cpp/absl/strings/cord.cc +++ b/third_party/abseil-cpp/absl/strings/cord.cc
@@ -35,6 +35,7 @@ #include "absl/base/port.h" #include "absl/container/fixed_array.h" #include "absl/container/inlined_vector.h" +#include "absl/crc/internal/crc_cord_state.h" #include "absl/strings/cord_buffer.h" #include "absl/strings/escaping.h" #include "absl/strings/internal/cord_data_edge.h" @@ -854,28 +855,44 @@ return absl::string_view(node->external()->base + offset, length); } -void Cord::SetExpectedChecksum(uint32_t crc) { +void Cord::SetCrcCordState(crc_internal::CrcCordState state) { auto constexpr method = CordzUpdateTracker::kSetExpectedChecksum; if (empty()) { contents_.MaybeRemoveEmptyCrcNode(); - CordRep* rep = CordRepCrc::New(nullptr, crc); + CordRep* rep = CordRepCrc::New(nullptr, std::move(state)); contents_.EmplaceTree(rep, method); } else if (!contents_.is_tree()) { CordRep* rep = contents_.MakeFlatWithExtraCapacity(0); - rep = CordRepCrc::New(rep, crc); + rep = CordRepCrc::New(rep, std::move(state)); contents_.EmplaceTree(rep, method); } else { const CordzUpdateScope scope(contents_.data_.cordz_info(), method); - CordRep* rep = CordRepCrc::New(contents_.data_.as_tree(), crc); + CordRep* rep = CordRepCrc::New(contents_.data_.as_tree(), std::move(state)); contents_.SetTree(rep, scope); } } +void Cord::SetExpectedChecksum(uint32_t crc) { + // Construct a CrcCordState with a single chunk. + crc_internal::CrcCordState state; + state.mutable_rep()->prefix_crc.push_back( + crc_internal::CrcCordState::PrefixCrc(size(), absl::crc32c_t{crc})); + SetCrcCordState(std::move(state)); +} + +const crc_internal::CrcCordState* Cord::MaybeGetCrcCordState() const { + if (!contents_.is_tree() || !contents_.tree()->IsCrc()) { + return nullptr; + } + return &contents_.tree()->crc()->crc_cord_state; +} + absl::optional<uint32_t> Cord::ExpectedChecksum() const { if (!contents_.is_tree() || !contents_.tree()->IsCrc()) { return absl::nullopt; } - return contents_.tree()->crc()->crc; + return static_cast<uint32_t>( + contents_.tree()->crc()->crc_cord_state.Checksum()); } inline int Cord::CompareSlowPath(absl::string_view rhs, size_t compared_size, @@ -1255,7 +1272,7 @@ *os << "NULL\n"; leaf = true; } else if (rep->IsCrc()) { - *os << "CRC crc=" << rep->crc()->crc << "\n"; + *os << "CRC crc=" << rep->crc()->crc_cord_state.Checksum() << "\n"; indent += kIndentStep; rep = rep->crc()->child; } else if (rep->IsSubstring()) {
diff --git a/third_party/abseil-cpp/absl/strings/cord.h b/third_party/abseil-cpp/absl/strings/cord.h index 6e3da89e..1349b11 100644 --- a/third_party/abseil-cpp/absl/strings/cord.h +++ b/third_party/abseil-cpp/absl/strings/cord.h
@@ -76,6 +76,7 @@ #include "absl/base/macros.h" #include "absl/base/port.h" #include "absl/container/inlined_vector.h" +#include "absl/crc/internal/crc_cord_state.h" #include "absl/functional/function_ref.h" #include "absl/meta/type_traits.h" #include "absl/strings/cord_analysis.h" @@ -1002,6 +1003,10 @@ }); return H::combine(combiner.finalize(std::move(hash_state)), size()); } + + friend class CrcCord; + void SetCrcCordState(crc_internal::CrcCordState state); + const crc_internal::CrcCordState* MaybeGetCrcCordState() const; }; ABSL_NAMESPACE_END
diff --git a/third_party/abseil-cpp/absl/strings/escaping.cc b/third_party/abseil-cpp/absl/strings/escaping.cc index 7d97944..93966846 100644 --- a/third_party/abseil-cpp/absl/strings/escaping.cc +++ b/third_party/abseil-cpp/absl/strings/escaping.cc
@@ -784,9 +784,7 @@ bool Base64UnescapeInternal(const char* src, size_t slen, String* dest, const signed char* unbase64) { // Determine the size of the output string. Base64 encodes every 3 bytes into - // 4 characters. any leftover chars are added directly for good measure. - // This is documented in the base64 RFC: - // https://datatracker.ietf.org/doc/html/rfc3548 + // 4 characters. Any leftover chars are added directly for good measure. const size_t dest_len = 3 * (slen / 4) + (slen % 4); strings_internal::STLStringResizeUninitialized(dest, dest_len);
diff --git a/third_party/abseil-cpp/absl/strings/internal/cord_internal.h b/third_party/abseil-cpp/absl/strings/internal/cord_internal.h index fcca3a2..6022c1d 100644 --- a/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +++ b/third_party/abseil-cpp/absl/strings/internal/cord_internal.h
@@ -225,7 +225,11 @@ : length(l), refcount(immortal), tag(EXTERNAL), storage{} {} // The following three fields have to be less than 32 bytes since - // that is the smallest supported flat node size. + // that is the smallest supported flat node size. Some code optimizations rely + // on the specific layout of these fields. Notably: the non-trivial field + // `refcount` being preceeded by `length`, and being tailed by POD data + // members only. + // # LINT.IfChange size_t length; RefcountAndFlags refcount; // If tag < FLAT, it represents CordRepKind and indicates the type of node. @@ -241,6 +245,7 @@ // allocate room for these in the derived class, as not all compilers reuse // padding space from the base class (clang and gcc do, MSVC does not, etc) uint8_t storage[3]; + // # LINT.ThenChange(cord_rep_btree.h:copy_raw) // Returns true if this instance's tag matches the requested type. constexpr bool IsRing() const { return tag == RING; }
diff --git a/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc b/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc index 7ce36128..985f0724 100644 --- a/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +++ b/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc
@@ -502,7 +502,7 @@ // open interval [begin, back) or [begin + 1, end) depending on `edge_type`. // We conveniently cover both case using a constexpr `shift` being 0 or 1 // as `end :== back + 1`. - result = {CopyRaw(), kCopied}; + result = {CopyRaw(length), kCopied}; constexpr int shift = edge_type == kFront ? 1 : 0; for (CordRep* r : Edges(begin() + shift, back() + shift)) { CordRep::Ref(r);
diff --git a/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h b/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h index eed5609..4209e51 100644 --- a/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +++ b/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h
@@ -446,9 +446,9 @@ template <EdgeType edge_type> static CordRepBtree* NewLeaf(absl::string_view data, size_t extra); - // Creates a raw copy of this Btree node, copying all properties, but - // without adding any references to existing edges. - CordRepBtree* CopyRaw() const; + // Creates a raw copy of this Btree node with the specified length, copying + // all properties, but without adding any references to existing edges. + CordRepBtree* CopyRaw(size_t new_length) const; // Creates a full copy of this Btree node, adding a reference on all edges. CordRepBtree* Copy() const; @@ -666,15 +666,28 @@ } } -inline CordRepBtree* CordRepBtree::CopyRaw() const { - auto* tree = static_cast<CordRepBtree*>(::operator new(sizeof(CordRepBtree))); - memcpy(static_cast<void*>(tree), this, sizeof(CordRepBtree)); - new (&tree->refcount) RefcountAndFlags; +inline CordRepBtree* CordRepBtree::CopyRaw(size_t new_length) const { + CordRepBtree* tree = new CordRepBtree; + + // `length` and `refcount` are the first members of `CordRepBtree`. + // We initialize `length` using the given length, have `refcount` be set to + // ref = 1 through its default constructor, and copy all data beyond + // 'refcount' which starts with `tag` using a single memcpy: all contents + // except `refcount` is trivially copyable, and the compiler does not + // efficiently coalesce member-wise copy of these members. + // See https://gcc.godbolt.org/z/qY8zsca6z + // # LINT.IfChange(copy_raw) + tree->length = new_length; + uint8_t* dst = &tree->tag; + const uint8_t* src = &tag; + const ptrdiff_t offset = src - reinterpret_cast<const uint8_t*>(this); + memcpy(dst, src, sizeof(CordRepBtree) - static_cast<size_t>(offset)); return tree; + // # LINT.ThenChange() } inline CordRepBtree* CordRepBtree::Copy() const { - CordRepBtree* tree = CopyRaw(); + CordRepBtree* tree = CopyRaw(length); for (CordRep* rep : Edges()) CordRep::Ref(rep); return tree; } @@ -683,8 +696,7 @@ size_t new_length) const { assert(begin >= this->begin()); assert(begin <= this->end()); - CordRepBtree* tree = CopyRaw(); - tree->length = new_length; + CordRepBtree* tree = CopyRaw(new_length); tree->set_begin(begin); for (CordRep* edge : tree->Edges()) CordRep::Ref(edge); return tree; @@ -694,8 +706,7 @@ size_t new_length) const { assert(end <= capacity()); assert(end >= this->begin()); - CordRepBtree* tree = CopyRaw(); - tree->length = new_length; + CordRepBtree* tree = CopyRaw(new_length); tree->set_end(end); for (CordRep* edge : tree->Edges()) CordRep::Ref(edge); return tree;
diff --git a/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc b/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc index 7d7273e..dbe54cc 100644 --- a/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +++ b/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc
@@ -16,6 +16,7 @@ #include <cassert> #include <cstdint> +#include <utility> #include "absl/base/config.h" #include "absl/strings/internal/cord_internal.h" @@ -24,10 +25,10 @@ ABSL_NAMESPACE_BEGIN namespace cord_internal { -CordRepCrc* CordRepCrc::New(CordRep* child, uint32_t crc) { +CordRepCrc* CordRepCrc::New(CordRep* child, crc_internal::CrcCordState state) { if (child != nullptr && child->IsCrc()) { if (child->refcount.IsOne()) { - child->crc()->crc = crc; + child->crc()->crc_cord_state = std::move(state); return child->crc(); } CordRep* old = child; @@ -39,7 +40,7 @@ new_cordrep->length = child != nullptr ? child->length : 0; new_cordrep->tag = cord_internal::CRC; new_cordrep->child = child; - new_cordrep->crc = crc; + new_cordrep->crc_cord_state = std::move(state); return new_cordrep; }
diff --git a/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h b/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h index 455a1127d..379d7a6 100644 --- a/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +++ b/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h
@@ -20,6 +20,7 @@ #include "absl/base/config.h" #include "absl/base/optimization.h" +#include "absl/crc/internal/crc_cord_state.h" #include "absl/strings/internal/cord_internal.h" namespace absl { @@ -34,14 +35,14 @@ // the contained checksum is the user's responsibility. struct CordRepCrc : public CordRep { CordRep* child; - uint32_t crc; + absl::crc_internal::CrcCordState crc_cord_state; // Consumes `child` and returns a CordRepCrc prefixed tree containing `child`. // If the specified `child` is itself a CordRepCrc node, then this method - // either replaces the existing node, or directly updates the crc value in it + // either replaces the existing node, or directly updates the crc state in it // depending on the node being shared or not, i.e.: refcount.IsOne(). // `child` must only be null if the Cord is empty. Never returns null. - static CordRepCrc* New(CordRep* child, uint32_t crc); + static CordRepCrc* New(CordRep* child, crc_internal::CrcCordState state); // Destroys (deletes) the provided node. `node` must not be null. static void Destroy(CordRepCrc* node);
diff --git a/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc_test.cc b/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc_test.cc index 42a9110..3d27c33 100644 --- a/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc_test.cc +++ b/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc_test.cc
@@ -17,6 +17,7 @@ #include "gmock/gmock.h" #include "gtest/gtest.h" #include "absl/base/config.h" +#include "absl/crc/internal/crc_cord_state.h" #include "absl/strings/internal/cord_internal.h" #include "absl/strings/internal/cord_rep_test_util.h" @@ -38,33 +39,40 @@ #endif // !NDEBUG && GTEST_HAS_DEATH_TEST +absl::crc_internal::CrcCordState MakeCrcCordState(uint32_t crc) { + crc_internal::CrcCordState state; + state.mutable_rep()->prefix_crc.push_back( + crc_internal::CrcCordState::PrefixCrc(42, crc32c_t{crc})); + return state; +} + TEST(CordRepCrc, NewDestroy) { CordRep* rep = cordrep_testing::MakeFlat("Hello world"); - CordRepCrc* crc = CordRepCrc::New(rep, 12345); + CordRepCrc* crc = CordRepCrc::New(rep, MakeCrcCordState(12345)); EXPECT_TRUE(crc->refcount.IsOne()); EXPECT_THAT(crc->child, Eq(rep)); - EXPECT_THAT(crc->crc, Eq(12345u)); + EXPECT_THAT(crc->crc_cord_state.Checksum(), Eq(crc32c_t{12345u})); EXPECT_TRUE(rep->refcount.IsOne()); CordRepCrc::Destroy(crc); } TEST(CordRepCrc, NewExistingCrcNotShared) { CordRep* rep = cordrep_testing::MakeFlat("Hello world"); - CordRepCrc* crc = CordRepCrc::New(rep, 12345); - CordRepCrc* new_crc = CordRepCrc::New(crc, 54321); + CordRepCrc* crc = CordRepCrc::New(rep, MakeCrcCordState(12345)); + CordRepCrc* new_crc = CordRepCrc::New(crc, MakeCrcCordState(54321)); EXPECT_THAT(new_crc, Eq(crc)); EXPECT_TRUE(new_crc->refcount.IsOne()); EXPECT_THAT(new_crc->child, Eq(rep)); - EXPECT_THAT(new_crc->crc, Eq(54321u)); + EXPECT_THAT(new_crc->crc_cord_state.Checksum(), Eq(crc32c_t{54321u})); EXPECT_TRUE(rep->refcount.IsOne()); CordRepCrc::Destroy(new_crc); } TEST(CordRepCrc, NewExistingCrcShared) { CordRep* rep = cordrep_testing::MakeFlat("Hello world"); - CordRepCrc* crc = CordRepCrc::New(rep, 12345); + CordRepCrc* crc = CordRepCrc::New(rep, MakeCrcCordState(12345)); CordRep::Ref(crc); - CordRepCrc* new_crc = CordRepCrc::New(crc, 54321); + CordRepCrc* new_crc = CordRepCrc::New(crc, MakeCrcCordState(54321)); EXPECT_THAT(new_crc, Ne(crc)); EXPECT_TRUE(new_crc->refcount.IsOne()); @@ -72,19 +80,19 @@ EXPECT_FALSE(rep->refcount.IsOne()); EXPECT_THAT(crc->child, Eq(rep)); EXPECT_THAT(new_crc->child, Eq(rep)); - EXPECT_THAT(crc->crc, Eq(12345u)); - EXPECT_THAT(new_crc->crc, Eq(54321u)); + EXPECT_THAT(crc->crc_cord_state.Checksum(), Eq(crc32c_t{12345u})); + EXPECT_THAT(new_crc->crc_cord_state.Checksum(), Eq(crc32c_t{54321u})); CordRep::Unref(crc); CordRep::Unref(new_crc); } TEST(CordRepCrc, NewEmpty) { - CordRepCrc* crc = CordRepCrc::New(nullptr, 12345); + CordRepCrc* crc = CordRepCrc::New(nullptr, MakeCrcCordState(12345)); EXPECT_TRUE(crc->refcount.IsOne()); EXPECT_THAT(crc->child, IsNull()); EXPECT_THAT(crc->length, Eq(0u)); - EXPECT_THAT(crc->crc, Eq(12345u)); + EXPECT_THAT(crc->crc_cord_state.Checksum(), Eq(crc32c_t{12345u})); EXPECT_TRUE(crc->refcount.IsOne()); CordRepCrc::Destroy(crc); } @@ -98,7 +106,7 @@ TEST(CordRepCrc, RemoveCrcNotShared) { CordRep* rep = cordrep_testing::MakeFlat("Hello world"); - CordRepCrc* crc = CordRepCrc::New(rep, 12345); + CordRepCrc* crc = CordRepCrc::New(rep, MakeCrcCordState(12345)); CordRep* nocrc = RemoveCrcNode(crc); EXPECT_THAT(nocrc, Eq(rep)); EXPECT_TRUE(rep->refcount.IsOne()); @@ -107,7 +115,7 @@ TEST(CordRepCrc, RemoveCrcShared) { CordRep* rep = cordrep_testing::MakeFlat("Hello world"); - CordRepCrc* crc = CordRepCrc::New(rep, 12345); + CordRepCrc* crc = CordRepCrc::New(rep, MakeCrcCordState(12345)); CordRep::Ref(crc); CordRep* nocrc = RemoveCrcNode(crc); EXPECT_THAT(nocrc, Eq(rep));
diff --git a/third_party/abseil-cpp/absl/strings/internal/cordz_info_statistics_test.cc b/third_party/abseil-cpp/absl/strings/internal/cordz_info_statistics_test.cc index 6d6feb52..53d2f2e 100644 --- a/third_party/abseil-cpp/absl/strings/internal/cordz_info_statistics_test.cc +++ b/third_party/abseil-cpp/absl/strings/internal/cordz_info_statistics_test.cc
@@ -19,6 +19,7 @@ #include "gmock/gmock.h" #include "gtest/gtest.h" #include "absl/base/config.h" +#include "absl/crc/internal/crc_cord_state.h" #include "absl/strings/cord.h" #include "absl/strings/internal/cord_internal.h" #include "absl/strings/internal/cord_rep_btree.h" @@ -451,7 +452,8 @@ TEST(CordzInfoStatisticsTest, Crc) { RefHelper ref; auto* left = Flat(1000); - auto* crc = ref.NeedsUnref(CordRepCrc::New(left, 12345)); + auto* crc = + ref.NeedsUnref(CordRepCrc::New(left, crc_internal::CrcCordState())); CordzStatistics expected; expected.size = left->length;
diff --git a/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc b/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc index 967fe9c..018dd05 100644 --- a/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +++ b/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc
@@ -297,6 +297,37 @@ } template <typename T> +bool ConvertFloatArg(T v, FormatConversionSpecImpl conv, FormatSinkImpl *sink) { + if (conv.conversion_char() == FormatConversionCharInternal::v) { + conv.set_conversion_char(FormatConversionCharInternal::g); + } + + return FormatConversionCharIsFloat(conv.conversion_char()) && + ConvertFloatImpl(v, conv, sink); +} + +inline bool ConvertStringArg(string_view v, const FormatConversionSpecImpl conv, + FormatSinkImpl *sink) { + if (conv.is_basic()) { + sink->Append(v); + return true; + } + return sink->PutPaddedString(v, conv.width(), conv.precision(), + conv.has_left_flag()); +} + +} // namespace + +bool ConvertBoolArg(bool v, FormatSinkImpl *sink) { + if (v) { + sink->Append("true"); + } else { + sink->Append("false"); + } + return true; +} + +template <typename T> bool ConvertIntArg(T v, FormatConversionSpecImpl conv, FormatSinkImpl *sink) { using U = typename MakeUnsigned<T>::type; IntDigits as_digits; @@ -354,36 +385,37 @@ return ConvertIntImplInnerSlow(as_digits, conv, sink); } -template <typename T> -bool ConvertFloatArg(T v, FormatConversionSpecImpl conv, FormatSinkImpl *sink) { - if (conv.conversion_char() == FormatConversionCharInternal::v) { - conv.set_conversion_char(FormatConversionCharInternal::g); - } - - return FormatConversionCharIsFloat(conv.conversion_char()) && - ConvertFloatImpl(v, conv, sink); -} - -inline bool ConvertStringArg(string_view v, const FormatConversionSpecImpl conv, - FormatSinkImpl *sink) { - if (conv.is_basic()) { - sink->Append(v); - return true; - } - return sink->PutPaddedString(v, conv.width(), conv.precision(), - conv.has_left_flag()); -} - -} // namespace - -bool ConvertBoolArg(bool v, FormatSinkImpl *sink) { - if (v) { - sink->Append("true"); - } else { - sink->Append("false"); - } - return true; -} +template bool ConvertIntArg<char>(char v, FormatConversionSpecImpl conv, + FormatSinkImpl *sink); +template bool ConvertIntArg<signed char>(signed char v, + FormatConversionSpecImpl conv, + FormatSinkImpl *sink); +template bool ConvertIntArg<unsigned char>(unsigned char v, + FormatConversionSpecImpl conv, + FormatSinkImpl *sink); +template bool ConvertIntArg<short>(short v, // NOLINT + FormatConversionSpecImpl conv, + FormatSinkImpl *sink); +template bool ConvertIntArg<unsigned short>(unsigned short v, // NOLINT + FormatConversionSpecImpl conv, + FormatSinkImpl *sink); +template bool ConvertIntArg<int>(int v, FormatConversionSpecImpl conv, + FormatSinkImpl *sink); +template bool ConvertIntArg<unsigned int>(unsigned int v, + FormatConversionSpecImpl conv, + FormatSinkImpl *sink); +template bool ConvertIntArg<long>(long v, // NOLINT + FormatConversionSpecImpl conv, + FormatSinkImpl *sink); +template bool ConvertIntArg<unsigned long>(unsigned long v, // NOLINT + FormatConversionSpecImpl conv, + FormatSinkImpl *sink); +template bool ConvertIntArg<long long>(long long v, // NOLINT + FormatConversionSpecImpl conv, + FormatSinkImpl *sink); +template bool ConvertIntArg<unsigned long long>(unsigned long long v, // NOLINT + FormatConversionSpecImpl conv, + FormatSinkImpl *sink); // ==================== Strings ==================== StringConvertResult FormatConvertImpl(const std::string &v,
diff --git a/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h b/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h index bc4cde96..e4b16628 100644 --- a/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +++ b/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h
@@ -53,6 +53,19 @@ bool value; }; +using IntegralConvertResult = ArgConvertResult<FormatConversionCharSetUnion( + FormatConversionCharSetInternal::c, + FormatConversionCharSetInternal::kNumeric, + FormatConversionCharSetInternal::kStar, + FormatConversionCharSetInternal::v)>; +using FloatingConvertResult = ArgConvertResult<FormatConversionCharSetUnion( + FormatConversionCharSetInternal::kFloating, + FormatConversionCharSetInternal::v)>; +using CharConvertResult = ArgConvertResult<FormatConversionCharSetUnion( + FormatConversionCharSetInternal::c, + FormatConversionCharSetInternal::kNumeric, + FormatConversionCharSetInternal::kStar)>; + template <typename T, typename = void> struct HasUserDefinedConvert : std::false_type {}; @@ -70,6 +83,44 @@ void AbslStringify(); template <typename T> +bool ConvertIntArg(T v, FormatConversionSpecImpl conv, FormatSinkImpl* sink); + +// Forward declarations of internal `ConvertIntArg` function template +// instantiations are here to avoid including the template body in the headers +// and instantiating it in large numbers of translation units. Explicit +// instantiations can be found in "absl/strings/internal/str_format/arg.cc" +extern template bool ConvertIntArg<char>(char v, FormatConversionSpecImpl conv, + FormatSinkImpl* sink); +extern template bool ConvertIntArg<signed char>(signed char v, + FormatConversionSpecImpl conv, + FormatSinkImpl* sink); +extern template bool ConvertIntArg<unsigned char>(unsigned char v, + FormatConversionSpecImpl conv, + FormatSinkImpl* sink); +extern template bool ConvertIntArg<short>(short v, // NOLINT + FormatConversionSpecImpl conv, + FormatSinkImpl* sink); +extern template bool ConvertIntArg<unsigned short>( // NOLINT + unsigned short v, FormatConversionSpecImpl conv, // NOLINT + FormatSinkImpl* sink); +extern template bool ConvertIntArg<int>(int v, FormatConversionSpecImpl conv, + FormatSinkImpl* sink); +extern template bool ConvertIntArg<unsigned int>(unsigned int v, + FormatConversionSpecImpl conv, + FormatSinkImpl* sink); +extern template bool ConvertIntArg<long>( // NOLINT + long v, FormatConversionSpecImpl conv, FormatSinkImpl* sink); // NOLINT +extern template bool ConvertIntArg<unsigned long>(unsigned long v, // NOLINT + FormatConversionSpecImpl conv, + FormatSinkImpl* sink); +extern template bool ConvertIntArg<long long>(long long v, // NOLINT + FormatConversionSpecImpl conv, + FormatSinkImpl* sink); +extern template bool ConvertIntArg<unsigned long long>( // NOLINT + unsigned long long v, FormatConversionSpecImpl conv, // NOLINT + FormatSinkImpl* sink); + +template <typename T> auto FormatConvertImpl(const T& v, FormatConversionSpecImpl conv, FormatSinkImpl* sink) -> decltype(AbslFormatConvert(v, @@ -85,10 +136,30 @@ } template <typename T> +auto FormatConvertImpl(const T& v, FormatConversionSpecImpl conv, + FormatSinkImpl* sink) + -> std::enable_if_t<std::is_enum<T>::value && + std::is_void<decltype(AbslStringify( + std::declval<FormatSink&>(), v))>::value, + IntegralConvertResult> { + if (conv.conversion_char() == FormatConversionCharInternal::v) { + using FormatSinkT = + absl::enable_if_t<sizeof(const T& (*)()) != 0, FormatSink>; + auto fs = sink->Wrap<FormatSinkT>(); + AbslStringify(fs, v); + return {true}; + } else { + return {ConvertIntArg( + static_cast<typename std::underlying_type<T>::type>(v), conv, sink)}; + } +} + +template <typename T> auto FormatConvertImpl(const T& v, FormatConversionSpecImpl, FormatSinkImpl* sink) - -> std::enable_if_t<std::is_void<decltype(AbslStringify( - std::declval<FormatSink&>(), v))>::value, + -> std::enable_if_t<!std::is_enum<T>::value && + std::is_void<decltype(AbslStringify( + std::declval<FormatSink&>(), v))>::value, ArgConvertResult<FormatConversionCharSetInternal::v>> { using FormatSinkT = absl::enable_if_t<sizeof(const T& (*)()) != 0, FormatSink>; @@ -194,19 +265,6 @@ return {true}; } -using IntegralConvertResult = ArgConvertResult<FormatConversionCharSetUnion( - FormatConversionCharSetInternal::c, - FormatConversionCharSetInternal::kNumeric, - FormatConversionCharSetInternal::kStar, - FormatConversionCharSetInternal::v)>; -using FloatingConvertResult = ArgConvertResult<FormatConversionCharSetUnion( - FormatConversionCharSetInternal::kFloating, - FormatConversionCharSetInternal::v)>; -using CharConvertResult = ArgConvertResult<FormatConversionCharSetUnion( - FormatConversionCharSetInternal::c, - FormatConversionCharSetInternal::kNumeric, - FormatConversionCharSetInternal::kStar)>; - bool ConvertBoolArg(bool v, FormatSinkImpl* sink); // Floats.
diff --git a/third_party/abseil-cpp/absl/strings/str_format_test.cc b/third_party/abseil-cpp/absl/strings/str_format_test.cc index 36def1e..5198fb3 100644 --- a/third_party/abseil-cpp/absl/strings/str_format_test.cc +++ b/third_party/abseil-cpp/absl/strings/str_format_test.cc
@@ -1142,18 +1142,51 @@ EXPECT_EQ(absl::StrFormat("a %v z", p), "a (10, 20) z"); } -enum class EnumWithStringify { Many = 0, Choices = 1 }; +enum class EnumClassWithStringify { Many = 0, Choices = 1 }; + +template <typename Sink> +void AbslStringify(Sink& sink, EnumClassWithStringify e) { + absl::Format(&sink, "%s", + e == EnumClassWithStringify::Many ? "Many" : "Choices"); +} + +enum EnumWithStringify { Many, Choices }; template <typename Sink> void AbslStringify(Sink& sink, EnumWithStringify e) { absl::Format(&sink, "%s", e == EnumWithStringify::Many ? "Many" : "Choices"); } -TEST_F(FormatExtensionTest, AbslStringifyWithEnum) { +TEST_F(FormatExtensionTest, AbslStringifyWithEnumWithV) { + const auto e_class = EnumClassWithStringify::Choices; + EXPECT_EQ(absl::StrFormat("My choice is %v", e_class), + "My choice is Choices"); + const auto e = EnumWithStringify::Choices; EXPECT_EQ(absl::StrFormat("My choice is %v", e), "My choice is Choices"); } +TEST_F(FormatExtensionTest, AbslStringifyEnumWithD) { + const auto e_class = EnumClassWithStringify::Many; + EXPECT_EQ(absl::StrFormat("My choice is %d", e_class), "My choice is 0"); + + const auto e = EnumWithStringify::Choices; + EXPECT_EQ(absl::StrFormat("My choice is %d", e), "My choice is 1"); +} + +enum class EnumWithLargerValue { x = 32 }; + +template <typename Sink> +void AbslStringify(Sink& sink, EnumWithLargerValue e) { + absl::Format(&sink, "%s", "Many"); +} + +TEST_F(FormatExtensionTest, AbslStringifyEnumOtherSpecifiers) { + const auto e = EnumWithLargerValue::x; + EXPECT_EQ(absl::StrFormat("My choice is %g", e), "My choice is 32"); + EXPECT_EQ(absl::StrFormat("My choice is %x", e), "My choice is 20"); +} + } // namespace // Some codegen thunks that we can use to easily dump the generated assembly for
diff --git a/third_party/abseil-cpp/symbols_arm64_dbg.def b/third_party/abseil-cpp/symbols_arm64_dbg.def index 1d701fb..12ccb088 100644 --- a/third_party/abseil-cpp/symbols_arm64_dbg.def +++ b/third_party/abseil-cpp/symbols_arm64_dbg.def
@@ -1,4 +1,5 @@ EXPORTS + ?$TSS0@?1??CrcAndCopy@CrcMemcpy@crc_internal@absl@@SA?AVcrc32c_t@3@PEIAXPEIBX_KV43@_N@Z@4HA ??$?0$$CBD$0A@@VoidPtr@str_format_internal@absl@@QEAA@PEBD@Z ??$?0$$CBU?$atomic@_N@Cr@std@@@Condition@absl@@QEAA@P6A_NPEBU?$atomic@_N@Cr@std@@@Z0@Z ??$?0$$CBUCordRep@cord_internal@absl@@@Hex@absl@@QEAA@PEBUCordRep@cord_internal@1@W4PadSpec@1@@Z @@ -7,6 +8,7 @@ ??$?0$$T@?$Storage@PEAPEAVLogSink@absl@@$00$0A@@internal_compressed_tuple@container_internal@absl@@QEAA@Uin_place_t@3@$$QEA$$T@Z ??$?0$$T@?$Storage@PEAUPayload@status_internal@absl@@$00$0A@@internal_compressed_tuple@container_internal@absl@@QEAA@Uin_place_t@3@$$QEA$$T@Z ??$?0$$TAEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@?$__compressed_pair@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$TAEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@12@@Z + ??$?0$$TAEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@?$__compressed_pair@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$TAEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@12@@Z ??$?0$$TAEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@?$__compressed_pair@PEAPEAVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$TAEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@12@@Z ??$?0$$TAEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@@?$__compressed_pair@PEAPEAVLogSink@absl@@AEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$TAEAV?$allocator@PEAVLogSink@absl@@@12@@Z ??$?0$$TAEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@?$__compressed_pair@PEAPEBVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$TAEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@12@@Z @@ -15,6 +17,7 @@ ??$?0$$TAEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@?$__compressed_pair@PEAUTransitionType@cctz@time_internal@absl@@AEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$TAEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@12@@Z ??$?0$$TAEAV?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@?$__compressed_pair@PEAUViableSubstitution@strings_internal@absl@@AEAV?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$TAEAV?$allocator@UViableSubstitution@strings_internal@absl@@@12@@Z ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$T$$QEAU__default_init_tag@12@@Z + ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$T$$QEAU__default_init_tag@12@@Z ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PEAPEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$T$$QEAU__default_init_tag@12@@Z ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PEAPEAVLogSink@absl@@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$T$$QEAU__default_init_tag@12@@Z ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PEAPEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$T$$QEAU__default_init_tag@12@@Z @@ -22,8 +25,10 @@ ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PEAUTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$T$$QEAU__default_init_tag@12@@Z ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PEAUTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$T$$QEAU__default_init_tag@12@@Z ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PEAUViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$T$$QEAU__default_init_tag@12@@Z + ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PEAV?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@V?$allocator@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QEAA@$$QEA$$T$$QEAU__default_init_tag@12@@Z ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PEAVFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$T$$QEAU__default_init_tag@12@@Z ??$?0$$TX@?$__compressed_pair_elem@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@$0A@$0A@@Cr@std@@QEAA@$$QEA$$T@Z + ??$?0$$TX@?$__compressed_pair_elem@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@$0A@$0A@@Cr@std@@QEAA@$$QEA$$T@Z ??$?0$$TX@?$__compressed_pair_elem@PEAPEAVCordzHandle@cord_internal@absl@@$0A@$0A@@Cr@std@@QEAA@$$QEA$$T@Z ??$?0$$TX@?$__compressed_pair_elem@PEAPEAVLogSink@absl@@$0A@$0A@@Cr@std@@QEAA@$$QEA$$T@Z ??$?0$$TX@?$__compressed_pair_elem@PEAPEBVCordzHandle@cord_internal@absl@@$0A@$0A@@Cr@std@@QEAA@$$QEA$$T@Z @@ -31,6 +36,7 @@ ??$?0$$TX@?$__compressed_pair_elem@PEAUTransition@cctz@time_internal@absl@@$0A@$0A@@Cr@std@@QEAA@$$QEA$$T@Z ??$?0$$TX@?$__compressed_pair_elem@PEAUTransitionType@cctz@time_internal@absl@@$0A@$0A@@Cr@std@@QEAA@$$QEA$$T@Z ??$?0$$TX@?$__compressed_pair_elem@PEAUViableSubstitution@strings_internal@absl@@$0A@$0A@@Cr@std@@QEAA@$$QEA$$T@Z + ??$?0$$TX@?$__compressed_pair_elem@PEAV?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@$0A@$0A@@Cr@std@@QEAA@$$QEA$$T@Z ??$?0$$TX@?$__compressed_pair_elem@PEAVFormatArgImpl@str_format_internal@absl@@$0A@$0A@@Cr@std@@QEAA@$$QEA$$T@Z ??$?0$$V@?$__temp_value@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAV?$allocator@UTransition@cctz@time_internal@absl@@@12@@Z ??$?0$$V@?$__temp_value@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@12@@Z @@ -39,29 +45,33 @@ ??$?0$00X@?$unique_ptr@$$BY0A@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QEAA@XZ ??$?0$00X@?$unique_ptr@$$CBVImpl@time_zone@cctz@time_internal@absl@@U?$default_delete@$$CBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@PEBVImpl@time_zone@cctz@time_internal@absl@@@Z ??$?0$00X@?$unique_ptr@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEAA@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@$$QEAV?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@12@@Z + ??$?0$00X@?$unique_ptr@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEAA@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@$$QEAV?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@12@@Z ??$?0$00X@?$unique_ptr@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@@Cr@std@@QEAA@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@12@$$QEAV?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@12@@Z ??$?0$00X@?$unique_ptr@ULogMessageData@LogMessage@log_internal@absl@@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@@Cr@std@@QEAA@PEAULogMessageData@LogMessage@log_internal@absl@@@Z ??$?0$00X@?$unique_ptr@UThreadIdentity@base_internal@absl@@P6AXPEAX@Z@Cr@std@@QEAA@PEAUThreadIdentity@base_internal@absl@@AEBQ6AXPEAX@Z@Z ??$?0$00X@?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEAA@$$T@Z ??$?0$00X@?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEAA@PEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Z ??$?0$00X@?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEAA@XZ + ??$?0$00X@?$unique_ptr@VFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@PEAVFallbackCrcMemcpyEngine@crc_internal@absl@@@Z ??$?0$00X@?$unique_ptr@VTimeZoneIf@cctz@time_internal@absl@@U?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@PEAVTimeZoneIf@cctz@time_internal@absl@@@Z ??$?0$00X@?$unique_ptr@VTimeZoneInfo@cctz@time_internal@absl@@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@PEAVTimeZoneInfo@cctz@time_internal@absl@@@Z ??$?0$00X@?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$T@Z ??$?0$00X@?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@PEAVZoneInfoSource@cctz@time_internal@absl@@@Z ??$?0$0A@$00$$ZAEBVstring_view@absl@@AEBH$$Z$S$$Z$$V$$ZAEBV01@AEBH@?$__tuple_impl@U?$__tuple_indices@$0A@$00@Cr@std@@AEBVstring_view@absl@@AEBH@Cr@std@@QEAA@U?$__tuple_indices@$0A@$00@12@U?$__tuple_types@AEBVstring_view@absl@@AEBH@12@U?$__tuple_indices@$S@12@U?$__tuple_types@$$V@12@AEBVstring_view@absl@@AEBH@Z - ??$?0AEAI$0A@@?$optional@I@absl@@QEAA@AEAI@Z - ??$?0AEAI@?$optional_data_dtor_base@I$00@optional_internal@absl@@IEAA@Uin_place_t@2@AEAI@Z ??$?0AEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@@?$__compressed_pair@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEAA@AEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@$$QEAV?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@12@@Z ??$?0AEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@X@?$__compressed_pair_elem@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@$0A@$0A@@Cr@std@@QEAA@AEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ??$?0AEAPEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@12@@?$__compressed_pair@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@@Cr@std@@QEAA@AEAPEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@12@$$QEAV?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@12@@Z ??$?0AEAPEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@X@?$__compressed_pair_elem@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@$0A@$0A@@Cr@std@@QEAA@AEAPEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@12@@Z ??$?0AEAPEAULogMessageData@LogMessage@log_internal@absl@@U__value_init_tag@Cr@std@@@?$__compressed_pair@PEAULogMessageData@LogMessage@log_internal@absl@@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAPEAULogMessageData@LogMessage@log_internal@absl@@$$QEAU__value_init_tag@12@@Z ??$?0AEAPEAULogMessageData@LogMessage@log_internal@absl@@X@?$__compressed_pair_elem@PEAULogMessageData@LogMessage@log_internal@absl@@$0A@$0A@@Cr@std@@QEAA@AEAPEAULogMessageData@LogMessage@log_internal@absl@@@Z + ??$?0AEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@?$__compressed_pair@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEAA@AEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@$$QEAV?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@12@@Z + ??$?0AEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@X@?$__compressed_pair_elem@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@$0A@$0A@@Cr@std@@QEAA@AEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ??$?0AEAPEAUThreadIdentity@base_internal@absl@@AEBQ6AXPEAX@Z@?$__compressed_pair@PEAUThreadIdentity@base_internal@absl@@P6AXPEAX@Z@Cr@std@@QEAA@AEAPEAUThreadIdentity@base_internal@absl@@AEBQ6AXPEAX@Z@Z ??$?0AEAPEAUThreadIdentity@base_internal@absl@@X@?$__compressed_pair_elem@PEAUThreadIdentity@base_internal@absl@@$0A@$0A@@Cr@std@@QEAA@AEAPEAUThreadIdentity@base_internal@absl@@@Z ??$?0AEAPEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U__value_init_tag@Cr@std@@@?$__compressed_pair@PEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEAA@AEAPEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@$$QEAU__value_init_tag@12@@Z ??$?0AEAPEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@X@?$__compressed_pair_elem@PEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@$0A@$0A@@Cr@std@@QEAA@AEAPEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Z + ??$?0AEAPEAVFallbackCrcMemcpyEngine@crc_internal@absl@@U__value_init_tag@Cr@std@@@?$__compressed_pair@PEAVFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAPEAVFallbackCrcMemcpyEngine@crc_internal@absl@@$$QEAU__value_init_tag@12@@Z + ??$?0AEAPEAVFallbackCrcMemcpyEngine@crc_internal@absl@@X@?$__compressed_pair_elem@PEAVFallbackCrcMemcpyEngine@crc_internal@absl@@$0A@$0A@@Cr@std@@QEAA@AEAPEAVFallbackCrcMemcpyEngine@crc_internal@absl@@@Z ??$?0AEAPEAVTimeZoneIf@cctz@time_internal@absl@@U__value_init_tag@Cr@std@@@?$__compressed_pair@PEAVTimeZoneIf@cctz@time_internal@absl@@U?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAPEAVTimeZoneIf@cctz@time_internal@absl@@$$QEAU__value_init_tag@12@@Z ??$?0AEAPEAVTimeZoneIf@cctz@time_internal@absl@@X@?$__compressed_pair_elem@PEAVTimeZoneIf@cctz@time_internal@absl@@$0A@$0A@@Cr@std@@QEAA@AEAPEAVTimeZoneIf@cctz@time_internal@absl@@@Z ??$?0AEAPEAVTimeZoneInfo@cctz@time_internal@absl@@U__value_init_tag@Cr@std@@@?$__compressed_pair@PEAVTimeZoneInfo@cctz@time_internal@absl@@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAPEAVTimeZoneInfo@cctz@time_internal@absl@@$$QEAU__value_init_tag@12@@Z @@ -74,6 +84,7 @@ ??$?0AEAV?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@$$T$00@?$CompressedTuple@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@PEAPEAUCordRep@cord_internal@absl@@@container_internal@absl@@QEAA@AEAV?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@$$QEA$$T@Z ??$?0AEAV?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@$$T@?$CompressedTupleImpl@V?$CompressedTuple@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@PEAPEAUCordRep@cord_internal@absl@@@container_internal@absl@@U?$integer_sequence@_K$0A@$00@3@$00@internal_compressed_tuple@container_internal@absl@@QEAA@Uin_place_t@3@AEAV?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@$$QEA$$T@Z ??$?0AEAV?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@?$Storage@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@$0A@$00@internal_compressed_tuple@container_internal@absl@@QEAA@Uin_place_t@3@AEAV?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@Z + ??$?0AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@X@?$__compressed_pair_elem@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@$00$0A@@Cr@std@@QEAA@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@12@@Z ??$?0AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@X@?$__compressed_pair_elem@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@$00$0A@@Cr@std@@QEAA@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@12@@Z ??$?0AEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@$$T$00@?$CompressedTuple@V?$allocator@PEAVLogSink@absl@@@Cr@std@@PEAPEAVLogSink@absl@@@container_internal@absl@@QEAA@AEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@$$QEA$$T@Z ??$?0AEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@$$T@?$CompressedTupleImpl@V?$CompressedTuple@V?$allocator@PEAVLogSink@absl@@@Cr@std@@PEAPEAVLogSink@absl@@@container_internal@absl@@U?$integer_sequence@_K$0A@$00@3@$00@internal_compressed_tuple@container_internal@absl@@QEAA@Uin_place_t@3@AEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@$$QEA$$T@Z @@ -107,6 +118,7 @@ ??$?0HU__default_init_tag@Cr@std@@@?$__compressed_pair@_KV?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@Cr@std@@@Cr@std@@QEAA@$$QEAH$$QEAU__default_init_tag@12@@Z ??$?0HU__default_init_tag@Cr@std@@@?$__compressed_pair@_KV?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@QEAA@$$QEAH$$QEAU__default_init_tag@12@@Z ??$?0HU__default_init_tag@Cr@std@@@?$__compressed_pair@_KV?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEAH$$QEAU__default_init_tag@12@@Z + ??$?0HU__default_init_tag@Cr@std@@@?$__compressed_pair@_KV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEAH$$QEAU__default_init_tag@12@@Z ??$?0I$0A@@?$optional@I@absl@@QEAA@$$QEAI@Z ??$?0I@?$Storage@_K$00$0A@@internal_compressed_tuple@container_internal@absl@@QEAA@Uin_place_t@3@$$QEAI@Z ??$?0I@?$optional_data_dtor_base@I$00@optional_internal@absl@@IEAA@Uin_place_t@2@$$QEAI@Z @@ -114,11 +126,13 @@ ??$?0MU__default_init_tag@Cr@std@@@?$__compressed_pair@MV?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@Cr@std@@@Cr@std@@QEAA@$$QEAM$$QEAU__default_init_tag@12@@Z ??$?0PEAI@?$SaltedSeedSeq@Vseed_seq@Cr@std@@@random_internal@absl@@QEAA@PEAI0@Z ??$?0PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV01234@$0A@@?$pair@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV12345@@Cr@std@@QEAA@$$QEAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@0@Z + ??$?0PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU0123@$0A@@?$pair@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU1234@@Cr@std@@QEAA@$$QEAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@0@Z ??$?0PEAPEAVCordzHandle@cord_internal@absl@@PEAPEAV012@$0A@@?$pair@PEAPEAVCordzHandle@cord_internal@absl@@PEAPEAV123@@Cr@std@@QEAA@$$QEAPEAPEAVCordzHandle@cord_internal@absl@@0@Z ??$?0PEAPEAVLogSink@absl@@@?$__wrap_iter@PEBQEAVLogSink@absl@@@Cr@std@@QEAA@AEBV?$__wrap_iter@PEAPEAVLogSink@absl@@@12@PEAX@Z ??$?0PEAPEAVLogSink@absl@@PEAPEAV01@$0A@@?$pair@PEAPEAVLogSink@absl@@PEAPEAV12@@Cr@std@@QEAA@$$QEAPEAPEAVLogSink@absl@@0@Z ??$?0PEAPEBVCordzHandle@cord_internal@absl@@PEAPEBV012@$0A@@?$pair@PEAPEBVCordzHandle@cord_internal@absl@@PEAPEBV123@@Cr@std@@QEAA@$$QEAPEAPEBVCordzHandle@cord_internal@absl@@0@Z ??$?0PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PEAU0123@$0A@@?$pair@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PEAU1234@@Cr@std@@QEAA@$$QEAPEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@0@Z + ??$?0PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAU0123@PEAPEAU0123@@?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@Cr@std@@QEAA@AEBV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@12@PEAX@Z ??$?0PEAUTransition@cctz@time_internal@absl@@@?$__wrap_iter@PEBUTransition@cctz@time_internal@absl@@@Cr@std@@QEAA@AEBV?$__wrap_iter@PEAUTransition@cctz@time_internal@absl@@@12@PEAX@Z ??$?0PEAUTransition@cctz@time_internal@absl@@PEAU0123@$0A@@?$pair@PEAUTransition@cctz@time_internal@absl@@PEAU1234@@Cr@std@@QEAA@$$QEAPEAUTransition@cctz@time_internal@absl@@0@Z ??$?0PEAUTransitionType@cctz@time_internal@absl@@@?$__wrap_iter@PEBUTransitionType@cctz@time_internal@absl@@@Cr@std@@QEAA@AEBV?$__wrap_iter@PEAUTransitionType@cctz@time_internal@absl@@@12@PEAX@Z @@ -126,11 +140,16 @@ ??$?0PEAUViableSubstitution@strings_internal@absl@@PEAU012@$0A@@?$pair@PEAUViableSubstitution@strings_internal@absl@@PEAU123@@Cr@std@@QEAA@$$QEAPEAUViableSubstitution@strings_internal@absl@@0@Z ??$?0PEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@?$__compressed_pair@PEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEAPEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@$$QEAU?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@12@@Z ??$?0PEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@X@?$__compressed_pair_elem@PEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@$0A@$0A@@Cr@std@@QEAA@$$QEAPEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Z + ??$?0PEAVFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@?$__compressed_pair@PEAVCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEAPEAVFallbackCrcMemcpyEngine@crc_internal@absl@@$$QEAU?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@12@@Z + ??$?0PEAVFallbackCrcMemcpyEngine@crc_internal@absl@@X@?$__compressed_pair_elem@PEAVCrcMemcpyEngine@crc_internal@absl@@$0A@$0A@@Cr@std@@QEAA@$$QEAPEAVFallbackCrcMemcpyEngine@crc_internal@absl@@@Z ??$?0PEBD@FormatArgImpl@str_format_internal@absl@@QEAA@AEBQEBD@Z + ??$?0PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU0123@$0A@@?$pair@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@@Cr@std@@QEAA@$$QEAPEBUPrefixCrc@CrcCordState@crc_internal@absl@@$$QEAPEAU3456@@Z + ??$?0PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU0123@$0A@@?$pair@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@@Cr@std@@QEAA@$$QEAPEBUPrefixCrc@CrcCordState@crc_internal@absl@@0@Z ??$?0PEBVFormatArgImpl@str_format_internal@absl@@PEAV012@$0A@@?$pair@PEBVFormatArgImpl@str_format_internal@absl@@PEAV123@@Cr@std@@QEAA@$$QEAPEBVFormatArgImpl@str_format_internal@absl@@$$QEAPEAV345@@Z ??$?0PEBVFormatArgImpl@str_format_internal@absl@@PEBV012@$0A@@?$pair@PEBVFormatArgImpl@str_format_internal@absl@@PEBV123@@Cr@std@@QEAA@$$QEAPEBVFormatArgImpl@str_format_internal@absl@@0@Z ??$?0U?$array@D$0DKJI@@Cr@std@@XU012@H@?$Span@D@absl@@QEAA@AEAU?$array@D$0DKJI@@Cr@std@@@Z ??$?0U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@X@?$__compressed_pair_elem@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@$$QEAU?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@12@@Z + ??$?0U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@X@?$__compressed_pair_elem@U?$default_delete@VCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@$$QEAU?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@12@@Z ??$?0USynchEvent@absl@@@Condition@absl@@QEAA@P6A_NPEAUSynchEvent@1@@Z0@Z ??$?0U__value_init_tag@Cr@std@@U012@@?$__compressed_pair@PEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QEAA@$$QEAU__value_init_tag@12@0@Z ??$?0U__value_init_tag@Cr@std@@U012@@?$__compressed_pair@PEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEAU__value_init_tag@12@0@Z @@ -182,6 +201,7 @@ ??$?0V?$Span@I@absl@@XV01@$0A@@?$Span@I@absl@@QEAA@AEAV01@@Z ??$?0V?$Span@VFormatArgImpl@str_format_internal@absl@@@absl@@XV01@$0A@@?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@absl@@QEAA@AEBV?$Span@VFormatArgImpl@str_format_internal@absl@@@1@@Z ??$?0V?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@X@?$__compressed_pair_elem@V?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@$00$0A@@Cr@std@@QEAA@$$QEAV?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@12@@Z + ??$?0V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@X@?$__compressed_pair_elem@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@$00$0A@@Cr@std@@QEAA@$$QEAV?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@12@@Z ??$?0V?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@AEA_N$0A@@?$pair@V?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@_N@Cr@std@@QEAA@$$QEAV?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@12@AEA_N@Z ??$?0V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@X@?$__compressed_pair_elem@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@$00$0A@@Cr@std@@QEAA@$$QEAV?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@12@@Z ??$?0V?$allocator@D@Cr@std@@@AlphaNum@absl@@QEAA@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z @@ -211,6 +231,8 @@ ??$?0V?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@XV012@H@?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@absl@@QEAA@AEBV?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@@Z ??$?0VBufferRawSink@str_format_internal@absl@@$0A@@FormatRawSinkImpl@str_format_internal@absl@@QEAA@PEAVBufferRawSink@12@@Z ??$?0VFILERawSink@str_format_internal@absl@@$0A@@FormatRawSinkImpl@str_format_internal@absl@@QEAA@PEAVFILERawSink@12@@Z + ??$?0VFallbackCrcMemcpyEngine@crc_internal@absl@@@?$default_delete@VCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@QEAA@AEBU?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@12@PEAX@Z + ??$?0VFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@XX@?$unique_ptr@VCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEAV?$unique_ptr@VFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@12@@Z ??$?0Vstring_view@absl@@@FormatArgImpl@str_format_internal@absl@@QEAA@AEBVstring_view@2@@Z ??$?0Vstring_view@absl@@XV01@$0A@@?$Span@$$CBD@absl@@QEAA@AEBVstring_view@1@@Z ??$?0_J@FormatArgImpl@str_format_internal@absl@@QEAA@AEB_J@Z @@ -252,6 +274,7 @@ ??$?DN@absl@@YA?AVDuration@0@NV10@@Z ??$?D_J@absl@@YA?AVDuration@0@_JV10@@Z ??$?GPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV01234@@Cr@std@@YA_JAEBV?$move_iterator@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@01@0@Z + ??$?GPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU0123@@Cr@std@@YA_JAEBV?$move_iterator@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@01@0@Z ??$?GPEAUTransition@cctz@time_internal@absl@@PEAU0123@@Cr@std@@YA_JAEBV?$move_iterator@PEAUTransition@cctz@time_internal@absl@@@01@0@Z ??$?GPEAUTransitionType@cctz@time_internal@absl@@PEAU0123@@Cr@std@@YA_JAEBV?$move_iterator@PEAUTransitionType@cctz@time_internal@absl@@@01@0@Z ??$?GPEBQEAVLogSink@absl@@PEBQEAV01@@Cr@std@@YA_JAEBV?$__wrap_iter@PEBQEAVLogSink@absl@@@01@0@Z @@ -273,6 +296,7 @@ ??$?RAEA_J@?$AtomicHook@P6AX_J@Z@base_internal@absl@@QEBAXAEA_J@Z ??$?RAEBQEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@__fn@__iter_move@ranges@Cr@std@@QEBA$$QEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEBQEAPEAPEBV56789@@Z ??$?RAEBQEAPEAUCordRep@cord_internal@absl@@@__fn@__iter_move@ranges@Cr@std@@QEBA$$QEAPEAUCordRep@cord_internal@absl@@AEBQEAPEAU567@@Z + ??$?RAEBQEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@__fn@__iter_move@ranges@Cr@std@@QEBA$$QEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEBQEAPEAU5678@@Z ??$?RAEBQEAPEAVLogSink@absl@@@__fn@__iter_move@ranges@Cr@std@@QEBA$$QEAPEAVLogSink@absl@@AEBQEAPEAV56@@Z ??$?RAEBQEAUPayload@status_internal@absl@@@__fn@__iter_move@ranges@Cr@std@@QEBA$$QEAUPayload@status_internal@absl@@AEBQEAU567@@Z ??$?RAEBQEAUTransition@cctz@time_internal@absl@@@__fn@__iter_move@ranges@Cr@std@@QEBA$$QEAUTransition@cctz@time_internal@absl@@AEBQEAU5678@@Z @@ -340,6 +364,19 @@ ??$ConsumeConversion@$00@str_format_internal@absl@@YAPEBDPEBDQEBDPEAUUnboundConversion@01@PEAH@Z ??$ConsumeConversion@$0A@@str_format_internal@absl@@YAPEBDPEBDQEBDPEAUUnboundConversion@01@PEAH@Z ??$Convert@VFormatArgImpl@str_format_internal@absl@@@FormatArgImplFriend@str_format_internal@absl@@SA_NVFormatArgImpl@12@VFormatConversionSpecImpl@12@PEAVFormatSinkImpl@12@@Z + ??$ConvertIntArg@C@str_format_internal@absl@@YA_NCVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@D@str_format_internal@absl@@YA_NDVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@E@str_format_internal@absl@@YA_NEVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@F@str_format_internal@absl@@YA_NFVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@G@str_format_internal@absl@@YA_NGVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@H@str_format_internal@absl@@YA_NHVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@I@str_format_internal@absl@@YA_NIVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@J@str_format_internal@absl@@YA_NJVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@K@str_format_internal@absl@@YA_NKVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@Vint128@absl@@@str_format_internal@absl@@YA_NVint128@1@VFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@Vuint128@absl@@@str_format_internal@absl@@YA_NVuint128@1@VFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@_J@str_format_internal@absl@@YA_N_JVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@_K@str_format_internal@absl@@YA_N_KVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z ??$CreateWithCustomLimitImpl@$$V@CordBuffer@absl@@CA?AV01@_K0@Z ??$Dispatch@C@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z ??$Dispatch@D@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z @@ -488,6 +525,7 @@ ??$MakeSpan@$SV?$InlinedVector@PEAVLogSink@absl@@$0BA@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@absl@@@absl@@YA?AV?$Span@PEAVLogSink@absl@@@0@AEAV?$InlinedVector@PEAVLogSink@absl@@$0BA@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@0@@Z ??$MakeSpan@$SV?$vector@PEAVLogSink@absl@@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@@absl@@YA?AV?$Span@PEAVLogSink@absl@@@0@AEAV?$vector@PEAVLogSink@absl@@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@@Z ??$MakeSpan@$SVFormatArgImpl@str_format_internal@absl@@@absl@@YA?AV?$Span@VFormatArgImpl@str_format_internal@absl@@@0@PEAVFormatArgImpl@str_format_internal@0@_K@Z + ??$MaskOfLength@I@crc_internal@absl@@YAIH@Z ??$Merge@$00@CordRepBtree@cord_internal@absl@@CAPEAV012@PEAV012@0@Z ??$Merge@$0A@@CordRepBtree@cord_internal@absl@@CAPEAV012@PEAV012@0@Z ??$Microseconds@H$0A@@absl@@YA?AVDuration@0@H@Z @@ -533,6 +571,8 @@ ??$ReadCallback@P6A_NPEAUSynchEvent@absl@@@Z@Condition@absl@@AEBAXPEAP6A_NPEAUSynchEvent@1@@Z@Z ??$ReadCallback@P6A_NPEBU?$atomic@_N@Cr@std@@@Z@Condition@absl@@AEBAXPEAP6A_NPEBU?$atomic@_N@Cr@std@@@Z@Z ??$Register@AEB_JAEA_K@?$SampleRecorder@UHashtablezInfo@container_internal@absl@@@profiling_internal@absl@@QEAAPEAUHashtablezInfo@container_internal@2@AEB_JAEA_K@Z + ??$RotateRight@I@crc_internal@absl@@YAIIHH@Z + ??$RoundUp@$03@crc_internal@absl@@YAPEBEPEBE@Z ??$SNPrintF@DHHH@absl@@YAHPEAD_KAEBV?$FormatSpecTemplate@$0BPPPL@$0JPPPL@$0JPPPL@$0JPPPL@@str_format_internal@0@AEBDAEBH44@Z ??$STLStringResizeUninitialized@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@X@strings_internal@absl@@YAXPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@_K@Z ??$STLStringResizeUninitializedAmortized@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@strings_internal@absl@@YAXPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@_K@Z @@ -598,6 +638,7 @@ ??$__advance@PEBUTransition@cctz@time_internal@absl@@@Cr@std@@YAXAEAPEBUTransition@cctz@time_internal@absl@@_JUrandom_access_iterator_tag@01@@Z ??$__advance@PEBVFormatArgImpl@str_format_internal@absl@@@Cr@std@@YAXAEAPEBVFormatArgImpl@str_format_internal@absl@@_JUrandom_access_iterator_tag@01@@Z ??$__allocate_at_least@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@01@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@01@_K@Z + ??$__allocate_at_least@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@01@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@01@_K@Z ??$__allocate_at_least@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PEAPEAVCordzHandle@cord_internal@absl@@@01@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@01@_K@Z ??$__allocate_at_least@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PEAPEAVLogSink@absl@@@01@AEAV?$allocator@PEAVLogSink@absl@@@01@_K@Z ??$__allocate_at_least@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PEAPEBVCordzHandle@cord_internal@absl@@@01@AEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@01@_K@Z @@ -606,8 +647,10 @@ ??$__allocate_at_least@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PEAUTransitionType@cctz@time_internal@absl@@@01@AEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@01@_K@Z ??$__allocate_at_least@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PEAUViableSubstitution@strings_internal@absl@@@01@AEAV?$allocator@UViableSubstitution@strings_internal@absl@@@01@_K@Z ??$__allocate_at_least@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PEAVFormatArgImpl@str_format_internal@absl@@@01@AEAV?$allocator@VFormatArgImpl@str_format_internal@absl@@@01@_K@Z + ??$__append@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@Cr@std@@@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AEAAXV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@12@0PEAX@Z ??$__construct_at_end@PEBVFormatArgImpl@str_format_internal@absl@@$0A@@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@AEAAXPEBVFormatArgImpl@str_format_internal@absl@@0_K@Z ??$__construct_at_end@V?$move_iterator@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXV?$move_iterator@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@12@0@Z + ??$__construct_at_end@V?$move_iterator@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXV?$move_iterator@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@12@0@Z ??$__construct_at_end@V?$move_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@@?$__split_buffer@UTransition@cctz@time_internal@absl@@AEAV?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXV?$move_iterator@PEAUTransition@cctz@time_internal@absl@@@12@0@Z ??$__construct_at_end@V?$move_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@@?$__split_buffer@UTransitionType@cctz@time_internal@absl@@AEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXV?$move_iterator@PEAUTransitionType@cctz@time_internal@absl@@@12@0@Z ??$__construct_node_hash@AEBUpiecewise_construct_t@Cr@std@@V?$tuple@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@V?$tuple@$$V@23@@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@AEAA?AV?$unique_ptr@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@@12@_KAEBUpiecewise_construct_t@12@$$QEAV?$tuple@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@12@$$QEAV?$tuple@$$V@12@@Z @@ -619,7 +662,9 @@ ??$__construct_one_at_end@AEBQEBVCordzHandle@cord_internal@absl@@@?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@AEAAXAEBQEBVCordzHandle@cord_internal@absl@@@Z ??$__construct_one_at_end@AEBUTransition@cctz@time_internal@absl@@@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAXAEBUTransition@cctz@time_internal@absl@@@Z ??$__construct_one_at_end@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@?$vector@UConversionItem@ParsedFormatBase@str_format_internal@absl@@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@AEAAX$$QEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@@Z + ??$__copy@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@PEAU1234@$0A@@Cr@std@@YA?AU?$pair@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@@01@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@0PEAU3456@@Z ??$__copy@PEBVFormatArgImpl@str_format_internal@absl@@PEBV123@PEAV123@$0A@@Cr@std@@YA?AU?$pair@PEBVFormatArgImpl@str_format_internal@absl@@PEAV123@@01@PEBVFormatArgImpl@str_format_internal@absl@@0PEAV345@@Z + ??$__copy_impl@$$CBUPrefixCrc@CrcCordState@crc_internal@absl@@U1234@X@Cr@std@@YA?AU?$pair@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@@01@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@0PEAU3456@@Z ??$__copy_impl@$$CBVFormatArgImpl@str_format_internal@absl@@V123@X@Cr@std@@YA?AU?$pair@PEBVFormatArgImpl@str_format_internal@absl@@PEAV123@@01@PEBVFormatArgImpl@str_format_internal@absl@@0PEAV345@@Z ??$__cxx_atomic_compare_exchange_strong@PEAVTimeZone@absl@@@Cr@std@@YA_NPEAU?$__cxx_atomic_base_impl@PEAVTimeZone@absl@@@01@PEAPEAVTimeZone@absl@@PEAV34@W4memory_order@01@3@Z ??$__cxx_atomic_compare_exchange_weak@PEAUHashtablezInfo@container_internal@absl@@@Cr@std@@YA_NPEAU?$__cxx_atomic_base_impl@PEAUHashtablezInfo@container_internal@absl@@@01@PEAPEAUHashtablezInfo@container_internal@absl@@PEAU345@W4memory_order@01@3@Z @@ -648,6 +693,7 @@ ??$__debug_db_insert_c@V?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@YAXPEAV?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@01@@Z ??$__debug_db_insert_c@V?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@YAXPEAV?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@01@@Z ??$__debug_db_insert_c@V?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@YAXPEAV?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@01@@Z + ??$__debug_db_insert_c@V?$vector@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@V?$allocator@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@@23@@Cr@std@@@Cr@std@@YAXPEAV?$vector@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@V?$allocator@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@@23@@01@@Z ??$__debug_db_insert_c@V?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@YAXPEAV?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@01@@Z ??$__debug_db_invalidate_all@V?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@@Cr@std@@YAXPEAV?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@01@@Z ??$__debug_db_invalidate_all@V?$vector@PEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@YAXPEAV?$vector@PEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@01@@Z @@ -660,12 +706,14 @@ ??$__debug_db_invalidate_all@V?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@YAXPEAV?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@01@@Z ??$__destroy_at@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@$0A@@Cr@std@@YAXPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ??$__destroy_at@PEAUCordRep@cord_internal@absl@@$0A@@Cr@std@@YAXPEAPEAUCordRep@cord_internal@absl@@@Z + ??$__destroy_at@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@$0A@@Cr@std@@YAXPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ??$__destroy_at@PEAVCordzHandle@cord_internal@absl@@$0A@@Cr@std@@YAXPEAPEAVCordzHandle@cord_internal@absl@@@Z ??$__destroy_at@PEAVLogSink@absl@@$0A@@Cr@std@@YAXPEAPEAVLogSink@absl@@@Z ??$__destroy_at@PEBVCordzHandle@cord_internal@absl@@$0A@@Cr@std@@YAXPEAPEBVCordzHandle@cord_internal@absl@@@Z ??$__destroy_at@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@$0A@@Cr@std@@YAXPEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@01@@Z ??$__destroy_at@UConversionItem@ParsedFormatBase@str_format_internal@absl@@$0A@@Cr@std@@YAXPEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@@Z ??$__destroy_at@UPayload@status_internal@absl@@$0A@@Cr@std@@YAXPEAUPayload@status_internal@absl@@@Z + ??$__destroy_at@UPrefixCrc@CrcCordState@crc_internal@absl@@$0A@@Cr@std@@YAXPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ??$__destroy_at@UTransition@cctz@time_internal@absl@@$0A@@Cr@std@@YAXPEAUTransition@cctz@time_internal@absl@@@Z ??$__destroy_at@UTransitionType@cctz@time_internal@absl@@$0A@@Cr@std@@YAXPEAUTransitionType@cctz@time_internal@absl@@@Z ??$__destroy_at@UViableSubstitution@strings_internal@absl@@$0A@@Cr@std@@YAXPEAUViableSubstitution@strings_internal@absl@@@Z @@ -673,7 +721,9 @@ ??$__distance@PEBUPayload@status_internal@absl@@@Cr@std@@YA_JPEBUPayload@status_internal@absl@@0Urandom_access_iterator_tag@01@@Z ??$__distance@PEBUTransition@cctz@time_internal@absl@@@Cr@std@@YA_JPEBUTransition@cctz@time_internal@absl@@0Urandom_access_iterator_tag@01@@Z ??$__distance@PEBVFormatArgImpl@str_format_internal@absl@@@Cr@std@@YA_JPEBVFormatArgImpl@str_format_internal@absl@@0Urandom_access_iterator_tag@01@@Z + ??$__distance@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@Cr@std@@@Cr@std@@YA_JV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@01@0Urandom_access_iterator_tag@01@@Z ??$__distance@V?$move_iterator@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YA_JV?$move_iterator@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@01@0Urandom_access_iterator_tag@01@@Z + ??$__distance@V?$move_iterator@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@YA_JV?$move_iterator@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@01@0Urandom_access_iterator_tag@01@@Z ??$__distance@V?$move_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YA_JV?$move_iterator@PEAUTransition@cctz@time_internal@absl@@@01@0Urandom_access_iterator_tag@01@@Z ??$__distance@V?$move_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YA_JV?$move_iterator@PEAUTransitionType@cctz@time_internal@absl@@@01@0Urandom_access_iterator_tag@01@@Z ??$__do_rehash@$00@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@AEAAX_K@Z @@ -686,6 +736,7 @@ ??$__launder@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YAPEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@01@PEAU201@@Z ??$__lower_bound_impl@U_ClassicAlgPolicy@Cr@std@@PEBUTransition@cctz@time_internal@absl@@PEBU4567@U4567@U__identity@23@UByUnixTime@4567@@Cr@std@@YAPEBUTransition@cctz@time_internal@absl@@PEBU2345@0AEBU2345@AEAUByUnixTime@2345@AEAU__identity@01@@Z ??$__move@U_ClassicAlgPolicy@Cr@std@@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV45678@PEAPEAPEBV45678@@Cr@std@@YA?AU?$pair@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV12345@@01@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@00@Z + ??$__move@U_ClassicAlgPolicy@Cr@std@@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU4567@PEAPEAU4567@@Cr@std@@YA?AU?$pair@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU1234@@01@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@00@Z ??$__move@U_ClassicAlgPolicy@Cr@std@@PEAPEAVLogSink@absl@@PEAPEAV45@PEAPEAV45@@Cr@std@@YA?AU?$pair@PEAPEAVLogSink@absl@@PEAPEAV12@@01@PEAPEAVLogSink@absl@@00@Z ??$__move@U_ClassicAlgPolicy@Cr@std@@PEAUTransition@cctz@time_internal@absl@@PEAU4567@PEAU4567@@Cr@std@@YA?AU?$pair@PEAUTransition@cctz@time_internal@absl@@PEAU1234@@01@PEAUTransition@cctz@time_internal@absl@@00@Z ??$__move@U_ClassicAlgPolicy@Cr@std@@PEAUTransitionType@cctz@time_internal@absl@@PEAU4567@PEAU4567@@Cr@std@@YA?AU?$pair@PEAUTransitionType@cctz@time_internal@absl@@PEAU1234@@01@PEAUTransitionType@cctz@time_internal@absl@@00@Z @@ -697,9 +748,11 @@ ??$__move@U_ClassicAlgPolicy@Cr@std@@V?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@23@V423@V423@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@V123@@01@V?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@01@00@Z ??$__move@U_ClassicAlgPolicy@Cr@std@@V?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@23@V423@V423@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@Cr@std@@V123@@01@V?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@01@00@Z ??$__move_backward@U_ClassicAlgPolicy@Cr@std@@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV45678@@Cr@std@@YAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV23456@00@Z + ??$__move_backward@U_ClassicAlgPolicy@Cr@std@@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU4567@@Cr@std@@YAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU2345@00@Z ??$__move_backward@U_ClassicAlgPolicy@Cr@std@@PEAUTransition@cctz@time_internal@absl@@PEAU4567@@Cr@std@@YAPEAUTransition@cctz@time_internal@absl@@PEAU2345@00@Z ??$__move_backward@U_ClassicAlgPolicy@Cr@std@@PEAUTransitionType@cctz@time_internal@absl@@PEAU4567@@Cr@std@@YAPEAUTransitionType@cctz@time_internal@absl@@PEAU2345@00@Z ??$__move_backward_impl@U_ClassicAlgPolicy@Cr@std@@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEBV45678@@Cr@std@@YAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV23456@00@Z + ??$__move_backward_impl@U_ClassicAlgPolicy@Cr@std@@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU4567@@Cr@std@@YAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU2345@00@Z ??$__move_backward_impl@U_ClassicAlgPolicy@Cr@std@@UTransition@cctz@time_internal@absl@@U4567@@Cr@std@@YAPEAUTransition@cctz@time_internal@absl@@PEAU2345@00@Z ??$__move_backward_impl@U_ClassicAlgPolicy@Cr@std@@UTransitionType@cctz@time_internal@absl@@U4567@@Cr@std@@YAPEAUTransitionType@cctz@time_internal@absl@@PEAU2345@00@Z ??$__move_impl@U_ClassicAlgPolicy@Cr@std@@PEAPEAVCordzHandle@cord_internal@absl@@PEAPEAV456@$0A@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@Cr@std@@V123@@01@V?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@01@00@Z @@ -707,6 +760,7 @@ ??$__move_impl@U_ClassicAlgPolicy@Cr@std@@PEAPEBVCordzHandle@cord_internal@absl@@PEAPEBV456@$0A@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PEAPEBVCordzHandle@cord_internal@absl@@@Cr@std@@V123@@01@V?$reverse_iterator@PEAPEBVCordzHandle@cord_internal@absl@@@01@00@Z ??$__move_impl@U_ClassicAlgPolicy@Cr@std@@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEBV45678@X@Cr@std@@YA?AU?$pair@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV12345@@01@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@00@Z ??$__move_impl@U_ClassicAlgPolicy@Cr@std@@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PEAU4567@$0A@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@V123@@01@V?$reverse_iterator@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@@01@00@Z + ??$__move_impl@U_ClassicAlgPolicy@Cr@std@@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU4567@X@Cr@std@@YA?AU?$pair@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU1234@@01@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@00@Z ??$__move_impl@U_ClassicAlgPolicy@Cr@std@@PEAUTransition@cctz@time_internal@absl@@PEAU4567@$0A@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@V123@@01@V?$reverse_iterator@PEAUTransition@cctz@time_internal@absl@@@01@00@Z ??$__move_impl@U_ClassicAlgPolicy@Cr@std@@PEAUTransitionType@cctz@time_internal@absl@@PEAU4567@$0A@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@V123@@01@V?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@01@00@Z ??$__move_impl@U_ClassicAlgPolicy@Cr@std@@PEAUViableSubstitution@strings_internal@absl@@PEAU456@$0A@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@Cr@std@@V123@@01@V?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@01@00@Z @@ -724,14 +778,17 @@ ??$__push_back_slow_path@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@?$vector@UConversionItem@ParsedFormatBase@str_format_internal@absl@@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@AEAAX$$QEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@@Z ??$__rehash@$00@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@AEAAX_K@Z ??$__rewrap_iter@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV12345@U?$__unwrap_iter_impl@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@$00@Cr@std@@@Cr@std@@YAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV23456@0@Z + ??$__rewrap_iter@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU1234@U?$__unwrap_iter_impl@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@@Cr@std@@YAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU2345@0@Z ??$__rewrap_iter@PEAPEAVCordzHandle@cord_internal@absl@@PEAPEAV123@U?$__unwrap_iter_impl@PEAPEAVCordzHandle@cord_internal@absl@@$00@Cr@std@@@Cr@std@@YAPEAPEAVCordzHandle@cord_internal@absl@@PEAPEAV234@0@Z ??$__rewrap_iter@PEAPEAVLogSink@absl@@PEAPEAV12@U?$__unwrap_iter_impl@PEAPEAVLogSink@absl@@$00@Cr@std@@@Cr@std@@YAPEAPEAVLogSink@absl@@PEAPEAV23@0@Z ??$__rewrap_iter@PEAPEBVCordzHandle@cord_internal@absl@@PEAPEBV123@U?$__unwrap_iter_impl@PEAPEBVCordzHandle@cord_internal@absl@@$00@Cr@std@@@Cr@std@@YAPEAPEBVCordzHandle@cord_internal@absl@@PEAPEBV234@0@Z ??$__rewrap_iter@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PEAU1234@U?$__unwrap_iter_impl@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@$00@Cr@std@@@Cr@std@@YAPEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PEAU2345@0@Z + ??$__rewrap_iter@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@U?$__unwrap_iter_impl@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@@Cr@std@@YAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU2345@0@Z ??$__rewrap_iter@PEAUTransition@cctz@time_internal@absl@@PEAU1234@U?$__unwrap_iter_impl@PEAUTransition@cctz@time_internal@absl@@$00@Cr@std@@@Cr@std@@YAPEAUTransition@cctz@time_internal@absl@@PEAU2345@0@Z ??$__rewrap_iter@PEAUTransitionType@cctz@time_internal@absl@@PEAU1234@U?$__unwrap_iter_impl@PEAUTransitionType@cctz@time_internal@absl@@$00@Cr@std@@@Cr@std@@YAPEAUTransitionType@cctz@time_internal@absl@@PEAU2345@0@Z ??$__rewrap_iter@PEAUViableSubstitution@strings_internal@absl@@PEAU123@U?$__unwrap_iter_impl@PEAUViableSubstitution@strings_internal@absl@@$00@Cr@std@@@Cr@std@@YAPEAUViableSubstitution@strings_internal@absl@@PEAU234@0@Z ??$__rewrap_iter@PEAVFormatArgImpl@str_format_internal@absl@@PEAV123@U?$__unwrap_iter_impl@PEAVFormatArgImpl@str_format_internal@absl@@$00@Cr@std@@@Cr@std@@YAPEAVFormatArgImpl@str_format_internal@absl@@PEAV234@0@Z + ??$__rewrap_iter@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@U?$__unwrap_iter_impl@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@@Cr@std@@YAPEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU2345@0@Z ??$__rewrap_iter@PEBVFormatArgImpl@str_format_internal@absl@@PEBV123@U?$__unwrap_iter_impl@PEBVFormatArgImpl@str_format_internal@absl@@$00@Cr@std@@@Cr@std@@YAPEBVFormatArgImpl@str_format_internal@absl@@PEBV234@0@Z ??$__rewrap_iter@V?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@Cr@std@@V123@U?$__unwrap_iter_impl@V?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@Cr@std@@$0A@@23@@Cr@std@@YA?AV?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@01@V201@0@Z ??$__rewrap_iter@V?$reverse_iterator@PEAPEAVLogSink@absl@@@Cr@std@@V123@U?$__unwrap_iter_impl@V?$reverse_iterator@PEAPEAVLogSink@absl@@@Cr@std@@$0A@@23@@Cr@std@@YA?AV?$reverse_iterator@PEAPEAVLogSink@absl@@@01@V201@0@Z @@ -740,13 +797,17 @@ ??$__rewrap_iter@V?$reverse_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@V123@U?$__unwrap_iter_impl@V?$reverse_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@$0A@@23@@Cr@std@@YA?AV?$reverse_iterator@PEAUTransition@cctz@time_internal@absl@@@01@V201@0@Z ??$__rewrap_iter@V?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@V123@U?$__unwrap_iter_impl@V?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@$0A@@23@@Cr@std@@YA?AV?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@01@V201@0@Z ??$__rewrap_iter@V?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@Cr@std@@V123@U?$__unwrap_iter_impl@V?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@Cr@std@@$0A@@23@@Cr@std@@YA?AV?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@01@V201@0@Z + ??$__rewrap_range@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@PEBU1234@@Cr@std@@YAPEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU2345@0@Z ??$__rewrap_range@PEBVFormatArgImpl@str_format_internal@absl@@PEBV123@PEBV123@@Cr@std@@YAPEBVFormatArgImpl@str_format_internal@absl@@PEBV234@0@Z + ??$__to_address@$$CBUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@YAPEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU2345@@Z ??$__to_address@$$CBVFormatArgImpl@str_format_internal@absl@@@Cr@std@@YAPEBVFormatArgImpl@str_format_internal@absl@@PEBV234@@Z ??$__to_address@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@YAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV23456@@Z + ??$__to_address@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@YAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU2345@@Z ??$__to_address@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@YAPEAPEAVCordzHandle@cord_internal@absl@@PEAPEAV234@@Z ??$__to_address@PEAVLogSink@absl@@@Cr@std@@YAPEAPEAVLogSink@absl@@PEAPEAV23@@Z ??$__to_address@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@YAPEAPEBVCordzHandle@cord_internal@absl@@PEAPEBV234@@Z ??$__to_address@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@YAPEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PEAU2345@@Z + ??$__to_address@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@YAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU2345@@Z ??$__to_address@UTransition@cctz@time_internal@absl@@@Cr@std@@YAPEAUTransition@cctz@time_internal@absl@@PEAU2345@@Z ??$__to_address@UTransitionType@cctz@time_internal@absl@@@Cr@std@@YAPEAUTransitionType@cctz@time_internal@absl@@PEAU2345@@Z ??$__to_address@UViableSubstitution@strings_internal@absl@@@Cr@std@@YAPEAUViableSubstitution@strings_internal@absl@@PEAU234@@Z @@ -762,14 +823,17 @@ ??$__uninitialized_allocator_move_if_noexcept@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@V?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@23@V423@UTransitionType@cctz@time_internal@absl@@X@Cr@std@@YA?AV?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@01@AEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@01@V201@11@Z ??$__uninitialized_allocator_move_if_noexcept@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@V?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@23@V423@UViableSubstitution@strings_internal@absl@@X@Cr@std@@YA?AV?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@01@AEAV?$allocator@UViableSubstitution@strings_internal@absl@@@01@V201@11@Z ??$__unwrap_iter@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@U?$__unwrap_iter_impl@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV23456@@Z + ??$__unwrap_iter@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@U?$__unwrap_iter_impl@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU2345@@Z ??$__unwrap_iter@PEAPEAVCordzHandle@cord_internal@absl@@U?$__unwrap_iter_impl@PEAPEAVCordzHandle@cord_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPEAPEAVCordzHandle@cord_internal@absl@@PEAPEAV234@@Z ??$__unwrap_iter@PEAPEAVLogSink@absl@@U?$__unwrap_iter_impl@PEAPEAVLogSink@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPEAPEAVLogSink@absl@@PEAPEAV23@@Z ??$__unwrap_iter@PEAPEBVCordzHandle@cord_internal@absl@@U?$__unwrap_iter_impl@PEAPEBVCordzHandle@cord_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPEAPEBVCordzHandle@cord_internal@absl@@PEAPEBV234@@Z ??$__unwrap_iter@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@U?$__unwrap_iter_impl@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PEAU2345@@Z + ??$__unwrap_iter@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@U?$__unwrap_iter_impl@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU2345@@Z ??$__unwrap_iter@PEAUTransition@cctz@time_internal@absl@@U?$__unwrap_iter_impl@PEAUTransition@cctz@time_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPEAUTransition@cctz@time_internal@absl@@PEAU2345@@Z ??$__unwrap_iter@PEAUTransitionType@cctz@time_internal@absl@@U?$__unwrap_iter_impl@PEAUTransitionType@cctz@time_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPEAUTransitionType@cctz@time_internal@absl@@PEAU2345@@Z ??$__unwrap_iter@PEAUViableSubstitution@strings_internal@absl@@U?$__unwrap_iter_impl@PEAUViableSubstitution@strings_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPEAUViableSubstitution@strings_internal@absl@@PEAU234@@Z ??$__unwrap_iter@PEAVFormatArgImpl@str_format_internal@absl@@U?$__unwrap_iter_impl@PEAVFormatArgImpl@str_format_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPEAVFormatArgImpl@str_format_internal@absl@@PEAV234@@Z + ??$__unwrap_iter@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@U?$__unwrap_iter_impl@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU2345@@Z ??$__unwrap_iter@PEBVFormatArgImpl@str_format_internal@absl@@U?$__unwrap_iter_impl@PEBVFormatArgImpl@str_format_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPEBVFormatArgImpl@str_format_internal@absl@@PEBV234@@Z ??$__unwrap_iter@V?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@Cr@std@@U?$__unwrap_iter_impl@V?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@Cr@std@@$0A@@23@$0A@@Cr@std@@YA?AV?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@01@V201@@Z ??$__unwrap_iter@V?$reverse_iterator@PEAPEAVLogSink@absl@@@Cr@std@@U?$__unwrap_iter_impl@V?$reverse_iterator@PEAPEAVLogSink@absl@@@Cr@std@@$0A@@23@$0A@@Cr@std@@YA?AV?$reverse_iterator@PEAPEAVLogSink@absl@@@01@V201@@Z @@ -778,6 +842,7 @@ ??$__unwrap_iter@V?$reverse_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@U?$__unwrap_iter_impl@V?$reverse_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@$0A@@23@$0A@@Cr@std@@YA?AV?$reverse_iterator@PEAUTransition@cctz@time_internal@absl@@@01@V201@@Z ??$__unwrap_iter@V?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@U?$__unwrap_iter_impl@V?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@$0A@@23@$0A@@Cr@std@@YA?AV?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@01@V201@@Z ??$__unwrap_iter@V?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@Cr@std@@U?$__unwrap_iter_impl@V?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@Cr@std@@$0A@@23@$0A@@Cr@std@@YA?AV?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@01@V201@@Z + ??$__unwrap_range@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@@Cr@std@@YA?A?<auto>@@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@0@Z ??$__unwrap_range@PEBVFormatArgImpl@str_format_internal@absl@@PEBV123@@Cr@std@@YA?A?<auto>@@PEBVFormatArgImpl@str_format_internal@absl@@0@Z ??$__upper_bound@U_ClassicAlgPolicy@Cr@std@@UByCivilTime@Transition@cctz@time_internal@absl@@PEBU5678@PEBU5678@U5678@U__identity@23@@Cr@std@@YAPEBUTransition@cctz@time_internal@absl@@PEBU2345@0AEBU2345@$$QEAUByCivilTime@2345@$$QEAU__identity@01@@Z ??$__upper_bound@U_ClassicAlgPolicy@Cr@std@@UByUnixTime@Transition@cctz@time_internal@absl@@PEBU5678@PEBU5678@U5678@U__identity@23@@Cr@std@@YAPEBUTransition@cctz@time_internal@absl@@PEBU2345@0AEBU2345@$$QEAUByUnixTime@2345@$$QEAU__identity@01@@Z @@ -785,6 +850,7 @@ ??$advance@PEBUTransition@cctz@time_internal@absl@@_J_JX@Cr@std@@YAXAEAPEBUTransition@cctz@time_internal@absl@@_J@Z ??$advance@PEBVFormatArgImpl@str_format_internal@absl@@_K_KX@Cr@std@@YAXAEAPEBVFormatArgImpl@str_format_internal@absl@@_K@Z ??$assign@PEBVFormatArgImpl@str_format_internal@absl@@$0A@@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEBVFormatArgImpl@str_format_internal@absl@@0@Z + ??$assign@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@Cr@std@@@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@12@0PEAX@Z ??$assign@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@?$optional_data_base@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@optional_internal@absl@@IEAAX$$QEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ??$call_once@A6AXXZ$$V@absl@@YAXAEAVonce_flag@0@A6AXXZ@Z ??$combine@H$$V@?$HashStateBase@VMixingHashState@hash_internal@absl@@@hash_internal@absl@@SA?AVMixingHashState@12@V312@AEBH@Z @@ -796,6 +862,8 @@ ??$construct@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEBV12345@XX@?$allocator_traits@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@12@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@$$QEAPEAPEBV45678@@Z ??$construct@PEAUCordRep@cord_internal@absl@@AEBQEAU123@XX@?$allocator_traits@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAUCordRep@cord_internal@absl@@@12@PEAPEAUCordRep@cord_internal@absl@@AEBQEAU456@@Z ??$construct@PEAUCordRep@cord_internal@absl@@PEAU123@XX@?$allocator_traits@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAUCordRep@cord_internal@absl@@@12@PEAPEAUCordRep@cord_internal@absl@@$$QEAPEAU456@@Z + ??$construct@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEBQEAU1234@XX@?$allocator_traits@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@12@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEBQEAU4567@@Z + ??$construct@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@XX@?$allocator_traits@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@12@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@$$QEAPEAU4567@@Z ??$construct@PEAVCordzHandle@cord_internal@absl@@AEBQEAV123@XX@?$allocator_traits@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@12@PEAPEAVCordzHandle@cord_internal@absl@@AEBQEAV456@@Z ??$construct@PEAVLogSink@absl@@AEBQEAV12@XX@?$allocator_traits@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAVLogSink@absl@@@12@PEAPEAVLogSink@absl@@AEBQEAV45@@Z ??$construct@PEAVLogSink@absl@@PEAV12@XX@?$allocator_traits@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAVLogSink@absl@@@12@PEAPEAVLogSink@absl@@$$QEAPEAV45@@Z @@ -805,6 +873,8 @@ ??$construct@UConversionItem@ParsedFormatBase@str_format_internal@absl@@U1234@XX@?$allocator_traits@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@12@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@$$QEAU4567@@Z ??$construct@UPayload@status_internal@absl@@AEBU123@XX@?$allocator_traits@V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UPayload@status_internal@absl@@@12@PEAUPayload@status_internal@absl@@AEBU456@@Z ??$construct@UPayload@status_internal@absl@@U123@XX@?$allocator_traits@V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UPayload@status_internal@absl@@@12@PEAUPayload@status_internal@absl@@$$QEAU456@@Z + ??$construct@UPrefixCrc@CrcCordState@crc_internal@absl@@AEBU1234@XX@?$allocator_traits@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@12@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEBU4567@@Z + ??$construct@UPrefixCrc@CrcCordState@crc_internal@absl@@U1234@XX@?$allocator_traits@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@12@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@$$QEAU4567@@Z ??$construct@UTransition@cctz@time_internal@absl@@$$VXX@?$allocator_traits@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UTransition@cctz@time_internal@absl@@@12@PEAUTransition@cctz@time_internal@absl@@@Z ??$construct@UTransition@cctz@time_internal@absl@@AEBU1234@XX@?$allocator_traits@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UTransition@cctz@time_internal@absl@@@12@PEAUTransition@cctz@time_internal@absl@@AEBU4567@@Z ??$construct@UTransition@cctz@time_internal@absl@@U1234@XX@?$allocator_traits@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UTransition@cctz@time_internal@absl@@@12@PEAUTransition@cctz@time_internal@absl@@$$QEAU4567@@Z @@ -816,6 +886,8 @@ ??$construct_at@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEBV12345@PEAPEAPEBV12345@@Cr@std@@YAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV23456@$$QEAPEAPEBV23456@@Z ??$construct_at@PEAUCordRep@cord_internal@absl@@AEBQEAU123@PEAPEAU123@@Cr@std@@YAPEAPEAUCordRep@cord_internal@absl@@PEAPEAU234@AEBQEAU234@@Z ??$construct_at@PEAUCordRep@cord_internal@absl@@PEAU123@PEAPEAU123@@Cr@std@@YAPEAPEAUCordRep@cord_internal@absl@@PEAPEAU234@$$QEAPEAU234@@Z + ??$construct_at@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEBQEAU1234@PEAPEAU1234@@Cr@std@@YAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU2345@AEBQEAU2345@@Z + ??$construct_at@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@PEAPEAU1234@@Cr@std@@YAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU2345@$$QEAPEAU2345@@Z ??$construct_at@PEAVCordzHandle@cord_internal@absl@@AEBQEAV123@PEAPEAV123@@Cr@std@@YAPEAPEAVCordzHandle@cord_internal@absl@@PEAPEAV234@AEBQEAV234@@Z ??$construct_at@PEAVLogSink@absl@@AEBQEAV12@PEAPEAV12@@Cr@std@@YAPEAPEAVLogSink@absl@@PEAPEAV23@AEBQEAV23@@Z ??$construct_at@PEAVLogSink@absl@@PEAV12@PEAPEAV12@@Cr@std@@YAPEAPEAVLogSink@absl@@PEAPEAV23@$$QEAPEAV23@@Z @@ -825,35 +897,44 @@ ??$construct_at@UConversionItem@ParsedFormatBase@str_format_internal@absl@@U1234@PEAU1234@@Cr@std@@YAPEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PEAU2345@$$QEAU2345@@Z ??$construct_at@UPayload@status_internal@absl@@AEBU123@PEAU123@@Cr@std@@YAPEAUPayload@status_internal@absl@@PEAU234@AEBU234@@Z ??$construct_at@UPayload@status_internal@absl@@U123@PEAU123@@Cr@std@@YAPEAUPayload@status_internal@absl@@PEAU234@$$QEAU234@@Z + ??$construct_at@UPrefixCrc@CrcCordState@crc_internal@absl@@AEBU1234@PEAU1234@@Cr@std@@YAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU2345@AEBU2345@@Z + ??$construct_at@UPrefixCrc@CrcCordState@crc_internal@absl@@U1234@PEAU1234@@Cr@std@@YAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU2345@$$QEAU2345@@Z ??$construct_at@UTransition@cctz@time_internal@absl@@$$VPEAU1234@@Cr@std@@YAPEAUTransition@cctz@time_internal@absl@@PEAU2345@@Z ??$construct_at@UTransition@cctz@time_internal@absl@@AEBU1234@PEAU1234@@Cr@std@@YAPEAUTransition@cctz@time_internal@absl@@PEAU2345@AEBU2345@@Z ??$construct_at@UTransition@cctz@time_internal@absl@@U1234@PEAU1234@@Cr@std@@YAPEAUTransition@cctz@time_internal@absl@@PEAU2345@$$QEAU2345@@Z ??$construct_at@UTransitionType@cctz@time_internal@absl@@$$VPEAU1234@@Cr@std@@YAPEAUTransitionType@cctz@time_internal@absl@@PEAU2345@@Z ??$construct_at@UTransitionType@cctz@time_internal@absl@@U1234@PEAU1234@@Cr@std@@YAPEAUTransitionType@cctz@time_internal@absl@@PEAU2345@$$QEAU2345@@Z ??$construct_at@UViableSubstitution@strings_internal@absl@@AEAVstring_view@3@AEBV43@AEA_KPEAU123@@Cr@std@@YAPEAUViableSubstitution@strings_internal@absl@@PEAU234@AEAVstring_view@4@AEBV54@AEA_K@Z + ??$copy@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@@Cr@std@@YAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU2345@0PEAU2345@@Z + ??$copy@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@U1234@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@Cr@std@@YA?AV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@01@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@0V201@PEAX@Z ??$copy@PEBVFormatArgImpl@str_format_internal@absl@@PEAV123@@Cr@std@@YAPEAVFormatArgImpl@str_format_internal@absl@@PEBV234@0PEAV234@@Z + ??$copy@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@U1234@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@Cr@std@@YA?AV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@01@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@01@0V201@@Z ??$countl_zero@_K@absl@@YAH_K@Z ??$countr_zero@_K@absl@@YAH_K@Z ??$destroy@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@XX@?$allocator_traits@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@12@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ??$destroy@PEAUCordRep@cord_internal@absl@@XX@?$allocator_traits@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAUCordRep@cord_internal@absl@@@12@PEAPEAUCordRep@cord_internal@absl@@@Z + ??$destroy@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@XX@?$allocator_traits@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@12@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ??$destroy@PEAVCordzHandle@cord_internal@absl@@XX@?$allocator_traits@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@12@PEAPEAVCordzHandle@cord_internal@absl@@@Z ??$destroy@PEAVLogSink@absl@@XX@?$allocator_traits@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAVLogSink@absl@@@12@PEAPEAVLogSink@absl@@@Z ??$destroy@PEBVCordzHandle@cord_internal@absl@@XX@?$allocator_traits@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@12@PEAPEBVCordzHandle@cord_internal@absl@@@Z ??$destroy@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@12@PEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@12@@Z ??$destroy@UConversionItem@ParsedFormatBase@str_format_internal@absl@@XX@?$allocator_traits@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@12@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@@Z ??$destroy@UPayload@status_internal@absl@@XX@?$allocator_traits@V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UPayload@status_internal@absl@@@12@PEAUPayload@status_internal@absl@@@Z + ??$destroy@UPrefixCrc@CrcCordState@crc_internal@absl@@XX@?$allocator_traits@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@12@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ??$destroy@UTransition@cctz@time_internal@absl@@XX@?$allocator_traits@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UTransition@cctz@time_internal@absl@@@12@PEAUTransition@cctz@time_internal@absl@@@Z ??$destroy@UTransitionType@cctz@time_internal@absl@@XX@?$allocator_traits@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@12@PEAUTransitionType@cctz@time_internal@absl@@@Z ??$destroy@UViableSubstitution@strings_internal@absl@@XX@?$allocator_traits@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UViableSubstitution@strings_internal@absl@@@12@PEAUViableSubstitution@strings_internal@absl@@@Z ??$destroy@VFormatArgImpl@str_format_internal@absl@@XX@?$allocator_traits@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@VFormatArgImpl@str_format_internal@absl@@@12@PEAVFormatArgImpl@str_format_internal@absl@@@Z ??$destroy_at@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@$0A@@Cr@std@@YAXPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ??$destroy_at@PEAUCordRep@cord_internal@absl@@$0A@@Cr@std@@YAXPEAPEAUCordRep@cord_internal@absl@@@Z + ??$destroy_at@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@$0A@@Cr@std@@YAXPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ??$destroy_at@PEAVCordzHandle@cord_internal@absl@@$0A@@Cr@std@@YAXPEAPEAVCordzHandle@cord_internal@absl@@@Z ??$destroy_at@PEAVLogSink@absl@@$0A@@Cr@std@@YAXPEAPEAVLogSink@absl@@@Z ??$destroy_at@PEBVCordzHandle@cord_internal@absl@@$0A@@Cr@std@@YAXPEAPEBVCordzHandle@cord_internal@absl@@@Z ??$destroy_at@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@$0A@@Cr@std@@YAXPEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@01@@Z ??$destroy_at@UConversionItem@ParsedFormatBase@str_format_internal@absl@@$0A@@Cr@std@@YAXPEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@@Z ??$destroy_at@UPayload@status_internal@absl@@$0A@@Cr@std@@YAXPEAUPayload@status_internal@absl@@@Z + ??$destroy_at@UPrefixCrc@CrcCordState@crc_internal@absl@@$0A@@Cr@std@@YAXPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ??$destroy_at@UTransition@cctz@time_internal@absl@@$0A@@Cr@std@@YAXPEAUTransition@cctz@time_internal@absl@@@Z ??$destroy_at@UTransitionType@cctz@time_internal@absl@@$0A@@Cr@std@@YAXPEAUTransitionType@cctz@time_internal@absl@@@Z ??$destroy_at@UViableSubstitution@strings_internal@absl@@$0A@@Cr@std@@YAXPEAUViableSubstitution@strings_internal@absl@@@Z @@ -862,7 +943,9 @@ ??$distance@PEBUTransition@cctz@time_internal@absl@@@?$_IterOps@U_ClassicAlgPolicy@Cr@std@@@Cr@std@@SA_JPEBUTransition@cctz@time_internal@absl@@0@Z ??$distance@PEBUTransition@cctz@time_internal@absl@@@Cr@std@@YA_JPEBUTransition@cctz@time_internal@absl@@0@Z ??$distance@PEBVFormatArgImpl@str_format_internal@absl@@@Cr@std@@YA_JPEBVFormatArgImpl@str_format_internal@absl@@0@Z + ??$distance@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@Cr@std@@@Cr@std@@YA_JV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@01@0@Z ??$distance@V?$move_iterator@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YA_JV?$move_iterator@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@01@0@Z + ??$distance@V?$move_iterator@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@YA_JV?$move_iterator@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@01@0@Z ??$distance@V?$move_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YA_JV?$move_iterator@PEAUTransition@cctz@time_internal@absl@@@01@0@Z ??$distance@V?$move_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YA_JV?$move_iterator@PEAUTransitionType@cctz@time_internal@absl@@@01@0@Z ??$emplace@$$V@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA?AV?$__wrap_iter@PEAUTransition@cctz@time_internal@absl@@@12@V?$__wrap_iter@PEBUTransition@cctz@time_internal@absl@@@12@@Z @@ -933,6 +1016,7 @@ ??$make_pair@AEAV?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@V123@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@V123@@01@AEAV?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@01@$$QEAV301@@Z ??$make_pair@AEAV?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@Cr@std@@V123@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@Cr@std@@V123@@01@AEAV?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@01@$$QEAV301@@Z ??$make_pair@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV12345@@Cr@std@@YA?AU?$pair@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV12345@@01@$$QEAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@0@Z + ??$make_pair@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU1234@@Cr@std@@YA?AU?$pair@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU1234@@01@$$QEAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@0@Z ??$make_pair@PEAPEAVCordzHandle@cord_internal@absl@@PEAPEAV123@@Cr@std@@YA?AU?$pair@PEAPEAVCordzHandle@cord_internal@absl@@PEAPEAV123@@01@$$QEAPEAPEAVCordzHandle@cord_internal@absl@@0@Z ??$make_pair@PEAPEAVLogSink@absl@@PEAPEAV12@@Cr@std@@YA?AU?$pair@PEAPEAVLogSink@absl@@PEAPEAV12@@01@$$QEAPEAPEAVLogSink@absl@@0@Z ??$make_pair@PEAPEBVCordzHandle@cord_internal@absl@@PEAPEBV123@@Cr@std@@YA?AU?$pair@PEAPEBVCordzHandle@cord_internal@absl@@PEAPEBV123@@01@$$QEAPEAPEBVCordzHandle@cord_internal@absl@@0@Z @@ -940,6 +1024,7 @@ ??$make_pair@PEAUTransition@cctz@time_internal@absl@@PEAU1234@@Cr@std@@YA?AU?$pair@PEAUTransition@cctz@time_internal@absl@@PEAU1234@@01@$$QEAPEAUTransition@cctz@time_internal@absl@@0@Z ??$make_pair@PEAUTransitionType@cctz@time_internal@absl@@PEAU1234@@Cr@std@@YA?AU?$pair@PEAUTransitionType@cctz@time_internal@absl@@PEAU1234@@01@$$QEAPEAUTransitionType@cctz@time_internal@absl@@0@Z ??$make_pair@PEAUViableSubstitution@strings_internal@absl@@PEAU123@@Cr@std@@YA?AU?$pair@PEAUViableSubstitution@strings_internal@absl@@PEAU123@@01@$$QEAPEAUViableSubstitution@strings_internal@absl@@0@Z + ??$make_pair@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@@Cr@std@@YA?AU?$pair@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@@01@$$QEAPEBUPrefixCrc@CrcCordState@crc_internal@absl@@$$QEAPEAU3456@@Z ??$make_pair@PEBVFormatArgImpl@str_format_internal@absl@@PEAV123@@Cr@std@@YA?AU?$pair@PEBVFormatArgImpl@str_format_internal@absl@@PEAV123@@01@$$QEAPEBVFormatArgImpl@str_format_internal@absl@@$$QEAPEAV345@@Z ??$make_pair@V?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@Cr@std@@V123@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@Cr@std@@V123@@01@$$QEAV?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@01@0@Z ??$make_pair@V?$reverse_iterator@PEAPEAVLogSink@absl@@@Cr@std@@V123@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PEAPEAVLogSink@absl@@@Cr@std@@V123@@01@$$QEAV?$reverse_iterator@PEAPEAVLogSink@absl@@@01@0@Z @@ -951,11 +1036,13 @@ ??$make_unique@ULogMessageData@LogMessage@log_internal@absl@@AEAPEBDAEAHAEAW4LogSeverity@4@VTime@4@@Cr@std@@YA?AV?$unique_ptr@ULogMessageData@LogMessage@log_internal@absl@@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@@01@AEAPEBDAEAHAEAW4LogSeverity@absl@@$$QEAVTime@4@@Z ??$make_unique@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@$$V@Cr@std@@YA?AV?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@01@XZ ??$make_unique@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@AEAV12@@Cr@std@@YA?AV?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@01@AEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Z + ??$make_unique@VFallbackCrcMemcpyEngine@crc_internal@absl@@$$V@Cr@std@@YA?AV?$unique_ptr@VFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@01@XZ ??$max@VDuration@absl@@@Cr@std@@YAAEBVDuration@absl@@AEBV23@0@Z ??$max@VDuration@absl@@U?$__less@VDuration@absl@@V12@@Cr@std@@@Cr@std@@YAAEBVDuration@absl@@AEBV23@0U?$__less@VDuration@absl@@V12@@01@@Z ??$max_size@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SA_KAEBV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@12@@Z ??$max_size@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@XX@?$allocator_traits@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@SA_KAEBV?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@12@@Z ??$max_size@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@Cr@std@@SA_KAEBV?$allocator@PEAUCordRep@cord_internal@absl@@@12@@Z + ??$max_size@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SA_KAEBV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@12@@Z ??$max_size@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@SA_KAEBV?$allocator@PEAVCordzHandle@cord_internal@absl@@@12@@Z ??$max_size@V?$allocator@PEAVLogSink@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@SA_KAEBV?$allocator@PEAVLogSink@absl@@@12@@Z ??$max_size@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@SA_KAEBV?$allocator@PEBVCordzHandle@cord_internal@absl@@@12@@Z @@ -963,6 +1050,7 @@ ??$max_size@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@XX@?$allocator_traits@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@SA_KAEBV?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@12@@Z ??$max_size@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@SA_KAEBV?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@12@@Z ??$max_size@V?$allocator@UPayload@status_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@Cr@std@@SA_KAEBV?$allocator@UPayload@status_internal@absl@@@12@@Z + ??$max_size@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SA_KAEBV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@12@@Z ??$max_size@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SA_KAEBV?$allocator@UTransition@cctz@time_internal@absl@@@12@@Z ??$max_size@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SA_KAEBV?$allocator@UTransitionType@cctz@time_internal@absl@@@12@@Z ??$max_size@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@SA_KAEBV?$allocator@UViableSubstitution@strings_internal@absl@@@12@@Z @@ -971,6 +1059,7 @@ ??$min@VDuration@absl@@U?$__less@VDuration@absl@@V12@@Cr@std@@@Cr@std@@YAAEBVDuration@absl@@AEBV23@0U?$__less@VDuration@absl@@V12@@01@@Z ??$move@AEA_J@absl@@YA$$QEA_JAEA_J@Z ??$move@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV12345@@Cr@std@@YAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV23456@00@Z + ??$move@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU1234@@Cr@std@@YAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU2345@00@Z ??$move@PEAPEAVLogSink@absl@@PEAPEAV12@@Cr@std@@YAPEAPEAVLogSink@absl@@PEAPEAV23@00@Z ??$move@PEAUTransition@cctz@time_internal@absl@@PEAU1234@@Cr@std@@YAPEAUTransition@cctz@time_internal@absl@@PEAU2345@00@Z ??$move@PEAUTransitionType@cctz@time_internal@absl@@PEAU1234@@Cr@std@@YAPEAUTransitionType@cctz@time_internal@absl@@PEAU2345@00@Z @@ -982,13 +1071,15 @@ ??$move@V?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@V123@@Cr@std@@YA?AV?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@01@V201@00@Z ??$move@V?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@Cr@std@@V123@@Cr@std@@YA?AV?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@01@V201@00@Z ??$move_backward@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV12345@@Cr@std@@YAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV23456@00@Z + ??$move_backward@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU1234@@Cr@std@@YAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU2345@00@Z ??$move_backward@PEAUTransition@cctz@time_internal@absl@@PEAU1234@@Cr@std@@YAPEAUTransition@cctz@time_internal@absl@@PEAU2345@00@Z ??$move_backward@PEAUTransitionType@cctz@time_internal@absl@@PEAU1234@@Cr@std@@YAPEAUTransitionType@cctz@time_internal@absl@@PEAU2345@00@Z ??$next@AEAPEBUTransition@cctz@time_internal@absl@@@?$_IterOps@U_ClassicAlgPolicy@Cr@std@@@Cr@std@@SAPEBUTransition@cctz@time_internal@absl@@AEAPEBU3456@_J@Z ??$next@PEBUTransition@cctz@time_internal@absl@@@Cr@std@@YAPEBUTransition@cctz@time_internal@absl@@PEBU2345@_J@Z ??$reset@PEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@?$unique_ptr@$$BY0A@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QEAAXPEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@12@@Z - ??$rotl@_K@absl@@YA_K_KH@Z + ??$rotr@I@absl@@YAIIH@Z ??$swap@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@YAXAEAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@0@Z + ??$swap@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@YAXAEAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@0@Z ??$swap@PEAPEAVCordzHandle@cord_internal@absl@@@Cr@std@@YAXAEAPEAPEAVCordzHandle@cord_internal@absl@@0@Z ??$swap@PEAPEAVLogSink@absl@@@Cr@std@@YAXAEAPEAPEAVLogSink@absl@@0@Z ??$swap@PEAPEBVCordzHandle@cord_internal@absl@@@Cr@std@@YAXAEAPEAPEBVCordzHandle@cord_internal@absl@@0@Z @@ -1055,6 +1146,7 @@ ??0?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QEAA@AEBV?$allocator@UPayload@status_internal@absl@@@Cr@std@@@Z ??0?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QEAA@XZ ??0?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAV?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@12@_K@Z + ??0?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@12@_K@Z ??0?$__atomic_base@P6AXAEBUHashtablezInfo@container_internal@absl@@@Z$0A@@Cr@std@@QEAA@P6AXAEBUHashtablezInfo@container_internal@absl@@@Z@Z ??0?$__atomic_base@PEAUHashtablezInfo@container_internal@absl@@$0A@@Cr@std@@QEAA@PEAUHashtablezInfo@container_internal@absl@@@Z ??0?$__atomic_base@PEAVCordzInfo@cord_internal@absl@@$0A@@Cr@std@@QEAA@PEAVCordzInfo@cord_internal@absl@@@Z @@ -1066,6 +1158,7 @@ ??0?$__compressed_pair_elem@U?$default_delete@$$CBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__value_init_tag@12@@Z ??0?$__compressed_pair_elem@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__value_init_tag@12@@Z ??0?$__compressed_pair_elem@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__value_init_tag@12@@Z + ??0?$__compressed_pair_elem@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__value_init_tag@12@@Z ??0?$__compressed_pair_elem@U?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__value_init_tag@12@@Z ??0?$__compressed_pair_elem@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__value_init_tag@12@@Z ??0?$__compressed_pair_elem@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__value_init_tag@12@@Z @@ -1074,15 +1167,18 @@ ??0?$__compressed_pair_elem@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z + ??0?$__compressed_pair_elem@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@PEAVLogSink@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@$00$00@Cr@std@@QEAA@U__value_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z + ??0?$__compressed_pair_elem@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z + ??0?$__compressed_pair_elem@V?$allocator@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z ??0?$__cxx_atomic_base_impl@P6AXAEBUHashtablezInfo@container_internal@absl@@@Z@Cr@std@@QEAA@P6AXAEBUHashtablezInfo@container_internal@absl@@@Z@Z ??0?$__cxx_atomic_base_impl@PEAUHashtablezInfo@container_internal@absl@@@Cr@std@@QEAA@PEAUHashtablezInfo@container_internal@absl@@@Z @@ -1091,6 +1187,8 @@ ??0?$__cxx_atomic_impl@PEAUHashtablezInfo@container_internal@absl@@U?$__cxx_atomic_base_impl@PEAUHashtablezInfo@container_internal@absl@@@Cr@std@@@Cr@std@@QEAA@PEAUHashtablezInfo@container_internal@absl@@@Z ??0?$__cxx_atomic_impl@PEAVCordzInfo@cord_internal@absl@@U?$__cxx_atomic_base_impl@PEAVCordzInfo@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@PEAVCordzInfo@cord_internal@absl@@@Z ??0?$__deque_iterator@PEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEBV12345@AEAPEBV12345@PEAPEAPEBV12345@_J$0A@@Cr@std@@AEAA@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEBV34567@@Z + ??0?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@Cr@std@@AEAA@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU3456@@Z + ??0?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@Cr@std@@AEAA@PEBQEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU3456@@Z ??0?$__hash_const_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@QEAA@AEBV?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@12@@Z ??0?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@AEAA@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@12@PEBX@Z ??0?$__hash_map_const_iterator@V?$__hash_const_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@QEAA@V?$__hash_map_iterator@V?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@12@@Z @@ -1101,6 +1199,7 @@ ??0?$__non_trivial_if@$00V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$__non_trivial_if@$00V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$__non_trivial_if@$00V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ + ??0?$__non_trivial_if@$00V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$__non_trivial_if@$00V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$__non_trivial_if@$00V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$__non_trivial_if@$00V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ @@ -1108,14 +1207,18 @@ ??0?$__non_trivial_if@$00V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$__non_trivial_if@$00V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$__non_trivial_if@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ + ??0?$__non_trivial_if@$00V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$__non_trivial_if@$00V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$__non_trivial_if@$00V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$__non_trivial_if@$00V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ + ??0?$__non_trivial_if@$00V?$allocator@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$__non_trivial_if@$00V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$__policy_invoker@$$A6A?AV?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@23@@Z@__function@Cr@std@@AEAA@P6A?AV?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@23@PEBT__policy_storage@123@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@23@@Z@Z ??0?$__policy_invoker@$$A6A?AV?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@23@@Z@__function@Cr@std@@QEAA@XZ ??0?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@_K0AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@12@@Z ??0?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ + ??0?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@_K0AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@12@@Z + ??0?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$__split_buffer@PEAVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@_K0AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@12@@Z ??0?$__split_buffer@PEAVLogSink@absl@@AEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@QEAA@_K0AEAV?$allocator@PEAVLogSink@absl@@@12@@Z ??0?$__split_buffer@PEBVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@_K0AEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@12@@Z @@ -1134,6 +1237,7 @@ ??0?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@QEAA@XZ ??0?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@QEAA@XZ + ??0?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QEAA@XZ ??0?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@QEAA@XZ ??0?$allocator@PEAVLogSink@absl@@@Cr@std@@QEAA@XZ ??0?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@QEAA@XZ @@ -1141,9 +1245,11 @@ ??0?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@QEAA@XZ ??0?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@QEAA@XZ ??0?$allocator@UPayload@status_internal@absl@@@Cr@std@@QEAA@XZ + ??0?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QEAA@XZ ??0?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@QEAA@XZ ??0?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@QEAA@XZ ??0?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@QEAA@XZ + ??0?$allocator@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@QEAA@XZ ??0?$atomic@P6AXAEBUHashtablezInfo@container_internal@absl@@@Z@Cr@std@@QEAA@P6AXAEBUHashtablezInfo@container_internal@absl@@@Z@Z ??0?$atomic@PEAUHashtablezInfo@container_internal@absl@@@Cr@std@@QEAA@PEAUHashtablezInfo@container_internal@absl@@@Z @@ -1177,8 +1283,10 @@ ??0?$civil_time@Uyear_tag@time_internal@absl@@@detail@cctz@time_internal@absl@@QEAA@XZ ??0?$civil_time@Uyear_tag@time_internal@absl@@@detail@cctz@time_internal@absl@@QEAA@_J00000@Z ??0?$deque@PEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ + ??0?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$move_iterator@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@QEAA@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ??0?$move_iterator@PEAPEAUCordRep@cord_internal@absl@@@Cr@std@@QEAA@PEAPEAUCordRep@cord_internal@absl@@@Z + ??0?$move_iterator@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QEAA@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ??0?$move_iterator@PEAPEAVLogSink@absl@@@Cr@std@@QEAA@PEAPEAVLogSink@absl@@@Z ??0?$move_iterator@PEAUPayload@status_internal@absl@@@Cr@std@@QEAA@PEAUPayload@status_internal@absl@@@Z ??0?$move_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@QEAA@PEAUTransition@cctz@time_internal@absl@@@Z @@ -1216,6 +1324,7 @@ ??0?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ + ??0?$vector@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@V?$allocator@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QEAA@XZ ??0?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??0AlphaNum@absl@@QEAA@H@Z ??0AlphaNum@absl@@QEAA@PEBD@Z @@ -1238,6 +1347,9 @@ ??0ByAnyChar@absl@@QEAA@Vstring_view@1@@Z ??0ByLength@absl@@QEAA@_J@Z ??0ByString@absl@@QEAA@Vstring_view@1@@Z + ??0CRC32@crc_internal@absl@@QEAA@XZ + ??0CRC@crc_internal@absl@@IEAA@XZ + ??0CRCImpl@crc_internal@absl@@QEAA@XZ ??0CheckOpMessageBuilder@log_internal@absl@@QEAA@PEBD@Z ??0ChunkIterator@Cord@absl@@AEAA@PEAUCordRep@cord_internal@2@@Z ??0ChunkIterator@Cord@absl@@AEAA@PEBV12@@Z @@ -1268,10 +1380,15 @@ ??0CordzUpdateScope@cord_internal@absl@@QEAA@PEAVCordzInfo@12@W4MethodIdentifier@CordzUpdateTracker@12@@Z ??0CordzUpdateTracker@cord_internal@absl@@QEAA@XZ ??0Counter@CordzUpdateTracker@cord_internal@absl@@QEAA@XZ + ??0CrcCordState@crc_internal@absl@@QEAA@$$QEAV012@@Z + ??0CrcCordState@crc_internal@absl@@QEAA@AEBV012@@Z + ??0CrcCordState@crc_internal@absl@@QEAA@XZ + ??0CrcMemcpyEngine@crc_internal@absl@@IEAA@XZ ??0Duration@absl@@AEAA@_JI@Z ??0Duration@absl@@QEAA@XZ ??0ErrnoSaver@base_internal@absl@@QEAA@XZ ??0FILERawSink@str_format_internal@absl@@QEAA@PEAU_iobuf@@@Z + ??0FallbackCrcMemcpyEngine@crc_internal@absl@@QEAA@XZ ??0Filler@CordRepRing@cord_internal@absl@@QEAA@PEAV123@I@Z ??0FormatConversionSpecImpl@str_format_internal@absl@@QEAA@XZ ??0FormatSinkImpl@str_format_internal@absl@@QEAA@VFormatRawSinkImpl@12@@Z @@ -1311,12 +1428,16 @@ ??0Payload@status_internal@absl@@QEAA@$$QEAU012@@Z ??0Payload@status_internal@absl@@QEAA@AEBU012@@Z ??0PosixTimeZone@cctz@time_internal@absl@@QEAA@XZ + ??0PrefixCrc@CrcCordState@crc_internal@absl@@QEAA@XZ + ??0PrefixCrc@CrcCordState@crc_internal@absl@@QEAA@_KVcrc32c_t@3@@Z ??0ProtoField@log_internal@absl@@QEAA@XZ ??0Randen@random_internal@absl@@QEAA@XZ ??0ReaderMutexLock@absl@@QEAA@PEAVMutex@1@@Z ??0RefcountAndFlags@cord_internal@absl@@QEAA@XZ + ??0RefcountedRep@CrcCordState@crc_internal@absl@@QEAA@XZ ??0Rep@CordBuffer@absl@@QEAA@PEAUCordRepFlat@cord_internal@2@@Z ??0Rep@CordBuffer@absl@@QEAA@XZ + ??0Rep@CrcCordState@crc_internal@absl@@QEAA@XZ ??0Rep@GraphCycles@synchronization_internal@absl@@QEAA@XZ ??0SchedulingHelper@base_internal@absl@@QEAA@W4SchedulingMode@12@@Z ??0ScopedDisable@SchedulingGuard@base_internal@absl@@QEAA@XZ @@ -1351,8 +1472,10 @@ ??0WriterMutexLock@absl@@QEAA@PEAVMutex@1@@Z ??0ZoneInfoSource@cctz@time_internal@absl@@QEAA@XZ ??0_ConstructTransaction@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@PEAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@_K@Z + ??0_ConstructTransaction@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@PEAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@_K@Z ??0_ConstructTransaction@?$__split_buffer@UTransition@cctz@time_internal@absl@@AEAV?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@PEAPEAUTransition@cctz@time_internal@absl@@_K@Z ??0_ConstructTransaction@?$__split_buffer@UTransitionType@cctz@time_internal@absl@@AEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@PEAPEAUTransitionType@cctz@time_internal@absl@@_K@Z + ??0_ConstructTransaction@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@PEAV123@AEAU__deque_block_range@123@@Z ??0_ConstructTransaction@?$vector@PEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAV123@_K@Z ??0_ConstructTransaction@?$vector@PEAVLogSink@absl@@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@QEAA@AEAV123@_K@Z ??0_ConstructTransaction@?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAV123@_K@Z @@ -1361,6 +1484,8 @@ ??0_ConstructTransaction@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAV123@_K@Z ??0_ConstructTransaction@?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAV123@_K@Z ??0_ConstructTransaction@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAV123@_K@Z + ??0__deque_block_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@0@Z + ??0__deque_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@23@0@Z ??0__destroy_vector@?$vector@PEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAV123@@Z ??0__destroy_vector@?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAV123@@Z ??0__destroy_vector@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAV123@@Z @@ -1370,6 +1495,7 @@ ??0absolute_lookup@time_zone@cctz@time_internal@absl@@QEAA@XZ ??0civil_lookup@time_zone@cctz@time_internal@absl@@QEAA@XZ ??0civil_transition@time_zone@cctz@time_internal@absl@@QEAA@XZ + ??0crc32c_t@absl@@QEAA@I@Z ??0fields@detail@cctz@time_internal@absl@@QEAA@_JCCCCC@Z ??0int128@absl@@AEAA@_J_K@Z ??0int128@absl@@QEAA@H@Z @@ -1408,6 +1534,8 @@ ??1?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QEAA@XZ ??1?$__policy_func@$$A6A?AV?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@23@@Z@__function@Cr@std@@QEAA@XZ ??1?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ + ??1?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ + ??1?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1?$__split_buffer@PEAVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1?$__split_buffer@PEAVLogSink@absl@@AEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1?$__split_buffer@PEBVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ @@ -1417,6 +1545,7 @@ ??1?$__split_buffer@UViableSubstitution@strings_internal@absl@@AEAV?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1?$__temp_value@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1?$__temp_value@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ + ??1?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1?$function@$$A6A?AV?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@23@@Z@Cr@std@@QEAA@XZ ??1?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@absl@@QEAA@XZ ??1?$optional_data@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@$0A@@optional_internal@absl@@QEAA@XZ @@ -1425,10 +1554,12 @@ ??1?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@QEAA@XZ ??1?$unique_ptr@$$CBVImpl@time_zone@cctz@time_internal@absl@@U?$default_delete@$$CBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1?$unique_ptr@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEAA@XZ + ??1?$unique_ptr@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEAA@XZ ??1?$unique_ptr@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@@Cr@std@@QEAA@XZ ??1?$unique_ptr@ULogMessageData@LogMessage@log_internal@absl@@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1?$unique_ptr@UThreadIdentity@base_internal@absl@@P6AXPEAX@Z@Cr@std@@QEAA@XZ ??1?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEAA@XZ + ??1?$unique_ptr@VFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1?$unique_ptr@VTimeZoneIf@cctz@time_internal@absl@@U?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1?$unique_ptr@VTimeZoneInfo@cctz@time_internal@absl@@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ @@ -1439,14 +1570,21 @@ ??1?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1BadStatusOrAccess@absl@@UEAA@XZ + ??1CRC32@crc_internal@absl@@UEAA@XZ + ??1CRC@crc_internal@absl@@UEAA@XZ + ??1CRCImpl@crc_internal@absl@@UEAA@XZ ??1CheckOpMessageBuilder@log_internal@absl@@QEAA@XZ ??1CondVar@absl@@QEAA@XZ ??1Cord@absl@@QEAA@XZ ??1CordBuffer@absl@@QEAA@XZ + ??1CordRepCrc@cord_internal@absl@@QEAA@XZ ??1CordzHandle@cord_internal@absl@@MEAA@XZ ??1CordzInfo@cord_internal@absl@@EEAA@XZ ??1CordzUpdateScope@cord_internal@absl@@QEAA@XZ + ??1CrcCordState@crc_internal@absl@@QEAA@XZ + ??1CrcMemcpyEngine@crc_internal@absl@@UEAA@XZ ??1ErrnoSaver@base_internal@absl@@QEAA@XZ + ??1FallbackCrcMemcpyEngine@crc_internal@absl@@UEAA@XZ ??1FormatSinkImpl@str_format_internal@absl@@QEAA@XZ ??1GraphCycles@synchronization_internal@absl@@QEAA@XZ ??1HashtablezInfo@container_internal@absl@@QEAA@XZ @@ -1465,6 +1603,8 @@ ??1Payload@status_internal@absl@@QEAA@XZ ??1PosixTimeZone@cctz@time_internal@absl@@QEAA@XZ ??1ReaderMutexLock@absl@@QEAA@XZ + ??1RefcountedRep@CrcCordState@crc_internal@absl@@QEAA@XZ + ??1Rep@CrcCordState@crc_internal@absl@@QEAA@XZ ??1Rep@GraphCycles@synchronization_internal@absl@@QEAA@XZ ??1SchedulingHelper@base_internal@absl@@QEAA@XZ ??1ScopedDisable@SchedulingGuard@base_internal@absl@@QEAA@XZ @@ -1482,8 +1622,10 @@ ??1WriterMutexLock@absl@@QEAA@XZ ??1ZoneInfoSource@cctz@time_internal@absl@@UEAA@XZ ??1_ConstructTransaction@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ + ??1_ConstructTransaction@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1_ConstructTransaction@?$__split_buffer@UTransition@cctz@time_internal@absl@@AEAV?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1_ConstructTransaction@?$__split_buffer@UTransitionType@cctz@time_internal@absl@@AEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ + ??1_ConstructTransaction@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1_ConstructTransaction@?$vector@PEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1_ConstructTransaction@?$vector@PEAVLogSink@absl@@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1_ConstructTransaction@?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ @@ -1494,6 +1636,7 @@ ??1_ConstructTransaction@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1bad_optional_access@absl@@UEAA@XZ ??1bad_variant_access@absl@@UEAA@XZ + ??4?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV012@AEBV012@@Z ??4?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@absl@@QEAAAEAV01@$$QEAV01@@Z ??4?$optional_data@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@$0A@@optional_internal@absl@@IEAAAEAV012@$$QEAV012@@Z ??4?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEAAAEAV012@$$QEAV012@@Z @@ -1502,8 +1645,11 @@ ??4Cord@absl@@QEAAAEAV01@$$QEAV01@@Z ??4Cord@absl@@QEAAAEAV01@Vstring_view@1@@Z ??4CordzUpdateTracker@cord_internal@absl@@QEAAAEAV012@AEBV012@@Z + ??4CrcCordState@crc_internal@absl@@QEAAAEAV012@$$QEAV012@@Z + ??4CrcCordState@crc_internal@absl@@QEAAAEAV012@AEBV012@@Z ??4InlineRep@Cord@absl@@QEAAAEAV012@$$QEAV012@@Z ??4Payload@status_internal@absl@@QEAAAEAU012@$$QEAU012@@Z + ??4Rep@CrcCordState@crc_internal@absl@@QEAAAEAU0123@AEBU0123@@Z ??4Status@absl@@QEAAAEAV01@$$QEAV01@@Z ??4Status@absl@@QEAAAEAV01@AEBV01@@Z ??4int128@absl@@QEAAAEAV01@H@Z @@ -1519,6 +1665,7 @@ ??6absl@@YA?AVuint128@0@V10@H@Z ??6absl@@YAAEAV?$basic_ostream@DU?$char_traits@D@Cr@std@@@Cr@std@@AEAV123@AEBVCord@0@@Z ??6absl@@YAAEAV?$basic_ostream@DU?$char_traits@D@Cr@std@@@Cr@std@@AEAV123@AEBVStatus@0@@Z + ??6absl@@YAAEAV?$basic_ostream@DU?$char_traits@D@Cr@std@@@Cr@std@@AEAV123@Vcrc32c_t@0@@Z ??6absl@@YAAEAV?$basic_ostream@DU?$char_traits@D@Cr@std@@@Cr@std@@AEAV123@Vint128@0@@Z ??6absl@@YAAEAV?$basic_ostream@DU?$char_traits@D@Cr@std@@@Cr@std@@AEAV123@Vstring_view@0@@Z ??6absl@@YAAEAV?$basic_ostream@DU?$char_traits@D@Cr@std@@@Cr@std@@AEAV123@Vuint128@0@@Z @@ -1544,6 +1691,9 @@ ??6time_internal@absl@@YAAEAV?$basic_ostream@DU?$char_traits@D@Cr@std@@@Cr@std@@AEAV234@V?$civil_time@Uyear_tag@time_internal@absl@@@detail@cctz@01@@Z ??7absl@@YA_NVuint128@0@@Z ??8ChunkIterator@Cord@absl@@QEBA_NAEBV012@@Z + ??8Cr@std@@YA_NAEBU__deque_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@01@0@Z + ??8Cr@std@@YA_NAEBV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@01@0@Z + ??8Cr@std@@YA_NAEBV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@01@0@Z ??8Cr@std@@YA_NAEBV?$__hash_const_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@01@0@Z ??8Cr@std@@YA_NAEBV?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@01@0@Z ??8GraphId@synchronization_internal@absl@@QEBA_NAEBU012@@Z @@ -1554,6 +1704,9 @@ ??8absl@@YA_NVstring_view@0@0@Z ??8absl@@YA_NVuint128@0@0@Z ??9ChunkIterator@Cord@absl@@QEBA_NAEBV012@@Z + ??9Cr@std@@YA_NAEBU__deque_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@01@0@Z + ??9Cr@std@@YA_NAEBV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@01@0@Z + ??9Cr@std@@YA_NAEBV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@01@0@Z ??9Cr@std@@YA_NAEBV?$__hash_const_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@01@0@Z ??9Cr@std@@YA_NAEBV?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@01@0@Z ??9Cr@std@@YA_NAEBV?$__hash_map_const_iterator@V?$__hash_const_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@01@0@Z @@ -1569,6 +1722,7 @@ ??A?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@absl@@QEBAAEBVFormatArgImpl@str_format_internal@1@_K@Z ??A?$Span@D@absl@@QEBAAEAD_K@Z ??A?$Span@I@absl@@QEBAAEAI_K@Z + ??A?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBUPrefixCrc@CrcCordState@crc_internal@absl@@_K@Z ??A?$unique_ptr@$$BY0A@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QEBAAEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@12@_K@Z ??A?$unordered_map@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@QEAAAEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@12@@Z ??A?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAUTransition@cctz@time_internal@absl@@_K@Z @@ -1587,6 +1741,7 @@ ??BCord@absl@@QEBA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@XZ ??BCordRepBtreeReader@cord_internal@absl@@QEBA_NXZ ??BTimeZone@absl@@QEBA?AVtime_zone@cctz@time_internal@1@XZ + ??Bcrc32c_t@absl@@QEBAIXZ ??Bint128@absl@@QEBADXZ ??Bint128@absl@@QEBANXZ ??Bint128@absl@@QEBA_JXZ @@ -1607,6 +1762,8 @@ ??C?$unique_ptr@VTimeZoneInfo@cctz@time_internal@absl@@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBAPEAVTimeZoneInfo@cctz@time_internal@absl@@XZ ??CChunkIterator@Cord@absl@@QEBAPEBVstring_view@2@XZ ??D?$__deque_iterator@PEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEBV12345@AEAPEBV12345@PEAPEAPEBV12345@_J$0A@@Cr@std@@QEBAAEAPEBVImpl@time_zone@cctz@time_internal@absl@@XZ + ??D?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@Cr@std@@QEBAAEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ??D?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@Cr@std@@QEBAAEBUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ??D?$__hash_map_iterator@V?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@QEBAAEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@12@XZ ??D?$__wrap_iter@PEAPEAVCordzHandle@cord_internal@absl@@@Cr@std@@QEBAAEAPEAVCordzHandle@cord_internal@absl@@XZ ??D?$__wrap_iter@PEAPEAVLogSink@absl@@@Cr@std@@QEBAAEAPEAVLogSink@absl@@XZ @@ -1615,6 +1772,7 @@ ??D?$__wrap_iter@PEBUConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@QEBAAEBUConversionItem@ParsedFormatBase@str_format_internal@absl@@XZ ??D?$move_iterator@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@QEBA$$QEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@XZ ??D?$move_iterator@PEAPEAUCordRep@cord_internal@absl@@@Cr@std@@QEBA$$QEAPEAUCordRep@cord_internal@absl@@XZ + ??D?$move_iterator@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QEBA$$QEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ??D?$move_iterator@PEAPEAVLogSink@absl@@@Cr@std@@QEBA$$QEAPEAVLogSink@absl@@XZ ??D?$move_iterator@PEAUPayload@status_internal@absl@@@Cr@std@@QEBA$$QEAUPayload@status_internal@absl@@XZ ??D?$move_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@QEBA$$QEAUTransition@cctz@time_internal@absl@@XZ @@ -1623,8 +1781,11 @@ ??D?$unique_ptr@ULogMessageData@LogMessage@log_internal@absl@@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEAULogMessageData@LogMessage@log_internal@absl@@XZ ??D?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEBAAEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@XZ ??DChunkIterator@Cord@absl@@QEBA?AVstring_view@2@XZ + ??D__deque_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA?AU__deque_block_range@123@XZ ??Dabsl@@YA?AVint128@0@V10@0@Z ??Dabsl@@YA?AVuint128@0@V10@0@Z + ??E?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@Cr@std@@QEAAAEAV012@XZ + ??E?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@Cr@std@@QEAAAEAV012@XZ ??E?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@QEAAAEAV012@XZ ??E?$__hash_map_iterator@V?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@QEAAAEAV012@XZ ??E?$__wrap_iter@PEAPEAVCordzHandle@cord_internal@absl@@@Cr@std@@QEAAAEAV012@XZ @@ -1633,12 +1794,15 @@ ??E?$__wrap_iter@PEBUConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@QEAAAEAV012@XZ ??E?$move_iterator@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@QEAAAEAV012@XZ ??E?$move_iterator@PEAPEAUCordRep@cord_internal@absl@@@Cr@std@@QEAAAEAV012@XZ + ??E?$move_iterator@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QEAAAEAV012@XZ ??E?$move_iterator@PEAPEAVLogSink@absl@@@Cr@std@@QEAAAEAV012@XZ ??E?$move_iterator@PEAUPayload@status_internal@absl@@@Cr@std@@QEAAAEAV012@XZ ??E?$move_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@QEAAAEAV012@XZ ??E?$move_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@QEAAAEAV012@XZ ??EChunkIterator@Cord@absl@@QEAAAEAV012@XZ + ??E__deque_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAU0123@XZ ??Euint128@absl@@QEAAAEAV01@XZ + ??GCr@std@@YA_JAEBV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@01@0@Z ??Gabsl@@YA?AVDuration@0@V10@0@Z ??Gabsl@@YA?AVDuration@0@V10@@Z ??Gabsl@@YA?AVDuration@0@VTime@0@0@Z @@ -1650,6 +1814,8 @@ ??Gdetail@cctz@time_internal@absl@@YA?AV?$civil_time@Usecond_tag@detail@cctz@time_internal@absl@@@0123@V40123@_J@Z ??Gdetail@cctz@time_internal@absl@@YA_JV?$civil_time@Uday_tag@detail@cctz@time_internal@absl@@@0123@0@Z ??Gdetail@cctz@time_internal@absl@@YA_JV?$civil_time@Usecond_tag@detail@cctz@time_internal@absl@@@0123@0@Z + ??H?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@Cr@std@@QEBA?AV012@_J@Z + ??H?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@Cr@std@@QEBA?AV012@_J@Z ??Habsl@@YA?AVDuration@0@V10@0@Z ??Habsl@@YA?AVTime@0@V10@VDuration@0@@Z ??Habsl@@YA?AVint128@0@V10@0@Z @@ -1730,6 +1896,7 @@ ??R?$RandenPool@I@random_internal@absl@@QEAAIXZ ??R?$RandenPool@_K@random_internal@absl@@QEAA_KXZ ??R?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z + ??R?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ??R?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@QEAAXPEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@12@@Z ??R?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@QEAAXPEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@12@@Z ??R?$__less@VDuration@absl@@V12@@Cr@std@@QEBA_NAEBVDuration@absl@@0@Z @@ -1739,6 +1906,7 @@ ??R?$default_delete@$$CBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@QEBAXPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ??R?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@QEBAXPEAULogMessageData@LogMessage@log_internal@absl@@@Z ??R?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@QEBAXPEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Z + ??R?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@QEBAXPEAVFallbackCrcMemcpyEngine@crc_internal@absl@@@Z ??R?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@QEBAXPEAVTimeZoneIf@cctz@time_internal@absl@@@Z ??R?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@Cr@std@@QEBAXPEAVTimeZoneInfo@cctz@time_internal@absl@@@Z ??R?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@QEBAXPEAVZoneInfoSource@cctz@time_internal@absl@@@Z @@ -1761,6 +1929,8 @@ ??XDuration@absl@@QEAAAEAV01@_J@Z ??Xint128@absl@@QEAAAEAV01@V01@@Z ??Xuint128@absl@@QEAAAEAV01@V01@@Z + ??Y?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@Cr@std@@QEAAAEAV012@_J@Z + ??Y?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@Cr@std@@QEAAAEAV012@_J@Z ??YDuration@absl@@QEAAAEAV01@V01@@Z ??YTime@absl@@QEAAAEAV01@VDuration@1@@Z ??Yint128@absl@@QEAAAEAV01@V01@@Z @@ -1914,13 +2084,14 @@ ?CheckstrcasecmptrueImpl@log_internal@absl@@YAPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBD00@Z ?CheckstrcmpfalseImpl@log_internal@absl@@YAPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBD00@Z ?CheckstrcmptrueImpl@log_internal@absl@@YAPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBD00@Z + ?Checksum@CrcCordState@crc_internal@absl@@QEBA?AVcrc32c_t@3@XZ ?Chunks@Cord@absl@@QEBA?AVChunkRange@12@XZ ?CityHash32@hash_internal@absl@@YAIPEBD_K@Z ?CityHash64@hash_internal@absl@@YA_KPEBD_K@Z ?CityHash64WithSeed@hash_internal@absl@@YA_KPEBD_K1@Z ?CityHash64WithSeeds@hash_internal@absl@@YA_KPEBD_K11@Z ?Clear@Cord@absl@@QEAAXXZ - ?ClearBackingArray@container_internal@absl@@YAXAEAVCommonFields@12@AEA_KAEBUPolicyFunctions@12@_N@Z + ?ClearBackingArray@container_internal@absl@@YAXAEAVCommonFields@12@AEBUPolicyFunctions@12@_N@Z ?ClearCurrentThreadIdentity@base_internal@absl@@YAXXZ ?ClearTimeZoneMapTestOnly@Impl@time_zone@cctz@time_internal@absl@@SAXXZ ?CodeToInlinedRep@Status@absl@@CA_KW4StatusCode@2@@Z @@ -1933,7 +2104,13 @@ ?CompareImpl@Cord@absl@@AEBAHAEBV12@@Z ?CompareSlowPath@Cord@absl@@AEBAHAEBV12@_K1@Z ?CompareSlowPath@Cord@absl@@AEBAHVstring_view@2@_K1@Z + ?Compute@CrcNonTemporalMemcpyAVXEngine@crc_internal@absl@@UEBA?AVcrc32c_t@3@PEIAXPEIBX_KV43@@Z + ?Compute@CrcNonTemporalMemcpyEngine@crc_internal@absl@@UEBA?AVcrc32c_t@3@PEIAXPEIBX_KV43@@Z + ?Compute@FallbackCrcMemcpyEngine@crc_internal@absl@@UEBA?AVcrc32c_t@3@PEIAXPEIBX_KV43@@Z ?ComputeCapacity@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@SA_K_K0@Z + ?ComputeCrc32c@absl@@YA?AVcrc32c_t@1@Vstring_view@1@@Z + ?Concat@CRC@crc_internal@absl@@UEAAXPEAII_K@Z + ?ConcatCrc32c@absl@@YA?AVcrc32c_t@1@V21@0_K@Z ?ConstructNext@?$IteratorValueAdapter@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@V?$move_iterator@PEAPEAUCordRep@cord_internal@absl@@@23@@inlined_vector_internal@absl@@QEAAXAEAV?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@PEAPEAUCordRep@cord_internal@3@@Z ?ConstructNext@?$IteratorValueAdapter@V?$allocator@PEAVLogSink@absl@@@Cr@std@@V?$move_iterator@PEAPEAVLogSink@absl@@@23@@inlined_vector_internal@absl@@QEAAXAEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@PEAPEAVLogSink@3@@Z ?ConstructNext@?$IteratorValueAdapter@V?$allocator@UPayload@status_internal@absl@@@Cr@std@@PEBUPayload@status_internal@absl@@@inlined_vector_internal@absl@@QEAAXAEAV?$allocator@UPayload@status_internal@absl@@@Cr@std@@PEAUPayload@status_internal@3@@Z @@ -1959,7 +2136,7 @@ ?CopyBeginTo@CordRepBtree@cord_internal@absl@@AEBAPEAV123@_K0@Z ?CopyCordToString@absl@@YAXAEBVCord@1@PEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ?CopyPrefix@CordRepBtree@cord_internal@absl@@AEAA?AUCopyResult@123@_K_N@Z - ?CopyRaw@CordRepBtree@cord_internal@absl@@AEBAPEAV123@XZ + ?CopyRaw@CordRepBtree@cord_internal@absl@@AEBAPEAV123@_K@Z ?CopySuffix@CordRepBtree@cord_internal@absl@@AEAA?AUCopyResult@123@_K@Z ?CopyTo@InlineRep@Cord@absl@@QEBAXPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ?CopyToArraySlowPath@Cord@absl@@AEBAXPEAD@Z @@ -1967,6 +2144,9 @@ ?CopyToEncodedBuffer@LogMessage@log_internal@absl@@AEAAXVstring_view@3@W4StringType@123@@Z ?CopyToEndFrom@CordRepBtree@cord_internal@absl@@AEBAPEAV123@_K0@Z ?Crash@Helper@internal_statusor@absl@@SAXAEBVStatus@3@@Z + ?Crc32CAndCopy@crc_internal@absl@@YA?AVcrc32c_t@2@PEIAXPEIBX_KV32@_N@Z + ?Crc32c@CRC@crc_internal@absl@@SAPEAV123@XZ + ?CrcAndCopy@CrcMemcpy@crc_internal@absl@@SA?AVcrc32c_t@3@PEIAXPEIBX_KV43@_N@Z ?Create@CordRepBtree@cord_internal@absl@@SAPEAV123@PEAUCordRep@23@@Z ?Create@CordRepFlat@cord_internal@absl@@SAPEAU123@Vstring_view@3@_K@Z ?Create@CordRepRing@cord_internal@absl@@SAPEAV123@PEAUCordRep@23@_K@Z @@ -2052,7 +2232,7 @@ ?DoStore@?$AtomicHook@P6AX_J@Z@base_internal@absl@@AEAA_NP6AX_J@Z@Z ?DoStore@?$AtomicHook@P6A_NPEBXPEADH@Z@base_internal@absl@@AEAA_NP6A_NPEBXPEADH@Z@Z ?DoStore@?$AtomicHook@P6A_NW4LogSeverity@absl@@PEBDHPEAPEADPEAH@Z@base_internal@absl@@AEAA_NP6A_NW4LogSeverity@3@PEBDHPEAPEADPEAH@Z@Z - ?DropDeletesWithoutResize@container_internal@absl@@YAXAEAVCommonFields@12@AEA_KAEBUPolicyFunctions@12@PEAX@Z + ?DropDeletesWithoutResize@container_internal@absl@@YAXAEAVCommonFields@12@AEBUPolicyFunctions@12@PEAX@Z ?DummyFunction@?$AtomicHook@P6A?AV?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@absl@@Vstring_view@2@AEBVCord@2@@Z@base_internal@absl@@CA?AV?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@3@Vstring_view@3@AEBVCord@3@@Z ?DummyFunction@?$AtomicHook@P6AXPEBDH000@Z@base_internal@absl@@CAXPEBDH000@Z ?DummyFunction@?$AtomicHook@P6AXPEBDPEBX@Z@base_internal@absl@@CAXPEBDPEBX@Z @@ -2074,6 +2254,7 @@ ?Edges@CordRepBtree@cord_internal@absl@@QEBA?AV?$Span@QEAUCordRep@cord_internal@absl@@@3@_K0@Z ?EmplaceTree@InlineRep@Cord@absl@@QEAAXPEAUCordRep@cord_internal@3@AEBVInlineData@53@W4MethodIdentifier@CordzUpdateTracker@53@@Z ?EmplaceTree@InlineRep@Cord@absl@@QEAAXPEAUCordRep@cord_internal@3@W4MethodIdentifier@CordzUpdateTracker@53@@Z + ?Empty@CRCImpl@crc_internal@absl@@UEBAXPEAI@Z ?EmptyGroup@container_internal@absl@@YAPEAW4ctrl_t@12@XZ ?EmptyString@Status@absl@@CAPEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@XZ ?EnableDebugLog@CondVar@absl@@QEAAXPEBD@Z @@ -2102,7 +2283,7 @@ ?EqualsSlow@Status@absl@@CA_NAEBV12@0@Z ?EquivTransitions@TimeZoneInfo@cctz@time_internal@absl@@AEBA_NEE@Z ?Erase@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QEAAPEAUPayload@status_internal@3@PEBU453@0@Z - ?EraseMetaOnly@container_internal@absl@@YAXAEAVCommonFields@12@AEA_KPEAW4ctrl_t@12@_K@Z + ?EraseMetaOnly@container_internal@absl@@YAXAEAVCommonFields@12@PEAW4ctrl_t@12@_K@Z ?ErasePayload@Status@absl@@QEAA_NVstring_view@2@@Z ?ErrnoToStatus@absl@@YA?AVStatus@1@HVstring_view@1@@Z ?ErrnoToStatusCode@absl@@YA?AW4StatusCode@1@H@Z @@ -2110,6 +2291,13 @@ ?Excess@str_format_internal@absl@@YA_K_K0@Z ?ExitOnDFatal@log_internal@absl@@YA_NXZ ?ExpectedChecksum@Cord@absl@@QEBA?AV?$optional@I@2@XZ + ?Extend@CRC32@crc_internal@absl@@UEBAXPEAIPEBX_K@Z + ?ExtendByZeroes@CRC32@crc_internal@absl@@UEBAXPEAI_K@Z + ?ExtendByZeroesImpl@CRC32@crc_internal@absl@@AEBAXPEAI_KQEBI2@Z + ?ExtendCrc32c@absl@@YA?AVcrc32c_t@1@V21@Vstring_view@1@@Z + ?ExtendCrc32cByZeroes@absl@@YA?AVcrc32c_t@1@V21@_K@Z + ?ExtendCrc32cInline@crc_internal@absl@@YA_NPEAIPEBD_K@Z + ?ExtendCrc32cInternal@crc_internal@absl@@YA?AVcrc32c_t@2@V32@Vstring_view@2@@Z ?ExtendTransitions@TimeZoneInfo@cctz@time_internal@absl@@AEAA_NXZ ?ExtractAppendBuffer@CordRepBtree@cord_internal@absl@@SA?AUExtractResult@CordRep@23@PEAV123@_K@Z ?ExtractFront@CordRepBtree@cord_internal@absl@@CAPEAUCordRep@23@PEAV123@@Z @@ -2129,6 +2317,8 @@ ?Fill@?$RandenPool@I@random_internal@absl@@SAXV?$Span@I@3@@Z ?Fill@?$RandenPool@_K@random_internal@absl@@SAXV?$Span@_K@3@@Z ?FillParentStack@CordzInfo@cord_internal@absl@@CA_KPEBV123@PEAPEAX@Z + ?FillWordTable@CRCImpl@crc_internal@absl@@SAXIIHPEAY0BAA@I@Z + ?FillZeroesTable@CRCImpl@crc_internal@absl@@SAHIPEAY0BAA@I@Z ?FinalizeEncodingAndFormat@LogMessageData@LogMessage@log_internal@absl@@QEAAXXZ ?Find@ByAnyChar@absl@@QEBA?AVstring_view@2@V32@_K@Z ?Find@ByChar@absl@@QEBA?AVstring_view@2@V32@_K@Z @@ -2249,6 +2439,7 @@ ?GetAppendBuffer@CordRepRing@cord_internal@absl@@QEAA?AV?$Span@D@3@_K@Z ?GetAppendBufferSlow@CordRepBtree@cord_internal@absl@@AEAA?AV?$Span@D@3@_K@Z ?GetAppendBufferSlowPath@Cord@absl@@AEAA?AVCordBuffer@2@_K00@Z + ?GetArchSpecificEngines@CrcMemcpy@crc_internal@absl@@CA?AUArchSpecificEngines@123@XZ ?GetCachedTID@base_internal@absl@@YAIXZ ?GetCapacity@?$AllocationTransaction@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QEAAAEA_KXZ ?GetCapacity@?$AllocationTransaction@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@inlined_vector_internal@absl@@QEAAAEA_KXZ @@ -2257,6 +2448,7 @@ ?GetCharacter@CordRepRing@cord_internal@absl@@QEBAD_K@Z ?GetCond@WinHelper@Waiter@synchronization_internal@absl@@SAPEAU_RTL_CONDITION_VARIABLE@@PEAV234@@Z ?GetCordzStatistics@CordzInfo@cord_internal@absl@@QEBA?AUCordzStatistics@23@XZ + ?GetCpuType@crc_internal@absl@@YA?AW4CpuType@12@XZ ?GetCurrentTimeNanos@absl@@YA_JXZ ?GetData@?$AllocationTransaction@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QEAAAEAPEAPEAUCordRep@cord_internal@3@XZ ?GetData@?$AllocationTransaction@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@inlined_vector_internal@absl@@QEAAAEAPEAPEAVLogSink@3@XZ @@ -2327,6 +2519,7 @@ ?GetStride@ExponentialBiased@profiling_internal@absl@@QEAA_J_J@Z ?GetTID@base_internal@absl@@YAIXZ ?GetTagForChar@str_format_internal@absl@@YA?AVConvTag@12@D@Z + ?GetTestEngine@CrcMemcpy@crc_internal@absl@@SA?AV?$unique_ptr@VCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@HH@Z ?GetThreadBlockedCounter@PerThreadSem@synchronization_internal@absl@@SAPEAU?$atomic@H@Cr@std@@XZ ?GetTransitionType@TimeZoneInfo@cctz@time_internal@absl@@AEAA_NH_NAEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEAE@Z ?GetWaiter@Waiter@synchronization_internal@absl@@SAPEAV123@PEAUThreadIdentity@base_internal@3@@Z @@ -2387,6 +2580,7 @@ ?InitFirst@CordRepBtreeNavigator@cord_internal@absl@@QEAAPEAUCordRep@23@PEAVCordRepBtree@23@@Z ?InitFrom@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QEAAXAEBV123@@Z ?InitInstance@CordRepBtree@cord_internal@absl@@AEAAXH_K0@Z + ?InitTables@CRC32@crc_internal@absl@@UEAAXXZ ?InitTree@ChunkIterator@Cord@absl@@AEAAXPEAUCordRep@cord_internal@3@@Z ?InitWhat@BadStatusOrAccess@absl@@AEBAXXZ ?Initialize@ExponentialBiased@profiling_internal@absl@@AEAAXXZ @@ -2432,6 +2626,7 @@ ?IsInternal@absl@@YA_NAEBVStatus@1@@Z ?IsInvalidArgument@absl@@YA_NAEBVStatus@1@@Z ?IsMovedFrom@Status@absl@@CA_N_K@Z + ?IsNormalized@CrcCordState@crc_internal@absl@@QEBA_NXZ ?IsNotFound@absl@@YA_NAEBVStatus@1@@Z ?IsOne@RefcountAndFlags@cord_internal@absl@@QEAA_NXZ ?IsOutOfRange@absl@@YA_NAEBVStatus@1@@Z @@ -2456,6 +2651,7 @@ ?LengthToTag@CordTestAccess@strings_internal@absl@@SAE_K@Z ?Load16@big_endian@absl@@YAGPEBX@Z ?Load32@big_endian@absl@@YAIPEBX@Z + ?Load32@little_endian@absl@@YAIPEBX@Z ?Load@?$AtomicHook@P6A?AV?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@absl@@Vstring_view@2@AEBVCord@2@@Z@base_internal@absl@@QEBAP6A?AV?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@3@Vstring_view@3@AEBVCord@3@@ZXZ ?Load@?$AtomicHook@P6AXXZ@base_internal@absl@@QEBAP6AXXZXZ ?Load@TimeZoneIf@cctz@time_internal@absl@@SA?AV?$unique_ptr@VTimeZoneIf@cctz@time_internal@absl@@U?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@67@@Z @@ -2512,8 +2708,10 @@ ?MaxFlatLength@CordTestAccess@strings_internal@absl@@SA_KXZ ?MaxFramesInLogStackTrace@log_internal@absl@@YAHXZ ?MaxVarintSize@log_internal@absl@@YA_KXZ + ?MaybeGetCrcCordState@Cord@absl@@AEBAPEBVCrcCordState@crc_internal@2@XZ ?MaybeRemoveEmptyCrcNode@InlineRep@Cord@absl@@AEAAXXZ ?MaybeTrackCordImpl@CordzInfo@cord_internal@absl@@CAXAEAVInlineData@23@AEBV423@W4MethodIdentifier@CordzUpdateTracker@23@@Z + ?MemcpyCrc32c@absl@@YA?AVcrc32c_t@1@PEAXPEBX_KV21@@Z ?MergeTrees@CordRepBtree@cord_internal@absl@@CAPEAV123@PEAV123@0@Z ?Min@string_view@absl@@CA_K_K0@Z ?MinLogLevel@absl@@YA?AW4LogSeverityAtLeast@1@XZ @@ -2540,11 +2738,13 @@ ?New@CordRepBtree@cord_internal@absl@@SAPEAV123@H@Z ?New@CordRepBtree@cord_internal@absl@@SAPEAV123@PEAUCordRep@23@@Z ?New@CordRepBtree@cord_internal@absl@@SAPEAV123@PEAV123@0@Z - ?New@CordRepCrc@cord_internal@absl@@SAPEAU123@PEAUCordRep@23@I@Z + ?New@CordRepCrc@cord_internal@absl@@SAPEAU123@PEAUCordRep@23@VCrcCordState@crc_internal@3@@Z ?New@CordRepFlat@cord_internal@absl@@SAPEAU123@ULarge@123@_K@Z ?New@CordRepFlat@cord_internal@absl@@SAPEAU123@_K@Z ?New@CordRepRing@cord_internal@absl@@CAPEAV123@_K0@Z ?NewArena@LowLevelAlloc@base_internal@absl@@SAPEAUArena@123@I@Z + ?NewCRC32AcceleratedX86ARMCombinedAll@crc_internal@absl@@YA?AV?$vector@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@V?$allocator@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@@23@@Cr@std@@XZ + ?NewInternal@CRCImpl@crc_internal@absl@@SAPEAV123@XZ ?NewString@CheckOpMessageBuilder@log_internal@absl@@QEAAPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@XZ ?Next@CordRepBtreeNavigator@cord_internal@absl@@QEAAPEAUCordRep@23@XZ ?Next@CordRepBtreeReader@cord_internal@absl@@QEAA?AVstring_view@3@XZ @@ -2560,7 +2760,9 @@ ?NextUp@CordRepBtreeNavigator@cord_internal@absl@@AEAAPEAUCordRep@23@XZ ?NoPrefix@LogMessage@log_internal@absl@@QEAAAEAV123@XZ ?NominalCPUFrequency@base_internal@absl@@YANXZ + ?Normalize@CrcCordState@crc_internal@absl@@QEAAXXZ ?NormalizeLogSeverity@absl@@YA?AW4LogSeverity@1@W421@@Z + ?NormalizedPrefixCrcAtNthChunk@CrcCordState@crc_internal@absl@@QEBA?AUPrefixCrc@123@_K@Z ?NotFoundError@absl@@YA?AVStatus@1@Vstring_view@1@@Z ?Notify@Notification@absl@@QEAAXXZ ?Now@CycleClock@base_internal@absl@@SA_JXZ @@ -2569,6 +2771,7 @@ ?Now@absl@@YA?AVTime@1@XZ ?NullSafeStringView@absl@@YA?AVstring_view@1@PEBD@Z ?NumCPUs@base_internal@absl@@YAHXZ + ?NumChunks@CrcCordState@crc_internal@absl@@QEBA_KXZ ?NumClonedBytes@container_internal@absl@@YA_KXZ ?ODRCheck@CordzHandle@cord_internal@absl@@AEBAXXZ ?ODRCheck@CordzInfo@cord_internal@absl@@AEBAXXZ @@ -2600,9 +2803,11 @@ ?Piece@AlphaNum@absl@@QEBA?AVstring_view@2@XZ ?PiecewiseChunkSize@hash_internal@absl@@YA_KXZ ?PointerToRep@Status@absl@@CA_KPEAUStatusRep@status_internal@2@@Z + ?Poison@CrcCordState@crc_internal@absl@@QEAAXXZ ?Poke@Waiter@synchronization_internal@absl@@QEAAXXZ ?Post@PerThreadSem@synchronization_internal@absl@@CAXPEAUThreadIdentity@base_internal@3@@Z ?Post@Waiter@synchronization_internal@absl@@QEAAXXZ + ?PrefetchNta@base_internal@absl@@YAXPEBX@Z ?PrepareForSampling@HashtablezInfo@container_internal@absl@@QEAAX_J_K@Z ?PrepareToDie@LogMessage@log_internal@absl@@AEAAXXZ ?PrepareToModify@Status@absl@@AEAAXXZ @@ -2665,8 +2870,10 @@ ?RecordStorageChanged@HashtablezInfoHandle@container_internal@absl@@QEAAX_K0@Z ?RecordStorageChangedSlow@container_internal@absl@@YAXPEAUHashtablezInfo@12@_K1@Z ?Ref@CordRep@cord_internal@absl@@SAPEAU123@PEAU123@@Z + ?Ref@CrcCordState@crc_internal@absl@@CAXPEAURefcountedRep@123@@Z ?Ref@Status@absl@@CAX_K@Z ?RefCordRep@CordzInfo@cord_internal@absl@@QEBAPEAUCordRep@23@XZ + ?RefSharedEmptyRep@CrcCordState@crc_internal@absl@@CAPEAURefcountedRep@123@XZ ?Register@CycleClockSource@base_internal@absl@@CAXP6A_JXZ@Z ?RegisterAbortHook@raw_log_internal@absl@@YAXP6AXPEBDH000@Z@Z ?RegisterCondVarTracer@absl@@YAXP6AXPEBDPEBX@Z@Z @@ -2683,6 +2890,8 @@ ?Release@ReleasableMutexLock@absl@@QEAAXXZ ?Remove@CondVar@absl@@AEAAXPEAUPerThreadSynch@base_internal@2@@Z ?RemoveChunkPrefix@ChunkIterator@Cord@absl@@AEAAX_K@Z + ?RemoveCrc32cPrefix@absl@@YA?AVcrc32c_t@1@V21@0_K@Z + ?RemoveCrc32cSuffix@absl@@YA?AVcrc32c_t@1@V21@0_K@Z ?RemoveCrcNode@cord_internal@absl@@YAPEAUCordRep@12@PEAU312@@Z ?RemoveEdge@GraphCycles@synchronization_internal@absl@@QEAAXUGraphId@23@0@Z ?RemoveExtraAsciiWhitespace@absl@@YAXPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z @@ -2697,8 +2906,8 @@ ?Reset@?$AllocationTransaction@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@AEAAXXZ ?Reset@?$AllocationTransaction@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@inlined_vector_internal@absl@@AEAAXXZ ?Reset@?$AllocationTransaction@V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@AEAAXXZ - ?ResetCtrl@container_internal@absl@@YAXAEAVCommonFields@12@AEA_K_K@Z - ?ResetGrowthLeft@container_internal@absl@@YAXAEAVCommonFields@12@AEA_K@Z + ?ResetCtrl@container_internal@absl@@YAXAEAVCommonFields@12@_K@Z + ?ResetGrowthLeft@container_internal@absl@@YAXAEAVCommonFields@12@@Z ?ResetToBuiltinUTC@TimeZoneInfo@cctz@time_internal@absl@@AEAA_NAEBV?$duration@_JV?$ratio@$00$00@Cr@std@@@chrono@Cr@std@@@Z ?ResetToEmpty@InlineRep@Cord@absl@@AEAAXXZ ?Resize@?$ResizeUninitializedTraits@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@X@strings_internal@absl@@SAXPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@_K@Z @@ -2711,6 +2920,7 @@ ?SampleSlow@container_internal@absl@@YAPEAUHashtablezInfo@12@AEAUSamplingState@12@_K@Z ?SanitizerPoisonMemoryRegion@container_internal@absl@@YAXPEBX_K@Z ?SanitizerUnpoisonMemoryRegion@container_internal@absl@@YAXPEBX_K@Z + ?Scramble@CRC32@crc_internal@absl@@UEBAXPEAI@Z ?Seek@CordRepBtreeNavigator@cord_internal@absl@@QEAA?AUPosition@123@_K@Z ?Seek@CordRepBtreeReader@cord_internal@absl@@QEAA?AVstring_view@3@_K@Z ?SendToLog@LogMessage@log_internal@absl@@AEAAXXZ @@ -2721,6 +2931,7 @@ ?SetConversionChar@FormatConversionSpecImplFriend@str_format_internal@absl@@SAXW4FormatConversionChar@3@PEAVFormatConversionSpecImpl@23@@Z ?SetCordRep@CordzInfo@cord_internal@absl@@QEAAXPEAUCordRep@23@@Z ?SetCordRep@CordzUpdateScope@cord_internal@absl@@QEBAXPEAUCordRep@23@@Z + ?SetCrcCordState@Cord@absl@@AEAAXVCrcCordState@crc_internal@2@@Z ?SetCtrl@container_internal@absl@@YAXAEBVCommonFields@12@_KE1@Z ?SetCtrl@container_internal@absl@@YAXAEBVCommonFields@12@_KW4ctrl_t@12@1@Z ?SetCurrentThreadIdentity@base_internal@absl@@YAXPEAUThreadIdentity@12@P6AXPEAX@Z@Z @@ -2841,6 +3052,7 @@ ?SubtractSize@?$Storage@PEAUCordRep@cord_internal@absl@@$0CP@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QEAAX_K@Z ?SubtractSize@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QEAAX_K@Z ?Summarize@str_format_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@VUntypedFormatSpecImpl@12@V?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@2@@Z + ?SupportsArmCRC32PMULL@crc_internal@absl@@YA_NXZ ?SuppressSigabortTrace@log_internal@absl@@YA_NXZ ?Symbolize@absl@@YA_NPEBXPEADH@Z ?TagToAllocatedSize@cord_internal@absl@@YA_KE@Z @@ -2892,6 +3104,7 @@ ?ToDoubleSeconds@absl@@YANVDuration@1@@Z ?ToHost16@big_endian@absl@@YAGG@Z ?ToHost32@big_endian@absl@@YAII@Z + ?ToHost32@little_endian@absl@@YAII@Z ?ToHost64@little_endian@absl@@YA_K_K@Z ?ToInt64@time_internal@absl@@YA_JVDuration@2@V?$ratio@$00$00@Cr@std@@@Z ?ToInt64@time_internal@absl@@YA_JVDuration@2@V?$ratio@$00$0DLJKMKAA@@Cr@std@@@Z @@ -2935,6 +3148,7 @@ ?TryLock@Mutex@absl@@QEAA_NXZ ?TryLockImpl@SpinLock@base_internal@absl@@AEAA_NXZ ?TryLockInternal@SpinLock@base_internal@absl@@AEAAIII@Z + ?TryNewCRC32AcceleratedX86ARMCombined@crc_internal@absl@@YAPEAVCRCImpl@12@XZ ?TryRemove@Mutex@absl@@AEAAXPEAUPerThreadSynch@base_internal@2@@Z ?UTC@Impl@time_zone@cctz@time_internal@absl@@SA?AV2345@XZ ?UTCImpl@Impl@time_zone@cctz@time_internal@absl@@CAPEBV12345@XZ @@ -2948,6 +3162,8 @@ ?UnalignedStore64@base_internal@absl@@YAXPEAX_K@Z ?UnauthenticatedError@absl@@YA?AVStatus@1@Vstring_view@1@@Z ?UnavailableError@absl@@YA?AVStatus@1@Vstring_view@1@@Z + ?UnextendByZeroes@CRC32@crc_internal@absl@@UEBAXPEAI_K@Z + ?UnextendCrc32cByZeroes@crc_internal@absl@@YA?AVcrc32c_t@2@V32@_K@Z ?UnimplementedError@absl@@YA?AVStatus@1@Vstring_view@1@@Z ?UniversalEpoch@absl@@YA?AVTime@1@XZ ?UnknownError@absl@@YA?AVStatus@1@Vstring_view@1@@Z @@ -2959,12 +3175,14 @@ ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@VTime@1@@Z ?Unref@CordRep@cord_internal@absl@@SAXPEAU123@@Z ?Unref@CordRepBtree@cord_internal@absl@@SAXV?$Span@QEAUCordRep@cord_internal@absl@@@3@@Z + ?Unref@CrcCordState@crc_internal@absl@@CAXPEAURefcountedRep@123@@Z ?Unref@Status@absl@@CAX_K@Z ?UnrefNonInlined@Status@absl@@CAX_K@Z ?UnrefTree@InlineRep@Cord@absl@@AEAAXXZ ?Unregister@?$SampleRecorder@UHashtablezInfo@container_internal@absl@@@profiling_internal@absl@@QEAAXPEAUHashtablezInfo@container_internal@3@@Z ?UnsafeSetCordRep@CordzInfo@cord_internal@absl@@AEAAXPEAUCordRep@23@@Z ?UnsampleSlow@container_internal@absl@@YAXPEAUHashtablezInfo@12@@Z + ?Unscramble@CRC32@crc_internal@absl@@UEBAXPEAI@Z ?Untrack@CordzInfo@cord_internal@absl@@QEAAXXZ ?UpdateStackTrace@GraphCycles@synchronization_internal@absl@@QEAAXUGraphId@23@HP6AHPEAPEAXH@Z@Z ?Utf8SafeCEscape@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@Vstring_view@1@@Z @@ -3025,11 +3243,15 @@ ?WriterUnlock@Mutex@absl@@QEAAXXZ ?ZeroDuration@absl@@YA?AVDuration@1@XZ ?__add_back_capacity@?$deque@PEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAXXZ + ?__add_back_capacity@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AEAAXXZ + ?__add_back_capacity@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AEAAX_K@Z ?__addr@?$__temp_value@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAPEAUTransition@cctz@time_internal@absl@@XZ ?__addr@?$__temp_value@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAPEAUTransitionType@cctz@time_internal@absl@@XZ ?__alloc@?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@XZ ?__alloc@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@23@XZ ?__alloc@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@23@XZ + ?__alloc@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@23@XZ + ?__alloc@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@23@XZ ?__alloc@?$__split_buffer@PEAVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@23@XZ ?__alloc@?$__split_buffer@PEAVLogSink@absl@@AEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEAVLogSink@absl@@@23@XZ ?__alloc@?$__split_buffer@PEBVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@23@XZ @@ -3038,6 +3260,7 @@ ?__alloc@?$__split_buffer@UTransitionType@cctz@time_internal@absl@@AEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@23@XZ ?__alloc@?$__split_buffer@UViableSubstitution@strings_internal@absl@@AEAV?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@UViableSubstitution@strings_internal@absl@@@23@XZ ?__alloc@?$deque@PEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@XZ + ?__alloc@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@23@XZ ?__alloc@?$vector@PEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@AEAAAEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@23@XZ ?__alloc@?$vector@PEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@AEBAAEBV?$allocator@PEAVCordzHandle@cord_internal@absl@@@23@XZ ?__alloc@?$vector@PEAVLogSink@absl@@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@AEAAAEAV?$allocator@PEAVLogSink@absl@@@23@XZ @@ -3086,7 +3309,10 @@ ?__append@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAX_K@Z ?__append@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAX_K@Z ?__back_spare@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ + ?__back_spare@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ ?__back_spare@?$deque@PEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ + ?__back_spare@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ + ?__back_spare_blocks@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ ?__base_destruct_at_end@?$vector@PEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@AEAAXPEAPEAVCordzHandle@cord_internal@absl@@@Z ?__base_destruct_at_end@?$vector@PEAVLogSink@absl@@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@AEAAXPEAPEAVLogSink@absl@@@Z ?__base_destruct_at_end@?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@AEAAXPEAPEBVCordzHandle@cord_internal@absl@@@Z @@ -3096,6 +3322,7 @@ ?__base_destruct_at_end@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@AEAAXPEAVFormatArgImpl@str_format_internal@absl@@@Z ?__call_empty@?$__policy_invoker@$$A6A?AV?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@23@@Z@__function@Cr@std@@CA?AV?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@34@PEBT__policy_storage@234@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@34@@Z ?__capacity@?$deque@PEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ + ?__capacity@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ ?__clear@?$vector@PEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@AEAAXXZ ?__clear@?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@AEAAXXZ ?__clear@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAXXZ @@ -3106,11 +3333,19 @@ ?__construct_at_end@?$__split_buffer@UTransitionType@cctz@time_internal@absl@@AEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAX_K@Z ?__construct_at_end@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAX_K@Z ?__construct_at_end@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAX_K@Z + ?__copy_assign_alloc@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AEAAXAEBV123@@Z + ?__copy_assign_alloc@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AEAAXAEBV123@U?$integral_constant@_N$0A@@23@@Z ?__deallocate_node@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@AEAAXPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@@Z ?__destruct_at_begin@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ?__destruct_at_begin@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@U?$integral_constant@_N$00@23@@Z + ?__destruct_at_begin@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?__destruct_at_begin@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@U?$integral_constant@_N$00@23@@Z ?__destruct_at_end@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ?__destruct_at_end@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@U?$integral_constant@_N$0A@@23@@Z + ?__destruct_at_end@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?__destruct_at_end@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@U?$integral_constant@_N$0A@@23@@Z + ?__destruct_at_end@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?__destruct_at_end@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@U?$integral_constant@_N$0A@@23@@Z ?__destruct_at_end@?$__split_buffer@PEAVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAPEAVCordzHandle@cord_internal@absl@@@Z ?__destruct_at_end@?$__split_buffer@PEAVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAPEAVCordzHandle@cord_internal@absl@@U?$integral_constant@_N$0A@@23@@Z ?__destruct_at_end@?$__split_buffer@PEAVLogSink@absl@@AEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@QEAAXPEAPEAVLogSink@absl@@@Z @@ -3134,6 +3369,10 @@ ?__end_cap@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@XZ ?__end_cap@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@XZ ?__end_cap@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@XZ + ?__end_cap@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?__end_cap@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?__end_cap@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?__end_cap@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?__end_cap@?$__split_buffer@PEAVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAPEAVCordzHandle@cord_internal@absl@@XZ ?__end_cap@?$__split_buffer@PEAVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAPEAVCordzHandle@cord_internal@absl@@XZ ?__end_cap@?$__split_buffer@PEAVLogSink@absl@@AEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAPEAVLogSink@absl@@XZ @@ -3164,8 +3403,11 @@ ?__end_cap@?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@AEBAAEBQEAUViableSubstitution@strings_internal@absl@@XZ ?__end_cap@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@AEAAAEAPEAVFormatArgImpl@str_format_internal@absl@@XZ ?__end_cap@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@AEBAAEBQEAVFormatArgImpl@str_format_internal@absl@@XZ + ?__erase_to_end@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AEAAXV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@23@@Z ?__front_spare@?$deque@PEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ + ?__front_spare@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ ?__get@?$__compressed_pair_elem@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@$00$0A@@Cr@std@@QEAAAEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@23@XZ + ?__get@?$__compressed_pair_elem@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@$00$0A@@Cr@std@@QEAAAEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@$00$0A@@Cr@std@@QEAAAEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@AEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@$00$0A@@Cr@std@@QEAAAEAV?$allocator@PEAVLogSink@absl@@@23@XZ ?__get@?$__compressed_pair_elem@AEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@$00$0A@@Cr@std@@QEAAAEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@23@XZ @@ -3177,6 +3419,8 @@ ?__get@?$__compressed_pair_elem@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@$0A@$0A@@Cr@std@@QEBAAEBQEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@$0A@$0A@@Cr@std@@QEAAAEAPEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@XZ ?__get@?$__compressed_pair_elem@PEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@$0A@$0A@@Cr@std@@QEBAAEBQEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@XZ + ?__get@?$__compressed_pair_elem@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@$0A@$0A@@Cr@std@@QEAAAEAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?__get@?$__compressed_pair_elem@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@$0A@$0A@@Cr@std@@QEBAAEBQEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PEAPEAVCordzHandle@cord_internal@absl@@$0A@$0A@@Cr@std@@QEAAAEAPEAPEAVCordzHandle@cord_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PEAPEAVCordzHandle@cord_internal@absl@@$0A@$0A@@Cr@std@@QEBAAEBQEAPEAVCordzHandle@cord_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PEAPEAVLogSink@absl@@$0A@$0A@@Cr@std@@QEAAAEAPEAPEAVLogSink@absl@@XZ @@ -3191,6 +3435,8 @@ ?__get@?$__compressed_pair_elem@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@$0A@$0A@@Cr@std@@QEBAAEBQEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PEAULogMessageData@LogMessage@log_internal@absl@@$0A@$0A@@Cr@std@@QEAAAEAPEAULogMessageData@LogMessage@log_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PEAULogMessageData@LogMessage@log_internal@absl@@$0A@$0A@@Cr@std@@QEBAAEBQEAULogMessageData@LogMessage@log_internal@absl@@XZ + ?__get@?$__compressed_pair_elem@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@$0A@$0A@@Cr@std@@QEAAAEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?__get@?$__compressed_pair_elem@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@$0A@$0A@@Cr@std@@QEBAAEBQEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PEAUThreadIdentity@base_internal@absl@@$0A@$0A@@Cr@std@@QEAAAEAPEAUThreadIdentity@base_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PEAUTransition@cctz@time_internal@absl@@$0A@$0A@@Cr@std@@QEAAAEAPEAUTransition@cctz@time_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PEAUTransition@cctz@time_internal@absl@@$0A@$0A@@Cr@std@@QEBAAEBQEAUTransition@cctz@time_internal@absl@@XZ @@ -3200,6 +3446,7 @@ ?__get@?$__compressed_pair_elem@PEAUViableSubstitution@strings_internal@absl@@$0A@$0A@@Cr@std@@QEBAAEBQEAUViableSubstitution@strings_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@$0A@$0A@@Cr@std@@QEAAAEAPEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@XZ ?__get@?$__compressed_pair_elem@PEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@$0A@$0A@@Cr@std@@QEBAAEBQEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@XZ + ?__get@?$__compressed_pair_elem@PEAVFallbackCrcMemcpyEngine@crc_internal@absl@@$0A@$0A@@Cr@std@@QEAAAEAPEAVFallbackCrcMemcpyEngine@crc_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PEAVFormatArgImpl@str_format_internal@absl@@$0A@$0A@@Cr@std@@QEAAAEAPEAVFormatArgImpl@str_format_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PEAVFormatArgImpl@str_format_internal@absl@@$0A@$0A@@Cr@std@@QEBAAEBQEAVFormatArgImpl@str_format_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PEAVTimeZoneIf@cctz@time_internal@absl@@$0A@$0A@@Cr@std@@QEAAAEAPEAVTimeZoneIf@cctz@time_internal@absl@@XZ @@ -3214,10 +3461,12 @@ ?__get@?$__compressed_pair_elem@U?$default_delete@$$CBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAU?$default_delete@$$CBVImpl@time_zone@cctz@time_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAU?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAU?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@23@XZ + ?__get@?$__compressed_pair_elem@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAU?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@U?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAU?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAU?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAU?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@V?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@$00$0A@@Cr@std@@QEAAAEAV?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@XZ + ?__get@?$__compressed_pair_elem@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@$00$0A@@Cr@std@@QEAAAEAV?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@23@XZ ?__get@?$__compressed_pair_elem@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@$00$0A@@Cr@std@@QEAAAEAV?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@23@XZ ?__get@?$__compressed_pair_elem@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@$00$0A@@Cr@std@@QEBAAEBV?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@23@XZ ?__get@?$__compressed_pair_elem@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@$00$0A@@Cr@std@@QEAAAEAV?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@XZ @@ -3225,6 +3474,7 @@ ?__get@?$__compressed_pair_elem@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@Cr@std@@$00$00@Cr@std@@QEAAAEAV?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@$00$00@Cr@std@@QEAAAEAV?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@XZ + ?__get@?$__compressed_pair_elem@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEBAAEBV?$allocator@PEAVCordzHandle@cord_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@PEAVLogSink@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAV?$allocator@PEAVLogSink@absl@@@23@XZ @@ -3235,6 +3485,7 @@ ?__get@?$__compressed_pair_elem@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@$00$00@Cr@std@@QEAAAEAV?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAV?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEBAAEBV?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@23@XZ + ?__get@?$__compressed_pair_elem@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAV?$allocator@UTransition@cctz@time_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEBAAEBV?$allocator@UTransition@cctz@time_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@23@XZ @@ -3258,6 +3509,7 @@ ?__make_iter@?$vector@UConversionItem@ParsedFormatBase@str_format_internal@absl@@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@AEBA?AV?$__wrap_iter@PEBUConversionItem@ParsedFormatBase@str_format_internal@absl@@@23@PEBUConversionItem@ParsedFormatBase@str_format_internal@absl@@@Z ?__make_iter@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAA?AV?$__wrap_iter@PEAUTransition@cctz@time_internal@absl@@@23@PEAUTransition@cctz@time_internal@absl@@@Z ?__make_iter@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAA?AV?$__wrap_iter@PEAUTransitionType@cctz@time_internal@absl@@@23@PEAUTransitionType@cctz@time_internal@absl@@@Z + ?__maybe_remove_back_spare@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AEAA_N_N@Z ?__move_range@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAXPEAUTransition@cctz@time_internal@absl@@00@Z ?__move_range@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAXPEAUTransitionType@cctz@time_internal@absl@@00@Z ?__node_alloc@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@QEAAAEAV?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@XZ @@ -3270,16 +3522,20 @@ ?__recommend@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEBA_K_K@Z ?__recommend@?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@AEBA_K_K@Z ?__recommend@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@AEBA_K_K@Z + ?__recommend_blocks@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SA_K_K@Z ?__rehash_unique@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@QEAAX_K@Z ?__rewrap@?$__unwrap_iter_impl@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@$00@Cr@std@@SAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV45678@0@Z + ?__rewrap@?$__unwrap_iter_impl@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@SAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU4567@0@Z ?__rewrap@?$__unwrap_iter_impl@PEAPEAVCordzHandle@cord_internal@absl@@$00@Cr@std@@SAPEAPEAVCordzHandle@cord_internal@absl@@PEAPEAV456@0@Z ?__rewrap@?$__unwrap_iter_impl@PEAPEAVLogSink@absl@@$00@Cr@std@@SAPEAPEAVLogSink@absl@@PEAPEAV45@0@Z ?__rewrap@?$__unwrap_iter_impl@PEAPEBVCordzHandle@cord_internal@absl@@$00@Cr@std@@SAPEAPEBVCordzHandle@cord_internal@absl@@PEAPEBV456@0@Z ?__rewrap@?$__unwrap_iter_impl@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@$00@Cr@std@@SAPEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PEAU4567@0@Z + ?__rewrap@?$__unwrap_iter_impl@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@SAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU4567@0@Z ?__rewrap@?$__unwrap_iter_impl@PEAUTransition@cctz@time_internal@absl@@$00@Cr@std@@SAPEAUTransition@cctz@time_internal@absl@@PEAU4567@0@Z ?__rewrap@?$__unwrap_iter_impl@PEAUTransitionType@cctz@time_internal@absl@@$00@Cr@std@@SAPEAUTransitionType@cctz@time_internal@absl@@PEAU4567@0@Z ?__rewrap@?$__unwrap_iter_impl@PEAUViableSubstitution@strings_internal@absl@@$00@Cr@std@@SAPEAUViableSubstitution@strings_internal@absl@@PEAU456@0@Z ?__rewrap@?$__unwrap_iter_impl@PEAVFormatArgImpl@str_format_internal@absl@@$00@Cr@std@@SAPEAVFormatArgImpl@str_format_internal@absl@@PEAV456@0@Z + ?__rewrap@?$__unwrap_iter_impl@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@SAPEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU4567@0@Z ?__rewrap@?$__unwrap_iter_impl@PEBVFormatArgImpl@str_format_internal@absl@@$00@Cr@std@@SAPEBVFormatArgImpl@str_format_internal@absl@@PEBV456@0@Z ?__rewrap@?$__unwrap_iter_impl@V?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@23@V423@0@Z ?__rewrap@?$__unwrap_iter_impl@V?$reverse_iterator@PEAPEAVLogSink@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PEAPEAVLogSink@absl@@@23@V423@0@Z @@ -3288,9 +3544,12 @@ ?__rewrap@?$__unwrap_iter_impl@V?$reverse_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PEAUTransition@cctz@time_internal@absl@@@23@V423@0@Z ?__rewrap@?$__unwrap_iter_impl@V?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@23@V423@0@Z ?__rewrap@?$__unwrap_iter_impl@V?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@23@V423@0@Z + ?__rewrap@?$__unwrap_range_impl@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@@Cr@std@@SA?A?<auto>@@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@0@Z ?__rewrap@?$__unwrap_range_impl@PEBVFormatArgImpl@str_format_internal@absl@@PEBV123@@Cr@std@@SA?A?<auto>@@PEBVFormatArgImpl@str_format_internal@absl@@0@Z ?__size@?$deque@PEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEA_KXZ ?__size@?$deque@PEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEB_KXZ + ?__size@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEA_KXZ + ?__size@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEB_KXZ ?__swap_out_circular_buffer@?$vector@PEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@AEAAXAEAU?$__split_buffer@PEAVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@23@@Z ?__swap_out_circular_buffer@?$vector@PEAVLogSink@absl@@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@AEAAXAEAU?$__split_buffer@PEAVLogSink@absl@@AEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@@23@@Z ?__swap_out_circular_buffer@?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@AEAAXAEAU?$__split_buffer@PEBVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@23@@Z @@ -3309,14 +3568,17 @@ ?__throw_length_error@?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@AEBAXXZ ?__throw_length_error@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@AEBAXXZ ?__unwrap@?$__unwrap_iter_impl@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@$00@Cr@std@@SAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV45678@@Z + ?__unwrap@?$__unwrap_iter_impl@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@SAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU4567@@Z ?__unwrap@?$__unwrap_iter_impl@PEAPEAVCordzHandle@cord_internal@absl@@$00@Cr@std@@SAPEAPEAVCordzHandle@cord_internal@absl@@PEAPEAV456@@Z ?__unwrap@?$__unwrap_iter_impl@PEAPEAVLogSink@absl@@$00@Cr@std@@SAPEAPEAVLogSink@absl@@PEAPEAV45@@Z ?__unwrap@?$__unwrap_iter_impl@PEAPEBVCordzHandle@cord_internal@absl@@$00@Cr@std@@SAPEAPEBVCordzHandle@cord_internal@absl@@PEAPEBV456@@Z ?__unwrap@?$__unwrap_iter_impl@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@$00@Cr@std@@SAPEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PEAU4567@@Z + ?__unwrap@?$__unwrap_iter_impl@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@SAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU4567@@Z ?__unwrap@?$__unwrap_iter_impl@PEAUTransition@cctz@time_internal@absl@@$00@Cr@std@@SAPEAUTransition@cctz@time_internal@absl@@PEAU4567@@Z ?__unwrap@?$__unwrap_iter_impl@PEAUTransitionType@cctz@time_internal@absl@@$00@Cr@std@@SAPEAUTransitionType@cctz@time_internal@absl@@PEAU4567@@Z ?__unwrap@?$__unwrap_iter_impl@PEAUViableSubstitution@strings_internal@absl@@$00@Cr@std@@SAPEAUViableSubstitution@strings_internal@absl@@PEAU456@@Z ?__unwrap@?$__unwrap_iter_impl@PEAVFormatArgImpl@str_format_internal@absl@@$00@Cr@std@@SAPEAVFormatArgImpl@str_format_internal@absl@@PEAV456@@Z + ?__unwrap@?$__unwrap_iter_impl@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@SAPEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU4567@@Z ?__unwrap@?$__unwrap_iter_impl@PEBVFormatArgImpl@str_format_internal@absl@@$00@Cr@std@@SAPEBVFormatArgImpl@str_format_internal@absl@@PEBV456@@Z ?__unwrap@?$__unwrap_iter_impl@V?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@23@V423@@Z ?__unwrap@?$__unwrap_iter_impl@V?$reverse_iterator@PEAPEAVLogSink@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PEAPEAVLogSink@absl@@@23@V423@@Z @@ -3325,6 +3587,7 @@ ?__unwrap@?$__unwrap_iter_impl@V?$reverse_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PEAUTransition@cctz@time_internal@absl@@@23@V423@@Z ?__unwrap@?$__unwrap_iter_impl@V?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@23@V423@@Z ?__unwrap@?$__unwrap_iter_impl@V?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@23@V423@@Z + ?__unwrap@?$__unwrap_range_impl@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@@Cr@std@@SA?A?<auto>@@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@0@Z ?__unwrap@?$__unwrap_range_impl@PEBVFormatArgImpl@str_format_internal@absl@@PEBV123@@Cr@std@@SA?A?<auto>@@PEBVFormatArgImpl@str_format_internal@absl@@0@Z ?__upcast@?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@QEAAPEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@23@XZ ?__vallocate@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@AEAAX_K@Z @@ -3340,6 +3603,7 @@ ?allocate@?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@QEAAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@_K@Z ?allocate@?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@QEAAPEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@_K@Z ?allocate@?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@QEAAPEAPEAUCordRep@cord_internal@absl@@_K@Z + ?allocate@?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QEAAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@_K@Z ?allocate@?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@QEAAPEAPEAVCordzHandle@cord_internal@absl@@_K@Z ?allocate@?$allocator@PEAVLogSink@absl@@@Cr@std@@QEAAPEAPEAVLogSink@absl@@_K@Z ?allocate@?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@QEAAPEAPEBVCordzHandle@cord_internal@absl@@_K@Z @@ -3347,6 +3611,7 @@ ?allocate@?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@QEAAPEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@23@_K@Z ?allocate@?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@QEAAPEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@_K@Z ?allocate@?$allocator@UPayload@status_internal@absl@@@Cr@std@@QEAAPEAUPayload@status_internal@absl@@_K@Z + ?allocate@?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QEAAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@_K@Z ?allocate@?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@QEAAPEAUTransition@cctz@time_internal@absl@@_K@Z ?allocate@?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@QEAAPEAUTransitionType@cctz@time_internal@absl@@_K@Z ?allocate@?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@QEAAPEAUViableSubstitution@strings_internal@absl@@_K@Z @@ -3357,6 +3622,7 @@ ?allocate@?$allocator_traits@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@_K@Z ?allocate@?$allocator_traits@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@SAPEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@23@AEAV?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@_K@Z ?allocate@?$allocator_traits@V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@Cr@std@@SAPEAUPayload@status_internal@absl@@AEAV?$allocator@UPayload@status_internal@absl@@@23@_K@Z + ?allocate@?$allocator_traits@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@23@_K@Z ?arg@BoundConversion@str_format_internal@absl@@QEBAPEBVFormatArgImpl@23@XZ ?as_chars@InlineData@cord_internal@absl@@QEAAPEADXZ ?as_chars@InlineData@cord_internal@absl@@QEBAPEBDXZ @@ -3374,6 +3640,8 @@ ?back@?$InlinedVector@H$0CP@V?$allocator@H@Cr@std@@@absl@@QEAAAEAHXZ ?back@?$InlinedVector@PEAUCordRep@cord_internal@absl@@$01V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@absl@@QEAAAEAPEAUCordRep@cord_internal@2@XZ ?back@?$InlinedVector@PEAUCordRep@cord_internal@absl@@$0CP@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@absl@@QEAAAEAPEAUCordRep@cord_internal@2@XZ + ?back@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?back@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?back@?$vector@UConversionItem@ParsedFormatBase@str_format_internal@absl@@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@XZ ?back@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAUTransition@cctz@time_internal@absl@@XZ ?back@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAUTransitionType@cctz@time_internal@absl@@XZ @@ -3388,6 +3656,7 @@ ?base@?$__wrap_iter@PEBUTransition@cctz@time_internal@absl@@@Cr@std@@QEBAPEBUTransition@cctz@time_internal@absl@@XZ ?base@?$__wrap_iter@PEBUTransitionType@cctz@time_internal@absl@@@Cr@std@@QEBAPEBUTransitionType@cctz@time_internal@absl@@XZ ?base@?$move_iterator@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@QEGBAAEBQEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@XZ + ?base@?$move_iterator@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QEGBAAEBQEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?base@?$move_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@QEGBAAEBQEAUTransition@cctz@time_internal@absl@@XZ ?base@?$move_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@QEGBAAEBQEAUTransitionType@cctz@time_internal@absl@@XZ ?base@?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@Cr@std@@QEBAPEAPEAVCordzHandle@cord_internal@absl@@XZ @@ -3406,6 +3675,10 @@ ?begin@?$Span@QEAUCordRep@cord_internal@absl@@@absl@@QEBAPEBQEAUCordRep@cord_internal@2@XZ ?begin@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@QEAA?AV?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@XZ ?begin@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@XZ + ?begin@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?begin@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBAPEBQEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?begin@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA?AV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@23@XZ + ?begin@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA?AV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@23@XZ ?begin@?$initializer_list@U?$pair@Vstring_view@absl@@V12@@Cr@std@@@std@@QEBAPEBU?$pair@Vstring_view@absl@@V12@@Cr@2@XZ ?begin@?$initializer_list@VFormatArgImpl@str_format_internal@absl@@@std@@QEBAPEBVFormatArgImpl@str_format_internal@absl@@XZ ?begin@?$initializer_list@Vstring_view@absl@@@std@@QEBAPEBVstring_view@absl@@XZ @@ -3419,6 +3692,7 @@ ?begin@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA?AV?$__wrap_iter@PEAUTransitionType@cctz@time_internal@absl@@@23@XZ ?begin@ChunkRange@Cord@absl@@QEBA?AVChunkIterator@23@XZ ?begin@CordRepBtree@cord_internal@absl@@QEBA_KXZ + ?begin@__deque_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA?AU1234@XZ ?begin@string_view@absl@@QEBAPEBDXZ ?btree@CordRep@cord_internal@absl@@QEAAPEAVCordRepBtree@23@XZ ?btree@CordRep@cord_internal@absl@@QEBAPEBVCordRepBtree@23@XZ @@ -3428,6 +3702,8 @@ ?bytes_value@ProtoField@log_internal@absl@@QEBA?AV?$Span@$$CBD@3@XZ ?capacity@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ ?capacity@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ + ?capacity@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ + ?capacity@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ ?capacity@?$__split_buffer@PEAVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ ?capacity@?$__split_buffer@PEAVLogSink@absl@@AEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ ?capacity@?$__split_buffer@PEBVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ @@ -3452,6 +3728,8 @@ ?clear@?$InlinedVector@PEAVLogSink@absl@@$0BA@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@absl@@QEAAXXZ ?clear@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@QEAAXXZ ?clear@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ + ?clear@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ + ?clear@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ ?clear@?$__split_buffer@PEAVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ ?clear@?$__split_buffer@PEAVLogSink@absl@@AEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@QEAAXXZ ?clear@?$__split_buffer@PEBVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ @@ -3459,6 +3737,7 @@ ?clear@?$__split_buffer@UTransition@cctz@time_internal@absl@@AEAV?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ ?clear@?$__split_buffer@UTransitionType@cctz@time_internal@absl@@AEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ ?clear@?$__split_buffer@UViableSubstitution@strings_internal@absl@@AEAV?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ + ?clear@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ ?clear@?$unordered_map@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@QEAAXXZ ?clear@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ ?clear@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ @@ -3520,6 +3799,7 @@ ?deallocate@?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@QEAAXPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@_K@Z ?deallocate@?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@QEAAXPEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@_K@Z ?deallocate@?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@QEAAXPEAPEAUCordRep@cord_internal@absl@@_K@Z + ?deallocate@?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QEAAXPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@_K@Z ?deallocate@?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@QEAAXPEAPEAVCordzHandle@cord_internal@absl@@_K@Z ?deallocate@?$allocator@PEAVLogSink@absl@@@Cr@std@@QEAAXPEAPEAVLogSink@absl@@_K@Z ?deallocate@?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@QEAAXPEAPEBVCordzHandle@cord_internal@absl@@_K@Z @@ -3527,6 +3807,7 @@ ?deallocate@?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@QEAAXPEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@23@_K@Z ?deallocate@?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@QEAAXPEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@_K@Z ?deallocate@?$allocator@UPayload@status_internal@absl@@@Cr@std@@QEAAXPEAUPayload@status_internal@absl@@_K@Z + ?deallocate@?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QEAAXPEAUPrefixCrc@CrcCordState@crc_internal@absl@@_K@Z ?deallocate@?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@QEAAXPEAUTransition@cctz@time_internal@absl@@_K@Z ?deallocate@?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@QEAAXPEAUTransitionType@cctz@time_internal@absl@@_K@Z ?deallocate@?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@QEAAXPEAUViableSubstitution@strings_internal@absl@@_K@Z @@ -3534,6 +3815,7 @@ ?deallocate@?$allocator_traits@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@23@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@_K@Z ?deallocate@?$allocator_traits@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@PEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@_K@Z ?deallocate@?$allocator_traits@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAUCordRep@cord_internal@absl@@@23@PEAPEAUCordRep@cord_internal@absl@@_K@Z + ?deallocate@?$allocator_traits@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@23@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@_K@Z ?deallocate@?$allocator_traits@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@23@PEAPEAVCordzHandle@cord_internal@absl@@_K@Z ?deallocate@?$allocator_traits@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAVLogSink@absl@@@23@PEAPEAVLogSink@absl@@_K@Z ?deallocate@?$allocator_traits@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@23@PEAPEBVCordzHandle@cord_internal@absl@@_K@Z @@ -3541,6 +3823,7 @@ ?deallocate@?$allocator_traits@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@23@_K@Z ?deallocate@?$allocator_traits@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@23@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@_K@Z ?deallocate@?$allocator_traits@V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UPayload@status_internal@absl@@@23@PEAUPayload@status_internal@absl@@_K@Z + ?deallocate@?$allocator_traits@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@23@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@_K@Z ?deallocate@?$allocator_traits@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UTransition@cctz@time_internal@absl@@@23@PEAUTransition@cctz@time_internal@absl@@_K@Z ?deallocate@?$allocator_traits@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@23@PEAUTransitionType@cctz@time_internal@absl@@_K@Z ?deallocate@?$allocator_traits@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UViableSubstitution@strings_internal@absl@@@23@PEAUViableSubstitution@strings_internal@absl@@_K@Z @@ -3560,6 +3843,8 @@ ?empty@?$Span@D@absl@@QEBA_NXZ ?empty@?$Span@I@absl@@QEBA_NXZ ?empty@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBA_NXZ + ?empty@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA_NXZ + ?empty@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA_NXZ ?empty@?$vector@UConversionItem@ParsedFormatBase@str_format_internal@absl@@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEBA_NXZ ?empty@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBA_NXZ ?empty@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBA_NXZ @@ -3575,7 +3860,10 @@ ?end@?$Span@QEAUCordRep@cord_internal@absl@@@absl@@QEBAPEBQEAUCordRep@cord_internal@2@XZ ?end@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@QEAA?AV?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@XZ ?end@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@XZ + ?end@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?end@?$deque@PEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA?AV?$__deque_iterator@PEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEBV12345@AEAPEBV12345@PEAPEAPEBV12345@_J$0A@@23@XZ + ?end@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA?AV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@23@XZ + ?end@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA?AV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@23@XZ ?end@?$initializer_list@U?$pair@Vstring_view@absl@@V12@@Cr@std@@@std@@QEBAPEBU?$pair@Vstring_view@absl@@V12@@Cr@2@XZ ?end@?$initializer_list@Vstring_view@absl@@@std@@QEBAPEBVstring_view@absl@@XZ ?end@?$unordered_map@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@QEAA?AV?$__hash_map_iterator@V?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@XZ @@ -3586,7 +3874,9 @@ ?end@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA?AV?$__wrap_iter@PEAUTransitionType@cctz@time_internal@absl@@@23@XZ ?end@ChunkRange@Cord@absl@@QEBA?AVChunkIterator@23@XZ ?end@CordRepBtree@cord_internal@absl@@QEBA_KXZ + ?end@__deque_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA?AU1234@XZ ?end@string_view@absl@@QEBAPEBDXZ + ?engines@?1??CrcAndCopy@CrcMemcpy@crc_internal@absl@@SA?AVcrc32c_t@4@PEIAXPEIBX_KV54@_N@Z@4UArchSpecificEngines@234@B ?entries@CordRepRing@cord_internal@absl@@QEBAIII@Z ?entries@CordRepRing@cord_internal@absl@@QEBAIXZ ?entry_begin_pos@CordRepRing@cord_internal@absl@@QEBAAEB_KI@Z @@ -3625,6 +3915,10 @@ ?first@?$__compressed_pair@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@XZ ?first@?$__compressed_pair@PEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QEAAAEAPEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@XZ ?first@?$__compressed_pair@PEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QEBAAEBQEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@XZ + ?first@?$__compressed_pair@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?first@?$__compressed_pair@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?first@?$__compressed_pair@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?first@?$__compressed_pair@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?first@?$__compressed_pair@PEAPEAVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAPEAVCordzHandle@cord_internal@absl@@XZ ?first@?$__compressed_pair@PEAPEAVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAPEAVCordzHandle@cord_internal@absl@@XZ ?first@?$__compressed_pair@PEAPEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAPEAVCordzHandle@cord_internal@absl@@XZ @@ -3647,6 +3941,8 @@ ?first@?$__compressed_pair@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@XZ ?first@?$__compressed_pair@PEAULogMessageData@LogMessage@log_internal@absl@@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAULogMessageData@LogMessage@log_internal@absl@@XZ ?first@?$__compressed_pair@PEAULogMessageData@LogMessage@log_internal@absl@@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAULogMessageData@LogMessage@log_internal@absl@@XZ + ?first@?$__compressed_pair@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEAAAEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?first@?$__compressed_pair@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEBAAEBQEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?first@?$__compressed_pair@PEAUThreadIdentity@base_internal@absl@@P6AXPEAX@Z@Cr@std@@QEAAAEAPEAUThreadIdentity@base_internal@absl@@XZ ?first@?$__compressed_pair@PEAUTransition@cctz@time_internal@absl@@AEAV?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAUTransition@cctz@time_internal@absl@@XZ ?first@?$__compressed_pair@PEAUTransition@cctz@time_internal@absl@@AEAV?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAUTransition@cctz@time_internal@absl@@XZ @@ -3662,6 +3958,7 @@ ?first@?$__compressed_pair@PEAUViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAUViableSubstitution@strings_internal@absl@@XZ ?first@?$__compressed_pair@PEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@XZ ?first@?$__compressed_pair@PEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@XZ + ?first@?$__compressed_pair@PEAVFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAVFallbackCrcMemcpyEngine@crc_internal@absl@@XZ ?first@?$__compressed_pair@PEAVFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAVFormatArgImpl@str_format_internal@absl@@XZ ?first@?$__compressed_pair@PEAVFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAVFormatArgImpl@str_format_internal@absl@@XZ ?first@?$__compressed_pair@PEAVTimeZoneIf@cctz@time_internal@absl@@U?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAVTimeZoneIf@cctz@time_internal@absl@@XZ @@ -3678,6 +3975,8 @@ ?first@?$__compressed_pair@_KV?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@QEBAAEB_KXZ ?first@?$__compressed_pair@_KV?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEA_KXZ ?first@?$__compressed_pair@_KV?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEB_KXZ + ?first@?$__compressed_pair@_KV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEA_KXZ + ?first@?$__compressed_pair@_KV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEB_KXZ ?fixed_time_zone@cctz@time_internal@absl@@YA?AVtime_zone@123@AEBV?$duration@_JV?$ratio@$00$00@Cr@std@@@chrono@Cr@std@@@Z ?flat@CordRep@cord_internal@absl@@QEAAPEAUCordRepFlat@23@XZ ?flat@CordRep@cord_internal@absl@@QEBAPEBUCordRepFlat@23@XZ @@ -3685,6 +3984,7 @@ ?from_chars@absl@@YA?AUfrom_chars_result@1@PEBD0AEAMW4chars_format@1@@Z ?from_chars@absl@@YA?AUfrom_chars_result@1@PEBD0AEANW4chars_format@1@@Z ?front@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@XZ + ?front@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?front@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAUTransition@cctz@time_internal@absl@@XZ ?front@string_view@absl@@QEBAAEBDXZ ?gbswap_16@absl@@YAGG@Z @@ -3704,6 +4004,7 @@ ?get@?$__temp_value@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAUTransitionType@cctz@time_internal@absl@@XZ ?get@?$__tuple_leaf@$0A@AEBVstring_view@absl@@$0A@@Cr@std@@QEBAAEBVstring_view@absl@@XZ ?get@?$unique_ptr@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEBAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@XZ + ?get@?$unique_ptr@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEBAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?get@?$unique_ptr@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@@Cr@std@@QEBAPEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@23@XZ ?get@?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEBAPEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@XZ ?get@?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBAPEAVZoneInfoSource@cctz@time_internal@absl@@XZ @@ -3712,6 +4013,7 @@ ?get_deleter@?$unique_ptr@$$BY0A@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QEBAAEBV?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@23@XZ ?get_deleter@?$unique_ptr@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@@Cr@std@@QEAAAEAV?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@XZ ?get_deleter@?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEAAAEAU?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@23@XZ + ?get_deleter@?$unique_ptr@VFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAU?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@23@XZ ?get_from_arg@InputValue@UnboundConversion@str_format_internal@absl@@QEBAHXZ ?get_weekday@detail@cctz@time_internal@absl@@YA?AW4weekday@1234@AEBV?$civil_time@Usecond_tag@detail@cctz@time_internal@absl@@@1234@@Z ?get_yearday@detail@cctz@time_internal@absl@@YAHAEBV?$civil_time@Usecond_tag@detail@cctz@time_internal@absl@@@1234@@Z @@ -3806,6 +4108,7 @@ ?month@?$civil_time@Umonth_tag@detail@cctz@time_internal@absl@@@detail@cctz@time_internal@absl@@QEBAHXZ ?month@?$civil_time@Usecond_tag@detail@cctz@time_internal@absl@@@detail@cctz@time_internal@absl@@QEBAHXZ ?month@?$civil_time@Usecond_tag@time_internal@absl@@@detail@cctz@time_internal@absl@@QEBAHXZ + ?mutable_rep@CrcCordState@crc_internal@absl@@QEAAPEAURep@123@XZ ?n_day@impl@detail@cctz@time_internal@absl@@YA?AUfields@2345@_JC00CCC@Z ?n_hour@impl@detail@cctz@time_internal@absl@@YA?AUfields@2345@_J0000CC@Z ?n_min@impl@detail@cctz@time_internal@absl@@YA?AUfields@2345@_J00000C@Z @@ -3815,6 +4118,8 @@ ?next@?$probe_seq@$07@container_internal@absl@@QEAAXXZ ?next_transition@time_zone@cctz@time_internal@absl@@QEBA_NAEBV?$time_point@Vsystem_clock@chrono@Cr@std@@V?$duration@_JV?$ratio@$00$00@Cr@std@@@234@@chrono@Cr@std@@PEAUcivil_transition@1234@@Z ?next_weekday@detail@cctz@time_internal@absl@@YA?AV?$civil_time@Uday_tag@detail@cctz@time_internal@absl@@@1234@V51234@W4weekday@1234@@Z + ?non_temporal_store_memcpy@crc_internal@absl@@YAPEAXPEIAXPEIBX_K@Z + ?non_temporal_store_memcpy_avx@crc_internal@absl@@YAPEAXPEIAXPEIBX_K@Z ?offset@?$probe_seq@$07@container_internal@absl@@QEBA_KXZ ?offset@?$probe_seq@$07@container_internal@absl@@QEBA_K_K@Z ?ok@Status@absl@@QEBA_NXZ @@ -3828,8 +4133,10 @@ ?pop_back@?$InlinedVector@H$0CP@V?$allocator@H@Cr@std@@@absl@@QEAAXXZ ?pop_back@?$InlinedVector@PEAUCordRep@cord_internal@absl@@$01V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@absl@@QEAAXXZ ?pop_back@?$InlinedVector@PEAUCordRep@cord_internal@absl@@$0CP@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@absl@@QEAAXXZ + ?pop_back@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ ?pop_back@?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ ?pop_front@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ + ?pop_front@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ ?pos@Filler@CordRepRing@cord_internal@absl@@QEBAIXZ ?precision@FormatConversionSpecImpl@str_format_internal@absl@@QEBAHXZ ?prefix@LogEntry@absl@@QEBA_NXZ @@ -3842,7 +4149,12 @@ ?push_back@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ?push_back@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ?push_back@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z + ?push_back@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?push_back@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?push_back@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?push_back@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ?push_back@?$deque@PEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEBVImpl@time_zone@cctz@time_internal@absl@@@Z + ?push_back@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ?push_back@?$vector@PEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAVCordzHandle@cord_internal@absl@@@Z ?push_back@?$vector@PEAVLogSink@absl@@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAVLogSink@absl@@@Z ?push_back@?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEBVCordzHandle@cord_internal@absl@@@Z @@ -3850,6 +4162,8 @@ ?push_back@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBUTransition@cctz@time_internal@absl@@@Z ?push_front@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ?push_front@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z + ?push_front@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?push_front@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ?raw_code@Status@absl@@QEBAHXZ ?rbegin@string_view@absl@@QEBA?AV?$reverse_iterator@PEBD@Cr@std@@XZ ?reduce_size@InlineRep@Cord@absl@@QEAAX_K@Z @@ -3857,8 +4171,10 @@ ?reference@?$optional@_K@absl@@AEAAAEA_KXZ ?release@?$unique_ptr@$$CBVImpl@time_zone@cctz@time_internal@absl@@U?$default_delete@$$CBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAPEBVImpl@time_zone@cctz@time_internal@absl@@XZ ?release@?$unique_ptr@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEAAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@XZ + ?release@?$unique_ptr@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEAAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?release@?$unique_ptr@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@@Cr@std@@QEAAPEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@23@XZ ?release@?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEAAPEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@XZ + ?release@?$unique_ptr@VFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAPEAVFallbackCrcMemcpyEngine@crc_internal@absl@@XZ ?release@?$unique_ptr@VTimeZoneInfo@cctz@time_internal@absl@@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAPEAVTimeZoneInfo@cctz@time_internal@absl@@XZ ?remaining_inline_capacity@InlineRep@Cord@absl@@QEBA_KXZ ?remove_prefix@?$Span@$$CBD@absl@@QEAAX_K@Z @@ -3869,16 +4185,19 @@ ?remove_suffix@?$Span@D@absl@@QEAAX_K@Z ?remove_suffix@string_view@absl@@QEAAX_K@Z ?rend@string_view@absl@@QEBA?AV?$reverse_iterator@PEBD@Cr@std@@XZ + ?rep@CrcCordState@crc_internal@absl@@QEBAAEBURep@123@XZ ?rep@Rep@CordBuffer@absl@@QEBAPEAUCordRepFlat@cord_internal@3@XZ ?reserve@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAX_K@Z ?reserve@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAX_K@Z ?reserve@?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QEAAX_K@Z ?reset@?$unique_ptr@$$CBVImpl@time_zone@cctz@time_internal@absl@@U?$default_delete@$$CBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ?reset@?$unique_ptr@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEAAXPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z + ?reset@?$unique_ptr@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEAAXPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ?reset@?$unique_ptr@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@@Cr@std@@QEAAXPEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@23@@Z ?reset@?$unique_ptr@ULogMessageData@LogMessage@log_internal@absl@@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAULogMessageData@LogMessage@log_internal@absl@@@Z ?reset@?$unique_ptr@UThreadIdentity@base_internal@absl@@P6AXPEAX@Z@Cr@std@@QEAAXPEAUThreadIdentity@base_internal@absl@@@Z ?reset@?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEAAXPEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Z + ?reset@?$unique_ptr@VFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAVFallbackCrcMemcpyEngine@crc_internal@absl@@@Z ?reset@?$unique_ptr@VTimeZoneIf@cctz@time_internal@absl@@U?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAVTimeZoneIf@cctz@time_internal@absl@@@Z ?reset@?$unique_ptr@VTimeZoneInfo@cctz@time_internal@absl@@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAVTimeZoneInfo@cctz@time_internal@absl@@@Z ?reset@?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAVZoneInfoSource@cctz@time_internal@absl@@@Z @@ -3902,6 +4221,8 @@ ?second@?$__compressed_pair@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@23@XZ ?second@?$__compressed_pair@PEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QEAAAEAV?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@23@XZ ?second@?$__compressed_pair@PEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QEBAAEBV?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@23@XZ + ?second@?$__compressed_pair@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@23@XZ + ?second@?$__compressed_pair@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@23@XZ ?second@?$__compressed_pair@PEAPEAVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@23@XZ ?second@?$__compressed_pair@PEAPEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@23@XZ ?second@?$__compressed_pair@PEAPEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBV?$allocator@PEAVCordzHandle@cord_internal@absl@@@23@XZ @@ -3917,6 +4238,7 @@ ?second@?$__compressed_pair@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@23@XZ ?second@?$__compressed_pair@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBV?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@23@XZ ?second@?$__compressed_pair@PEAULogMessageData@LogMessage@log_internal@absl@@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAU?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@23@XZ + ?second@?$__compressed_pair@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEAAAEAV?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@23@XZ ?second@?$__compressed_pair@PEAUThreadIdentity@base_internal@absl@@P6AXPEAX@Z@Cr@std@@QEAAAEAP6AXPEAX@ZXZ ?second@?$__compressed_pair@PEAUTransition@cctz@time_internal@absl@@AEAV?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@UTransition@cctz@time_internal@absl@@@23@XZ ?second@?$__compressed_pair@PEAUTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@UTransition@cctz@time_internal@absl@@@23@XZ @@ -3928,6 +4250,7 @@ ?second@?$__compressed_pair@PEAUViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@UViableSubstitution@strings_internal@absl@@@23@XZ ?second@?$__compressed_pair@PEAUViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBV?$allocator@UViableSubstitution@strings_internal@absl@@@23@XZ ?second@?$__compressed_pair@PEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEAAAEAU?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@23@XZ + ?second@?$__compressed_pair@PEAVFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAU?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@23@XZ ?second@?$__compressed_pair@PEAVFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@VFormatArgImpl@str_format_internal@absl@@@23@XZ ?second@?$__compressed_pair@PEAVFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBV?$allocator@VFormatArgImpl@str_format_internal@absl@@@23@XZ ?second@?$__compressed_pair@PEAVTimeZoneIf@cctz@time_internal@absl@@U?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAU?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@23@XZ @@ -3938,6 +4261,7 @@ ?second@?$__compressed_pair@_KV?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@Cr@std@@@Cr@std@@QEAAAEAV?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@XZ ?second@?$__compressed_pair@_KV?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@XZ ?second@?$__compressed_pair@_KV?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@XZ + ?second@?$__compressed_pair@_KV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@23@XZ ?second@?$civil_time@Usecond_tag@detail@cctz@time_internal@absl@@@detail@cctz@time_internal@absl@@QEBAHXZ ?second@?$civil_time@Usecond_tag@time_internal@absl@@@detail@cctz@time_internal@absl@@QEBAHXZ ?set_arg@BoundConversion@str_format_internal@absl@@QEAAXPEBVFormatArgImpl@23@@Z @@ -3977,7 +4301,9 @@ ?size@?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@QEBA_KXZ ?size@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@AEAAAEA_KXZ ?size@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ + ?size@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ ?size@?$deque@PEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ + ?size@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ ?size@?$initializer_list@U?$pair@Vstring_view@absl@@V12@@Cr@std@@@std@@QEBA_KXZ ?size@?$initializer_list@VFormatArgImpl@str_format_internal@absl@@@std@@QEBA_KXZ ?size@?$initializer_list@W4FormatConversionCharSet@absl@@@std@@QEBA_KXZ
diff --git a/third_party/abseil-cpp/symbols_arm64_rel.def b/third_party/abseil-cpp/symbols_arm64_rel.def index 0a94f51..1e614c7 100644 --- a/third_party/abseil-cpp/symbols_arm64_rel.def +++ b/third_party/abseil-cpp/symbols_arm64_rel.def
@@ -1,4 +1,5 @@ EXPORTS + ?$TSS0@?1??CrcAndCopy@CrcMemcpy@crc_internal@absl@@SA?AVcrc32c_t@3@PEIAXPEIBX_KV43@_N@Z@4HA ??$?0AEBVCord@absl@@@?$optional_data_dtor_base@VCord@absl@@$0A@@optional_internal@absl@@IEAA@Uin_place_t@2@AEBVCord@2@@Z ??$?0PEAI@?$SaltedSeedSeq@Vseed_seq@Cr@std@@@random_internal@absl@@QEAA@PEAI0@Z ??$?0V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@$0A@@Cord@absl@@QEAA@$$QEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z @@ -41,6 +42,19 @@ ??$ConstructElements@V?$allocator@PEAVLogSink@absl@@@Cr@std@@V?$IteratorValueAdapter@V?$allocator@PEAVLogSink@absl@@@Cr@std@@V?$move_iterator@PEAPEAVLogSink@absl@@@23@@inlined_vector_internal@absl@@@inlined_vector_internal@absl@@YAXAEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@PEAPEAVLogSink@1@AEAV?$IteratorValueAdapter@V?$allocator@PEAVLogSink@absl@@@Cr@std@@V?$move_iterator@PEAPEAVLogSink@absl@@@23@@01@_K@Z ??$ConsumeConversion@$00@str_format_internal@absl@@YAPEBDPEBDQEBDPEAUUnboundConversion@01@PEAH@Z ??$ConsumeConversion@$0A@@str_format_internal@absl@@YAPEBDPEBDQEBDPEAUUnboundConversion@01@PEAH@Z + ??$ConvertIntArg@C@str_format_internal@absl@@YA_NCVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@D@str_format_internal@absl@@YA_NDVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@E@str_format_internal@absl@@YA_NEVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@F@str_format_internal@absl@@YA_NFVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@G@str_format_internal@absl@@YA_NGVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@H@str_format_internal@absl@@YA_NHVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@I@str_format_internal@absl@@YA_NIVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@J@str_format_internal@absl@@YA_NJVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@K@str_format_internal@absl@@YA_NKVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@Vint128@absl@@@str_format_internal@absl@@YA_NVint128@1@VFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@Vuint128@absl@@@str_format_internal@absl@@YA_NVuint128@1@VFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@_J@str_format_internal@absl@@YA_N_JVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@_K@str_format_internal@absl@@YA_N_KVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z ??$Dispatch@C@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z ??$Dispatch@D@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z ??$Dispatch@E@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z @@ -121,6 +135,7 @@ ??$ToChronoDuration@V?$duration@_JV?$ratio@$00$0DOI@@Cr@std@@@chrono@Cr@std@@@time_internal@absl@@YA?AV?$duration@_JV?$ratio@$00$0DOI@@Cr@std@@@chrono@Cr@std@@VDuration@1@@Z ??$ToChronoDuration@V?$duration@_JV?$ratio@$00$0PECEA@@Cr@std@@@chrono@Cr@std@@@time_internal@absl@@YA?AV?$duration@_JV?$ratio@$00$0PECEA@@Cr@std@@@chrono@Cr@std@@VDuration@1@@Z ??$__allocate_at_least@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@01@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@01@_K@Z + ??$__allocate_at_least@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@01@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@01@_K@Z ??$__allocate_at_least@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PEAPEAVCordzHandle@cord_internal@absl@@@01@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@01@_K@Z ??$__allocate_at_least@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PEAPEAVLogSink@absl@@@01@AEAV?$allocator@PEAVLogSink@absl@@@01@_K@Z ??$__allocate_at_least@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PEAPEBVCordzHandle@cord_internal@absl@@@01@AEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@01@_K@Z @@ -129,7 +144,9 @@ ??$__allocate_at_least@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PEAUTransitionType@cctz@time_internal@absl@@@01@AEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@01@_K@Z ??$__allocate_at_least@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PEAUViableSubstitution@strings_internal@absl@@@01@AEAV?$allocator@UViableSubstitution@strings_internal@absl@@@01@_K@Z ??$__allocate_at_least@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PEAVFormatArgImpl@str_format_internal@absl@@@01@AEAV?$allocator@VFormatArgImpl@str_format_internal@absl@@@01@_K@Z + ??$__append@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@Cr@std@@@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AEAAXV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@12@0PEAX@Z ??$__construct_at_end@V?$move_iterator@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXV?$move_iterator@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@12@0@Z + ??$__construct_at_end@V?$move_iterator@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXV?$move_iterator@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@12@0@Z ??$__construct_at_end@V?$move_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@@?$__split_buffer@UTransition@cctz@time_internal@absl@@AEAV?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXV?$move_iterator@PEAUTransition@cctz@time_internal@absl@@@12@0@Z ??$__construct_at_end@V?$move_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@@?$__split_buffer@UTransitionType@cctz@time_internal@absl@@AEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXV?$move_iterator@PEAUTransitionType@cctz@time_internal@absl@@@12@0@Z ??$__destroy_at@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@$0A@@Cr@std@@YAXPEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@01@@Z @@ -139,6 +156,7 @@ ??$__rehash@$00@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@AEAAX_K@Z ??$__upper_bound@U_ClassicAlgPolicy@Cr@std@@UByCivilTime@Transition@cctz@time_internal@absl@@PEBU5678@PEBU5678@U5678@U__identity@23@@Cr@std@@YAPEBUTransition@cctz@time_internal@absl@@PEBU2345@0AEBU2345@$$QEAUByCivilTime@2345@$$QEAU__identity@01@@Z ??$assign@PEBVFormatArgImpl@str_format_internal@absl@@$0A@@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEBVFormatArgImpl@str_format_internal@absl@@0@Z + ??$assign@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@Cr@std@@@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@12@0PEAX@Z ??$assign@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@?$optional_data_base@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@optional_internal@absl@@IEAAX$$QEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ??$combine@Vstring_view@absl@@H@?$HashStateBase@VMixingHashState@hash_internal@absl@@@hash_internal@absl@@SA?AVMixingHashState@12@V312@AEBVstring_view@2@AEBH@Z ??$construct_at@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@AEBUpiecewise_construct_t@23@V?$tuple@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@V?$tuple@$$V@23@PEAU123@@Cr@std@@YAPEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@01@PEAU201@AEBUpiecewise_construct_t@01@$$QEAV?$tuple@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@01@$$QEAV?$tuple@$$V@01@@Z @@ -146,6 +164,8 @@ ??$construct_at@UTransition@cctz@time_internal@absl@@$$VPEAU1234@@Cr@std@@YAPEAUTransition@cctz@time_internal@absl@@PEAU2345@@Z ??$construct_at@UTransitionType@cctz@time_internal@absl@@$$VPEAU1234@@Cr@std@@YAPEAUTransitionType@cctz@time_internal@absl@@PEAU2345@@Z ??$construct_at@UViableSubstitution@strings_internal@absl@@AEAVstring_view@3@AEBV43@AEA_KPEAU123@@Cr@std@@YAPEAUViableSubstitution@strings_internal@absl@@PEAU234@AEAVstring_view@4@AEBV54@AEA_K@Z + ??$copy@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@U1234@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@Cr@std@@YA?AV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@01@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@0V201@PEAX@Z + ??$copy@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@U1234@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@Cr@std@@YA?AV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@01@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@01@0V201@@Z ??$emplace@$$V@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA?AV?$__wrap_iter@PEAUTransition@cctz@time_internal@absl@@@12@V?$__wrap_iter@PEBUTransition@cctz@time_internal@absl@@@12@@Z ??$emplace@$$V@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA?AV?$__wrap_iter@PEAUTransitionType@cctz@time_internal@absl@@@12@V?$__wrap_iter@PEBUTransitionType@cctz@time_internal@absl@@@12@@Z ??$emplace_back@$$V@?$__split_buffer@UTransition@cctz@time_internal@absl@@AEAV?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ @@ -180,6 +200,7 @@ ??0ByAnyChar@absl@@QEAA@Vstring_view@1@@Z ??0ByLength@absl@@QEAA@_J@Z ??0ByString@absl@@QEAA@Vstring_view@1@@Z + ??0CRC@crc_internal@absl@@IEAA@XZ ??0CheckOpMessageBuilder@log_internal@absl@@QEAA@PEBD@Z ??0ChunkIterator@Cord@absl@@AEAA@PEBV12@@Z ??0Condition@absl@@QEAA@P6A_NPEAX@Z0@Z @@ -188,6 +209,9 @@ ??0Cord@absl@@QEAA@AEBV01@@Z ??0CordzHandle@cord_internal@absl@@IEAA@_N@Z ??0CordzInfo@cord_internal@absl@@AEAA@PEAUCordRep@12@PEBV012@W4MethodIdentifier@CordzUpdateTracker@12@@Z + ??0CrcCordState@crc_internal@absl@@QEAA@$$QEAV012@@Z + ??0CrcCordState@crc_internal@absl@@QEAA@AEBV012@@Z + ??0CrcCordState@crc_internal@absl@@QEAA@XZ ??0GraphCycles@synchronization_internal@absl@@QEAA@XZ ??0HashtablezInfo@container_internal@absl@@QEAA@XZ ??0Impl@time_zone@cctz@time_internal@absl@@AEAA@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z @@ -216,11 +240,15 @@ ??0uint128@absl@@QEAA@M@Z ??0uint128@absl@@QEAA@N@Z ??0uint128@absl@@QEAA@O@Z + ??1?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ + ??1?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1BadStatusOrAccess@absl@@UEAA@XZ + ??1CRC@crc_internal@absl@@UEAA@XZ ??1CheckOpMessageBuilder@log_internal@absl@@QEAA@XZ ??1CondVar@absl@@QEAA@XZ ??1CordzHandle@cord_internal@absl@@MEAA@XZ ??1CordzInfo@cord_internal@absl@@EEAA@XZ + ??1CrcCordState@crc_internal@absl@@QEAA@XZ ??1GraphCycles@synchronization_internal@absl@@QEAA@XZ ??1HashtablezInfo@container_internal@absl@@QEAA@XZ ??1LogMessage@log_internal@absl@@QEAA@XZ @@ -236,10 +264,13 @@ ??1ZoneInfoSource@cctz@time_internal@absl@@UEAA@XZ ??1bad_optional_access@absl@@UEAA@XZ ??1bad_variant_access@absl@@UEAA@XZ + ??4?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV012@AEBV012@@Z ??4?$optional_data@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@$0A@@optional_internal@absl@@IEAAAEAV012@$$QEAV012@@Z ??4BadStatusOrAccess@absl@@QEAAAEAV01@$$QEAV01@@Z ??4BadStatusOrAccess@absl@@QEAAAEAV01@AEBV01@@Z ??4Cord@absl@@QEAAAEAV01@Vstring_view@1@@Z + ??4CrcCordState@crc_internal@absl@@QEAAAEAV012@$$QEAV012@@Z + ??4CrcCordState@crc_internal@absl@@QEAAAEAV012@AEBV012@@Z ??6LogMessage@log_internal@absl@@QEAAAEAV012@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ??6LogMessage@log_internal@absl@@QEAAAEAV012@P6AAEAV?$basic_ostream@DU?$char_traits@D@Cr@std@@@Cr@std@@AEAV345@@Z@Z ??6LogMessage@log_internal@absl@@QEAAAEAV012@P6AAEAVios_base@Cr@std@@AEAV345@@Z@Z @@ -390,12 +421,13 @@ ?CheckstrcasecmptrueImpl@log_internal@absl@@YAPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBD00@Z ?CheckstrcmpfalseImpl@log_internal@absl@@YAPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBD00@Z ?CheckstrcmptrueImpl@log_internal@absl@@YAPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBD00@Z + ?Checksum@CrcCordState@crc_internal@absl@@QEBA?AVcrc32c_t@3@XZ ?CityHash32@hash_internal@absl@@YAIPEBD_K@Z ?CityHash64@hash_internal@absl@@YA_KPEBD_K@Z ?CityHash64WithSeed@hash_internal@absl@@YA_KPEBD_K1@Z ?CityHash64WithSeeds@hash_internal@absl@@YA_KPEBD_K11@Z ?Clear@Cord@absl@@QEAAXXZ - ?ClearBackingArray@container_internal@absl@@YAXAEAVCommonFields@12@AEA_KAEBUPolicyFunctions@12@_N@Z + ?ClearBackingArray@container_internal@absl@@YAXAEAVCommonFields@12@AEBUPolicyFunctions@12@_N@Z ?ClearCurrentThreadIdentity@base_internal@absl@@YAXXZ ?ClearTimeZoneMapTestOnly@Impl@time_zone@cctz@time_internal@absl@@SAXXZ ?CombineContiguousImpl@MixingHashState@hash_internal@absl@@CA_K_KPEBE0U?$integral_constant@H$03@Cr@std@@@Z @@ -405,6 +437,12 @@ ?Compare@Cord@absl@@QEBAHVstring_view@2@@Z ?CompareImpl@Cord@absl@@AEBAHAEBV12@@Z ?CompareSlowPath@Cord@absl@@AEBAHAEBV12@_K1@Z + ?Compute@CrcNonTemporalMemcpyAVXEngine@crc_internal@absl@@UEBA?AVcrc32c_t@3@PEIAXPEIBX_KV43@@Z + ?Compute@CrcNonTemporalMemcpyEngine@crc_internal@absl@@UEBA?AVcrc32c_t@3@PEIAXPEIBX_KV43@@Z + ?Compute@FallbackCrcMemcpyEngine@crc_internal@absl@@UEBA?AVcrc32c_t@3@PEIAXPEIBX_KV43@@Z + ?ComputeCrc32c@absl@@YA?AVcrc32c_t@1@Vstring_view@1@@Z + ?Concat@CRC@crc_internal@absl@@UEAAXPEAII_K@Z + ?ConcatCrc32c@absl@@YA?AVcrc32c_t@1@V21@0_K@Z ?Consume@cord_internal@absl@@YAXPEAUCordRep@12@V?$FunctionRef@$$A6AXPEAUCordRep@cord_internal@absl@@_K1@Z@2@@Z ?ConsumeBeginTo@CordRepBtree@cord_internal@absl@@CAPEAV123@PEAV123@_K1@Z ?ConsumeUnboundConversion@str_format_internal@absl@@YAPEBDPEBD0PEAUUnboundConversion@12@PEAH@Z @@ -424,6 +462,8 @@ ?CopyToEncodedBuffer@LogMessage@log_internal@absl@@AEAAXD_KW4StringType@123@@Z ?CopyToEncodedBuffer@LogMessage@log_internal@absl@@AEAAXVstring_view@3@W4StringType@123@@Z ?Crash@Helper@internal_statusor@absl@@SAXAEBVStatus@3@@Z + ?Crc32c@CRC@crc_internal@absl@@SAPEAV123@XZ + ?CrcAndCopy@CrcMemcpy@crc_internal@absl@@SA?AVcrc32c_t@3@PEIAXPEIBX_KV43@_N@Z ?Create@CordRepRing@cord_internal@absl@@SAPEAV123@PEAUCordRep@23@_K@Z ?CreateFromLeaf@CordRepRing@cord_internal@absl@@CAPEAV123@PEAUCordRep@23@_K11@Z ?CreateSlow@CordRepBtree@cord_internal@absl@@CAPEAV123@PEAUCordRep@23@@Z @@ -458,7 +498,7 @@ ?DieBecauseNull@log_internal@absl@@YAXPEBDH0@Z ?Digits10@?$BigUnsigned@$03@strings_internal@absl@@SAHXZ ?Digits10@?$BigUnsigned@$0FE@@strings_internal@absl@@SAHXZ - ?DropDeletesWithoutResize@container_internal@absl@@YAXAEAVCommonFields@12@AEA_KAEBUPolicyFunctions@12@PEAX@Z + ?DropDeletesWithoutResize@container_internal@absl@@YAXAEAVCommonFields@12@AEBUPolicyFunctions@12@PEAX@Z ?DummyFunction@?$AtomicHook@P6A?AV?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@absl@@Vstring_view@2@AEBVCord@2@@Z@base_internal@absl@@CA?AV?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@3@Vstring_view@3@AEBVCord@3@@Z ?DummyFunction@?$AtomicHook@P6AXPEBDH000@Z@base_internal@absl@@CAXPEBDH000@Z ?DummyFunction@?$AtomicHook@P6AXPEBDPEBX@Z@base_internal@absl@@CAXPEBDPEBX@Z @@ -473,6 +513,7 @@ ?DumpStackTrace@debugging_internal@absl@@YAXHH_NP6AXPEBDPEAX@Z2@Z ?DurationFromTimespec@absl@@YA?AVDuration@1@Utimespec@@@Z ?DurationFromTimeval@absl@@YA?AVDuration@1@Utimeval@@@Z + ?Empty@CRCImpl@crc_internal@absl@@UEBAXPEAI@Z ?EmptyString@Status@absl@@CAPEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@XZ ?EnableDebugLog@CondVar@absl@@QEAAXPEBD@Z ?EnableDebugLog@Mutex@absl@@QEAAXPEBD@Z @@ -498,13 +539,18 @@ ?EqualsSlow@Status@absl@@CA_NAEBV12@0@Z ?EquivTransitions@TimeZoneInfo@cctz@time_internal@absl@@AEBA_NEE@Z ?Erase@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QEAAPEAUPayload@status_internal@3@PEBU453@0@Z - ?EraseMetaOnly@container_internal@absl@@YAXAEAVCommonFields@12@AEA_KPEAW4ctrl_t@12@_K@Z + ?EraseMetaOnly@container_internal@absl@@YAXAEAVCommonFields@12@PEAW4ctrl_t@12@_K@Z ?ErasePayload@Status@absl@@QEAA_NVstring_view@2@@Z ?ErrnoToStatus@absl@@YA?AVStatus@1@HVstring_view@1@@Z ?ErrnoToStatusCode@absl@@YA?AW4StatusCode@1@H@Z ?Eval@Condition@absl@@QEBA_NXZ ?ExitOnDFatal@log_internal@absl@@YA_NXZ ?ExpectedChecksum@Cord@absl@@QEBA?AV?$optional@I@2@XZ + ?Extend@CRC32@crc_internal@absl@@UEBAXPEAIPEBX_K@Z + ?ExtendByZeroes@CRC32@crc_internal@absl@@UEBAXPEAI_K@Z + ?ExtendByZeroesImpl@CRC32@crc_internal@absl@@AEBAXPEAI_KQEBI2@Z + ?ExtendCrc32cByZeroes@absl@@YA?AVcrc32c_t@1@V21@_K@Z + ?ExtendCrc32cInternal@crc_internal@absl@@YA?AVcrc32c_t@2@V32@Vstring_view@2@@Z ?ExtendTransitions@TimeZoneInfo@cctz@time_internal@absl@@AEAA_NXZ ?ExtractAppendBuffer@CordRepBtree@cord_internal@absl@@SA?AUExtractResult@CordRep@23@PEAV123@_K@Z ?ExtractFront@CordRepBtree@cord_internal@absl@@CAPEAUCordRep@23@PEAV123@@Z @@ -523,6 +569,8 @@ ?Fill@?$RandenPool@I@random_internal@absl@@SAXV?$Span@I@3@@Z ?Fill@?$RandenPool@_K@random_internal@absl@@SAXV?$Span@_K@3@@Z ?FillParentStack@CordzInfo@cord_internal@absl@@CA_KPEBV123@PEAPEAX@Z + ?FillWordTable@CRCImpl@crc_internal@absl@@SAXIIHPEAY0BAA@I@Z + ?FillZeroesTable@CRCImpl@crc_internal@absl@@SAHIPEAY0BAA@I@Z ?FinalizeEncodingAndFormat@LogMessageData@LogMessage@log_internal@absl@@QEAAXXZ ?Find@ByAnyChar@absl@@QEBA?AVstring_view@2@V32@_K@Z ?Find@ByChar@absl@@QEBA?AVstring_view@2@V32@_K@Z @@ -599,10 +647,12 @@ ?GetAppendBuffer@CordRepRing@cord_internal@absl@@QEAA?AV?$Span@D@3@_K@Z ?GetAppendBufferSlow@CordRepBtree@cord_internal@absl@@AEAA?AV?$Span@D@3@_K@Z ?GetAppendBufferSlowPath@Cord@absl@@AEAA?AVCordBuffer@2@_K00@Z + ?GetArchSpecificEngines@CrcMemcpy@crc_internal@absl@@CA?AUArchSpecificEngines@123@XZ ?GetCachedTID@base_internal@absl@@YAIXZ ?GetCharacter@CordRepBtree@cord_internal@absl@@QEBAD_K@Z ?GetCharacter@CordRepRing@cord_internal@absl@@QEBAD_K@Z ?GetCordzStatistics@CordzInfo@cord_internal@absl@@QEBA?AUCordzStatistics@23@XZ + ?GetCpuType@crc_internal@absl@@YA?AW4CpuType@12@XZ ?GetCurrentTimeNanos@absl@@YA_JXZ ?GetDebugStackTraceHook@debugging_internal@absl@@YAP6AXQEBQEAXHP6AXPEBDPEAX@Z2@ZXZ ?GetEstimatedFairShareMemoryUsage@cord_internal@absl@@YA_KPEBUCordRep@12@@Z @@ -629,6 +679,7 @@ ?GetStatusPayloadPrinter@status_internal@absl@@YAP6A?AV?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@2@Vstring_view@2@AEBVCord@2@@ZXZ ?GetStride@ExponentialBiased@profiling_internal@absl@@QEAA_J_J@Z ?GetTID@base_internal@absl@@YAIXZ + ?GetTestEngine@CrcMemcpy@crc_internal@absl@@SA?AV?$unique_ptr@VCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@HH@Z ?GetThreadBlockedCounter@PerThreadSem@synchronization_internal@absl@@SAPEAU?$atomic@H@Cr@std@@XZ ?GetTransitionType@TimeZoneInfo@cctz@time_internal@absl@@AEAA_NH_NAEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEAE@Z ?GetWord@?$BigUnsigned@$03@strings_internal@absl@@QEBAIH@Z @@ -649,6 +700,7 @@ ?Init@PerThreadSem@synchronization_internal@absl@@CAXPEAUThreadIdentity@base_internal@3@@Z ?InitDiscreteDistribution@random_internal@absl@@YA?AV?$vector@U?$pair@N_K@Cr@std@@V?$allocator@U?$pair@N_K@Cr@std@@@23@@Cr@std@@PEAV?$vector@NV?$allocator@N@Cr@std@@@45@@Z ?InitFrom@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QEAAXAEBV123@@Z + ?InitTables@CRC32@crc_internal@absl@@UEAAXXZ ?InitWhat@BadStatusOrAccess@absl@@AEBAXXZ ?Initialize@ExponentialBiased@profiling_internal@absl@@AEAAXXZ ?InitializeCordRepExternal@cord_internal@absl@@YAXVstring_view@2@PEAUCordRepExternal@12@@Z @@ -717,7 +769,9 @@ ?MatchesConversions@ParsedFormatBase@str_format_internal@absl@@AEBA_N_NV?$initializer_list@W4FormatConversionCharSet@absl@@@std@@@Z ?MaxFlatLength@CordTestAccess@strings_internal@absl@@SA_KXZ ?MaxFramesInLogStackTrace@log_internal@absl@@YAHXZ + ?MaybeGetCrcCordState@Cord@absl@@AEBAPEBVCrcCordState@crc_internal@2@XZ ?MaybeTrackCordImpl@CordzInfo@cord_internal@absl@@CAXAEAVInlineData@23@AEBV423@W4MethodIdentifier@CordzUpdateTracker@23@@Z + ?MemcpyCrc32c@absl@@YA?AVcrc32c_t@1@PEAXPEBX_KV21@@Z ?MergeTrees@CordRepBtree@cord_internal@absl@@CAPEAV123@PEAV123@0@Z ?MinLogLevel@absl@@YA?AW4LogSeverityAtLeast@1@XZ ?MixIntoSeedMaterial@random_internal@absl@@YAXV?$Span@$$CBI@2@V?$Span@I@2@@Z @@ -736,9 +790,11 @@ ?MultiplyStep@?$BigUnsigned@$0FE@@strings_internal@absl@@AEAAXHPEBIHH@Z ?Mutable@CordRepRing@cord_internal@absl@@CAPEAV123@PEAV123@_K@Z ?MutexDelay@synchronization_internal@absl@@YAHHH@Z - ?New@CordRepCrc@cord_internal@absl@@SAPEAU123@PEAUCordRep@23@I@Z + ?New@CordRepCrc@cord_internal@absl@@SAPEAU123@PEAUCordRep@23@VCrcCordState@crc_internal@3@@Z ?New@CordRepRing@cord_internal@absl@@CAPEAV123@_K0@Z ?NewArena@LowLevelAlloc@base_internal@absl@@SAPEAUArena@123@I@Z + ?NewCRC32AcceleratedX86ARMCombinedAll@crc_internal@absl@@YA?AV?$vector@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@V?$allocator@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@@23@@Cr@std@@XZ + ?NewInternal@CRCImpl@crc_internal@absl@@SAPEAV123@XZ ?NewString@CheckOpMessageBuilder@log_internal@absl@@QEAAPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@XZ ?Next@CordzInfo@cord_internal@absl@@QEBAPEAV123@AEBVCordzSnapshot@23@@Z ?NextTransition@TimeZone@absl@@QEBA_NVTime@2@PEAUCivilTransition@12@@Z @@ -746,6 +802,8 @@ ?NextTransition@TimeZoneLibC@cctz@time_internal@absl@@UEBA_NAEBV?$time_point@Vsystem_clock@chrono@Cr@std@@V?$duration@_JV?$ratio@$00$00@Cr@std@@@234@@chrono@Cr@std@@PEAUcivil_transition@time_zone@234@@Z ?NoPrefix@LogMessage@log_internal@absl@@QEAAAEAV123@XZ ?NominalCPUFrequency@base_internal@absl@@YANXZ + ?Normalize@CrcCordState@crc_internal@absl@@QEAAXXZ + ?NormalizedPrefixCrcAtNthChunk@CrcCordState@crc_internal@absl@@QEBA?AUPrefixCrc@123@_K@Z ?NotFoundError@absl@@YA?AVStatus@1@Vstring_view@1@@Z ?Notify@Notification@absl@@QEAAXXZ ?Now@CycleClock@base_internal@absl@@SA_JXZ @@ -773,6 +831,7 @@ ?ParseTime@absl@@YA_NVstring_view@1@0PEAVTime@1@PEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ?ParseTime@absl@@YA_NVstring_view@1@0VTimeZone@1@PEAVTime@1@PEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ?PermissionDeniedError@absl@@YA?AVStatus@1@Vstring_view@1@@Z + ?Poison@CrcCordState@crc_internal@absl@@QEAAXXZ ?Poke@Waiter@synchronization_internal@absl@@QEAAXXZ ?Post@Waiter@synchronization_internal@absl@@QEAAXXZ ?PrepareForSampling@HashtablezInfo@container_internal@absl@@QEAAX_J_K@Z @@ -823,6 +882,7 @@ ?RecordRehashSlow@container_internal@absl@@YAXPEAUHashtablezInfo@12@_K@Z ?RecordReservationSlow@container_internal@absl@@YAXPEAUHashtablezInfo@12@_K@Z ?RecordStorageChangedSlow@container_internal@absl@@YAXPEAUHashtablezInfo@12@_K1@Z + ?RefSharedEmptyRep@CrcCordState@crc_internal@absl@@CAPEAURefcountedRep@123@XZ ?Register@CycleClockSource@base_internal@absl@@CAXP6A_JXZ@Z ?RegisterAbortHook@raw_log_internal@absl@@YAXP6AXPEBDH000@Z@Z ?RegisterCondVarTracer@absl@@YAXP6AXPEBDPEBX@Z@Z @@ -835,6 +895,8 @@ ?RegisterSymbolizer@absl@@YAXP6A_NPEBXPEADH@Z@Z ?Release@ReleasableMutexLock@absl@@QEAAXXZ ?Remove@CondVar@absl@@AEAAXPEAUPerThreadSynch@base_internal@2@@Z + ?RemoveCrc32cPrefix@absl@@YA?AVcrc32c_t@1@V21@0_K@Z + ?RemoveCrc32cSuffix@absl@@YA?AVcrc32c_t@1@V21@0_K@Z ?RemoveEdge@GraphCycles@synchronization_internal@absl@@QEAAXUGraphId@23@0@Z ?RemoveExtraAsciiWhitespace@absl@@YAXPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ?RemoveLogSink@log_internal@absl@@YAXPEAVLogSink@2@@Z @@ -851,9 +913,11 @@ ?ReverseConsume@cord_internal@absl@@YAXPEAUCordRep@12@V?$FunctionRef@$$A6AXPEAUCordRep@cord_internal@absl@@_K1@Z@2@@Z ?SafeToDelete@CordzHandle@cord_internal@absl@@QEBA_NXZ ?SampleSlow@container_internal@absl@@YAPEAUHashtablezInfo@12@AEAUSamplingState@12@_K@Z + ?Scramble@CRC32@crc_internal@absl@@UEBAXPEAI@Z ?Seek@CordRepBtreeReader@cord_internal@absl@@QEAA?AVstring_view@3@_K@Z ?SendToLog@LogMessage@log_internal@absl@@AEAAXXZ ?SetCapacityForTesting@CordRepRing@cord_internal@absl@@QEAAX_K@Z + ?SetCrcCordState@Cord@absl@@AEAAXVCrcCordState@crc_internal@2@@Z ?SetCurrentThreadIdentity@base_internal@absl@@YAXPEAUThreadIdentity@12@P6AXPEAX@Z@Z ?SetExitOnDFatal@log_internal@absl@@YAX_N@Z ?SetExpectedChecksum@Cord@absl@@QEAAXI@Z @@ -925,6 +989,7 @@ ?Subcord@Cord@absl@@QEBA?AV12@_K0@Z ?SubstituteAndAppendArray@substitute_internal@absl@@YAXPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@Vstring_view@2@PEBV62@_K@Z ?Summarize@str_format_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@VUntypedFormatSpecImpl@12@V?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@2@@Z + ?SupportsArmCRC32PMULL@crc_internal@absl@@YA_NXZ ?SuppressSigabortTrace@log_internal@absl@@YA_NXZ ?Symbolize@absl@@YA_NPEBXPEADH@Z ?ThreadIsLoggingToLogSink@log_internal@absl@@YA_NXZ @@ -999,11 +1064,14 @@ ?Trans@Mutex@absl@@AEAAXPEBUMuHowS@2@@Z ?Trunc@absl@@YA?AVDuration@1@V21@0@Z ?TryLock@Mutex@absl@@QEAA_NXZ + ?TryNewCRC32AcceleratedX86ARMCombined@crc_internal@absl@@YAPEAVCRCImpl@12@XZ ?TryRemove@Mutex@absl@@AEAAXPEAUPerThreadSynch@base_internal@2@@Z ?UTC@Impl@time_zone@cctz@time_internal@absl@@SA?AV2345@XZ ?UTCImpl@Impl@time_zone@cctz@time_internal@absl@@CAPEBV12345@XZ ?UnauthenticatedError@absl@@YA?AVStatus@1@Vstring_view@1@@Z ?UnavailableError@absl@@YA?AVStatus@1@Vstring_view@1@@Z + ?UnextendByZeroes@CRC32@crc_internal@absl@@UEBAXPEAI_K@Z + ?UnextendCrc32cByZeroes@crc_internal@absl@@YA?AVcrc32c_t@2@V32@_K@Z ?UnimplementedError@absl@@YA?AVStatus@1@Vstring_view@1@@Z ?UnknownError@absl@@YA?AVStatus@1@Vstring_view@1@@Z ?Unlock@CordzInfo@cord_internal@absl@@QEAAXXZ @@ -1011,9 +1079,11 @@ ?UnlockSlow@Mutex@absl@@AEAAXPEAUSynchWaitParams@2@@Z ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@VDuration@1@@Z ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@VTime@1@@Z + ?Unref@CrcCordState@crc_internal@absl@@CAXPEAURefcountedRep@123@@Z ?UnrefNonInlined@Status@absl@@CAX_K@Z ?UnrefTree@InlineRep@Cord@absl@@AEAAXXZ ?UnsampleSlow@container_internal@absl@@YAXPEAUHashtablezInfo@12@@Z + ?Unscramble@CRC32@crc_internal@absl@@UEBAXPEAI@Z ?Untrack@CordzInfo@cord_internal@absl@@QEAAXXZ ?UpdateStackTrace@GraphCycles@synchronization_internal@absl@@QEAAXUGraphId@23@HP6AHPEAPEAXH@Z@Z ?Utf8SafeCEscape@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@Vstring_view@1@@Z @@ -1044,9 +1114,13 @@ ?Write@FILERawSink@str_format_internal@absl@@QEAAXVstring_view@3@@Z ?WriteToStderr@log_internal@absl@@YAXVstring_view@2@W4LogSeverity@2@@Z ?__add_back_capacity@?$deque@PEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAXXZ + ?__add_back_capacity@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AEAAXXZ + ?__add_back_capacity@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AEAAX_K@Z ?__append@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAX_K@Z ?__append@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAX_K@Z ?__deallocate_node@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@AEAAXPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@@Z + ?__erase_to_end@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AEAAXV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@23@@Z + ?__maybe_remove_back_spare@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AEAA_N_N@Z ?__move_range@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAXPEAUTransition@cctz@time_internal@absl@@00@Z ?__move_range@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAXPEAUTransitionType@cctz@time_internal@absl@@00@Z ?__vallocate@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@AEAAX_K@Z @@ -1059,6 +1133,7 @@ ?description@time_zone@cctz@time_internal@absl@@QEBA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@XZ ?difference@detail@cctz@time_internal@absl@@YA_JUminute_tag@1234@Ufields@1234@1@Z ?effective_impl@time_zone@cctz@time_internal@absl@@AEBAAEBVImpl@1234@XZ + ?engines@?1??CrcAndCopy@CrcMemcpy@crc_internal@absl@@SA?AVcrc32c_t@4@PEIAXPEIBX_KV54@_N@Z@4UArchSpecificEngines@234@B ?erase@?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@QEAAPEAUPayload@status_internal@2@PEBU342@@Z ?find@string_view@absl@@QEBA_KD_K@Z ?find@string_view@absl@@QEBA_KV12@_K@Z @@ -1095,6 +1170,7 @@ ?min@?$RandenPool@G@random_internal@absl@@SAGXZ ?min@?$RandenPool@I@random_internal@absl@@SAIXZ ?min@?$RandenPool@_K@random_internal@absl@@SA_KXZ + ?mutable_rep@CrcCordState@crc_internal@absl@@QEAAPEAURep@123@XZ ?n_day@impl@detail@cctz@time_internal@absl@@YA?AUfields@2345@_JC00CCC@Z ?n_hour@impl@detail@cctz@time_internal@absl@@YA?AUfields@2345@_J0000CC@Z ?n_sec@impl@detail@cctz@time_internal@absl@@YA?AUfields@2345@_J00000@Z @@ -1108,7 +1184,12 @@ ?push_back@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ?push_back@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ?push_back@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z + ?push_back@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?push_back@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?push_back@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?push_back@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ?push_back@?$deque@PEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEBVImpl@time_zone@cctz@time_internal@absl@@@Z + ?push_back@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ?push_back@?$vector@PEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAVCordzHandle@cord_internal@absl@@@Z ?push_back@?$vector@PEAVLogSink@absl@@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAVLogSink@absl@@@Z ?push_back@?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEBVCordzHandle@cord_internal@absl@@@Z @@ -1116,6 +1197,8 @@ ?push_back@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBUTransition@cctz@time_internal@absl@@@Z ?push_front@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ?push_front@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z + ?push_front@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?push_front@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ?raw_code@Status@absl@@QEBAHXZ ?reserve@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAX_K@Z ?reserve@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAX_K@Z
diff --git a/third_party/abseil-cpp/symbols_x64_dbg.def b/third_party/abseil-cpp/symbols_x64_dbg.def index 752b2e2..b5e5361 100644 --- a/third_party/abseil-cpp/symbols_x64_dbg.def +++ b/third_party/abseil-cpp/symbols_x64_dbg.def
@@ -1,4 +1,5 @@ EXPORTS + ?$TSS0@?1??CrcAndCopy@CrcMemcpy@crc_internal@absl@@SA?AVcrc32c_t@3@PEIAXPEIBX_KV43@_N@Z@4HA ??$?0$$CBD$0A@@VoidPtr@str_format_internal@absl@@QEAA@PEBD@Z ??$?0$$CBU?$atomic@_N@Cr@std@@@Condition@absl@@QEAA@P6A_NPEBU?$atomic@_N@Cr@std@@@Z0@Z ??$?0$$CBUCordRep@cord_internal@absl@@@Hex@absl@@QEAA@PEBUCordRep@cord_internal@1@W4PadSpec@1@@Z @@ -7,6 +8,7 @@ ??$?0$$T@?$Storage@PEAPEAVLogSink@absl@@$00$0A@@internal_compressed_tuple@container_internal@absl@@QEAA@Uin_place_t@3@$$QEA$$T@Z ??$?0$$T@?$Storage@PEAUPayload@status_internal@absl@@$00$0A@@internal_compressed_tuple@container_internal@absl@@QEAA@Uin_place_t@3@$$QEA$$T@Z ??$?0$$TAEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@?$__compressed_pair@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$TAEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@12@@Z + ??$?0$$TAEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@?$__compressed_pair@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$TAEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@12@@Z ??$?0$$TAEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@?$__compressed_pair@PEAPEAVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$TAEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@12@@Z ??$?0$$TAEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@@?$__compressed_pair@PEAPEAVLogSink@absl@@AEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$TAEAV?$allocator@PEAVLogSink@absl@@@12@@Z ??$?0$$TAEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@?$__compressed_pair@PEAPEBVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$TAEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@12@@Z @@ -15,6 +17,7 @@ ??$?0$$TAEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@?$__compressed_pair@PEAUTransitionType@cctz@time_internal@absl@@AEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$TAEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@12@@Z ??$?0$$TAEAV?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@?$__compressed_pair@PEAUViableSubstitution@strings_internal@absl@@AEAV?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$TAEAV?$allocator@UViableSubstitution@strings_internal@absl@@@12@@Z ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$T$$QEAU__default_init_tag@12@@Z + ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$T$$QEAU__default_init_tag@12@@Z ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PEAPEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$T$$QEAU__default_init_tag@12@@Z ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PEAPEAVLogSink@absl@@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$T$$QEAU__default_init_tag@12@@Z ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PEAPEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$T$$QEAU__default_init_tag@12@@Z @@ -22,8 +25,10 @@ ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PEAUTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$T$$QEAU__default_init_tag@12@@Z ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PEAUTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$T$$QEAU__default_init_tag@12@@Z ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PEAUViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$T$$QEAU__default_init_tag@12@@Z + ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PEAV?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@V?$allocator@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QEAA@$$QEA$$T$$QEAU__default_init_tag@12@@Z ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PEAVFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEA$$T$$QEAU__default_init_tag@12@@Z ??$?0$$TX@?$__compressed_pair_elem@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@$0A@$0A@@Cr@std@@QEAA@$$QEA$$T@Z + ??$?0$$TX@?$__compressed_pair_elem@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@$0A@$0A@@Cr@std@@QEAA@$$QEA$$T@Z ??$?0$$TX@?$__compressed_pair_elem@PEAPEAVCordzHandle@cord_internal@absl@@$0A@$0A@@Cr@std@@QEAA@$$QEA$$T@Z ??$?0$$TX@?$__compressed_pair_elem@PEAPEAVLogSink@absl@@$0A@$0A@@Cr@std@@QEAA@$$QEA$$T@Z ??$?0$$TX@?$__compressed_pair_elem@PEAPEBVCordzHandle@cord_internal@absl@@$0A@$0A@@Cr@std@@QEAA@$$QEA$$T@Z @@ -31,6 +36,7 @@ ??$?0$$TX@?$__compressed_pair_elem@PEAUTransition@cctz@time_internal@absl@@$0A@$0A@@Cr@std@@QEAA@$$QEA$$T@Z ??$?0$$TX@?$__compressed_pair_elem@PEAUTransitionType@cctz@time_internal@absl@@$0A@$0A@@Cr@std@@QEAA@$$QEA$$T@Z ??$?0$$TX@?$__compressed_pair_elem@PEAUViableSubstitution@strings_internal@absl@@$0A@$0A@@Cr@std@@QEAA@$$QEA$$T@Z + ??$?0$$TX@?$__compressed_pair_elem@PEAV?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@$0A@$0A@@Cr@std@@QEAA@$$QEA$$T@Z ??$?0$$TX@?$__compressed_pair_elem@PEAVFormatArgImpl@str_format_internal@absl@@$0A@$0A@@Cr@std@@QEAA@$$QEA$$T@Z ??$?0$$V@?$__temp_value@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAV?$allocator@UTransition@cctz@time_internal@absl@@@12@@Z ??$?0$$V@?$__temp_value@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@12@@Z @@ -39,29 +45,33 @@ ??$?0$00X@?$unique_ptr@$$BY0A@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QEAA@XZ ??$?0$00X@?$unique_ptr@$$CBVImpl@time_zone@cctz@time_internal@absl@@U?$default_delete@$$CBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@PEBVImpl@time_zone@cctz@time_internal@absl@@@Z ??$?0$00X@?$unique_ptr@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEAA@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@$$QEAV?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@12@@Z + ??$?0$00X@?$unique_ptr@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEAA@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@$$QEAV?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@12@@Z ??$?0$00X@?$unique_ptr@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@@Cr@std@@QEAA@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@12@$$QEAV?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@12@@Z ??$?0$00X@?$unique_ptr@ULogMessageData@LogMessage@log_internal@absl@@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@@Cr@std@@QEAA@PEAULogMessageData@LogMessage@log_internal@absl@@@Z ??$?0$00X@?$unique_ptr@UThreadIdentity@base_internal@absl@@P6AXPEAX@Z@Cr@std@@QEAA@PEAUThreadIdentity@base_internal@absl@@AEBQ6AXPEAX@Z@Z ??$?0$00X@?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEAA@$$T@Z ??$?0$00X@?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEAA@PEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Z ??$?0$00X@?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEAA@XZ + ??$?0$00X@?$unique_ptr@VFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@PEAVFallbackCrcMemcpyEngine@crc_internal@absl@@@Z ??$?0$00X@?$unique_ptr@VTimeZoneIf@cctz@time_internal@absl@@U?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@PEAVTimeZoneIf@cctz@time_internal@absl@@@Z ??$?0$00X@?$unique_ptr@VTimeZoneInfo@cctz@time_internal@absl@@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@PEAVTimeZoneInfo@cctz@time_internal@absl@@@Z ??$?0$00X@?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$T@Z ??$?0$00X@?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@PEAVZoneInfoSource@cctz@time_internal@absl@@@Z ??$?0$0A@$00$$ZAEBVstring_view@absl@@AEBH$$Z$S$$Z$$V$$ZAEBV01@AEBH@?$__tuple_impl@U?$__tuple_indices@$0A@$00@Cr@std@@AEBVstring_view@absl@@AEBH@Cr@std@@QEAA@U?$__tuple_indices@$0A@$00@12@U?$__tuple_types@AEBVstring_view@absl@@AEBH@12@U?$__tuple_indices@$S@12@U?$__tuple_types@$$V@12@AEBVstring_view@absl@@AEBH@Z - ??$?0AEAI$0A@@?$optional@I@absl@@QEAA@AEAI@Z - ??$?0AEAI@?$optional_data_dtor_base@I$00@optional_internal@absl@@IEAA@Uin_place_t@2@AEAI@Z ??$?0AEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@@?$__compressed_pair@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEAA@AEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@$$QEAV?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@12@@Z ??$?0AEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@X@?$__compressed_pair_elem@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@$0A@$0A@@Cr@std@@QEAA@AEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ??$?0AEAPEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@12@@?$__compressed_pair@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@@Cr@std@@QEAA@AEAPEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@12@$$QEAV?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@12@@Z ??$?0AEAPEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@X@?$__compressed_pair_elem@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@$0A@$0A@@Cr@std@@QEAA@AEAPEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@12@@Z ??$?0AEAPEAULogMessageData@LogMessage@log_internal@absl@@U__value_init_tag@Cr@std@@@?$__compressed_pair@PEAULogMessageData@LogMessage@log_internal@absl@@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAPEAULogMessageData@LogMessage@log_internal@absl@@$$QEAU__value_init_tag@12@@Z ??$?0AEAPEAULogMessageData@LogMessage@log_internal@absl@@X@?$__compressed_pair_elem@PEAULogMessageData@LogMessage@log_internal@absl@@$0A@$0A@@Cr@std@@QEAA@AEAPEAULogMessageData@LogMessage@log_internal@absl@@@Z + ??$?0AEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@?$__compressed_pair@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEAA@AEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@$$QEAV?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@12@@Z + ??$?0AEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@X@?$__compressed_pair_elem@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@$0A@$0A@@Cr@std@@QEAA@AEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ??$?0AEAPEAUThreadIdentity@base_internal@absl@@AEBQ6AXPEAX@Z@?$__compressed_pair@PEAUThreadIdentity@base_internal@absl@@P6AXPEAX@Z@Cr@std@@QEAA@AEAPEAUThreadIdentity@base_internal@absl@@AEBQ6AXPEAX@Z@Z ??$?0AEAPEAUThreadIdentity@base_internal@absl@@X@?$__compressed_pair_elem@PEAUThreadIdentity@base_internal@absl@@$0A@$0A@@Cr@std@@QEAA@AEAPEAUThreadIdentity@base_internal@absl@@@Z ??$?0AEAPEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U__value_init_tag@Cr@std@@@?$__compressed_pair@PEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEAA@AEAPEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@$$QEAU__value_init_tag@12@@Z ??$?0AEAPEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@X@?$__compressed_pair_elem@PEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@$0A@$0A@@Cr@std@@QEAA@AEAPEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Z + ??$?0AEAPEAVFallbackCrcMemcpyEngine@crc_internal@absl@@U__value_init_tag@Cr@std@@@?$__compressed_pair@PEAVFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAPEAVFallbackCrcMemcpyEngine@crc_internal@absl@@$$QEAU__value_init_tag@12@@Z + ??$?0AEAPEAVFallbackCrcMemcpyEngine@crc_internal@absl@@X@?$__compressed_pair_elem@PEAVFallbackCrcMemcpyEngine@crc_internal@absl@@$0A@$0A@@Cr@std@@QEAA@AEAPEAVFallbackCrcMemcpyEngine@crc_internal@absl@@@Z ??$?0AEAPEAVTimeZoneIf@cctz@time_internal@absl@@U__value_init_tag@Cr@std@@@?$__compressed_pair@PEAVTimeZoneIf@cctz@time_internal@absl@@U?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAPEAVTimeZoneIf@cctz@time_internal@absl@@$$QEAU__value_init_tag@12@@Z ??$?0AEAPEAVTimeZoneIf@cctz@time_internal@absl@@X@?$__compressed_pair_elem@PEAVTimeZoneIf@cctz@time_internal@absl@@$0A@$0A@@Cr@std@@QEAA@AEAPEAVTimeZoneIf@cctz@time_internal@absl@@@Z ??$?0AEAPEAVTimeZoneInfo@cctz@time_internal@absl@@U__value_init_tag@Cr@std@@@?$__compressed_pair@PEAVTimeZoneInfo@cctz@time_internal@absl@@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAPEAVTimeZoneInfo@cctz@time_internal@absl@@$$QEAU__value_init_tag@12@@Z @@ -74,6 +84,7 @@ ??$?0AEAV?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@$$T$00@?$CompressedTuple@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@PEAPEAUCordRep@cord_internal@absl@@@container_internal@absl@@QEAA@AEAV?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@$$QEA$$T@Z ??$?0AEAV?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@$$T@?$CompressedTupleImpl@V?$CompressedTuple@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@PEAPEAUCordRep@cord_internal@absl@@@container_internal@absl@@U?$integer_sequence@_K$0A@$00@3@$00@internal_compressed_tuple@container_internal@absl@@QEAA@Uin_place_t@3@AEAV?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@$$QEA$$T@Z ??$?0AEAV?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@?$Storage@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@$0A@$00@internal_compressed_tuple@container_internal@absl@@QEAA@Uin_place_t@3@AEAV?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@Z + ??$?0AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@X@?$__compressed_pair_elem@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@$00$0A@@Cr@std@@QEAA@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@12@@Z ??$?0AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@X@?$__compressed_pair_elem@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@$00$0A@@Cr@std@@QEAA@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@12@@Z ??$?0AEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@$$T$00@?$CompressedTuple@V?$allocator@PEAVLogSink@absl@@@Cr@std@@PEAPEAVLogSink@absl@@@container_internal@absl@@QEAA@AEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@$$QEA$$T@Z ??$?0AEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@$$T@?$CompressedTupleImpl@V?$CompressedTuple@V?$allocator@PEAVLogSink@absl@@@Cr@std@@PEAPEAVLogSink@absl@@@container_internal@absl@@U?$integer_sequence@_K$0A@$00@3@$00@internal_compressed_tuple@container_internal@absl@@QEAA@Uin_place_t@3@AEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@$$QEA$$T@Z @@ -107,6 +118,7 @@ ??$?0HU__default_init_tag@Cr@std@@@?$__compressed_pair@_KV?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@Cr@std@@@Cr@std@@QEAA@$$QEAH$$QEAU__default_init_tag@12@@Z ??$?0HU__default_init_tag@Cr@std@@@?$__compressed_pair@_KV?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@QEAA@$$QEAH$$QEAU__default_init_tag@12@@Z ??$?0HU__default_init_tag@Cr@std@@@?$__compressed_pair@_KV?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEAH$$QEAU__default_init_tag@12@@Z + ??$?0HU__default_init_tag@Cr@std@@@?$__compressed_pair@_KV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEAH$$QEAU__default_init_tag@12@@Z ??$?0I$0A@@?$optional@I@absl@@QEAA@$$QEAI@Z ??$?0I@?$Storage@_K$00$0A@@internal_compressed_tuple@container_internal@absl@@QEAA@Uin_place_t@3@$$QEAI@Z ??$?0I@?$optional_data_dtor_base@I$00@optional_internal@absl@@IEAA@Uin_place_t@2@$$QEAI@Z @@ -114,11 +126,13 @@ ??$?0MU__default_init_tag@Cr@std@@@?$__compressed_pair@MV?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@Cr@std@@@Cr@std@@QEAA@$$QEAM$$QEAU__default_init_tag@12@@Z ??$?0PEAI@?$SaltedSeedSeq@Vseed_seq@Cr@std@@@random_internal@absl@@QEAA@PEAI0@Z ??$?0PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV01234@$0A@@?$pair@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV12345@@Cr@std@@QEAA@$$QEAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@0@Z + ??$?0PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU0123@$0A@@?$pair@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU1234@@Cr@std@@QEAA@$$QEAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@0@Z ??$?0PEAPEAVCordzHandle@cord_internal@absl@@PEAPEAV012@$0A@@?$pair@PEAPEAVCordzHandle@cord_internal@absl@@PEAPEAV123@@Cr@std@@QEAA@$$QEAPEAPEAVCordzHandle@cord_internal@absl@@0@Z ??$?0PEAPEAVLogSink@absl@@@?$__wrap_iter@PEBQEAVLogSink@absl@@@Cr@std@@QEAA@AEBV?$__wrap_iter@PEAPEAVLogSink@absl@@@12@PEAX@Z ??$?0PEAPEAVLogSink@absl@@PEAPEAV01@$0A@@?$pair@PEAPEAVLogSink@absl@@PEAPEAV12@@Cr@std@@QEAA@$$QEAPEAPEAVLogSink@absl@@0@Z ??$?0PEAPEBVCordzHandle@cord_internal@absl@@PEAPEBV012@$0A@@?$pair@PEAPEBVCordzHandle@cord_internal@absl@@PEAPEBV123@@Cr@std@@QEAA@$$QEAPEAPEBVCordzHandle@cord_internal@absl@@0@Z ??$?0PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PEAU0123@$0A@@?$pair@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PEAU1234@@Cr@std@@QEAA@$$QEAPEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@0@Z + ??$?0PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAU0123@PEAPEAU0123@@?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@Cr@std@@QEAA@AEBV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@12@PEAX@Z ??$?0PEAUTransition@cctz@time_internal@absl@@@?$__wrap_iter@PEBUTransition@cctz@time_internal@absl@@@Cr@std@@QEAA@AEBV?$__wrap_iter@PEAUTransition@cctz@time_internal@absl@@@12@PEAX@Z ??$?0PEAUTransition@cctz@time_internal@absl@@PEAU0123@$0A@@?$pair@PEAUTransition@cctz@time_internal@absl@@PEAU1234@@Cr@std@@QEAA@$$QEAPEAUTransition@cctz@time_internal@absl@@0@Z ??$?0PEAUTransitionType@cctz@time_internal@absl@@@?$__wrap_iter@PEBUTransitionType@cctz@time_internal@absl@@@Cr@std@@QEAA@AEBV?$__wrap_iter@PEAUTransitionType@cctz@time_internal@absl@@@12@PEAX@Z @@ -126,11 +140,16 @@ ??$?0PEAUViableSubstitution@strings_internal@absl@@PEAU012@$0A@@?$pair@PEAUViableSubstitution@strings_internal@absl@@PEAU123@@Cr@std@@QEAA@$$QEAPEAUViableSubstitution@strings_internal@absl@@0@Z ??$?0PEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@?$__compressed_pair@PEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEAPEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@$$QEAU?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@12@@Z ??$?0PEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@X@?$__compressed_pair_elem@PEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@$0A@$0A@@Cr@std@@QEAA@$$QEAPEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Z + ??$?0PEAVFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@?$__compressed_pair@PEAVCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEAPEAVFallbackCrcMemcpyEngine@crc_internal@absl@@$$QEAU?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@12@@Z + ??$?0PEAVFallbackCrcMemcpyEngine@crc_internal@absl@@X@?$__compressed_pair_elem@PEAVCrcMemcpyEngine@crc_internal@absl@@$0A@$0A@@Cr@std@@QEAA@$$QEAPEAVFallbackCrcMemcpyEngine@crc_internal@absl@@@Z ??$?0PEBD@FormatArgImpl@str_format_internal@absl@@QEAA@AEBQEBD@Z + ??$?0PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU0123@$0A@@?$pair@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@@Cr@std@@QEAA@$$QEAPEBUPrefixCrc@CrcCordState@crc_internal@absl@@$$QEAPEAU3456@@Z + ??$?0PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU0123@$0A@@?$pair@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@@Cr@std@@QEAA@$$QEAPEBUPrefixCrc@CrcCordState@crc_internal@absl@@0@Z ??$?0PEBVFormatArgImpl@str_format_internal@absl@@PEAV012@$0A@@?$pair@PEBVFormatArgImpl@str_format_internal@absl@@PEAV123@@Cr@std@@QEAA@$$QEAPEBVFormatArgImpl@str_format_internal@absl@@$$QEAPEAV345@@Z ??$?0PEBVFormatArgImpl@str_format_internal@absl@@PEBV012@$0A@@?$pair@PEBVFormatArgImpl@str_format_internal@absl@@PEBV123@@Cr@std@@QEAA@$$QEAPEBVFormatArgImpl@str_format_internal@absl@@0@Z ??$?0U?$array@D$0DKJI@@Cr@std@@XU012@H@?$Span@D@absl@@QEAA@AEAU?$array@D$0DKJI@@Cr@std@@@Z ??$?0U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@X@?$__compressed_pair_elem@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@$$QEAU?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@12@@Z + ??$?0U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@X@?$__compressed_pair_elem@U?$default_delete@VCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@$$QEAU?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@12@@Z ??$?0USynchEvent@absl@@@Condition@absl@@QEAA@P6A_NPEAUSynchEvent@1@@Z0@Z ??$?0U__value_init_tag@Cr@std@@U012@@?$__compressed_pair@PEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QEAA@$$QEAU__value_init_tag@12@0@Z ??$?0U__value_init_tag@Cr@std@@U012@@?$__compressed_pair@PEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEAU__value_init_tag@12@0@Z @@ -182,6 +201,7 @@ ??$?0V?$Span@I@absl@@XV01@$0A@@?$Span@I@absl@@QEAA@AEAV01@@Z ??$?0V?$Span@VFormatArgImpl@str_format_internal@absl@@@absl@@XV01@$0A@@?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@absl@@QEAA@AEBV?$Span@VFormatArgImpl@str_format_internal@absl@@@1@@Z ??$?0V?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@X@?$__compressed_pair_elem@V?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@$00$0A@@Cr@std@@QEAA@$$QEAV?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@12@@Z + ??$?0V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@X@?$__compressed_pair_elem@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@$00$0A@@Cr@std@@QEAA@$$QEAV?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@12@@Z ??$?0V?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@AEA_N$0A@@?$pair@V?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@_N@Cr@std@@QEAA@$$QEAV?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@12@AEA_N@Z ??$?0V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@X@?$__compressed_pair_elem@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@$00$0A@@Cr@std@@QEAA@$$QEAV?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@12@@Z ??$?0V?$allocator@D@Cr@std@@@AlphaNum@absl@@QEAA@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z @@ -211,6 +231,8 @@ ??$?0V?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@XV012@H@?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@absl@@QEAA@AEBV?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@@Z ??$?0VBufferRawSink@str_format_internal@absl@@$0A@@FormatRawSinkImpl@str_format_internal@absl@@QEAA@PEAVBufferRawSink@12@@Z ??$?0VFILERawSink@str_format_internal@absl@@$0A@@FormatRawSinkImpl@str_format_internal@absl@@QEAA@PEAVFILERawSink@12@@Z + ??$?0VFallbackCrcMemcpyEngine@crc_internal@absl@@@?$default_delete@VCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@QEAA@AEBU?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@12@PEAX@Z + ??$?0VFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@XX@?$unique_ptr@VCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@$$QEAV?$unique_ptr@VFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@12@@Z ??$?0Vstring_view@absl@@@FormatArgImpl@str_format_internal@absl@@QEAA@AEBVstring_view@2@@Z ??$?0Vstring_view@absl@@XV01@$0A@@?$Span@$$CBD@absl@@QEAA@AEBVstring_view@1@@Z ??$?0_J@FormatArgImpl@str_format_internal@absl@@QEAA@AEB_J@Z @@ -252,6 +274,7 @@ ??$?DN@absl@@YA?AVDuration@0@NV10@@Z ??$?D_J@absl@@YA?AVDuration@0@_JV10@@Z ??$?GPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV01234@@Cr@std@@YA_JAEBV?$move_iterator@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@01@0@Z + ??$?GPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU0123@@Cr@std@@YA_JAEBV?$move_iterator@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@01@0@Z ??$?GPEAUTransition@cctz@time_internal@absl@@PEAU0123@@Cr@std@@YA_JAEBV?$move_iterator@PEAUTransition@cctz@time_internal@absl@@@01@0@Z ??$?GPEAUTransitionType@cctz@time_internal@absl@@PEAU0123@@Cr@std@@YA_JAEBV?$move_iterator@PEAUTransitionType@cctz@time_internal@absl@@@01@0@Z ??$?GPEBQEAVLogSink@absl@@PEBQEAV01@@Cr@std@@YA_JAEBV?$__wrap_iter@PEBQEAVLogSink@absl@@@01@0@Z @@ -273,6 +296,7 @@ ??$?RAEA_J@?$AtomicHook@P6AX_J@Z@base_internal@absl@@QEBAXAEA_J@Z ??$?RAEBQEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@__fn@__iter_move@ranges@Cr@std@@QEBA$$QEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEBQEAPEAPEBV56789@@Z ??$?RAEBQEAPEAUCordRep@cord_internal@absl@@@__fn@__iter_move@ranges@Cr@std@@QEBA$$QEAPEAUCordRep@cord_internal@absl@@AEBQEAPEAU567@@Z + ??$?RAEBQEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@__fn@__iter_move@ranges@Cr@std@@QEBA$$QEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEBQEAPEAU5678@@Z ??$?RAEBQEAPEAVLogSink@absl@@@__fn@__iter_move@ranges@Cr@std@@QEBA$$QEAPEAVLogSink@absl@@AEBQEAPEAV56@@Z ??$?RAEBQEAUPayload@status_internal@absl@@@__fn@__iter_move@ranges@Cr@std@@QEBA$$QEAUPayload@status_internal@absl@@AEBQEAU567@@Z ??$?RAEBQEAUTransition@cctz@time_internal@absl@@@__fn@__iter_move@ranges@Cr@std@@QEBA$$QEAUTransition@cctz@time_internal@absl@@AEBQEAU5678@@Z @@ -340,6 +364,19 @@ ??$ConsumeConversion@$00@str_format_internal@absl@@YAPEBDPEBDQEBDPEAUUnboundConversion@01@PEAH@Z ??$ConsumeConversion@$0A@@str_format_internal@absl@@YAPEBDPEBDQEBDPEAUUnboundConversion@01@PEAH@Z ??$Convert@VFormatArgImpl@str_format_internal@absl@@@FormatArgImplFriend@str_format_internal@absl@@SA_NVFormatArgImpl@12@VFormatConversionSpecImpl@12@PEAVFormatSinkImpl@12@@Z + ??$ConvertIntArg@C@str_format_internal@absl@@YA_NCVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@D@str_format_internal@absl@@YA_NDVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@E@str_format_internal@absl@@YA_NEVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@F@str_format_internal@absl@@YA_NFVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@G@str_format_internal@absl@@YA_NGVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@H@str_format_internal@absl@@YA_NHVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@I@str_format_internal@absl@@YA_NIVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@J@str_format_internal@absl@@YA_NJVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@K@str_format_internal@absl@@YA_NKVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@Vint128@absl@@@str_format_internal@absl@@YA_NVint128@1@VFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@Vuint128@absl@@@str_format_internal@absl@@YA_NVuint128@1@VFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@_J@str_format_internal@absl@@YA_N_JVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@_K@str_format_internal@absl@@YA_N_KVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z ??$CreateWithCustomLimitImpl@$$V@CordBuffer@absl@@CA?AV01@_K0@Z ??$Dispatch@C@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z ??$Dispatch@D@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z @@ -488,6 +525,7 @@ ??$MakeSpan@$SV?$InlinedVector@PEAVLogSink@absl@@$0BA@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@absl@@@absl@@YA?AV?$Span@PEAVLogSink@absl@@@0@AEAV?$InlinedVector@PEAVLogSink@absl@@$0BA@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@0@@Z ??$MakeSpan@$SV?$vector@PEAVLogSink@absl@@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@@absl@@YA?AV?$Span@PEAVLogSink@absl@@@0@AEAV?$vector@PEAVLogSink@absl@@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@@Z ??$MakeSpan@$SVFormatArgImpl@str_format_internal@absl@@@absl@@YA?AV?$Span@VFormatArgImpl@str_format_internal@absl@@@0@PEAVFormatArgImpl@str_format_internal@0@_K@Z + ??$MaskOfLength@I@crc_internal@absl@@YAIH@Z ??$Merge@$00@CordRepBtree@cord_internal@absl@@CAPEAV012@PEAV012@0@Z ??$Merge@$0A@@CordRepBtree@cord_internal@absl@@CAPEAV012@PEAV012@0@Z ??$Microseconds@H$0A@@absl@@YA?AVDuration@0@H@Z @@ -533,6 +571,7 @@ ??$ReadCallback@P6A_NPEAUSynchEvent@absl@@@Z@Condition@absl@@AEBAXPEAP6A_NPEAUSynchEvent@1@@Z@Z ??$ReadCallback@P6A_NPEBU?$atomic@_N@Cr@std@@@Z@Condition@absl@@AEBAXPEAP6A_NPEBU?$atomic@_N@Cr@std@@@Z@Z ??$Register@AEB_JAEA_K@?$SampleRecorder@UHashtablezInfo@container_internal@absl@@@profiling_internal@absl@@QEAAPEAUHashtablezInfo@container_internal@2@AEB_JAEA_K@Z + ??$RotateRight@I@crc_internal@absl@@YAIIHH@Z ??$SNPrintF@DHHH@absl@@YAHPEAD_KAEBV?$FormatSpecTemplate@$0BPPPL@$0JPPPL@$0JPPPL@$0JPPPL@@str_format_internal@0@AEBDAEBH44@Z ??$STLStringResizeUninitialized@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@X@strings_internal@absl@@YAXPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@_K@Z ??$STLStringResizeUninitializedAmortized@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@strings_internal@absl@@YAXPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@_K@Z @@ -598,6 +637,7 @@ ??$__advance@PEBUTransition@cctz@time_internal@absl@@@Cr@std@@YAXAEAPEBUTransition@cctz@time_internal@absl@@_JUrandom_access_iterator_tag@01@@Z ??$__advance@PEBVFormatArgImpl@str_format_internal@absl@@@Cr@std@@YAXAEAPEBVFormatArgImpl@str_format_internal@absl@@_JUrandom_access_iterator_tag@01@@Z ??$__allocate_at_least@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@01@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@01@_K@Z + ??$__allocate_at_least@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@01@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@01@_K@Z ??$__allocate_at_least@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PEAPEAVCordzHandle@cord_internal@absl@@@01@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@01@_K@Z ??$__allocate_at_least@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PEAPEAVLogSink@absl@@@01@AEAV?$allocator@PEAVLogSink@absl@@@01@_K@Z ??$__allocate_at_least@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PEAPEBVCordzHandle@cord_internal@absl@@@01@AEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@01@_K@Z @@ -606,8 +646,10 @@ ??$__allocate_at_least@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PEAUTransitionType@cctz@time_internal@absl@@@01@AEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@01@_K@Z ??$__allocate_at_least@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PEAUViableSubstitution@strings_internal@absl@@@01@AEAV?$allocator@UViableSubstitution@strings_internal@absl@@@01@_K@Z ??$__allocate_at_least@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PEAVFormatArgImpl@str_format_internal@absl@@@01@AEAV?$allocator@VFormatArgImpl@str_format_internal@absl@@@01@_K@Z + ??$__append@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@Cr@std@@@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AEAAXV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@12@0PEAX@Z ??$__construct_at_end@PEBVFormatArgImpl@str_format_internal@absl@@$0A@@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@AEAAXPEBVFormatArgImpl@str_format_internal@absl@@0_K@Z ??$__construct_at_end@V?$move_iterator@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXV?$move_iterator@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@12@0@Z + ??$__construct_at_end@V?$move_iterator@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXV?$move_iterator@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@12@0@Z ??$__construct_at_end@V?$move_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@@?$__split_buffer@UTransition@cctz@time_internal@absl@@AEAV?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXV?$move_iterator@PEAUTransition@cctz@time_internal@absl@@@12@0@Z ??$__construct_at_end@V?$move_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@@?$__split_buffer@UTransitionType@cctz@time_internal@absl@@AEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXV?$move_iterator@PEAUTransitionType@cctz@time_internal@absl@@@12@0@Z ??$__construct_node_hash@AEBUpiecewise_construct_t@Cr@std@@V?$tuple@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@V?$tuple@$$V@23@@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@AEAA?AV?$unique_ptr@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@@12@_KAEBUpiecewise_construct_t@12@$$QEAV?$tuple@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@12@$$QEAV?$tuple@$$V@12@@Z @@ -619,7 +661,9 @@ ??$__construct_one_at_end@AEBQEBVCordzHandle@cord_internal@absl@@@?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@AEAAXAEBQEBVCordzHandle@cord_internal@absl@@@Z ??$__construct_one_at_end@AEBUTransition@cctz@time_internal@absl@@@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAXAEBUTransition@cctz@time_internal@absl@@@Z ??$__construct_one_at_end@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@?$vector@UConversionItem@ParsedFormatBase@str_format_internal@absl@@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@AEAAX$$QEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@@Z + ??$__copy@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@PEAU1234@$0A@@Cr@std@@YA?AU?$pair@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@@01@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@0PEAU3456@@Z ??$__copy@PEBVFormatArgImpl@str_format_internal@absl@@PEBV123@PEAV123@$0A@@Cr@std@@YA?AU?$pair@PEBVFormatArgImpl@str_format_internal@absl@@PEAV123@@01@PEBVFormatArgImpl@str_format_internal@absl@@0PEAV345@@Z + ??$__copy_impl@$$CBUPrefixCrc@CrcCordState@crc_internal@absl@@U1234@X@Cr@std@@YA?AU?$pair@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@@01@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@0PEAU3456@@Z ??$__copy_impl@$$CBVFormatArgImpl@str_format_internal@absl@@V123@X@Cr@std@@YA?AU?$pair@PEBVFormatArgImpl@str_format_internal@absl@@PEAV123@@01@PEBVFormatArgImpl@str_format_internal@absl@@0PEAV345@@Z ??$__cxx_atomic_compare_exchange_strong@PEAVTimeZone@absl@@@Cr@std@@YA_NPEAU?$__cxx_atomic_base_impl@PEAVTimeZone@absl@@@01@PEAPEAVTimeZone@absl@@PEAV34@W4memory_order@01@3@Z ??$__cxx_atomic_compare_exchange_weak@PEAUHashtablezInfo@container_internal@absl@@@Cr@std@@YA_NPEAU?$__cxx_atomic_base_impl@PEAUHashtablezInfo@container_internal@absl@@@01@PEAPEAUHashtablezInfo@container_internal@absl@@PEAU345@W4memory_order@01@3@Z @@ -648,6 +692,7 @@ ??$__debug_db_insert_c@V?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@YAXPEAV?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@01@@Z ??$__debug_db_insert_c@V?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@YAXPEAV?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@01@@Z ??$__debug_db_insert_c@V?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@YAXPEAV?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@01@@Z + ??$__debug_db_insert_c@V?$vector@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@V?$allocator@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@@23@@Cr@std@@@Cr@std@@YAXPEAV?$vector@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@V?$allocator@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@@23@@01@@Z ??$__debug_db_insert_c@V?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@YAXPEAV?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@01@@Z ??$__debug_db_invalidate_all@V?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@@Cr@std@@YAXPEAV?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@01@@Z ??$__debug_db_invalidate_all@V?$vector@PEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@YAXPEAV?$vector@PEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@01@@Z @@ -660,12 +705,14 @@ ??$__debug_db_invalidate_all@V?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@YAXPEAV?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@01@@Z ??$__destroy_at@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@$0A@@Cr@std@@YAXPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ??$__destroy_at@PEAUCordRep@cord_internal@absl@@$0A@@Cr@std@@YAXPEAPEAUCordRep@cord_internal@absl@@@Z + ??$__destroy_at@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@$0A@@Cr@std@@YAXPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ??$__destroy_at@PEAVCordzHandle@cord_internal@absl@@$0A@@Cr@std@@YAXPEAPEAVCordzHandle@cord_internal@absl@@@Z ??$__destroy_at@PEAVLogSink@absl@@$0A@@Cr@std@@YAXPEAPEAVLogSink@absl@@@Z ??$__destroy_at@PEBVCordzHandle@cord_internal@absl@@$0A@@Cr@std@@YAXPEAPEBVCordzHandle@cord_internal@absl@@@Z ??$__destroy_at@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@$0A@@Cr@std@@YAXPEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@01@@Z ??$__destroy_at@UConversionItem@ParsedFormatBase@str_format_internal@absl@@$0A@@Cr@std@@YAXPEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@@Z ??$__destroy_at@UPayload@status_internal@absl@@$0A@@Cr@std@@YAXPEAUPayload@status_internal@absl@@@Z + ??$__destroy_at@UPrefixCrc@CrcCordState@crc_internal@absl@@$0A@@Cr@std@@YAXPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ??$__destroy_at@UTransition@cctz@time_internal@absl@@$0A@@Cr@std@@YAXPEAUTransition@cctz@time_internal@absl@@@Z ??$__destroy_at@UTransitionType@cctz@time_internal@absl@@$0A@@Cr@std@@YAXPEAUTransitionType@cctz@time_internal@absl@@@Z ??$__destroy_at@UViableSubstitution@strings_internal@absl@@$0A@@Cr@std@@YAXPEAUViableSubstitution@strings_internal@absl@@@Z @@ -673,7 +720,9 @@ ??$__distance@PEBUPayload@status_internal@absl@@@Cr@std@@YA_JPEBUPayload@status_internal@absl@@0Urandom_access_iterator_tag@01@@Z ??$__distance@PEBUTransition@cctz@time_internal@absl@@@Cr@std@@YA_JPEBUTransition@cctz@time_internal@absl@@0Urandom_access_iterator_tag@01@@Z ??$__distance@PEBVFormatArgImpl@str_format_internal@absl@@@Cr@std@@YA_JPEBVFormatArgImpl@str_format_internal@absl@@0Urandom_access_iterator_tag@01@@Z + ??$__distance@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@Cr@std@@@Cr@std@@YA_JV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@01@0Urandom_access_iterator_tag@01@@Z ??$__distance@V?$move_iterator@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YA_JV?$move_iterator@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@01@0Urandom_access_iterator_tag@01@@Z + ??$__distance@V?$move_iterator@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@YA_JV?$move_iterator@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@01@0Urandom_access_iterator_tag@01@@Z ??$__distance@V?$move_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YA_JV?$move_iterator@PEAUTransition@cctz@time_internal@absl@@@01@0Urandom_access_iterator_tag@01@@Z ??$__distance@V?$move_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YA_JV?$move_iterator@PEAUTransitionType@cctz@time_internal@absl@@@01@0Urandom_access_iterator_tag@01@@Z ??$__do_rehash@$00@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@AEAAX_K@Z @@ -686,6 +735,7 @@ ??$__launder@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YAPEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@01@PEAU201@@Z ??$__lower_bound_impl@U_ClassicAlgPolicy@Cr@std@@PEBUTransition@cctz@time_internal@absl@@PEBU4567@U4567@U__identity@23@UByUnixTime@4567@@Cr@std@@YAPEBUTransition@cctz@time_internal@absl@@PEBU2345@0AEBU2345@AEAUByUnixTime@2345@AEAU__identity@01@@Z ??$__move@U_ClassicAlgPolicy@Cr@std@@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV45678@PEAPEAPEBV45678@@Cr@std@@YA?AU?$pair@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV12345@@01@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@00@Z + ??$__move@U_ClassicAlgPolicy@Cr@std@@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU4567@PEAPEAU4567@@Cr@std@@YA?AU?$pair@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU1234@@01@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@00@Z ??$__move@U_ClassicAlgPolicy@Cr@std@@PEAPEAVLogSink@absl@@PEAPEAV45@PEAPEAV45@@Cr@std@@YA?AU?$pair@PEAPEAVLogSink@absl@@PEAPEAV12@@01@PEAPEAVLogSink@absl@@00@Z ??$__move@U_ClassicAlgPolicy@Cr@std@@PEAUTransition@cctz@time_internal@absl@@PEAU4567@PEAU4567@@Cr@std@@YA?AU?$pair@PEAUTransition@cctz@time_internal@absl@@PEAU1234@@01@PEAUTransition@cctz@time_internal@absl@@00@Z ??$__move@U_ClassicAlgPolicy@Cr@std@@PEAUTransitionType@cctz@time_internal@absl@@PEAU4567@PEAU4567@@Cr@std@@YA?AU?$pair@PEAUTransitionType@cctz@time_internal@absl@@PEAU1234@@01@PEAUTransitionType@cctz@time_internal@absl@@00@Z @@ -697,9 +747,11 @@ ??$__move@U_ClassicAlgPolicy@Cr@std@@V?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@23@V423@V423@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@V123@@01@V?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@01@00@Z ??$__move@U_ClassicAlgPolicy@Cr@std@@V?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@23@V423@V423@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@Cr@std@@V123@@01@V?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@01@00@Z ??$__move_backward@U_ClassicAlgPolicy@Cr@std@@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV45678@@Cr@std@@YAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV23456@00@Z + ??$__move_backward@U_ClassicAlgPolicy@Cr@std@@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU4567@@Cr@std@@YAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU2345@00@Z ??$__move_backward@U_ClassicAlgPolicy@Cr@std@@PEAUTransition@cctz@time_internal@absl@@PEAU4567@@Cr@std@@YAPEAUTransition@cctz@time_internal@absl@@PEAU2345@00@Z ??$__move_backward@U_ClassicAlgPolicy@Cr@std@@PEAUTransitionType@cctz@time_internal@absl@@PEAU4567@@Cr@std@@YAPEAUTransitionType@cctz@time_internal@absl@@PEAU2345@00@Z ??$__move_backward_impl@U_ClassicAlgPolicy@Cr@std@@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEBV45678@@Cr@std@@YAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV23456@00@Z + ??$__move_backward_impl@U_ClassicAlgPolicy@Cr@std@@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU4567@@Cr@std@@YAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU2345@00@Z ??$__move_backward_impl@U_ClassicAlgPolicy@Cr@std@@UTransition@cctz@time_internal@absl@@U4567@@Cr@std@@YAPEAUTransition@cctz@time_internal@absl@@PEAU2345@00@Z ??$__move_backward_impl@U_ClassicAlgPolicy@Cr@std@@UTransitionType@cctz@time_internal@absl@@U4567@@Cr@std@@YAPEAUTransitionType@cctz@time_internal@absl@@PEAU2345@00@Z ??$__move_impl@U_ClassicAlgPolicy@Cr@std@@PEAPEAVCordzHandle@cord_internal@absl@@PEAPEAV456@$0A@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@Cr@std@@V123@@01@V?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@01@00@Z @@ -707,6 +759,7 @@ ??$__move_impl@U_ClassicAlgPolicy@Cr@std@@PEAPEBVCordzHandle@cord_internal@absl@@PEAPEBV456@$0A@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PEAPEBVCordzHandle@cord_internal@absl@@@Cr@std@@V123@@01@V?$reverse_iterator@PEAPEBVCordzHandle@cord_internal@absl@@@01@00@Z ??$__move_impl@U_ClassicAlgPolicy@Cr@std@@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEBV45678@X@Cr@std@@YA?AU?$pair@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV12345@@01@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@00@Z ??$__move_impl@U_ClassicAlgPolicy@Cr@std@@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PEAU4567@$0A@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@V123@@01@V?$reverse_iterator@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@@01@00@Z + ??$__move_impl@U_ClassicAlgPolicy@Cr@std@@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU4567@X@Cr@std@@YA?AU?$pair@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU1234@@01@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@00@Z ??$__move_impl@U_ClassicAlgPolicy@Cr@std@@PEAUTransition@cctz@time_internal@absl@@PEAU4567@$0A@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@V123@@01@V?$reverse_iterator@PEAUTransition@cctz@time_internal@absl@@@01@00@Z ??$__move_impl@U_ClassicAlgPolicy@Cr@std@@PEAUTransitionType@cctz@time_internal@absl@@PEAU4567@$0A@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@V123@@01@V?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@01@00@Z ??$__move_impl@U_ClassicAlgPolicy@Cr@std@@PEAUViableSubstitution@strings_internal@absl@@PEAU456@$0A@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@Cr@std@@V123@@01@V?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@01@00@Z @@ -724,14 +777,17 @@ ??$__push_back_slow_path@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@?$vector@UConversionItem@ParsedFormatBase@str_format_internal@absl@@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@AEAAX$$QEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@@Z ??$__rehash@$00@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@AEAAX_K@Z ??$__rewrap_iter@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV12345@U?$__unwrap_iter_impl@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@$00@Cr@std@@@Cr@std@@YAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV23456@0@Z + ??$__rewrap_iter@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU1234@U?$__unwrap_iter_impl@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@@Cr@std@@YAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU2345@0@Z ??$__rewrap_iter@PEAPEAVCordzHandle@cord_internal@absl@@PEAPEAV123@U?$__unwrap_iter_impl@PEAPEAVCordzHandle@cord_internal@absl@@$00@Cr@std@@@Cr@std@@YAPEAPEAVCordzHandle@cord_internal@absl@@PEAPEAV234@0@Z ??$__rewrap_iter@PEAPEAVLogSink@absl@@PEAPEAV12@U?$__unwrap_iter_impl@PEAPEAVLogSink@absl@@$00@Cr@std@@@Cr@std@@YAPEAPEAVLogSink@absl@@PEAPEAV23@0@Z ??$__rewrap_iter@PEAPEBVCordzHandle@cord_internal@absl@@PEAPEBV123@U?$__unwrap_iter_impl@PEAPEBVCordzHandle@cord_internal@absl@@$00@Cr@std@@@Cr@std@@YAPEAPEBVCordzHandle@cord_internal@absl@@PEAPEBV234@0@Z ??$__rewrap_iter@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PEAU1234@U?$__unwrap_iter_impl@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@$00@Cr@std@@@Cr@std@@YAPEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PEAU2345@0@Z + ??$__rewrap_iter@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@U?$__unwrap_iter_impl@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@@Cr@std@@YAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU2345@0@Z ??$__rewrap_iter@PEAUTransition@cctz@time_internal@absl@@PEAU1234@U?$__unwrap_iter_impl@PEAUTransition@cctz@time_internal@absl@@$00@Cr@std@@@Cr@std@@YAPEAUTransition@cctz@time_internal@absl@@PEAU2345@0@Z ??$__rewrap_iter@PEAUTransitionType@cctz@time_internal@absl@@PEAU1234@U?$__unwrap_iter_impl@PEAUTransitionType@cctz@time_internal@absl@@$00@Cr@std@@@Cr@std@@YAPEAUTransitionType@cctz@time_internal@absl@@PEAU2345@0@Z ??$__rewrap_iter@PEAUViableSubstitution@strings_internal@absl@@PEAU123@U?$__unwrap_iter_impl@PEAUViableSubstitution@strings_internal@absl@@$00@Cr@std@@@Cr@std@@YAPEAUViableSubstitution@strings_internal@absl@@PEAU234@0@Z ??$__rewrap_iter@PEAVFormatArgImpl@str_format_internal@absl@@PEAV123@U?$__unwrap_iter_impl@PEAVFormatArgImpl@str_format_internal@absl@@$00@Cr@std@@@Cr@std@@YAPEAVFormatArgImpl@str_format_internal@absl@@PEAV234@0@Z + ??$__rewrap_iter@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@U?$__unwrap_iter_impl@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@@Cr@std@@YAPEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU2345@0@Z ??$__rewrap_iter@PEBVFormatArgImpl@str_format_internal@absl@@PEBV123@U?$__unwrap_iter_impl@PEBVFormatArgImpl@str_format_internal@absl@@$00@Cr@std@@@Cr@std@@YAPEBVFormatArgImpl@str_format_internal@absl@@PEBV234@0@Z ??$__rewrap_iter@V?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@Cr@std@@V123@U?$__unwrap_iter_impl@V?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@Cr@std@@$0A@@23@@Cr@std@@YA?AV?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@01@V201@0@Z ??$__rewrap_iter@V?$reverse_iterator@PEAPEAVLogSink@absl@@@Cr@std@@V123@U?$__unwrap_iter_impl@V?$reverse_iterator@PEAPEAVLogSink@absl@@@Cr@std@@$0A@@23@@Cr@std@@YA?AV?$reverse_iterator@PEAPEAVLogSink@absl@@@01@V201@0@Z @@ -740,13 +796,17 @@ ??$__rewrap_iter@V?$reverse_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@V123@U?$__unwrap_iter_impl@V?$reverse_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@$0A@@23@@Cr@std@@YA?AV?$reverse_iterator@PEAUTransition@cctz@time_internal@absl@@@01@V201@0@Z ??$__rewrap_iter@V?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@V123@U?$__unwrap_iter_impl@V?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@$0A@@23@@Cr@std@@YA?AV?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@01@V201@0@Z ??$__rewrap_iter@V?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@Cr@std@@V123@U?$__unwrap_iter_impl@V?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@Cr@std@@$0A@@23@@Cr@std@@YA?AV?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@01@V201@0@Z + ??$__rewrap_range@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@PEBU1234@@Cr@std@@YAPEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU2345@0@Z ??$__rewrap_range@PEBVFormatArgImpl@str_format_internal@absl@@PEBV123@PEBV123@@Cr@std@@YAPEBVFormatArgImpl@str_format_internal@absl@@PEBV234@0@Z + ??$__to_address@$$CBUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@YAPEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU2345@@Z ??$__to_address@$$CBVFormatArgImpl@str_format_internal@absl@@@Cr@std@@YAPEBVFormatArgImpl@str_format_internal@absl@@PEBV234@@Z ??$__to_address@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@YAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV23456@@Z + ??$__to_address@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@YAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU2345@@Z ??$__to_address@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@YAPEAPEAVCordzHandle@cord_internal@absl@@PEAPEAV234@@Z ??$__to_address@PEAVLogSink@absl@@@Cr@std@@YAPEAPEAVLogSink@absl@@PEAPEAV23@@Z ??$__to_address@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@YAPEAPEBVCordzHandle@cord_internal@absl@@PEAPEBV234@@Z ??$__to_address@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@YAPEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PEAU2345@@Z + ??$__to_address@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@YAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU2345@@Z ??$__to_address@UTransition@cctz@time_internal@absl@@@Cr@std@@YAPEAUTransition@cctz@time_internal@absl@@PEAU2345@@Z ??$__to_address@UTransitionType@cctz@time_internal@absl@@@Cr@std@@YAPEAUTransitionType@cctz@time_internal@absl@@PEAU2345@@Z ??$__to_address@UViableSubstitution@strings_internal@absl@@@Cr@std@@YAPEAUViableSubstitution@strings_internal@absl@@PEAU234@@Z @@ -762,14 +822,17 @@ ??$__uninitialized_allocator_move_if_noexcept@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@V?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@23@V423@UTransitionType@cctz@time_internal@absl@@X@Cr@std@@YA?AV?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@01@AEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@01@V201@11@Z ??$__uninitialized_allocator_move_if_noexcept@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@V?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@23@V423@UViableSubstitution@strings_internal@absl@@X@Cr@std@@YA?AV?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@01@AEAV?$allocator@UViableSubstitution@strings_internal@absl@@@01@V201@11@Z ??$__unwrap_iter@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@U?$__unwrap_iter_impl@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV23456@@Z + ??$__unwrap_iter@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@U?$__unwrap_iter_impl@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU2345@@Z ??$__unwrap_iter@PEAPEAVCordzHandle@cord_internal@absl@@U?$__unwrap_iter_impl@PEAPEAVCordzHandle@cord_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPEAPEAVCordzHandle@cord_internal@absl@@PEAPEAV234@@Z ??$__unwrap_iter@PEAPEAVLogSink@absl@@U?$__unwrap_iter_impl@PEAPEAVLogSink@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPEAPEAVLogSink@absl@@PEAPEAV23@@Z ??$__unwrap_iter@PEAPEBVCordzHandle@cord_internal@absl@@U?$__unwrap_iter_impl@PEAPEBVCordzHandle@cord_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPEAPEBVCordzHandle@cord_internal@absl@@PEAPEBV234@@Z ??$__unwrap_iter@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@U?$__unwrap_iter_impl@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PEAU2345@@Z + ??$__unwrap_iter@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@U?$__unwrap_iter_impl@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU2345@@Z ??$__unwrap_iter@PEAUTransition@cctz@time_internal@absl@@U?$__unwrap_iter_impl@PEAUTransition@cctz@time_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPEAUTransition@cctz@time_internal@absl@@PEAU2345@@Z ??$__unwrap_iter@PEAUTransitionType@cctz@time_internal@absl@@U?$__unwrap_iter_impl@PEAUTransitionType@cctz@time_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPEAUTransitionType@cctz@time_internal@absl@@PEAU2345@@Z ??$__unwrap_iter@PEAUViableSubstitution@strings_internal@absl@@U?$__unwrap_iter_impl@PEAUViableSubstitution@strings_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPEAUViableSubstitution@strings_internal@absl@@PEAU234@@Z ??$__unwrap_iter@PEAVFormatArgImpl@str_format_internal@absl@@U?$__unwrap_iter_impl@PEAVFormatArgImpl@str_format_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPEAVFormatArgImpl@str_format_internal@absl@@PEAV234@@Z + ??$__unwrap_iter@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@U?$__unwrap_iter_impl@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU2345@@Z ??$__unwrap_iter@PEBVFormatArgImpl@str_format_internal@absl@@U?$__unwrap_iter_impl@PEBVFormatArgImpl@str_format_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPEBVFormatArgImpl@str_format_internal@absl@@PEBV234@@Z ??$__unwrap_iter@V?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@Cr@std@@U?$__unwrap_iter_impl@V?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@Cr@std@@$0A@@23@$0A@@Cr@std@@YA?AV?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@01@V201@@Z ??$__unwrap_iter@V?$reverse_iterator@PEAPEAVLogSink@absl@@@Cr@std@@U?$__unwrap_iter_impl@V?$reverse_iterator@PEAPEAVLogSink@absl@@@Cr@std@@$0A@@23@$0A@@Cr@std@@YA?AV?$reverse_iterator@PEAPEAVLogSink@absl@@@01@V201@@Z @@ -778,6 +841,7 @@ ??$__unwrap_iter@V?$reverse_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@U?$__unwrap_iter_impl@V?$reverse_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@$0A@@23@$0A@@Cr@std@@YA?AV?$reverse_iterator@PEAUTransition@cctz@time_internal@absl@@@01@V201@@Z ??$__unwrap_iter@V?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@U?$__unwrap_iter_impl@V?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@$0A@@23@$0A@@Cr@std@@YA?AV?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@01@V201@@Z ??$__unwrap_iter@V?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@Cr@std@@U?$__unwrap_iter_impl@V?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@Cr@std@@$0A@@23@$0A@@Cr@std@@YA?AV?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@01@V201@@Z + ??$__unwrap_range@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@@Cr@std@@YA?A?<auto>@@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@0@Z ??$__unwrap_range@PEBVFormatArgImpl@str_format_internal@absl@@PEBV123@@Cr@std@@YA?A?<auto>@@PEBVFormatArgImpl@str_format_internal@absl@@0@Z ??$__upper_bound@U_ClassicAlgPolicy@Cr@std@@UByCivilTime@Transition@cctz@time_internal@absl@@PEBU5678@PEBU5678@U5678@U__identity@23@@Cr@std@@YAPEBUTransition@cctz@time_internal@absl@@PEBU2345@0AEBU2345@$$QEAUByCivilTime@2345@$$QEAU__identity@01@@Z ??$__upper_bound@U_ClassicAlgPolicy@Cr@std@@UByUnixTime@Transition@cctz@time_internal@absl@@PEBU5678@PEBU5678@U5678@U__identity@23@@Cr@std@@YAPEBUTransition@cctz@time_internal@absl@@PEBU2345@0AEBU2345@$$QEAUByUnixTime@2345@$$QEAU__identity@01@@Z @@ -785,6 +849,7 @@ ??$advance@PEBUTransition@cctz@time_internal@absl@@_J_JX@Cr@std@@YAXAEAPEBUTransition@cctz@time_internal@absl@@_J@Z ??$advance@PEBVFormatArgImpl@str_format_internal@absl@@_K_KX@Cr@std@@YAXAEAPEBVFormatArgImpl@str_format_internal@absl@@_K@Z ??$assign@PEBVFormatArgImpl@str_format_internal@absl@@$0A@@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEBVFormatArgImpl@str_format_internal@absl@@0@Z + ??$assign@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@Cr@std@@@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@12@0PEAX@Z ??$assign@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@?$optional_data_base@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@optional_internal@absl@@IEAAX$$QEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ??$call_once@A6AXXZ$$V@absl@@YAXAEAVonce_flag@0@A6AXXZ@Z ??$combine@H$$V@?$HashStateBase@VMixingHashState@hash_internal@absl@@@hash_internal@absl@@SA?AVMixingHashState@12@V312@AEBH@Z @@ -796,6 +861,8 @@ ??$construct@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEBV12345@XX@?$allocator_traits@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@12@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@$$QEAPEAPEBV45678@@Z ??$construct@PEAUCordRep@cord_internal@absl@@AEBQEAU123@XX@?$allocator_traits@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAUCordRep@cord_internal@absl@@@12@PEAPEAUCordRep@cord_internal@absl@@AEBQEAU456@@Z ??$construct@PEAUCordRep@cord_internal@absl@@PEAU123@XX@?$allocator_traits@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAUCordRep@cord_internal@absl@@@12@PEAPEAUCordRep@cord_internal@absl@@$$QEAPEAU456@@Z + ??$construct@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEBQEAU1234@XX@?$allocator_traits@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@12@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEBQEAU4567@@Z + ??$construct@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@XX@?$allocator_traits@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@12@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@$$QEAPEAU4567@@Z ??$construct@PEAVCordzHandle@cord_internal@absl@@AEBQEAV123@XX@?$allocator_traits@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@12@PEAPEAVCordzHandle@cord_internal@absl@@AEBQEAV456@@Z ??$construct@PEAVLogSink@absl@@AEBQEAV12@XX@?$allocator_traits@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAVLogSink@absl@@@12@PEAPEAVLogSink@absl@@AEBQEAV45@@Z ??$construct@PEAVLogSink@absl@@PEAV12@XX@?$allocator_traits@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAVLogSink@absl@@@12@PEAPEAVLogSink@absl@@$$QEAPEAV45@@Z @@ -805,6 +872,8 @@ ??$construct@UConversionItem@ParsedFormatBase@str_format_internal@absl@@U1234@XX@?$allocator_traits@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@12@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@$$QEAU4567@@Z ??$construct@UPayload@status_internal@absl@@AEBU123@XX@?$allocator_traits@V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UPayload@status_internal@absl@@@12@PEAUPayload@status_internal@absl@@AEBU456@@Z ??$construct@UPayload@status_internal@absl@@U123@XX@?$allocator_traits@V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UPayload@status_internal@absl@@@12@PEAUPayload@status_internal@absl@@$$QEAU456@@Z + ??$construct@UPrefixCrc@CrcCordState@crc_internal@absl@@AEBU1234@XX@?$allocator_traits@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@12@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEBU4567@@Z + ??$construct@UPrefixCrc@CrcCordState@crc_internal@absl@@U1234@XX@?$allocator_traits@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@12@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@$$QEAU4567@@Z ??$construct@UTransition@cctz@time_internal@absl@@$$VXX@?$allocator_traits@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UTransition@cctz@time_internal@absl@@@12@PEAUTransition@cctz@time_internal@absl@@@Z ??$construct@UTransition@cctz@time_internal@absl@@AEBU1234@XX@?$allocator_traits@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UTransition@cctz@time_internal@absl@@@12@PEAUTransition@cctz@time_internal@absl@@AEBU4567@@Z ??$construct@UTransition@cctz@time_internal@absl@@U1234@XX@?$allocator_traits@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UTransition@cctz@time_internal@absl@@@12@PEAUTransition@cctz@time_internal@absl@@$$QEAU4567@@Z @@ -816,6 +885,8 @@ ??$construct_at@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEBV12345@PEAPEAPEBV12345@@Cr@std@@YAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV23456@$$QEAPEAPEBV23456@@Z ??$construct_at@PEAUCordRep@cord_internal@absl@@AEBQEAU123@PEAPEAU123@@Cr@std@@YAPEAPEAUCordRep@cord_internal@absl@@PEAPEAU234@AEBQEAU234@@Z ??$construct_at@PEAUCordRep@cord_internal@absl@@PEAU123@PEAPEAU123@@Cr@std@@YAPEAPEAUCordRep@cord_internal@absl@@PEAPEAU234@$$QEAPEAU234@@Z + ??$construct_at@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEBQEAU1234@PEAPEAU1234@@Cr@std@@YAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU2345@AEBQEAU2345@@Z + ??$construct_at@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@PEAPEAU1234@@Cr@std@@YAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU2345@$$QEAPEAU2345@@Z ??$construct_at@PEAVCordzHandle@cord_internal@absl@@AEBQEAV123@PEAPEAV123@@Cr@std@@YAPEAPEAVCordzHandle@cord_internal@absl@@PEAPEAV234@AEBQEAV234@@Z ??$construct_at@PEAVLogSink@absl@@AEBQEAV12@PEAPEAV12@@Cr@std@@YAPEAPEAVLogSink@absl@@PEAPEAV23@AEBQEAV23@@Z ??$construct_at@PEAVLogSink@absl@@PEAV12@PEAPEAV12@@Cr@std@@YAPEAPEAVLogSink@absl@@PEAPEAV23@$$QEAPEAV23@@Z @@ -825,36 +896,45 @@ ??$construct_at@UConversionItem@ParsedFormatBase@str_format_internal@absl@@U1234@PEAU1234@@Cr@std@@YAPEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PEAU2345@$$QEAU2345@@Z ??$construct_at@UPayload@status_internal@absl@@AEBU123@PEAU123@@Cr@std@@YAPEAUPayload@status_internal@absl@@PEAU234@AEBU234@@Z ??$construct_at@UPayload@status_internal@absl@@U123@PEAU123@@Cr@std@@YAPEAUPayload@status_internal@absl@@PEAU234@$$QEAU234@@Z + ??$construct_at@UPrefixCrc@CrcCordState@crc_internal@absl@@AEBU1234@PEAU1234@@Cr@std@@YAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU2345@AEBU2345@@Z + ??$construct_at@UPrefixCrc@CrcCordState@crc_internal@absl@@U1234@PEAU1234@@Cr@std@@YAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU2345@$$QEAU2345@@Z ??$construct_at@UTransition@cctz@time_internal@absl@@$$VPEAU1234@@Cr@std@@YAPEAUTransition@cctz@time_internal@absl@@PEAU2345@@Z ??$construct_at@UTransition@cctz@time_internal@absl@@AEBU1234@PEAU1234@@Cr@std@@YAPEAUTransition@cctz@time_internal@absl@@PEAU2345@AEBU2345@@Z ??$construct_at@UTransition@cctz@time_internal@absl@@U1234@PEAU1234@@Cr@std@@YAPEAUTransition@cctz@time_internal@absl@@PEAU2345@$$QEAU2345@@Z ??$construct_at@UTransitionType@cctz@time_internal@absl@@$$VPEAU1234@@Cr@std@@YAPEAUTransitionType@cctz@time_internal@absl@@PEAU2345@@Z ??$construct_at@UTransitionType@cctz@time_internal@absl@@U1234@PEAU1234@@Cr@std@@YAPEAUTransitionType@cctz@time_internal@absl@@PEAU2345@$$QEAU2345@@Z ??$construct_at@UViableSubstitution@strings_internal@absl@@AEAVstring_view@3@AEBV43@AEA_KPEAU123@@Cr@std@@YAPEAUViableSubstitution@strings_internal@absl@@PEAU234@AEAVstring_view@4@AEBV54@AEA_K@Z + ??$copy@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@@Cr@std@@YAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU2345@0PEAU2345@@Z + ??$copy@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@U1234@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@Cr@std@@YA?AV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@01@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@0V201@PEAX@Z ??$copy@PEBVFormatArgImpl@str_format_internal@absl@@PEAV123@@Cr@std@@YAPEAVFormatArgImpl@str_format_internal@absl@@PEBV234@0PEAV234@@Z + ??$copy@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@U1234@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@Cr@std@@YA?AV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@01@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@01@0V201@@Z ??$countl_zero@I@absl@@YAHI@Z ??$countl_zero@_K@absl@@YAH_K@Z ??$countr_zero@I@absl@@YAHI@Z ??$destroy@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@XX@?$allocator_traits@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@12@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ??$destroy@PEAUCordRep@cord_internal@absl@@XX@?$allocator_traits@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAUCordRep@cord_internal@absl@@@12@PEAPEAUCordRep@cord_internal@absl@@@Z + ??$destroy@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@XX@?$allocator_traits@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@12@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ??$destroy@PEAVCordzHandle@cord_internal@absl@@XX@?$allocator_traits@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@12@PEAPEAVCordzHandle@cord_internal@absl@@@Z ??$destroy@PEAVLogSink@absl@@XX@?$allocator_traits@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAVLogSink@absl@@@12@PEAPEAVLogSink@absl@@@Z ??$destroy@PEBVCordzHandle@cord_internal@absl@@XX@?$allocator_traits@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@12@PEAPEBVCordzHandle@cord_internal@absl@@@Z ??$destroy@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@12@PEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@12@@Z ??$destroy@UConversionItem@ParsedFormatBase@str_format_internal@absl@@XX@?$allocator_traits@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@12@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@@Z ??$destroy@UPayload@status_internal@absl@@XX@?$allocator_traits@V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UPayload@status_internal@absl@@@12@PEAUPayload@status_internal@absl@@@Z + ??$destroy@UPrefixCrc@CrcCordState@crc_internal@absl@@XX@?$allocator_traits@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@12@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ??$destroy@UTransition@cctz@time_internal@absl@@XX@?$allocator_traits@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UTransition@cctz@time_internal@absl@@@12@PEAUTransition@cctz@time_internal@absl@@@Z ??$destroy@UTransitionType@cctz@time_internal@absl@@XX@?$allocator_traits@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@12@PEAUTransitionType@cctz@time_internal@absl@@@Z ??$destroy@UViableSubstitution@strings_internal@absl@@XX@?$allocator_traits@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UViableSubstitution@strings_internal@absl@@@12@PEAUViableSubstitution@strings_internal@absl@@@Z ??$destroy@VFormatArgImpl@str_format_internal@absl@@XX@?$allocator_traits@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@VFormatArgImpl@str_format_internal@absl@@@12@PEAVFormatArgImpl@str_format_internal@absl@@@Z ??$destroy_at@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@$0A@@Cr@std@@YAXPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ??$destroy_at@PEAUCordRep@cord_internal@absl@@$0A@@Cr@std@@YAXPEAPEAUCordRep@cord_internal@absl@@@Z + ??$destroy_at@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@$0A@@Cr@std@@YAXPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ??$destroy_at@PEAVCordzHandle@cord_internal@absl@@$0A@@Cr@std@@YAXPEAPEAVCordzHandle@cord_internal@absl@@@Z ??$destroy_at@PEAVLogSink@absl@@$0A@@Cr@std@@YAXPEAPEAVLogSink@absl@@@Z ??$destroy_at@PEBVCordzHandle@cord_internal@absl@@$0A@@Cr@std@@YAXPEAPEBVCordzHandle@cord_internal@absl@@@Z ??$destroy_at@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@$0A@@Cr@std@@YAXPEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@01@@Z ??$destroy_at@UConversionItem@ParsedFormatBase@str_format_internal@absl@@$0A@@Cr@std@@YAXPEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@@Z ??$destroy_at@UPayload@status_internal@absl@@$0A@@Cr@std@@YAXPEAUPayload@status_internal@absl@@@Z + ??$destroy_at@UPrefixCrc@CrcCordState@crc_internal@absl@@$0A@@Cr@std@@YAXPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ??$destroy_at@UTransition@cctz@time_internal@absl@@$0A@@Cr@std@@YAXPEAUTransition@cctz@time_internal@absl@@@Z ??$destroy_at@UTransitionType@cctz@time_internal@absl@@$0A@@Cr@std@@YAXPEAUTransitionType@cctz@time_internal@absl@@@Z ??$destroy_at@UViableSubstitution@strings_internal@absl@@$0A@@Cr@std@@YAXPEAUViableSubstitution@strings_internal@absl@@@Z @@ -863,7 +943,9 @@ ??$distance@PEBUTransition@cctz@time_internal@absl@@@?$_IterOps@U_ClassicAlgPolicy@Cr@std@@@Cr@std@@SA_JPEBUTransition@cctz@time_internal@absl@@0@Z ??$distance@PEBUTransition@cctz@time_internal@absl@@@Cr@std@@YA_JPEBUTransition@cctz@time_internal@absl@@0@Z ??$distance@PEBVFormatArgImpl@str_format_internal@absl@@@Cr@std@@YA_JPEBVFormatArgImpl@str_format_internal@absl@@0@Z + ??$distance@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@Cr@std@@@Cr@std@@YA_JV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@01@0@Z ??$distance@V?$move_iterator@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YA_JV?$move_iterator@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@01@0@Z + ??$distance@V?$move_iterator@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@YA_JV?$move_iterator@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@01@0@Z ??$distance@V?$move_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YA_JV?$move_iterator@PEAUTransition@cctz@time_internal@absl@@@01@0@Z ??$distance@V?$move_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YA_JV?$move_iterator@PEAUTransitionType@cctz@time_internal@absl@@@01@0@Z ??$emplace@$$V@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA?AV?$__wrap_iter@PEAUTransition@cctz@time_internal@absl@@@12@V?$__wrap_iter@PEBUTransition@cctz@time_internal@absl@@@12@@Z @@ -934,6 +1016,7 @@ ??$make_pair@AEAV?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@V123@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@V123@@01@AEAV?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@01@$$QEAV301@@Z ??$make_pair@AEAV?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@Cr@std@@V123@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@Cr@std@@V123@@01@AEAV?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@01@$$QEAV301@@Z ??$make_pair@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV12345@@Cr@std@@YA?AU?$pair@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV12345@@01@$$QEAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@0@Z + ??$make_pair@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU1234@@Cr@std@@YA?AU?$pair@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU1234@@01@$$QEAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@0@Z ??$make_pair@PEAPEAVCordzHandle@cord_internal@absl@@PEAPEAV123@@Cr@std@@YA?AU?$pair@PEAPEAVCordzHandle@cord_internal@absl@@PEAPEAV123@@01@$$QEAPEAPEAVCordzHandle@cord_internal@absl@@0@Z ??$make_pair@PEAPEAVLogSink@absl@@PEAPEAV12@@Cr@std@@YA?AU?$pair@PEAPEAVLogSink@absl@@PEAPEAV12@@01@$$QEAPEAPEAVLogSink@absl@@0@Z ??$make_pair@PEAPEBVCordzHandle@cord_internal@absl@@PEAPEBV123@@Cr@std@@YA?AU?$pair@PEAPEBVCordzHandle@cord_internal@absl@@PEAPEBV123@@01@$$QEAPEAPEBVCordzHandle@cord_internal@absl@@0@Z @@ -941,6 +1024,7 @@ ??$make_pair@PEAUTransition@cctz@time_internal@absl@@PEAU1234@@Cr@std@@YA?AU?$pair@PEAUTransition@cctz@time_internal@absl@@PEAU1234@@01@$$QEAPEAUTransition@cctz@time_internal@absl@@0@Z ??$make_pair@PEAUTransitionType@cctz@time_internal@absl@@PEAU1234@@Cr@std@@YA?AU?$pair@PEAUTransitionType@cctz@time_internal@absl@@PEAU1234@@01@$$QEAPEAUTransitionType@cctz@time_internal@absl@@0@Z ??$make_pair@PEAUViableSubstitution@strings_internal@absl@@PEAU123@@Cr@std@@YA?AU?$pair@PEAUViableSubstitution@strings_internal@absl@@PEAU123@@01@$$QEAPEAUViableSubstitution@strings_internal@absl@@0@Z + ??$make_pair@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@@Cr@std@@YA?AU?$pair@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@@01@$$QEAPEBUPrefixCrc@CrcCordState@crc_internal@absl@@$$QEAPEAU3456@@Z ??$make_pair@PEBVFormatArgImpl@str_format_internal@absl@@PEAV123@@Cr@std@@YA?AU?$pair@PEBVFormatArgImpl@str_format_internal@absl@@PEAV123@@01@$$QEAPEBVFormatArgImpl@str_format_internal@absl@@$$QEAPEAV345@@Z ??$make_pair@V?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@Cr@std@@V123@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@Cr@std@@V123@@01@$$QEAV?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@01@0@Z ??$make_pair@V?$reverse_iterator@PEAPEAVLogSink@absl@@@Cr@std@@V123@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PEAPEAVLogSink@absl@@@Cr@std@@V123@@01@$$QEAV?$reverse_iterator@PEAPEAVLogSink@absl@@@01@0@Z @@ -952,11 +1036,13 @@ ??$make_unique@ULogMessageData@LogMessage@log_internal@absl@@AEAPEBDAEAHAEAW4LogSeverity@4@VTime@4@@Cr@std@@YA?AV?$unique_ptr@ULogMessageData@LogMessage@log_internal@absl@@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@@01@AEAPEBDAEAHAEAW4LogSeverity@absl@@$$QEAVTime@4@@Z ??$make_unique@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@$$V@Cr@std@@YA?AV?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@01@XZ ??$make_unique@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@AEAV12@@Cr@std@@YA?AV?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@01@AEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Z + ??$make_unique@VFallbackCrcMemcpyEngine@crc_internal@absl@@$$V@Cr@std@@YA?AV?$unique_ptr@VFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@01@XZ ??$max@VDuration@absl@@@Cr@std@@YAAEBVDuration@absl@@AEBV23@0@Z ??$max@VDuration@absl@@U?$__less@VDuration@absl@@V12@@Cr@std@@@Cr@std@@YAAEBVDuration@absl@@AEBV23@0U?$__less@VDuration@absl@@V12@@01@@Z ??$max_size@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SA_KAEBV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@12@@Z ??$max_size@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@XX@?$allocator_traits@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@SA_KAEBV?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@12@@Z ??$max_size@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@Cr@std@@SA_KAEBV?$allocator@PEAUCordRep@cord_internal@absl@@@12@@Z + ??$max_size@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SA_KAEBV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@12@@Z ??$max_size@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@SA_KAEBV?$allocator@PEAVCordzHandle@cord_internal@absl@@@12@@Z ??$max_size@V?$allocator@PEAVLogSink@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@SA_KAEBV?$allocator@PEAVLogSink@absl@@@12@@Z ??$max_size@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@SA_KAEBV?$allocator@PEBVCordzHandle@cord_internal@absl@@@12@@Z @@ -964,6 +1050,7 @@ ??$max_size@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@XX@?$allocator_traits@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@SA_KAEBV?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@12@@Z ??$max_size@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@SA_KAEBV?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@12@@Z ??$max_size@V?$allocator@UPayload@status_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@Cr@std@@SA_KAEBV?$allocator@UPayload@status_internal@absl@@@12@@Z + ??$max_size@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SA_KAEBV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@12@@Z ??$max_size@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SA_KAEBV?$allocator@UTransition@cctz@time_internal@absl@@@12@@Z ??$max_size@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SA_KAEBV?$allocator@UTransitionType@cctz@time_internal@absl@@@12@@Z ??$max_size@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@SA_KAEBV?$allocator@UViableSubstitution@strings_internal@absl@@@12@@Z @@ -972,6 +1059,7 @@ ??$min@VDuration@absl@@U?$__less@VDuration@absl@@V12@@Cr@std@@@Cr@std@@YAAEBVDuration@absl@@AEBV23@0U?$__less@VDuration@absl@@V12@@01@@Z ??$move@AEA_J@absl@@YA$$QEA_JAEA_J@Z ??$move@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV12345@@Cr@std@@YAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV23456@00@Z + ??$move@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU1234@@Cr@std@@YAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU2345@00@Z ??$move@PEAPEAVLogSink@absl@@PEAPEAV12@@Cr@std@@YAPEAPEAVLogSink@absl@@PEAPEAV23@00@Z ??$move@PEAUTransition@cctz@time_internal@absl@@PEAU1234@@Cr@std@@YAPEAUTransition@cctz@time_internal@absl@@PEAU2345@00@Z ??$move@PEAUTransitionType@cctz@time_internal@absl@@PEAU1234@@Cr@std@@YAPEAUTransitionType@cctz@time_internal@absl@@PEAU2345@00@Z @@ -983,12 +1071,15 @@ ??$move@V?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@V123@@Cr@std@@YA?AV?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@01@V201@00@Z ??$move@V?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@Cr@std@@V123@@Cr@std@@YA?AV?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@01@V201@00@Z ??$move_backward@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV12345@@Cr@std@@YAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV23456@00@Z + ??$move_backward@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU1234@@Cr@std@@YAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU2345@00@Z ??$move_backward@PEAUTransition@cctz@time_internal@absl@@PEAU1234@@Cr@std@@YAPEAUTransition@cctz@time_internal@absl@@PEAU2345@00@Z ??$move_backward@PEAUTransitionType@cctz@time_internal@absl@@PEAU1234@@Cr@std@@YAPEAUTransitionType@cctz@time_internal@absl@@PEAU2345@00@Z ??$next@AEAPEBUTransition@cctz@time_internal@absl@@@?$_IterOps@U_ClassicAlgPolicy@Cr@std@@@Cr@std@@SAPEBUTransition@cctz@time_internal@absl@@AEAPEBU3456@_J@Z ??$next@PEBUTransition@cctz@time_internal@absl@@@Cr@std@@YAPEBUTransition@cctz@time_internal@absl@@PEBU2345@_J@Z ??$reset@PEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@?$unique_ptr@$$BY0A@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QEAAXPEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@12@@Z + ??$rotr@I@absl@@YAIIH@Z ??$swap@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@YAXAEAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@0@Z + ??$swap@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@YAXAEAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@0@Z ??$swap@PEAPEAVCordzHandle@cord_internal@absl@@@Cr@std@@YAXAEAPEAPEAVCordzHandle@cord_internal@absl@@0@Z ??$swap@PEAPEAVLogSink@absl@@@Cr@std@@YAXAEAPEAPEAVLogSink@absl@@0@Z ??$swap@PEAPEBVCordzHandle@cord_internal@absl@@@Cr@std@@YAXAEAPEAPEBVCordzHandle@cord_internal@absl@@0@Z @@ -1055,6 +1146,7 @@ ??0?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QEAA@AEBV?$allocator@UPayload@status_internal@absl@@@Cr@std@@@Z ??0?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QEAA@XZ ??0?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAV?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@12@_K@Z + ??0?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@12@_K@Z ??0?$__atomic_base@P6AXAEBUHashtablezInfo@container_internal@absl@@@Z$0A@@Cr@std@@QEAA@P6AXAEBUHashtablezInfo@container_internal@absl@@@Z@Z ??0?$__atomic_base@PEAUHashtablezInfo@container_internal@absl@@$0A@@Cr@std@@QEAA@PEAUHashtablezInfo@container_internal@absl@@@Z ??0?$__atomic_base@PEAVCordzInfo@cord_internal@absl@@$0A@@Cr@std@@QEAA@PEAVCordzInfo@cord_internal@absl@@@Z @@ -1066,6 +1158,7 @@ ??0?$__compressed_pair_elem@U?$default_delete@$$CBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__value_init_tag@12@@Z ??0?$__compressed_pair_elem@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__value_init_tag@12@@Z ??0?$__compressed_pair_elem@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__value_init_tag@12@@Z + ??0?$__compressed_pair_elem@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__value_init_tag@12@@Z ??0?$__compressed_pair_elem@U?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__value_init_tag@12@@Z ??0?$__compressed_pair_elem@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__value_init_tag@12@@Z ??0?$__compressed_pair_elem@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__value_init_tag@12@@Z @@ -1074,15 +1167,18 @@ ??0?$__compressed_pair_elem@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z + ??0?$__compressed_pair_elem@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@PEAVLogSink@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@$00$00@Cr@std@@QEAA@U__value_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z + ??0?$__compressed_pair_elem@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z + ??0?$__compressed_pair_elem@V?$allocator@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAA@U__default_init_tag@12@@Z ??0?$__cxx_atomic_base_impl@P6AXAEBUHashtablezInfo@container_internal@absl@@@Z@Cr@std@@QEAA@P6AXAEBUHashtablezInfo@container_internal@absl@@@Z@Z ??0?$__cxx_atomic_base_impl@PEAUHashtablezInfo@container_internal@absl@@@Cr@std@@QEAA@PEAUHashtablezInfo@container_internal@absl@@@Z @@ -1091,6 +1187,8 @@ ??0?$__cxx_atomic_impl@PEAUHashtablezInfo@container_internal@absl@@U?$__cxx_atomic_base_impl@PEAUHashtablezInfo@container_internal@absl@@@Cr@std@@@Cr@std@@QEAA@PEAUHashtablezInfo@container_internal@absl@@@Z ??0?$__cxx_atomic_impl@PEAVCordzInfo@cord_internal@absl@@U?$__cxx_atomic_base_impl@PEAVCordzInfo@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@PEAVCordzInfo@cord_internal@absl@@@Z ??0?$__deque_iterator@PEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEBV12345@AEAPEBV12345@PEAPEAPEBV12345@_J$0A@@Cr@std@@AEAA@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEBV34567@@Z + ??0?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@Cr@std@@AEAA@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU3456@@Z + ??0?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@Cr@std@@AEAA@PEBQEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU3456@@Z ??0?$__hash_const_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@QEAA@AEBV?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@12@@Z ??0?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@AEAA@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@12@PEBX@Z ??0?$__hash_map_const_iterator@V?$__hash_const_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@QEAA@V?$__hash_map_iterator@V?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@12@@Z @@ -1101,6 +1199,7 @@ ??0?$__non_trivial_if@$00V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$__non_trivial_if@$00V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$__non_trivial_if@$00V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ + ??0?$__non_trivial_if@$00V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$__non_trivial_if@$00V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$__non_trivial_if@$00V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$__non_trivial_if@$00V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ @@ -1108,14 +1207,18 @@ ??0?$__non_trivial_if@$00V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$__non_trivial_if@$00V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$__non_trivial_if@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ + ??0?$__non_trivial_if@$00V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$__non_trivial_if@$00V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$__non_trivial_if@$00V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$__non_trivial_if@$00V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ + ??0?$__non_trivial_if@$00V?$allocator@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$__non_trivial_if@$00V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$__policy_invoker@$$A6A?AV?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@23@@Z@__function@Cr@std@@AEAA@P6A?AV?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@23@PEBT__policy_storage@123@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@23@@Z@Z ??0?$__policy_invoker@$$A6A?AV?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@23@@Z@__function@Cr@std@@QEAA@XZ ??0?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@_K0AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@12@@Z ??0?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ + ??0?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@_K0AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@12@@Z + ??0?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$__split_buffer@PEAVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@_K0AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@12@@Z ??0?$__split_buffer@PEAVLogSink@absl@@AEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@QEAA@_K0AEAV?$allocator@PEAVLogSink@absl@@@12@@Z ??0?$__split_buffer@PEBVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@_K0AEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@12@@Z @@ -1134,6 +1237,7 @@ ??0?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@QEAA@XZ ??0?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@QEAA@XZ + ??0?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QEAA@XZ ??0?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@QEAA@XZ ??0?$allocator@PEAVLogSink@absl@@@Cr@std@@QEAA@XZ ??0?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@QEAA@XZ @@ -1141,9 +1245,11 @@ ??0?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@QEAA@XZ ??0?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@QEAA@XZ ??0?$allocator@UPayload@status_internal@absl@@@Cr@std@@QEAA@XZ + ??0?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QEAA@XZ ??0?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@QEAA@XZ ??0?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@QEAA@XZ ??0?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@QEAA@XZ + ??0?$allocator@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@QEAA@XZ ??0?$atomic@P6AXAEBUHashtablezInfo@container_internal@absl@@@Z@Cr@std@@QEAA@P6AXAEBUHashtablezInfo@container_internal@absl@@@Z@Z ??0?$atomic@PEAUHashtablezInfo@container_internal@absl@@@Cr@std@@QEAA@PEAUHashtablezInfo@container_internal@absl@@@Z @@ -1177,8 +1283,10 @@ ??0?$civil_time@Uyear_tag@time_internal@absl@@@detail@cctz@time_internal@absl@@QEAA@XZ ??0?$civil_time@Uyear_tag@time_internal@absl@@@detail@cctz@time_internal@absl@@QEAA@_J00000@Z ??0?$deque@PEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ + ??0?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$move_iterator@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@QEAA@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ??0?$move_iterator@PEAPEAUCordRep@cord_internal@absl@@@Cr@std@@QEAA@PEAPEAUCordRep@cord_internal@absl@@@Z + ??0?$move_iterator@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QEAA@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ??0?$move_iterator@PEAPEAVLogSink@absl@@@Cr@std@@QEAA@PEAPEAVLogSink@absl@@@Z ??0?$move_iterator@PEAUPayload@status_internal@absl@@@Cr@std@@QEAA@PEAUPayload@status_internal@absl@@@Z ??0?$move_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@QEAA@PEAUTransition@cctz@time_internal@absl@@@Z @@ -1216,6 +1324,7 @@ ??0?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??0?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ + ??0?$vector@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@V?$allocator@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QEAA@XZ ??0?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??0AlphaNum@absl@@QEAA@H@Z ??0AlphaNum@absl@@QEAA@PEBD@Z @@ -1238,6 +1347,9 @@ ??0ByAnyChar@absl@@QEAA@Vstring_view@1@@Z ??0ByLength@absl@@QEAA@_J@Z ??0ByString@absl@@QEAA@Vstring_view@1@@Z + ??0CRC32@crc_internal@absl@@QEAA@XZ + ??0CRC@crc_internal@absl@@IEAA@XZ + ??0CRCImpl@crc_internal@absl@@QEAA@XZ ??0CheckOpMessageBuilder@log_internal@absl@@QEAA@PEBD@Z ??0ChunkIterator@Cord@absl@@AEAA@PEAUCordRep@cord_internal@2@@Z ??0ChunkIterator@Cord@absl@@AEAA@PEBV12@@Z @@ -1268,10 +1380,15 @@ ??0CordzUpdateScope@cord_internal@absl@@QEAA@PEAVCordzInfo@12@W4MethodIdentifier@CordzUpdateTracker@12@@Z ??0CordzUpdateTracker@cord_internal@absl@@QEAA@XZ ??0Counter@CordzUpdateTracker@cord_internal@absl@@QEAA@XZ + ??0CrcCordState@crc_internal@absl@@QEAA@$$QEAV012@@Z + ??0CrcCordState@crc_internal@absl@@QEAA@AEBV012@@Z + ??0CrcCordState@crc_internal@absl@@QEAA@XZ + ??0CrcMemcpyEngine@crc_internal@absl@@IEAA@XZ ??0Duration@absl@@AEAA@_JI@Z ??0Duration@absl@@QEAA@XZ ??0ErrnoSaver@base_internal@absl@@QEAA@XZ ??0FILERawSink@str_format_internal@absl@@QEAA@PEAU_iobuf@@@Z + ??0FallbackCrcMemcpyEngine@crc_internal@absl@@QEAA@XZ ??0Filler@CordRepRing@cord_internal@absl@@QEAA@PEAV123@I@Z ??0FormatConversionSpecImpl@str_format_internal@absl@@QEAA@XZ ??0FormatSinkImpl@str_format_internal@absl@@QEAA@VFormatRawSinkImpl@12@@Z @@ -1311,12 +1428,16 @@ ??0Payload@status_internal@absl@@QEAA@$$QEAU012@@Z ??0Payload@status_internal@absl@@QEAA@AEBU012@@Z ??0PosixTimeZone@cctz@time_internal@absl@@QEAA@XZ + ??0PrefixCrc@CrcCordState@crc_internal@absl@@QEAA@XZ + ??0PrefixCrc@CrcCordState@crc_internal@absl@@QEAA@_KVcrc32c_t@3@@Z ??0ProtoField@log_internal@absl@@QEAA@XZ ??0Randen@random_internal@absl@@QEAA@XZ ??0ReaderMutexLock@absl@@QEAA@PEAVMutex@1@@Z ??0RefcountAndFlags@cord_internal@absl@@QEAA@XZ + ??0RefcountedRep@CrcCordState@crc_internal@absl@@QEAA@XZ ??0Rep@CordBuffer@absl@@QEAA@PEAUCordRepFlat@cord_internal@2@@Z ??0Rep@CordBuffer@absl@@QEAA@XZ + ??0Rep@CrcCordState@crc_internal@absl@@QEAA@XZ ??0Rep@GraphCycles@synchronization_internal@absl@@QEAA@XZ ??0SchedulingHelper@base_internal@absl@@QEAA@W4SchedulingMode@12@@Z ??0ScopedDisable@SchedulingGuard@base_internal@absl@@QEAA@XZ @@ -1351,8 +1472,10 @@ ??0WriterMutexLock@absl@@QEAA@PEAVMutex@1@@Z ??0ZoneInfoSource@cctz@time_internal@absl@@QEAA@XZ ??0_ConstructTransaction@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@PEAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@_K@Z + ??0_ConstructTransaction@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@PEAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@_K@Z ??0_ConstructTransaction@?$__split_buffer@UTransition@cctz@time_internal@absl@@AEAV?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@PEAPEAUTransition@cctz@time_internal@absl@@_K@Z ??0_ConstructTransaction@?$__split_buffer@UTransitionType@cctz@time_internal@absl@@AEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@PEAPEAUTransitionType@cctz@time_internal@absl@@_K@Z + ??0_ConstructTransaction@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@PEAV123@AEAU__deque_block_range@123@@Z ??0_ConstructTransaction@?$vector@PEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAV123@_K@Z ??0_ConstructTransaction@?$vector@PEAVLogSink@absl@@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@QEAA@AEAV123@_K@Z ??0_ConstructTransaction@?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAV123@_K@Z @@ -1361,6 +1484,8 @@ ??0_ConstructTransaction@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAV123@_K@Z ??0_ConstructTransaction@?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAV123@_K@Z ??0_ConstructTransaction@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAV123@_K@Z + ??0__deque_block_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@0@Z + ??0__deque_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@23@0@Z ??0__destroy_vector@?$vector@PEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAV123@@Z ??0__destroy_vector@?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAV123@@Z ??0__destroy_vector@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@AEAV123@@Z @@ -1370,6 +1495,7 @@ ??0absolute_lookup@time_zone@cctz@time_internal@absl@@QEAA@XZ ??0civil_lookup@time_zone@cctz@time_internal@absl@@QEAA@XZ ??0civil_transition@time_zone@cctz@time_internal@absl@@QEAA@XZ + ??0crc32c_t@absl@@QEAA@I@Z ??0fields@detail@cctz@time_internal@absl@@QEAA@_JCCCCC@Z ??0int128@absl@@AEAA@_J_K@Z ??0int128@absl@@QEAA@H@Z @@ -1408,6 +1534,8 @@ ??1?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QEAA@XZ ??1?$__policy_func@$$A6A?AV?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@23@@Z@__function@Cr@std@@QEAA@XZ ??1?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ + ??1?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ + ??1?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1?$__split_buffer@PEAVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1?$__split_buffer@PEAVLogSink@absl@@AEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1?$__split_buffer@PEBVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ @@ -1417,6 +1545,7 @@ ??1?$__split_buffer@UViableSubstitution@strings_internal@absl@@AEAV?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1?$__temp_value@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1?$__temp_value@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ + ??1?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1?$function@$$A6A?AV?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@23@@Z@Cr@std@@QEAA@XZ ??1?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@absl@@QEAA@XZ ??1?$optional_data@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@$0A@@optional_internal@absl@@QEAA@XZ @@ -1425,10 +1554,12 @@ ??1?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@QEAA@XZ ??1?$unique_ptr@$$CBVImpl@time_zone@cctz@time_internal@absl@@U?$default_delete@$$CBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1?$unique_ptr@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEAA@XZ + ??1?$unique_ptr@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEAA@XZ ??1?$unique_ptr@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@@Cr@std@@QEAA@XZ ??1?$unique_ptr@ULogMessageData@LogMessage@log_internal@absl@@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1?$unique_ptr@UThreadIdentity@base_internal@absl@@P6AXPEAX@Z@Cr@std@@QEAA@XZ ??1?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEAA@XZ + ??1?$unique_ptr@VFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1?$unique_ptr@VTimeZoneIf@cctz@time_internal@absl@@U?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1?$unique_ptr@VTimeZoneInfo@cctz@time_internal@absl@@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ @@ -1439,14 +1570,21 @@ ??1?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1BadStatusOrAccess@absl@@UEAA@XZ + ??1CRC32@crc_internal@absl@@UEAA@XZ + ??1CRC@crc_internal@absl@@UEAA@XZ + ??1CRCImpl@crc_internal@absl@@UEAA@XZ ??1CheckOpMessageBuilder@log_internal@absl@@QEAA@XZ ??1CondVar@absl@@QEAA@XZ ??1Cord@absl@@QEAA@XZ ??1CordBuffer@absl@@QEAA@XZ + ??1CordRepCrc@cord_internal@absl@@QEAA@XZ ??1CordzHandle@cord_internal@absl@@MEAA@XZ ??1CordzInfo@cord_internal@absl@@EEAA@XZ ??1CordzUpdateScope@cord_internal@absl@@QEAA@XZ + ??1CrcCordState@crc_internal@absl@@QEAA@XZ + ??1CrcMemcpyEngine@crc_internal@absl@@UEAA@XZ ??1ErrnoSaver@base_internal@absl@@QEAA@XZ + ??1FallbackCrcMemcpyEngine@crc_internal@absl@@UEAA@XZ ??1FormatSinkImpl@str_format_internal@absl@@QEAA@XZ ??1GraphCycles@synchronization_internal@absl@@QEAA@XZ ??1HashtablezInfo@container_internal@absl@@QEAA@XZ @@ -1465,6 +1603,8 @@ ??1Payload@status_internal@absl@@QEAA@XZ ??1PosixTimeZone@cctz@time_internal@absl@@QEAA@XZ ??1ReaderMutexLock@absl@@QEAA@XZ + ??1RefcountedRep@CrcCordState@crc_internal@absl@@QEAA@XZ + ??1Rep@CrcCordState@crc_internal@absl@@QEAA@XZ ??1Rep@GraphCycles@synchronization_internal@absl@@QEAA@XZ ??1SchedulingHelper@base_internal@absl@@QEAA@XZ ??1ScopedDisable@SchedulingGuard@base_internal@absl@@QEAA@XZ @@ -1482,8 +1622,10 @@ ??1WriterMutexLock@absl@@QEAA@XZ ??1ZoneInfoSource@cctz@time_internal@absl@@UEAA@XZ ??1_ConstructTransaction@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ + ??1_ConstructTransaction@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1_ConstructTransaction@?$__split_buffer@UTransition@cctz@time_internal@absl@@AEAV?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1_ConstructTransaction@?$__split_buffer@UTransitionType@cctz@time_internal@absl@@AEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ + ??1_ConstructTransaction@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1_ConstructTransaction@?$vector@PEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1_ConstructTransaction@?$vector@PEAVLogSink@absl@@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1_ConstructTransaction@?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ @@ -1494,6 +1636,7 @@ ??1_ConstructTransaction@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1bad_optional_access@absl@@UEAA@XZ ??1bad_variant_access@absl@@UEAA@XZ + ??4?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV012@AEBV012@@Z ??4?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@absl@@QEAAAEAV01@$$QEAV01@@Z ??4?$optional_data@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@$0A@@optional_internal@absl@@IEAAAEAV012@$$QEAV012@@Z ??4?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEAAAEAV012@$$QEAV012@@Z @@ -1502,8 +1645,11 @@ ??4Cord@absl@@QEAAAEAV01@$$QEAV01@@Z ??4Cord@absl@@QEAAAEAV01@Vstring_view@1@@Z ??4CordzUpdateTracker@cord_internal@absl@@QEAAAEAV012@AEBV012@@Z + ??4CrcCordState@crc_internal@absl@@QEAAAEAV012@$$QEAV012@@Z + ??4CrcCordState@crc_internal@absl@@QEAAAEAV012@AEBV012@@Z ??4InlineRep@Cord@absl@@QEAAAEAV012@$$QEAV012@@Z ??4Payload@status_internal@absl@@QEAAAEAU012@$$QEAU012@@Z + ??4Rep@CrcCordState@crc_internal@absl@@QEAAAEAU0123@AEBU0123@@Z ??4Status@absl@@QEAAAEAV01@$$QEAV01@@Z ??4Status@absl@@QEAAAEAV01@AEBV01@@Z ??4int128@absl@@QEAAAEAV01@H@Z @@ -1519,6 +1665,7 @@ ??6absl@@YA?AVuint128@0@V10@H@Z ??6absl@@YAAEAV?$basic_ostream@DU?$char_traits@D@Cr@std@@@Cr@std@@AEAV123@AEBVCord@0@@Z ??6absl@@YAAEAV?$basic_ostream@DU?$char_traits@D@Cr@std@@@Cr@std@@AEAV123@AEBVStatus@0@@Z + ??6absl@@YAAEAV?$basic_ostream@DU?$char_traits@D@Cr@std@@@Cr@std@@AEAV123@Vcrc32c_t@0@@Z ??6absl@@YAAEAV?$basic_ostream@DU?$char_traits@D@Cr@std@@@Cr@std@@AEAV123@Vint128@0@@Z ??6absl@@YAAEAV?$basic_ostream@DU?$char_traits@D@Cr@std@@@Cr@std@@AEAV123@Vstring_view@0@@Z ??6absl@@YAAEAV?$basic_ostream@DU?$char_traits@D@Cr@std@@@Cr@std@@AEAV123@Vuint128@0@@Z @@ -1544,6 +1691,9 @@ ??6time_internal@absl@@YAAEAV?$basic_ostream@DU?$char_traits@D@Cr@std@@@Cr@std@@AEAV234@V?$civil_time@Uyear_tag@time_internal@absl@@@detail@cctz@01@@Z ??7absl@@YA_NVuint128@0@@Z ??8ChunkIterator@Cord@absl@@QEBA_NAEBV012@@Z + ??8Cr@std@@YA_NAEBU__deque_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@01@0@Z + ??8Cr@std@@YA_NAEBV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@01@0@Z + ??8Cr@std@@YA_NAEBV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@01@0@Z ??8Cr@std@@YA_NAEBV?$__hash_const_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@01@0@Z ??8Cr@std@@YA_NAEBV?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@01@0@Z ??8GraphId@synchronization_internal@absl@@QEBA_NAEBU012@@Z @@ -1554,6 +1704,9 @@ ??8absl@@YA_NVstring_view@0@0@Z ??8absl@@YA_NVuint128@0@0@Z ??9ChunkIterator@Cord@absl@@QEBA_NAEBV012@@Z + ??9Cr@std@@YA_NAEBU__deque_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@01@0@Z + ??9Cr@std@@YA_NAEBV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@01@0@Z + ??9Cr@std@@YA_NAEBV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@01@0@Z ??9Cr@std@@YA_NAEBV?$__hash_const_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@01@0@Z ??9Cr@std@@YA_NAEBV?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@01@0@Z ??9Cr@std@@YA_NAEBV?$__hash_map_const_iterator@V?$__hash_const_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@01@0@Z @@ -1569,6 +1722,7 @@ ??A?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@absl@@QEBAAEBVFormatArgImpl@str_format_internal@1@_K@Z ??A?$Span@D@absl@@QEBAAEAD_K@Z ??A?$Span@I@absl@@QEBAAEAI_K@Z + ??A?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBUPrefixCrc@CrcCordState@crc_internal@absl@@_K@Z ??A?$unique_ptr@$$BY0A@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QEBAAEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@12@_K@Z ??A?$unordered_map@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@QEAAAEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@12@@Z ??A?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAUTransition@cctz@time_internal@absl@@_K@Z @@ -1587,6 +1741,7 @@ ??BCord@absl@@QEBA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@XZ ??BCordRepBtreeReader@cord_internal@absl@@QEBA_NXZ ??BTimeZone@absl@@QEBA?AVtime_zone@cctz@time_internal@1@XZ + ??Bcrc32c_t@absl@@QEBAIXZ ??Bint128@absl@@QEBADXZ ??Bint128@absl@@QEBANXZ ??Bint128@absl@@QEBA_JXZ @@ -1607,6 +1762,8 @@ ??C?$unique_ptr@VTimeZoneInfo@cctz@time_internal@absl@@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBAPEAVTimeZoneInfo@cctz@time_internal@absl@@XZ ??CChunkIterator@Cord@absl@@QEBAPEBVstring_view@2@XZ ??D?$__deque_iterator@PEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEBV12345@AEAPEBV12345@PEAPEAPEBV12345@_J$0A@@Cr@std@@QEBAAEAPEBVImpl@time_zone@cctz@time_internal@absl@@XZ + ??D?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@Cr@std@@QEBAAEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ??D?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@Cr@std@@QEBAAEBUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ??D?$__hash_map_iterator@V?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@QEBAAEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@12@XZ ??D?$__wrap_iter@PEAPEAVCordzHandle@cord_internal@absl@@@Cr@std@@QEBAAEAPEAVCordzHandle@cord_internal@absl@@XZ ??D?$__wrap_iter@PEAPEAVLogSink@absl@@@Cr@std@@QEBAAEAPEAVLogSink@absl@@XZ @@ -1615,6 +1772,7 @@ ??D?$__wrap_iter@PEBUConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@QEBAAEBUConversionItem@ParsedFormatBase@str_format_internal@absl@@XZ ??D?$move_iterator@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@QEBA$$QEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@XZ ??D?$move_iterator@PEAPEAUCordRep@cord_internal@absl@@@Cr@std@@QEBA$$QEAPEAUCordRep@cord_internal@absl@@XZ + ??D?$move_iterator@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QEBA$$QEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ??D?$move_iterator@PEAPEAVLogSink@absl@@@Cr@std@@QEBA$$QEAPEAVLogSink@absl@@XZ ??D?$move_iterator@PEAUPayload@status_internal@absl@@@Cr@std@@QEBA$$QEAUPayload@status_internal@absl@@XZ ??D?$move_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@QEBA$$QEAUTransition@cctz@time_internal@absl@@XZ @@ -1623,8 +1781,11 @@ ??D?$unique_ptr@ULogMessageData@LogMessage@log_internal@absl@@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEAULogMessageData@LogMessage@log_internal@absl@@XZ ??D?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEBAAEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@XZ ??DChunkIterator@Cord@absl@@QEBA?AVstring_view@2@XZ + ??D__deque_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA?AU__deque_block_range@123@XZ ??Dabsl@@YA?AVint128@0@V10@0@Z ??Dabsl@@YA?AVuint128@0@V10@0@Z + ??E?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@Cr@std@@QEAAAEAV012@XZ + ??E?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@Cr@std@@QEAAAEAV012@XZ ??E?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@QEAAAEAV012@XZ ??E?$__hash_map_iterator@V?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@QEAAAEAV012@XZ ??E?$__wrap_iter@PEAPEAVCordzHandle@cord_internal@absl@@@Cr@std@@QEAAAEAV012@XZ @@ -1633,12 +1794,15 @@ ??E?$__wrap_iter@PEBUConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@QEAAAEAV012@XZ ??E?$move_iterator@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@QEAAAEAV012@XZ ??E?$move_iterator@PEAPEAUCordRep@cord_internal@absl@@@Cr@std@@QEAAAEAV012@XZ + ??E?$move_iterator@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QEAAAEAV012@XZ ??E?$move_iterator@PEAPEAVLogSink@absl@@@Cr@std@@QEAAAEAV012@XZ ??E?$move_iterator@PEAUPayload@status_internal@absl@@@Cr@std@@QEAAAEAV012@XZ ??E?$move_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@QEAAAEAV012@XZ ??E?$move_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@QEAAAEAV012@XZ ??EChunkIterator@Cord@absl@@QEAAAEAV012@XZ + ??E__deque_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAU0123@XZ ??Euint128@absl@@QEAAAEAV01@XZ + ??GCr@std@@YA_JAEBV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@01@0@Z ??Gabsl@@YA?AVDuration@0@V10@0@Z ??Gabsl@@YA?AVDuration@0@V10@@Z ??Gabsl@@YA?AVDuration@0@VTime@0@0@Z @@ -1650,6 +1814,8 @@ ??Gdetail@cctz@time_internal@absl@@YA?AV?$civil_time@Usecond_tag@detail@cctz@time_internal@absl@@@0123@V40123@_J@Z ??Gdetail@cctz@time_internal@absl@@YA_JV?$civil_time@Uday_tag@detail@cctz@time_internal@absl@@@0123@0@Z ??Gdetail@cctz@time_internal@absl@@YA_JV?$civil_time@Usecond_tag@detail@cctz@time_internal@absl@@@0123@0@Z + ??H?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@Cr@std@@QEBA?AV012@_J@Z + ??H?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@Cr@std@@QEBA?AV012@_J@Z ??Habsl@@YA?AVDuration@0@V10@0@Z ??Habsl@@YA?AVTime@0@V10@VDuration@0@@Z ??Habsl@@YA?AVint128@0@V10@0@Z @@ -1730,6 +1896,7 @@ ??R?$RandenPool@I@random_internal@absl@@QEAAIXZ ??R?$RandenPool@_K@random_internal@absl@@QEAA_KXZ ??R?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z + ??R?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ??R?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@QEAAXPEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@12@@Z ??R?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@QEAAXPEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@12@@Z ??R?$__less@VDuration@absl@@V12@@Cr@std@@QEBA_NAEBVDuration@absl@@0@Z @@ -1739,6 +1906,7 @@ ??R?$default_delete@$$CBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@QEBAXPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ??R?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@QEBAXPEAULogMessageData@LogMessage@log_internal@absl@@@Z ??R?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@QEBAXPEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Z + ??R?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@QEBAXPEAVFallbackCrcMemcpyEngine@crc_internal@absl@@@Z ??R?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@QEBAXPEAVTimeZoneIf@cctz@time_internal@absl@@@Z ??R?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@Cr@std@@QEBAXPEAVTimeZoneInfo@cctz@time_internal@absl@@@Z ??R?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@QEBAXPEAVZoneInfoSource@cctz@time_internal@absl@@@Z @@ -1761,6 +1929,8 @@ ??XDuration@absl@@QEAAAEAV01@_J@Z ??Xint128@absl@@QEAAAEAV01@V01@@Z ??Xuint128@absl@@QEAAAEAV01@V01@@Z + ??Y?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@Cr@std@@QEAAAEAV012@_J@Z + ??Y?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@Cr@std@@QEAAAEAV012@_J@Z ??YDuration@absl@@QEAAAEAV01@V01@@Z ??YTime@absl@@QEAAAEAV01@VDuration@1@@Z ??Yint128@absl@@QEAAAEAV01@V01@@Z @@ -1914,13 +2084,14 @@ ?CheckstrcasecmptrueImpl@log_internal@absl@@YAPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBD00@Z ?CheckstrcmpfalseImpl@log_internal@absl@@YAPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBD00@Z ?CheckstrcmptrueImpl@log_internal@absl@@YAPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBD00@Z + ?Checksum@CrcCordState@crc_internal@absl@@QEBA?AVcrc32c_t@3@XZ ?Chunks@Cord@absl@@QEBA?AVChunkRange@12@XZ ?CityHash32@hash_internal@absl@@YAIPEBD_K@Z ?CityHash64@hash_internal@absl@@YA_KPEBD_K@Z ?CityHash64WithSeed@hash_internal@absl@@YA_KPEBD_K1@Z ?CityHash64WithSeeds@hash_internal@absl@@YA_KPEBD_K11@Z ?Clear@Cord@absl@@QEAAXXZ - ?ClearBackingArray@container_internal@absl@@YAXAEAVCommonFields@12@AEA_KAEBUPolicyFunctions@12@_N@Z + ?ClearBackingArray@container_internal@absl@@YAXAEAVCommonFields@12@AEBUPolicyFunctions@12@_N@Z ?ClearCurrentThreadIdentity@base_internal@absl@@YAXXZ ?ClearTimeZoneMapTestOnly@Impl@time_zone@cctz@time_internal@absl@@SAXXZ ?CodeToInlinedRep@Status@absl@@CA_KW4StatusCode@2@@Z @@ -1933,7 +2104,13 @@ ?CompareImpl@Cord@absl@@AEBAHAEBV12@@Z ?CompareSlowPath@Cord@absl@@AEBAHAEBV12@_K1@Z ?CompareSlowPath@Cord@absl@@AEBAHVstring_view@2@_K1@Z + ?Compute@CrcNonTemporalMemcpyAVXEngine@crc_internal@absl@@UEBA?AVcrc32c_t@3@PEIAXPEIBX_KV43@@Z + ?Compute@CrcNonTemporalMemcpyEngine@crc_internal@absl@@UEBA?AVcrc32c_t@3@PEIAXPEIBX_KV43@@Z + ?Compute@FallbackCrcMemcpyEngine@crc_internal@absl@@UEBA?AVcrc32c_t@3@PEIAXPEIBX_KV43@@Z ?ComputeCapacity@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@SA_K_K0@Z + ?ComputeCrc32c@absl@@YA?AVcrc32c_t@1@Vstring_view@1@@Z + ?Concat@CRC@crc_internal@absl@@UEAAXPEAII_K@Z + ?ConcatCrc32c@absl@@YA?AVcrc32c_t@1@V21@0_K@Z ?ConstructNext@?$IteratorValueAdapter@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@V?$move_iterator@PEAPEAUCordRep@cord_internal@absl@@@23@@inlined_vector_internal@absl@@QEAAXAEAV?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@PEAPEAUCordRep@cord_internal@3@@Z ?ConstructNext@?$IteratorValueAdapter@V?$allocator@PEAVLogSink@absl@@@Cr@std@@V?$move_iterator@PEAPEAVLogSink@absl@@@23@@inlined_vector_internal@absl@@QEAAXAEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@PEAPEAVLogSink@3@@Z ?ConstructNext@?$IteratorValueAdapter@V?$allocator@UPayload@status_internal@absl@@@Cr@std@@PEBUPayload@status_internal@absl@@@inlined_vector_internal@absl@@QEAAXAEAV?$allocator@UPayload@status_internal@absl@@@Cr@std@@PEAUPayload@status_internal@3@@Z @@ -1959,7 +2136,7 @@ ?CopyBeginTo@CordRepBtree@cord_internal@absl@@AEBAPEAV123@_K0@Z ?CopyCordToString@absl@@YAXAEBVCord@1@PEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ?CopyPrefix@CordRepBtree@cord_internal@absl@@AEAA?AUCopyResult@123@_K_N@Z - ?CopyRaw@CordRepBtree@cord_internal@absl@@AEBAPEAV123@XZ + ?CopyRaw@CordRepBtree@cord_internal@absl@@AEBAPEAV123@_K@Z ?CopySuffix@CordRepBtree@cord_internal@absl@@AEAA?AUCopyResult@123@_K@Z ?CopyTo@InlineRep@Cord@absl@@QEBAXPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ?CopyToArraySlowPath@Cord@absl@@AEBAXPEAD@Z @@ -1967,6 +2144,9 @@ ?CopyToEncodedBuffer@LogMessage@log_internal@absl@@AEAAXVstring_view@3@W4StringType@123@@Z ?CopyToEndFrom@CordRepBtree@cord_internal@absl@@AEBAPEAV123@_K0@Z ?Crash@Helper@internal_statusor@absl@@SAXAEBVStatus@3@@Z + ?Crc32CAndCopy@crc_internal@absl@@YA?AVcrc32c_t@2@PEIAXPEIBX_KV32@_N@Z + ?Crc32c@CRC@crc_internal@absl@@SAPEAV123@XZ + ?CrcAndCopy@CrcMemcpy@crc_internal@absl@@SA?AVcrc32c_t@3@PEIAXPEIBX_KV43@_N@Z ?Create@CordRepBtree@cord_internal@absl@@SAPEAV123@PEAUCordRep@23@@Z ?Create@CordRepFlat@cord_internal@absl@@SAPEAU123@Vstring_view@3@_K@Z ?Create@CordRepRing@cord_internal@absl@@SAPEAV123@PEAUCordRep@23@_K@Z @@ -2052,7 +2232,7 @@ ?DoStore@?$AtomicHook@P6AX_J@Z@base_internal@absl@@AEAA_NP6AX_J@Z@Z ?DoStore@?$AtomicHook@P6A_NPEBXPEADH@Z@base_internal@absl@@AEAA_NP6A_NPEBXPEADH@Z@Z ?DoStore@?$AtomicHook@P6A_NW4LogSeverity@absl@@PEBDHPEAPEADPEAH@Z@base_internal@absl@@AEAA_NP6A_NW4LogSeverity@3@PEBDHPEAPEADPEAH@Z@Z - ?DropDeletesWithoutResize@container_internal@absl@@YAXAEAVCommonFields@12@AEA_KAEBUPolicyFunctions@12@PEAX@Z + ?DropDeletesWithoutResize@container_internal@absl@@YAXAEAVCommonFields@12@AEBUPolicyFunctions@12@PEAX@Z ?DummyFunction@?$AtomicHook@P6A?AV?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@absl@@Vstring_view@2@AEBVCord@2@@Z@base_internal@absl@@CA?AV?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@3@Vstring_view@3@AEBVCord@3@@Z ?DummyFunction@?$AtomicHook@P6AXPEBDH000@Z@base_internal@absl@@CAXPEBDH000@Z ?DummyFunction@?$AtomicHook@P6AXPEBDPEBX@Z@base_internal@absl@@CAXPEBDPEBX@Z @@ -2074,6 +2254,7 @@ ?Edges@CordRepBtree@cord_internal@absl@@QEBA?AV?$Span@QEAUCordRep@cord_internal@absl@@@3@_K0@Z ?EmplaceTree@InlineRep@Cord@absl@@QEAAXPEAUCordRep@cord_internal@3@AEBVInlineData@53@W4MethodIdentifier@CordzUpdateTracker@53@@Z ?EmplaceTree@InlineRep@Cord@absl@@QEAAXPEAUCordRep@cord_internal@3@W4MethodIdentifier@CordzUpdateTracker@53@@Z + ?Empty@CRCImpl@crc_internal@absl@@UEBAXPEAI@Z ?EmptyGroup@container_internal@absl@@YAPEAW4ctrl_t@12@XZ ?EmptyString@Status@absl@@CAPEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@XZ ?EnableDebugLog@CondVar@absl@@QEAAXPEBD@Z @@ -2102,7 +2283,7 @@ ?EqualsSlow@Status@absl@@CA_NAEBV12@0@Z ?EquivTransitions@TimeZoneInfo@cctz@time_internal@absl@@AEBA_NEE@Z ?Erase@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QEAAPEAUPayload@status_internal@3@PEBU453@0@Z - ?EraseMetaOnly@container_internal@absl@@YAXAEAVCommonFields@12@AEA_KPEAW4ctrl_t@12@_K@Z + ?EraseMetaOnly@container_internal@absl@@YAXAEAVCommonFields@12@PEAW4ctrl_t@12@_K@Z ?ErasePayload@Status@absl@@QEAA_NVstring_view@2@@Z ?ErrnoToStatus@absl@@YA?AVStatus@1@HVstring_view@1@@Z ?ErrnoToStatusCode@absl@@YA?AW4StatusCode@1@H@Z @@ -2110,6 +2291,13 @@ ?Excess@str_format_internal@absl@@YA_K_K0@Z ?ExitOnDFatal@log_internal@absl@@YA_NXZ ?ExpectedChecksum@Cord@absl@@QEBA?AV?$optional@I@2@XZ + ?Extend@CRC32@crc_internal@absl@@UEBAXPEAIPEBX_K@Z + ?ExtendByZeroes@CRC32@crc_internal@absl@@UEBAXPEAI_K@Z + ?ExtendByZeroesImpl@CRC32@crc_internal@absl@@AEBAXPEAI_KQEBI2@Z + ?ExtendCrc32c@absl@@YA?AVcrc32c_t@1@V21@Vstring_view@1@@Z + ?ExtendCrc32cByZeroes@absl@@YA?AVcrc32c_t@1@V21@_K@Z + ?ExtendCrc32cInline@crc_internal@absl@@YA_NPEAIPEBD_K@Z + ?ExtendCrc32cInternal@crc_internal@absl@@YA?AVcrc32c_t@2@V32@Vstring_view@2@@Z ?ExtendTransitions@TimeZoneInfo@cctz@time_internal@absl@@AEAA_NXZ ?ExtractAppendBuffer@CordRepBtree@cord_internal@absl@@SA?AUExtractResult@CordRep@23@PEAV123@_K@Z ?ExtractFront@CordRepBtree@cord_internal@absl@@CAPEAUCordRep@23@PEAV123@@Z @@ -2129,6 +2317,8 @@ ?Fill@?$RandenPool@I@random_internal@absl@@SAXV?$Span@I@3@@Z ?Fill@?$RandenPool@_K@random_internal@absl@@SAXV?$Span@_K@3@@Z ?FillParentStack@CordzInfo@cord_internal@absl@@CA_KPEBV123@PEAPEAX@Z + ?FillWordTable@CRCImpl@crc_internal@absl@@SAXIIHPEAY0BAA@I@Z + ?FillZeroesTable@CRCImpl@crc_internal@absl@@SAHIPEAY0BAA@I@Z ?FinalizeEncodingAndFormat@LogMessageData@LogMessage@log_internal@absl@@QEAAXXZ ?Find@ByAnyChar@absl@@QEBA?AVstring_view@2@V32@_K@Z ?Find@ByChar@absl@@QEBA?AVstring_view@2@V32@_K@Z @@ -2249,6 +2439,7 @@ ?GetAppendBuffer@CordRepRing@cord_internal@absl@@QEAA?AV?$Span@D@3@_K@Z ?GetAppendBufferSlow@CordRepBtree@cord_internal@absl@@AEAA?AV?$Span@D@3@_K@Z ?GetAppendBufferSlowPath@Cord@absl@@AEAA?AVCordBuffer@2@_K00@Z + ?GetArchSpecificEngines@CrcMemcpy@crc_internal@absl@@CA?AUArchSpecificEngines@123@XZ ?GetCachedTID@base_internal@absl@@YAIXZ ?GetCapacity@?$AllocationTransaction@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QEAAAEA_KXZ ?GetCapacity@?$AllocationTransaction@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@inlined_vector_internal@absl@@QEAAAEA_KXZ @@ -2257,6 +2448,7 @@ ?GetCharacter@CordRepRing@cord_internal@absl@@QEBAD_K@Z ?GetCond@WinHelper@Waiter@synchronization_internal@absl@@SAPEAU_RTL_CONDITION_VARIABLE@@PEAV234@@Z ?GetCordzStatistics@CordzInfo@cord_internal@absl@@QEBA?AUCordzStatistics@23@XZ + ?GetCpuType@crc_internal@absl@@YA?AW4CpuType@12@XZ ?GetCurrentTimeNanos@absl@@YA_JXZ ?GetData@?$AllocationTransaction@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QEAAAEAPEAPEAUCordRep@cord_internal@3@XZ ?GetData@?$AllocationTransaction@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@inlined_vector_internal@absl@@QEAAAEAPEAPEAVLogSink@3@XZ @@ -2327,6 +2519,7 @@ ?GetStride@ExponentialBiased@profiling_internal@absl@@QEAA_J_J@Z ?GetTID@base_internal@absl@@YAIXZ ?GetTagForChar@str_format_internal@absl@@YA?AVConvTag@12@D@Z + ?GetTestEngine@CrcMemcpy@crc_internal@absl@@SA?AV?$unique_ptr@VCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@HH@Z ?GetThreadBlockedCounter@PerThreadSem@synchronization_internal@absl@@SAPEAU?$atomic@H@Cr@std@@XZ ?GetTransitionType@TimeZoneInfo@cctz@time_internal@absl@@AEAA_NH_NAEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEAE@Z ?GetWaiter@Waiter@synchronization_internal@absl@@SAPEAV123@PEAUThreadIdentity@base_internal@3@@Z @@ -2387,6 +2580,7 @@ ?InitFirst@CordRepBtreeNavigator@cord_internal@absl@@QEAAPEAUCordRep@23@PEAVCordRepBtree@23@@Z ?InitFrom@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QEAAXAEBV123@@Z ?InitInstance@CordRepBtree@cord_internal@absl@@AEAAXH_K0@Z + ?InitTables@CRC32@crc_internal@absl@@UEAAXXZ ?InitTree@ChunkIterator@Cord@absl@@AEAAXPEAUCordRep@cord_internal@3@@Z ?InitWhat@BadStatusOrAccess@absl@@AEBAXXZ ?Initialize@ExponentialBiased@profiling_internal@absl@@AEAAXXZ @@ -2432,6 +2626,7 @@ ?IsInternal@absl@@YA_NAEBVStatus@1@@Z ?IsInvalidArgument@absl@@YA_NAEBVStatus@1@@Z ?IsMovedFrom@Status@absl@@CA_N_K@Z + ?IsNormalized@CrcCordState@crc_internal@absl@@QEBA_NXZ ?IsNotFound@absl@@YA_NAEBVStatus@1@@Z ?IsOne@RefcountAndFlags@cord_internal@absl@@QEAA_NXZ ?IsOutOfRange@absl@@YA_NAEBVStatus@1@@Z @@ -2456,6 +2651,7 @@ ?LengthToTag@CordTestAccess@strings_internal@absl@@SAE_K@Z ?Load16@big_endian@absl@@YAGPEBX@Z ?Load32@big_endian@absl@@YAIPEBX@Z + ?Load32@little_endian@absl@@YAIPEBX@Z ?Load@?$AtomicHook@P6A?AV?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@absl@@Vstring_view@2@AEBVCord@2@@Z@base_internal@absl@@QEBAP6A?AV?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@3@Vstring_view@3@AEBVCord@3@@ZXZ ?Load@?$AtomicHook@P6AXXZ@base_internal@absl@@QEBAP6AXXZXZ ?Load@TimeZoneIf@cctz@time_internal@absl@@SA?AV?$unique_ptr@VTimeZoneIf@cctz@time_internal@absl@@U?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@67@@Z @@ -2512,8 +2708,10 @@ ?MaxFlatLength@CordTestAccess@strings_internal@absl@@SA_KXZ ?MaxFramesInLogStackTrace@log_internal@absl@@YAHXZ ?MaxVarintSize@log_internal@absl@@YA_KXZ + ?MaybeGetCrcCordState@Cord@absl@@AEBAPEBVCrcCordState@crc_internal@2@XZ ?MaybeRemoveEmptyCrcNode@InlineRep@Cord@absl@@AEAAXXZ ?MaybeTrackCordImpl@CordzInfo@cord_internal@absl@@CAXAEAVInlineData@23@AEBV423@W4MethodIdentifier@CordzUpdateTracker@23@@Z + ?MemcpyCrc32c@absl@@YA?AVcrc32c_t@1@PEAXPEBX_KV21@@Z ?MergeTrees@CordRepBtree@cord_internal@absl@@CAPEAV123@PEAV123@0@Z ?Min@string_view@absl@@CA_K_K0@Z ?MinLogLevel@absl@@YA?AW4LogSeverityAtLeast@1@XZ @@ -2540,11 +2738,13 @@ ?New@CordRepBtree@cord_internal@absl@@SAPEAV123@H@Z ?New@CordRepBtree@cord_internal@absl@@SAPEAV123@PEAUCordRep@23@@Z ?New@CordRepBtree@cord_internal@absl@@SAPEAV123@PEAV123@0@Z - ?New@CordRepCrc@cord_internal@absl@@SAPEAU123@PEAUCordRep@23@I@Z + ?New@CordRepCrc@cord_internal@absl@@SAPEAU123@PEAUCordRep@23@VCrcCordState@crc_internal@3@@Z ?New@CordRepFlat@cord_internal@absl@@SAPEAU123@ULarge@123@_K@Z ?New@CordRepFlat@cord_internal@absl@@SAPEAU123@_K@Z ?New@CordRepRing@cord_internal@absl@@CAPEAV123@_K0@Z ?NewArena@LowLevelAlloc@base_internal@absl@@SAPEAUArena@123@I@Z + ?NewCRC32AcceleratedX86ARMCombinedAll@crc_internal@absl@@YA?AV?$vector@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@V?$allocator@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@@23@@Cr@std@@XZ + ?NewInternal@CRCImpl@crc_internal@absl@@SAPEAV123@XZ ?NewString@CheckOpMessageBuilder@log_internal@absl@@QEAAPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@XZ ?Next@CordRepBtreeNavigator@cord_internal@absl@@QEAAPEAUCordRep@23@XZ ?Next@CordRepBtreeReader@cord_internal@absl@@QEAA?AVstring_view@3@XZ @@ -2560,7 +2760,9 @@ ?NextUp@CordRepBtreeNavigator@cord_internal@absl@@AEAAPEAUCordRep@23@XZ ?NoPrefix@LogMessage@log_internal@absl@@QEAAAEAV123@XZ ?NominalCPUFrequency@base_internal@absl@@YANXZ + ?Normalize@CrcCordState@crc_internal@absl@@QEAAXXZ ?NormalizeLogSeverity@absl@@YA?AW4LogSeverity@1@W421@@Z + ?NormalizedPrefixCrcAtNthChunk@CrcCordState@crc_internal@absl@@QEBA?AUPrefixCrc@123@_K@Z ?NotFoundError@absl@@YA?AVStatus@1@Vstring_view@1@@Z ?Notify@Notification@absl@@QEAAXXZ ?Now@CycleClock@base_internal@absl@@SA_JXZ @@ -2569,6 +2771,7 @@ ?Now@absl@@YA?AVTime@1@XZ ?NullSafeStringView@absl@@YA?AVstring_view@1@PEBD@Z ?NumCPUs@base_internal@absl@@YAHXZ + ?NumChunks@CrcCordState@crc_internal@absl@@QEBA_KXZ ?NumClonedBytes@container_internal@absl@@YA_KXZ ?ODRCheck@CordzHandle@cord_internal@absl@@AEBAXXZ ?ODRCheck@CordzInfo@cord_internal@absl@@AEBAXXZ @@ -2600,9 +2803,11 @@ ?Piece@AlphaNum@absl@@QEBA?AVstring_view@2@XZ ?PiecewiseChunkSize@hash_internal@absl@@YA_KXZ ?PointerToRep@Status@absl@@CA_KPEAUStatusRep@status_internal@2@@Z + ?Poison@CrcCordState@crc_internal@absl@@QEAAXXZ ?Poke@Waiter@synchronization_internal@absl@@QEAAXXZ ?Post@PerThreadSem@synchronization_internal@absl@@CAXPEAUThreadIdentity@base_internal@3@@Z ?Post@Waiter@synchronization_internal@absl@@QEAAXXZ + ?PrefetchNta@base_internal@absl@@YAXPEBX@Z ?PrepareForSampling@HashtablezInfo@container_internal@absl@@QEAAX_J_K@Z ?PrepareToDie@LogMessage@log_internal@absl@@AEAAXXZ ?PrepareToModify@Status@absl@@AEAAXXZ @@ -2665,8 +2870,10 @@ ?RecordStorageChanged@HashtablezInfoHandle@container_internal@absl@@QEAAX_K0@Z ?RecordStorageChangedSlow@container_internal@absl@@YAXPEAUHashtablezInfo@12@_K1@Z ?Ref@CordRep@cord_internal@absl@@SAPEAU123@PEAU123@@Z + ?Ref@CrcCordState@crc_internal@absl@@CAXPEAURefcountedRep@123@@Z ?Ref@Status@absl@@CAX_K@Z ?RefCordRep@CordzInfo@cord_internal@absl@@QEBAPEAUCordRep@23@XZ + ?RefSharedEmptyRep@CrcCordState@crc_internal@absl@@CAPEAURefcountedRep@123@XZ ?Register@CycleClockSource@base_internal@absl@@CAXP6A_JXZ@Z ?RegisterAbortHook@raw_log_internal@absl@@YAXP6AXPEBDH000@Z@Z ?RegisterCondVarTracer@absl@@YAXP6AXPEBDPEBX@Z@Z @@ -2683,6 +2890,8 @@ ?Release@ReleasableMutexLock@absl@@QEAAXXZ ?Remove@CondVar@absl@@AEAAXPEAUPerThreadSynch@base_internal@2@@Z ?RemoveChunkPrefix@ChunkIterator@Cord@absl@@AEAAX_K@Z + ?RemoveCrc32cPrefix@absl@@YA?AVcrc32c_t@1@V21@0_K@Z + ?RemoveCrc32cSuffix@absl@@YA?AVcrc32c_t@1@V21@0_K@Z ?RemoveCrcNode@cord_internal@absl@@YAPEAUCordRep@12@PEAU312@@Z ?RemoveEdge@GraphCycles@synchronization_internal@absl@@QEAAXUGraphId@23@0@Z ?RemoveExtraAsciiWhitespace@absl@@YAXPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z @@ -2697,8 +2906,8 @@ ?Reset@?$AllocationTransaction@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@AEAAXXZ ?Reset@?$AllocationTransaction@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@inlined_vector_internal@absl@@AEAAXXZ ?Reset@?$AllocationTransaction@V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@AEAAXXZ - ?ResetCtrl@container_internal@absl@@YAXAEAVCommonFields@12@AEA_K_K@Z - ?ResetGrowthLeft@container_internal@absl@@YAXAEAVCommonFields@12@AEA_K@Z + ?ResetCtrl@container_internal@absl@@YAXAEAVCommonFields@12@_K@Z + ?ResetGrowthLeft@container_internal@absl@@YAXAEAVCommonFields@12@@Z ?ResetToBuiltinUTC@TimeZoneInfo@cctz@time_internal@absl@@AEAA_NAEBV?$duration@_JV?$ratio@$00$00@Cr@std@@@chrono@Cr@std@@@Z ?ResetToEmpty@InlineRep@Cord@absl@@AEAAXXZ ?Resize@?$ResizeUninitializedTraits@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@X@strings_internal@absl@@SAXPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@_K@Z @@ -2711,6 +2920,7 @@ ?SampleSlow@container_internal@absl@@YAPEAUHashtablezInfo@12@AEAUSamplingState@12@_K@Z ?SanitizerPoisonMemoryRegion@container_internal@absl@@YAXPEBX_K@Z ?SanitizerUnpoisonMemoryRegion@container_internal@absl@@YAXPEBX_K@Z + ?Scramble@CRC32@crc_internal@absl@@UEBAXPEAI@Z ?Seek@CordRepBtreeNavigator@cord_internal@absl@@QEAA?AUPosition@123@_K@Z ?Seek@CordRepBtreeReader@cord_internal@absl@@QEAA?AVstring_view@3@_K@Z ?SendToLog@LogMessage@log_internal@absl@@AEAAXXZ @@ -2721,6 +2931,7 @@ ?SetConversionChar@FormatConversionSpecImplFriend@str_format_internal@absl@@SAXW4FormatConversionChar@3@PEAVFormatConversionSpecImpl@23@@Z ?SetCordRep@CordzInfo@cord_internal@absl@@QEAAXPEAUCordRep@23@@Z ?SetCordRep@CordzUpdateScope@cord_internal@absl@@QEBAXPEAUCordRep@23@@Z + ?SetCrcCordState@Cord@absl@@AEAAXVCrcCordState@crc_internal@2@@Z ?SetCtrl@container_internal@absl@@YAXAEBVCommonFields@12@_KE1@Z ?SetCtrl@container_internal@absl@@YAXAEBVCommonFields@12@_KW4ctrl_t@12@1@Z ?SetCurrentThreadIdentity@base_internal@absl@@YAXPEAUThreadIdentity@12@P6AXPEAX@Z@Z @@ -2840,6 +3051,7 @@ ?SubtractSize@?$Storage@PEAUCordRep@cord_internal@absl@@$0CP@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QEAAX_K@Z ?SubtractSize@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QEAAX_K@Z ?Summarize@str_format_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@VUntypedFormatSpecImpl@12@V?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@2@@Z + ?SupportsArmCRC32PMULL@crc_internal@absl@@YA_NXZ ?SuppressSigabortTrace@log_internal@absl@@YA_NXZ ?Symbolize@absl@@YA_NPEBXPEADH@Z ?TagToAllocatedSize@cord_internal@absl@@YA_KE@Z @@ -2891,6 +3103,7 @@ ?ToDoubleSeconds@absl@@YANVDuration@1@@Z ?ToHost16@big_endian@absl@@YAGG@Z ?ToHost32@big_endian@absl@@YAII@Z + ?ToHost32@little_endian@absl@@YAII@Z ?ToHost64@little_endian@absl@@YA_K_K@Z ?ToInt64@time_internal@absl@@YA_JVDuration@2@V?$ratio@$00$00@Cr@std@@@Z ?ToInt64@time_internal@absl@@YA_JVDuration@2@V?$ratio@$00$0DLJKMKAA@@Cr@std@@@Z @@ -2934,6 +3147,7 @@ ?TryLock@Mutex@absl@@QEAA_NXZ ?TryLockImpl@SpinLock@base_internal@absl@@AEAA_NXZ ?TryLockInternal@SpinLock@base_internal@absl@@AEAAIII@Z + ?TryNewCRC32AcceleratedX86ARMCombined@crc_internal@absl@@YAPEAVCRCImpl@12@XZ ?TryRemove@Mutex@absl@@AEAAXPEAUPerThreadSynch@base_internal@2@@Z ?UTC@Impl@time_zone@cctz@time_internal@absl@@SA?AV2345@XZ ?UTCImpl@Impl@time_zone@cctz@time_internal@absl@@CAPEBV12345@XZ @@ -2946,6 +3160,8 @@ ?UnalignedLoad64@base_internal@absl@@YA_KPEBX@Z ?UnauthenticatedError@absl@@YA?AVStatus@1@Vstring_view@1@@Z ?UnavailableError@absl@@YA?AVStatus@1@Vstring_view@1@@Z + ?UnextendByZeroes@CRC32@crc_internal@absl@@UEBAXPEAI_K@Z + ?UnextendCrc32cByZeroes@crc_internal@absl@@YA?AVcrc32c_t@2@V32@_K@Z ?UnimplementedError@absl@@YA?AVStatus@1@Vstring_view@1@@Z ?UniversalEpoch@absl@@YA?AVTime@1@XZ ?UnknownError@absl@@YA?AVStatus@1@Vstring_view@1@@Z @@ -2957,12 +3173,14 @@ ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@VTime@1@@Z ?Unref@CordRep@cord_internal@absl@@SAXPEAU123@@Z ?Unref@CordRepBtree@cord_internal@absl@@SAXV?$Span@QEAUCordRep@cord_internal@absl@@@3@@Z + ?Unref@CrcCordState@crc_internal@absl@@CAXPEAURefcountedRep@123@@Z ?Unref@Status@absl@@CAX_K@Z ?UnrefNonInlined@Status@absl@@CAX_K@Z ?UnrefTree@InlineRep@Cord@absl@@AEAAXXZ ?Unregister@?$SampleRecorder@UHashtablezInfo@container_internal@absl@@@profiling_internal@absl@@QEAAXPEAUHashtablezInfo@container_internal@3@@Z ?UnsafeSetCordRep@CordzInfo@cord_internal@absl@@AEAAXPEAUCordRep@23@@Z ?UnsampleSlow@container_internal@absl@@YAXPEAUHashtablezInfo@12@@Z + ?Unscramble@CRC32@crc_internal@absl@@UEBAXPEAI@Z ?Untrack@CordzInfo@cord_internal@absl@@QEAAXXZ ?UpdateStackTrace@GraphCycles@synchronization_internal@absl@@QEAAXUGraphId@23@HP6AHPEAPEAXH@Z@Z ?Utf8SafeCEscape@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@Vstring_view@1@@Z @@ -3023,11 +3241,15 @@ ?WriterUnlock@Mutex@absl@@QEAAXXZ ?ZeroDuration@absl@@YA?AVDuration@1@XZ ?__add_back_capacity@?$deque@PEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAXXZ + ?__add_back_capacity@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AEAAXXZ + ?__add_back_capacity@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AEAAX_K@Z ?__addr@?$__temp_value@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAPEAUTransition@cctz@time_internal@absl@@XZ ?__addr@?$__temp_value@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAPEAUTransitionType@cctz@time_internal@absl@@XZ ?__alloc@?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@XZ ?__alloc@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@23@XZ ?__alloc@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@23@XZ + ?__alloc@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@23@XZ + ?__alloc@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@23@XZ ?__alloc@?$__split_buffer@PEAVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@23@XZ ?__alloc@?$__split_buffer@PEAVLogSink@absl@@AEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEAVLogSink@absl@@@23@XZ ?__alloc@?$__split_buffer@PEBVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@23@XZ @@ -3036,6 +3258,7 @@ ?__alloc@?$__split_buffer@UTransitionType@cctz@time_internal@absl@@AEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@23@XZ ?__alloc@?$__split_buffer@UViableSubstitution@strings_internal@absl@@AEAV?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@UViableSubstitution@strings_internal@absl@@@23@XZ ?__alloc@?$deque@PEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@XZ + ?__alloc@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@23@XZ ?__alloc@?$vector@PEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@AEAAAEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@23@XZ ?__alloc@?$vector@PEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@AEBAAEBV?$allocator@PEAVCordzHandle@cord_internal@absl@@@23@XZ ?__alloc@?$vector@PEAVLogSink@absl@@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@AEAAAEAV?$allocator@PEAVLogSink@absl@@@23@XZ @@ -3084,7 +3307,10 @@ ?__append@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAX_K@Z ?__append@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAX_K@Z ?__back_spare@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ + ?__back_spare@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ ?__back_spare@?$deque@PEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ + ?__back_spare@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ + ?__back_spare_blocks@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ ?__base_destruct_at_end@?$vector@PEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@AEAAXPEAPEAVCordzHandle@cord_internal@absl@@@Z ?__base_destruct_at_end@?$vector@PEAVLogSink@absl@@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@AEAAXPEAPEAVLogSink@absl@@@Z ?__base_destruct_at_end@?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@AEAAXPEAPEBVCordzHandle@cord_internal@absl@@@Z @@ -3094,6 +3320,7 @@ ?__base_destruct_at_end@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@AEAAXPEAVFormatArgImpl@str_format_internal@absl@@@Z ?__call_empty@?$__policy_invoker@$$A6A?AV?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@23@@Z@__function@Cr@std@@CA?AV?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@34@PEBT__policy_storage@234@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@34@@Z ?__capacity@?$deque@PEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ + ?__capacity@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ ?__clear@?$vector@PEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@AEAAXXZ ?__clear@?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@AEAAXXZ ?__clear@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAXXZ @@ -3104,11 +3331,19 @@ ?__construct_at_end@?$__split_buffer@UTransitionType@cctz@time_internal@absl@@AEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAX_K@Z ?__construct_at_end@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAX_K@Z ?__construct_at_end@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAX_K@Z + ?__copy_assign_alloc@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AEAAXAEBV123@@Z + ?__copy_assign_alloc@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AEAAXAEBV123@U?$integral_constant@_N$0A@@23@@Z ?__deallocate_node@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@AEAAXPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@@Z ?__destruct_at_begin@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ?__destruct_at_begin@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@U?$integral_constant@_N$00@23@@Z + ?__destruct_at_begin@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?__destruct_at_begin@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@U?$integral_constant@_N$00@23@@Z ?__destruct_at_end@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ?__destruct_at_end@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@U?$integral_constant@_N$0A@@23@@Z + ?__destruct_at_end@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?__destruct_at_end@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@U?$integral_constant@_N$0A@@23@@Z + ?__destruct_at_end@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?__destruct_at_end@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@U?$integral_constant@_N$0A@@23@@Z ?__destruct_at_end@?$__split_buffer@PEAVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAPEAVCordzHandle@cord_internal@absl@@@Z ?__destruct_at_end@?$__split_buffer@PEAVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAPEAVCordzHandle@cord_internal@absl@@U?$integral_constant@_N$0A@@23@@Z ?__destruct_at_end@?$__split_buffer@PEAVLogSink@absl@@AEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@QEAAXPEAPEAVLogSink@absl@@@Z @@ -3132,6 +3367,10 @@ ?__end_cap@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@XZ ?__end_cap@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@XZ ?__end_cap@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@XZ + ?__end_cap@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?__end_cap@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?__end_cap@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?__end_cap@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?__end_cap@?$__split_buffer@PEAVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAPEAVCordzHandle@cord_internal@absl@@XZ ?__end_cap@?$__split_buffer@PEAVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAPEAVCordzHandle@cord_internal@absl@@XZ ?__end_cap@?$__split_buffer@PEAVLogSink@absl@@AEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAPEAVLogSink@absl@@XZ @@ -3162,8 +3401,11 @@ ?__end_cap@?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@AEBAAEBQEAUViableSubstitution@strings_internal@absl@@XZ ?__end_cap@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@AEAAAEAPEAVFormatArgImpl@str_format_internal@absl@@XZ ?__end_cap@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@AEBAAEBQEAVFormatArgImpl@str_format_internal@absl@@XZ + ?__erase_to_end@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AEAAXV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@23@@Z ?__front_spare@?$deque@PEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ + ?__front_spare@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ ?__get@?$__compressed_pair_elem@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@$00$0A@@Cr@std@@QEAAAEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@23@XZ + ?__get@?$__compressed_pair_elem@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@$00$0A@@Cr@std@@QEAAAEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@$00$0A@@Cr@std@@QEAAAEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@AEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@$00$0A@@Cr@std@@QEAAAEAV?$allocator@PEAVLogSink@absl@@@23@XZ ?__get@?$__compressed_pair_elem@AEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@$00$0A@@Cr@std@@QEAAAEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@23@XZ @@ -3175,6 +3417,8 @@ ?__get@?$__compressed_pair_elem@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@$0A@$0A@@Cr@std@@QEBAAEBQEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@$0A@$0A@@Cr@std@@QEAAAEAPEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@XZ ?__get@?$__compressed_pair_elem@PEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@$0A@$0A@@Cr@std@@QEBAAEBQEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@XZ + ?__get@?$__compressed_pair_elem@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@$0A@$0A@@Cr@std@@QEAAAEAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?__get@?$__compressed_pair_elem@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@$0A@$0A@@Cr@std@@QEBAAEBQEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PEAPEAVCordzHandle@cord_internal@absl@@$0A@$0A@@Cr@std@@QEAAAEAPEAPEAVCordzHandle@cord_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PEAPEAVCordzHandle@cord_internal@absl@@$0A@$0A@@Cr@std@@QEBAAEBQEAPEAVCordzHandle@cord_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PEAPEAVLogSink@absl@@$0A@$0A@@Cr@std@@QEAAAEAPEAPEAVLogSink@absl@@XZ @@ -3189,6 +3433,8 @@ ?__get@?$__compressed_pair_elem@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@$0A@$0A@@Cr@std@@QEBAAEBQEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PEAULogMessageData@LogMessage@log_internal@absl@@$0A@$0A@@Cr@std@@QEAAAEAPEAULogMessageData@LogMessage@log_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PEAULogMessageData@LogMessage@log_internal@absl@@$0A@$0A@@Cr@std@@QEBAAEBQEAULogMessageData@LogMessage@log_internal@absl@@XZ + ?__get@?$__compressed_pair_elem@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@$0A@$0A@@Cr@std@@QEAAAEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?__get@?$__compressed_pair_elem@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@$0A@$0A@@Cr@std@@QEBAAEBQEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PEAUThreadIdentity@base_internal@absl@@$0A@$0A@@Cr@std@@QEAAAEAPEAUThreadIdentity@base_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PEAUTransition@cctz@time_internal@absl@@$0A@$0A@@Cr@std@@QEAAAEAPEAUTransition@cctz@time_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PEAUTransition@cctz@time_internal@absl@@$0A@$0A@@Cr@std@@QEBAAEBQEAUTransition@cctz@time_internal@absl@@XZ @@ -3198,6 +3444,7 @@ ?__get@?$__compressed_pair_elem@PEAUViableSubstitution@strings_internal@absl@@$0A@$0A@@Cr@std@@QEBAAEBQEAUViableSubstitution@strings_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@$0A@$0A@@Cr@std@@QEAAAEAPEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@XZ ?__get@?$__compressed_pair_elem@PEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@$0A@$0A@@Cr@std@@QEBAAEBQEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@XZ + ?__get@?$__compressed_pair_elem@PEAVFallbackCrcMemcpyEngine@crc_internal@absl@@$0A@$0A@@Cr@std@@QEAAAEAPEAVFallbackCrcMemcpyEngine@crc_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PEAVFormatArgImpl@str_format_internal@absl@@$0A@$0A@@Cr@std@@QEAAAEAPEAVFormatArgImpl@str_format_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PEAVFormatArgImpl@str_format_internal@absl@@$0A@$0A@@Cr@std@@QEBAAEBQEAVFormatArgImpl@str_format_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PEAVTimeZoneIf@cctz@time_internal@absl@@$0A@$0A@@Cr@std@@QEAAAEAPEAVTimeZoneIf@cctz@time_internal@absl@@XZ @@ -3212,10 +3459,12 @@ ?__get@?$__compressed_pair_elem@U?$default_delete@$$CBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAU?$default_delete@$$CBVImpl@time_zone@cctz@time_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAU?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAU?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@23@XZ + ?__get@?$__compressed_pair_elem@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAU?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@U?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAU?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAU?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAU?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@V?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@$00$0A@@Cr@std@@QEAAAEAV?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@XZ + ?__get@?$__compressed_pair_elem@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@$00$0A@@Cr@std@@QEAAAEAV?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@23@XZ ?__get@?$__compressed_pair_elem@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@$00$0A@@Cr@std@@QEAAAEAV?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@23@XZ ?__get@?$__compressed_pair_elem@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@$00$0A@@Cr@std@@QEBAAEBV?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@23@XZ ?__get@?$__compressed_pair_elem@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@$00$0A@@Cr@std@@QEAAAEAV?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@XZ @@ -3223,6 +3472,7 @@ ?__get@?$__compressed_pair_elem@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@Cr@std@@$00$00@Cr@std@@QEAAAEAV?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@$00$00@Cr@std@@QEAAAEAV?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@XZ + ?__get@?$__compressed_pair_elem@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEBAAEBV?$allocator@PEAVCordzHandle@cord_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@PEAVLogSink@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAV?$allocator@PEAVLogSink@absl@@@23@XZ @@ -3233,6 +3483,7 @@ ?__get@?$__compressed_pair_elem@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@$00$00@Cr@std@@QEAAAEAV?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAV?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEBAAEBV?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@23@XZ + ?__get@?$__compressed_pair_elem@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAV?$allocator@UTransition@cctz@time_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEBAAEBV?$allocator@UTransition@cctz@time_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QEAAAEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@23@XZ @@ -3256,6 +3507,7 @@ ?__make_iter@?$vector@UConversionItem@ParsedFormatBase@str_format_internal@absl@@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@AEBA?AV?$__wrap_iter@PEBUConversionItem@ParsedFormatBase@str_format_internal@absl@@@23@PEBUConversionItem@ParsedFormatBase@str_format_internal@absl@@@Z ?__make_iter@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAA?AV?$__wrap_iter@PEAUTransition@cctz@time_internal@absl@@@23@PEAUTransition@cctz@time_internal@absl@@@Z ?__make_iter@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAA?AV?$__wrap_iter@PEAUTransitionType@cctz@time_internal@absl@@@23@PEAUTransitionType@cctz@time_internal@absl@@@Z + ?__maybe_remove_back_spare@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AEAA_N_N@Z ?__move_range@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAXPEAUTransition@cctz@time_internal@absl@@00@Z ?__move_range@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAXPEAUTransitionType@cctz@time_internal@absl@@00@Z ?__node_alloc@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@QEAAAEAV?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@XZ @@ -3268,16 +3520,20 @@ ?__recommend@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEBA_K_K@Z ?__recommend@?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@AEBA_K_K@Z ?__recommend@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@AEBA_K_K@Z + ?__recommend_blocks@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SA_K_K@Z ?__rehash_unique@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@QEAAX_K@Z ?__rewrap@?$__unwrap_iter_impl@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@$00@Cr@std@@SAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV45678@0@Z + ?__rewrap@?$__unwrap_iter_impl@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@SAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU4567@0@Z ?__rewrap@?$__unwrap_iter_impl@PEAPEAVCordzHandle@cord_internal@absl@@$00@Cr@std@@SAPEAPEAVCordzHandle@cord_internal@absl@@PEAPEAV456@0@Z ?__rewrap@?$__unwrap_iter_impl@PEAPEAVLogSink@absl@@$00@Cr@std@@SAPEAPEAVLogSink@absl@@PEAPEAV45@0@Z ?__rewrap@?$__unwrap_iter_impl@PEAPEBVCordzHandle@cord_internal@absl@@$00@Cr@std@@SAPEAPEBVCordzHandle@cord_internal@absl@@PEAPEBV456@0@Z ?__rewrap@?$__unwrap_iter_impl@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@$00@Cr@std@@SAPEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PEAU4567@0@Z + ?__rewrap@?$__unwrap_iter_impl@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@SAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU4567@0@Z ?__rewrap@?$__unwrap_iter_impl@PEAUTransition@cctz@time_internal@absl@@$00@Cr@std@@SAPEAUTransition@cctz@time_internal@absl@@PEAU4567@0@Z ?__rewrap@?$__unwrap_iter_impl@PEAUTransitionType@cctz@time_internal@absl@@$00@Cr@std@@SAPEAUTransitionType@cctz@time_internal@absl@@PEAU4567@0@Z ?__rewrap@?$__unwrap_iter_impl@PEAUViableSubstitution@strings_internal@absl@@$00@Cr@std@@SAPEAUViableSubstitution@strings_internal@absl@@PEAU456@0@Z ?__rewrap@?$__unwrap_iter_impl@PEAVFormatArgImpl@str_format_internal@absl@@$00@Cr@std@@SAPEAVFormatArgImpl@str_format_internal@absl@@PEAV456@0@Z + ?__rewrap@?$__unwrap_iter_impl@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@SAPEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU4567@0@Z ?__rewrap@?$__unwrap_iter_impl@PEBVFormatArgImpl@str_format_internal@absl@@$00@Cr@std@@SAPEBVFormatArgImpl@str_format_internal@absl@@PEBV456@0@Z ?__rewrap@?$__unwrap_iter_impl@V?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@23@V423@0@Z ?__rewrap@?$__unwrap_iter_impl@V?$reverse_iterator@PEAPEAVLogSink@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PEAPEAVLogSink@absl@@@23@V423@0@Z @@ -3286,9 +3542,12 @@ ?__rewrap@?$__unwrap_iter_impl@V?$reverse_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PEAUTransition@cctz@time_internal@absl@@@23@V423@0@Z ?__rewrap@?$__unwrap_iter_impl@V?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@23@V423@0@Z ?__rewrap@?$__unwrap_iter_impl@V?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@23@V423@0@Z + ?__rewrap@?$__unwrap_range_impl@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@@Cr@std@@SA?A?<auto>@@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@0@Z ?__rewrap@?$__unwrap_range_impl@PEBVFormatArgImpl@str_format_internal@absl@@PEBV123@@Cr@std@@SA?A?<auto>@@PEBVFormatArgImpl@str_format_internal@absl@@0@Z ?__size@?$deque@PEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEA_KXZ ?__size@?$deque@PEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEB_KXZ + ?__size@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEA_KXZ + ?__size@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEB_KXZ ?__swap_out_circular_buffer@?$vector@PEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@AEAAXAEAU?$__split_buffer@PEAVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@23@@Z ?__swap_out_circular_buffer@?$vector@PEAVLogSink@absl@@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@AEAAXAEAU?$__split_buffer@PEAVLogSink@absl@@AEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@@23@@Z ?__swap_out_circular_buffer@?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@AEAAXAEAU?$__split_buffer@PEBVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@23@@Z @@ -3307,14 +3566,17 @@ ?__throw_length_error@?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@AEBAXXZ ?__throw_length_error@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@AEBAXXZ ?__unwrap@?$__unwrap_iter_impl@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@$00@Cr@std@@SAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEAPEBV45678@@Z + ?__unwrap@?$__unwrap_iter_impl@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@SAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAPEAU4567@@Z ?__unwrap@?$__unwrap_iter_impl@PEAPEAVCordzHandle@cord_internal@absl@@$00@Cr@std@@SAPEAPEAVCordzHandle@cord_internal@absl@@PEAPEAV456@@Z ?__unwrap@?$__unwrap_iter_impl@PEAPEAVLogSink@absl@@$00@Cr@std@@SAPEAPEAVLogSink@absl@@PEAPEAV45@@Z ?__unwrap@?$__unwrap_iter_impl@PEAPEBVCordzHandle@cord_internal@absl@@$00@Cr@std@@SAPEAPEBVCordzHandle@cord_internal@absl@@PEAPEBV456@@Z ?__unwrap@?$__unwrap_iter_impl@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@$00@Cr@std@@SAPEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PEAU4567@@Z + ?__unwrap@?$__unwrap_iter_impl@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@SAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@PEAU4567@@Z ?__unwrap@?$__unwrap_iter_impl@PEAUTransition@cctz@time_internal@absl@@$00@Cr@std@@SAPEAUTransition@cctz@time_internal@absl@@PEAU4567@@Z ?__unwrap@?$__unwrap_iter_impl@PEAUTransitionType@cctz@time_internal@absl@@$00@Cr@std@@SAPEAUTransitionType@cctz@time_internal@absl@@PEAU4567@@Z ?__unwrap@?$__unwrap_iter_impl@PEAUViableSubstitution@strings_internal@absl@@$00@Cr@std@@SAPEAUViableSubstitution@strings_internal@absl@@PEAU456@@Z ?__unwrap@?$__unwrap_iter_impl@PEAVFormatArgImpl@str_format_internal@absl@@$00@Cr@std@@SAPEAVFormatArgImpl@str_format_internal@absl@@PEAV456@@Z + ?__unwrap@?$__unwrap_iter_impl@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@SAPEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU4567@@Z ?__unwrap@?$__unwrap_iter_impl@PEBVFormatArgImpl@str_format_internal@absl@@$00@Cr@std@@SAPEBVFormatArgImpl@str_format_internal@absl@@PEBV456@@Z ?__unwrap@?$__unwrap_iter_impl@V?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@23@V423@@Z ?__unwrap@?$__unwrap_iter_impl@V?$reverse_iterator@PEAPEAVLogSink@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PEAPEAVLogSink@absl@@@23@V423@@Z @@ -3323,6 +3585,7 @@ ?__unwrap@?$__unwrap_iter_impl@V?$reverse_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PEAUTransition@cctz@time_internal@absl@@@23@V423@@Z ?__unwrap@?$__unwrap_iter_impl@V?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PEAUTransitionType@cctz@time_internal@absl@@@23@V423@@Z ?__unwrap@?$__unwrap_iter_impl@V?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PEAUViableSubstitution@strings_internal@absl@@@23@V423@@Z + ?__unwrap@?$__unwrap_range_impl@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@@Cr@std@@SA?A?<auto>@@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@0@Z ?__unwrap@?$__unwrap_range_impl@PEBVFormatArgImpl@str_format_internal@absl@@PEBV123@@Cr@std@@SA?A?<auto>@@PEBVFormatArgImpl@str_format_internal@absl@@0@Z ?__upcast@?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@QEAAPEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@23@XZ ?__vallocate@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@AEAAX_K@Z @@ -3339,6 +3602,7 @@ ?allocate@?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@QEAAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@_K@Z ?allocate@?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@QEAAPEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@_K@Z ?allocate@?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@QEAAPEAPEAUCordRep@cord_internal@absl@@_K@Z + ?allocate@?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QEAAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@_K@Z ?allocate@?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@QEAAPEAPEAVCordzHandle@cord_internal@absl@@_K@Z ?allocate@?$allocator@PEAVLogSink@absl@@@Cr@std@@QEAAPEAPEAVLogSink@absl@@_K@Z ?allocate@?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@QEAAPEAPEBVCordzHandle@cord_internal@absl@@_K@Z @@ -3346,6 +3610,7 @@ ?allocate@?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@QEAAPEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@23@_K@Z ?allocate@?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@QEAAPEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@_K@Z ?allocate@?$allocator@UPayload@status_internal@absl@@@Cr@std@@QEAAPEAUPayload@status_internal@absl@@_K@Z + ?allocate@?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QEAAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@_K@Z ?allocate@?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@QEAAPEAUTransition@cctz@time_internal@absl@@_K@Z ?allocate@?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@QEAAPEAUTransitionType@cctz@time_internal@absl@@_K@Z ?allocate@?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@QEAAPEAUViableSubstitution@strings_internal@absl@@_K@Z @@ -3356,6 +3621,7 @@ ?allocate@?$allocator_traits@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@_K@Z ?allocate@?$allocator_traits@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@SAPEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@23@AEAV?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@_K@Z ?allocate@?$allocator_traits@V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@Cr@std@@SAPEAUPayload@status_internal@absl@@AEAV?$allocator@UPayload@status_internal@absl@@@23@_K@Z + ?allocate@?$allocator_traits@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@23@_K@Z ?arg@BoundConversion@str_format_internal@absl@@QEBAPEBVFormatArgImpl@23@XZ ?as_chars@InlineData@cord_internal@absl@@QEAAPEADXZ ?as_chars@InlineData@cord_internal@absl@@QEBAPEBDXZ @@ -3373,6 +3639,8 @@ ?back@?$InlinedVector@H$0CP@V?$allocator@H@Cr@std@@@absl@@QEAAAEAHXZ ?back@?$InlinedVector@PEAUCordRep@cord_internal@absl@@$01V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@absl@@QEAAAEAPEAUCordRep@cord_internal@2@XZ ?back@?$InlinedVector@PEAUCordRep@cord_internal@absl@@$0CP@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@absl@@QEAAAEAPEAUCordRep@cord_internal@2@XZ + ?back@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?back@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?back@?$vector@UConversionItem@ParsedFormatBase@str_format_internal@absl@@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@XZ ?back@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAUTransition@cctz@time_internal@absl@@XZ ?back@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAUTransitionType@cctz@time_internal@absl@@XZ @@ -3387,6 +3655,7 @@ ?base@?$__wrap_iter@PEBUTransition@cctz@time_internal@absl@@@Cr@std@@QEBAPEBUTransition@cctz@time_internal@absl@@XZ ?base@?$__wrap_iter@PEBUTransitionType@cctz@time_internal@absl@@@Cr@std@@QEBAPEBUTransitionType@cctz@time_internal@absl@@XZ ?base@?$move_iterator@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@QEGBAAEBQEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@XZ + ?base@?$move_iterator@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QEGBAAEBQEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?base@?$move_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@QEGBAAEBQEAUTransition@cctz@time_internal@absl@@XZ ?base@?$move_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@QEGBAAEBQEAUTransitionType@cctz@time_internal@absl@@XZ ?base@?$reverse_iterator@PEAPEAVCordzHandle@cord_internal@absl@@@Cr@std@@QEBAPEAPEAVCordzHandle@cord_internal@absl@@XZ @@ -3405,6 +3674,10 @@ ?begin@?$Span@QEAUCordRep@cord_internal@absl@@@absl@@QEBAPEBQEAUCordRep@cord_internal@2@XZ ?begin@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@QEAA?AV?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@XZ ?begin@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@XZ + ?begin@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?begin@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBAPEBQEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?begin@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA?AV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@23@XZ + ?begin@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA?AV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@23@XZ ?begin@?$initializer_list@U?$pair@Vstring_view@absl@@V12@@Cr@std@@@std@@QEBAPEBU?$pair@Vstring_view@absl@@V12@@Cr@2@XZ ?begin@?$initializer_list@VFormatArgImpl@str_format_internal@absl@@@std@@QEBAPEBVFormatArgImpl@str_format_internal@absl@@XZ ?begin@?$initializer_list@Vstring_view@absl@@@std@@QEBAPEBVstring_view@absl@@XZ @@ -3418,6 +3691,7 @@ ?begin@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA?AV?$__wrap_iter@PEAUTransitionType@cctz@time_internal@absl@@@23@XZ ?begin@ChunkRange@Cord@absl@@QEBA?AVChunkIterator@23@XZ ?begin@CordRepBtree@cord_internal@absl@@QEBA_KXZ + ?begin@__deque_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA?AU1234@XZ ?begin@string_view@absl@@QEBAPEBDXZ ?btree@CordRep@cord_internal@absl@@QEAAPEAVCordRepBtree@23@XZ ?btree@CordRep@cord_internal@absl@@QEBAPEBVCordRepBtree@23@XZ @@ -3427,6 +3701,8 @@ ?bytes_value@ProtoField@log_internal@absl@@QEBA?AV?$Span@$$CBD@3@XZ ?capacity@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ ?capacity@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ + ?capacity@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ + ?capacity@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ ?capacity@?$__split_buffer@PEAVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ ?capacity@?$__split_buffer@PEAVLogSink@absl@@AEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ ?capacity@?$__split_buffer@PEBVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ @@ -3451,6 +3727,8 @@ ?clear@?$InlinedVector@PEAVLogSink@absl@@$0BA@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@absl@@QEAAXXZ ?clear@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@QEAAXXZ ?clear@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ + ?clear@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ + ?clear@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ ?clear@?$__split_buffer@PEAVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ ?clear@?$__split_buffer@PEAVLogSink@absl@@AEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@QEAAXXZ ?clear@?$__split_buffer@PEBVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ @@ -3458,6 +3736,7 @@ ?clear@?$__split_buffer@UTransition@cctz@time_internal@absl@@AEAV?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ ?clear@?$__split_buffer@UTransitionType@cctz@time_internal@absl@@AEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ ?clear@?$__split_buffer@UViableSubstitution@strings_internal@absl@@AEAV?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ + ?clear@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ ?clear@?$unordered_map@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@QEAAXXZ ?clear@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ ?clear@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ @@ -3519,6 +3798,7 @@ ?deallocate@?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@QEAAXPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@_K@Z ?deallocate@?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@QEAAXPEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@_K@Z ?deallocate@?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@QEAAXPEAPEAUCordRep@cord_internal@absl@@_K@Z + ?deallocate@?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QEAAXPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@_K@Z ?deallocate@?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@QEAAXPEAPEAVCordzHandle@cord_internal@absl@@_K@Z ?deallocate@?$allocator@PEAVLogSink@absl@@@Cr@std@@QEAAXPEAPEAVLogSink@absl@@_K@Z ?deallocate@?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@QEAAXPEAPEBVCordzHandle@cord_internal@absl@@_K@Z @@ -3526,6 +3806,7 @@ ?deallocate@?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@QEAAXPEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@23@_K@Z ?deallocate@?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@QEAAXPEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@_K@Z ?deallocate@?$allocator@UPayload@status_internal@absl@@@Cr@std@@QEAAXPEAUPayload@status_internal@absl@@_K@Z + ?deallocate@?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QEAAXPEAUPrefixCrc@CrcCordState@crc_internal@absl@@_K@Z ?deallocate@?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@QEAAXPEAUTransition@cctz@time_internal@absl@@_K@Z ?deallocate@?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@QEAAXPEAUTransitionType@cctz@time_internal@absl@@_K@Z ?deallocate@?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@QEAAXPEAUViableSubstitution@strings_internal@absl@@_K@Z @@ -3533,6 +3814,7 @@ ?deallocate@?$allocator_traits@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@23@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@_K@Z ?deallocate@?$allocator_traits@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@PEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@_K@Z ?deallocate@?$allocator_traits@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAUCordRep@cord_internal@absl@@@23@PEAPEAUCordRep@cord_internal@absl@@_K@Z + ?deallocate@?$allocator_traits@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@23@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@_K@Z ?deallocate@?$allocator_traits@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@23@PEAPEAVCordzHandle@cord_internal@absl@@_K@Z ?deallocate@?$allocator_traits@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEAVLogSink@absl@@@23@PEAPEAVLogSink@absl@@_K@Z ?deallocate@?$allocator_traits@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@PEBVCordzHandle@cord_internal@absl@@@23@PEAPEBVCordzHandle@cord_internal@absl@@_K@Z @@ -3540,6 +3822,7 @@ ?deallocate@?$allocator_traits@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@23@_K@Z ?deallocate@?$allocator_traits@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@23@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@_K@Z ?deallocate@?$allocator_traits@V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UPayload@status_internal@absl@@@23@PEAUPayload@status_internal@absl@@_K@Z + ?deallocate@?$allocator_traits@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@23@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@_K@Z ?deallocate@?$allocator_traits@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UTransition@cctz@time_internal@absl@@@23@PEAUTransition@cctz@time_internal@absl@@_K@Z ?deallocate@?$allocator_traits@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@23@PEAUTransitionType@cctz@time_internal@absl@@_K@Z ?deallocate@?$allocator_traits@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@SAXAEAV?$allocator@UViableSubstitution@strings_internal@absl@@@23@PEAUViableSubstitution@strings_internal@absl@@_K@Z @@ -3559,6 +3842,8 @@ ?empty@?$Span@D@absl@@QEBA_NXZ ?empty@?$Span@I@absl@@QEBA_NXZ ?empty@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBA_NXZ + ?empty@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA_NXZ + ?empty@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA_NXZ ?empty@?$vector@UConversionItem@ParsedFormatBase@str_format_internal@absl@@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEBA_NXZ ?empty@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBA_NXZ ?empty@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBA_NXZ @@ -3574,7 +3859,10 @@ ?end@?$Span@QEAUCordRep@cord_internal@absl@@@absl@@QEBAPEBQEAUCordRep@cord_internal@2@XZ ?end@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@QEAA?AV?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@XZ ?end@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAPEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@XZ + ?end@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?end@?$deque@PEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA?AV?$__deque_iterator@PEBVImpl@time_zone@cctz@time_internal@absl@@PEAPEBV12345@AEAPEBV12345@PEAPEAPEBV12345@_J$0A@@23@XZ + ?end@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA?AV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@23@XZ + ?end@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA?AV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@23@XZ ?end@?$initializer_list@U?$pair@Vstring_view@absl@@V12@@Cr@std@@@std@@QEBAPEBU?$pair@Vstring_view@absl@@V12@@Cr@2@XZ ?end@?$initializer_list@Vstring_view@absl@@@std@@QEBAPEBVstring_view@absl@@XZ ?end@?$unordered_map@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@QEAA?AV?$__hash_map_iterator@V?$__hash_iterator@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@XZ @@ -3585,7 +3873,9 @@ ?end@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA?AV?$__wrap_iter@PEAUTransitionType@cctz@time_internal@absl@@@23@XZ ?end@ChunkRange@Cord@absl@@QEBA?AVChunkIterator@23@XZ ?end@CordRepBtree@cord_internal@absl@@QEBA_KXZ + ?end@__deque_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA?AU1234@XZ ?end@string_view@absl@@QEBAPEBDXZ + ?engines@?1??CrcAndCopy@CrcMemcpy@crc_internal@absl@@SA?AVcrc32c_t@4@PEIAXPEIBX_KV54@_N@Z@4UArchSpecificEngines@234@B ?entries@CordRepRing@cord_internal@absl@@QEBAIII@Z ?entries@CordRepRing@cord_internal@absl@@QEBAIXZ ?entry_begin_pos@CordRepRing@cord_internal@absl@@QEBAAEB_KI@Z @@ -3624,6 +3914,10 @@ ?first@?$__compressed_pair@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@XZ ?first@?$__compressed_pair@PEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QEAAAEAPEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@XZ ?first@?$__compressed_pair@PEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QEBAAEBQEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@XZ + ?first@?$__compressed_pair@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?first@?$__compressed_pair@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?first@?$__compressed_pair@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?first@?$__compressed_pair@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?first@?$__compressed_pair@PEAPEAVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAPEAVCordzHandle@cord_internal@absl@@XZ ?first@?$__compressed_pair@PEAPEAVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAPEAVCordzHandle@cord_internal@absl@@XZ ?first@?$__compressed_pair@PEAPEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAPEAVCordzHandle@cord_internal@absl@@XZ @@ -3646,6 +3940,8 @@ ?first@?$__compressed_pair@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@XZ ?first@?$__compressed_pair@PEAULogMessageData@LogMessage@log_internal@absl@@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAULogMessageData@LogMessage@log_internal@absl@@XZ ?first@?$__compressed_pair@PEAULogMessageData@LogMessage@log_internal@absl@@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAULogMessageData@LogMessage@log_internal@absl@@XZ + ?first@?$__compressed_pair@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEAAAEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?first@?$__compressed_pair@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEBAAEBQEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?first@?$__compressed_pair@PEAUThreadIdentity@base_internal@absl@@P6AXPEAX@Z@Cr@std@@QEAAAEAPEAUThreadIdentity@base_internal@absl@@XZ ?first@?$__compressed_pair@PEAUTransition@cctz@time_internal@absl@@AEAV?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAUTransition@cctz@time_internal@absl@@XZ ?first@?$__compressed_pair@PEAUTransition@cctz@time_internal@absl@@AEAV?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAUTransition@cctz@time_internal@absl@@XZ @@ -3661,6 +3957,7 @@ ?first@?$__compressed_pair@PEAUViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAUViableSubstitution@strings_internal@absl@@XZ ?first@?$__compressed_pair@PEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@XZ ?first@?$__compressed_pair@PEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@XZ + ?first@?$__compressed_pair@PEAVFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAVFallbackCrcMemcpyEngine@crc_internal@absl@@XZ ?first@?$__compressed_pair@PEAVFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAVFormatArgImpl@str_format_internal@absl@@XZ ?first@?$__compressed_pair@PEAVFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBQEAVFormatArgImpl@str_format_internal@absl@@XZ ?first@?$__compressed_pair@PEAVTimeZoneIf@cctz@time_internal@absl@@U?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAVTimeZoneIf@cctz@time_internal@absl@@XZ @@ -3677,6 +3974,8 @@ ?first@?$__compressed_pair@_KV?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@QEBAAEB_KXZ ?first@?$__compressed_pair@_KV?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEA_KXZ ?first@?$__compressed_pair@_KV?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEB_KXZ + ?first@?$__compressed_pair@_KV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEA_KXZ + ?first@?$__compressed_pair@_KV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEB_KXZ ?fixed_time_zone@cctz@time_internal@absl@@YA?AVtime_zone@123@AEBV?$duration@_JV?$ratio@$00$00@Cr@std@@@chrono@Cr@std@@@Z ?flat@CordRep@cord_internal@absl@@QEAAPEAUCordRepFlat@23@XZ ?flat@CordRep@cord_internal@absl@@QEBAPEBUCordRepFlat@23@XZ @@ -3684,6 +3983,7 @@ ?from_chars@absl@@YA?AUfrom_chars_result@1@PEBD0AEAMW4chars_format@1@@Z ?from_chars@absl@@YA?AUfrom_chars_result@1@PEBD0AEANW4chars_format@1@@Z ?front@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@XZ + ?front@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?front@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAUTransition@cctz@time_internal@absl@@XZ ?front@string_view@absl@@QEBAAEBDXZ ?gbswap_16@absl@@YAGG@Z @@ -3703,6 +4003,7 @@ ?get@?$__temp_value@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAUTransitionType@cctz@time_internal@absl@@XZ ?get@?$__tuple_leaf@$0A@AEBVstring_view@absl@@$0A@@Cr@std@@QEBAAEBVstring_view@absl@@XZ ?get@?$unique_ptr@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEBAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@XZ + ?get@?$unique_ptr@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEBAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?get@?$unique_ptr@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@@Cr@std@@QEBAPEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@23@XZ ?get@?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEBAPEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@XZ ?get@?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBAPEAVZoneInfoSource@cctz@time_internal@absl@@XZ @@ -3711,6 +4012,7 @@ ?get_deleter@?$unique_ptr@$$BY0A@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QEBAAEBV?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@23@XZ ?get_deleter@?$unique_ptr@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@@Cr@std@@QEAAAEAV?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@XZ ?get_deleter@?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEAAAEAU?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@23@XZ + ?get_deleter@?$unique_ptr@VFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAU?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@23@XZ ?get_from_arg@InputValue@UnboundConversion@str_format_internal@absl@@QEBAHXZ ?get_weekday@detail@cctz@time_internal@absl@@YA?AW4weekday@1234@AEBV?$civil_time@Usecond_tag@detail@cctz@time_internal@absl@@@1234@@Z ?get_yearday@detail@cctz@time_internal@absl@@YAHAEBV?$civil_time@Usecond_tag@detail@cctz@time_internal@absl@@@1234@@Z @@ -3805,6 +4107,7 @@ ?month@?$civil_time@Umonth_tag@detail@cctz@time_internal@absl@@@detail@cctz@time_internal@absl@@QEBAHXZ ?month@?$civil_time@Usecond_tag@detail@cctz@time_internal@absl@@@detail@cctz@time_internal@absl@@QEBAHXZ ?month@?$civil_time@Usecond_tag@time_internal@absl@@@detail@cctz@time_internal@absl@@QEBAHXZ + ?mutable_rep@CrcCordState@crc_internal@absl@@QEAAPEAURep@123@XZ ?n_day@impl@detail@cctz@time_internal@absl@@YA?AUfields@2345@_JC00CCC@Z ?n_hour@impl@detail@cctz@time_internal@absl@@YA?AUfields@2345@_J0000CC@Z ?n_min@impl@detail@cctz@time_internal@absl@@YA?AUfields@2345@_J00000C@Z @@ -3814,6 +4117,8 @@ ?next@?$probe_seq@$0BA@@container_internal@absl@@QEAAXXZ ?next_transition@time_zone@cctz@time_internal@absl@@QEBA_NAEBV?$time_point@Vsystem_clock@chrono@Cr@std@@V?$duration@_JV?$ratio@$00$00@Cr@std@@@234@@chrono@Cr@std@@PEAUcivil_transition@1234@@Z ?next_weekday@detail@cctz@time_internal@absl@@YA?AV?$civil_time@Uday_tag@detail@cctz@time_internal@absl@@@1234@V51234@W4weekday@1234@@Z + ?non_temporal_store_memcpy@crc_internal@absl@@YAPEAXPEIAXPEIBX_K@Z + ?non_temporal_store_memcpy_avx@crc_internal@absl@@YAPEAXPEIAXPEIBX_K@Z ?offset@?$probe_seq@$0BA@@container_internal@absl@@QEBA_KXZ ?offset@?$probe_seq@$0BA@@container_internal@absl@@QEBA_K_K@Z ?ok@Status@absl@@QEBA_NXZ @@ -3827,8 +4132,10 @@ ?pop_back@?$InlinedVector@H$0CP@V?$allocator@H@Cr@std@@@absl@@QEAAXXZ ?pop_back@?$InlinedVector@PEAUCordRep@cord_internal@absl@@$01V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@absl@@QEAAXXZ ?pop_back@?$InlinedVector@PEAUCordRep@cord_internal@absl@@$0CP@V?$allocator@PEAUCordRep@cord_internal@absl@@@Cr@std@@@absl@@QEAAXXZ + ?pop_back@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ ?pop_back@?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ ?pop_front@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ + ?pop_front@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ ?pos@Filler@CordRepRing@cord_internal@absl@@QEBAIXZ ?precision@FormatConversionSpecImpl@str_format_internal@absl@@QEBAHXZ ?prefix@LogEntry@absl@@QEBA_NXZ @@ -3841,7 +4148,12 @@ ?push_back@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ?push_back@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ?push_back@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z + ?push_back@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?push_back@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?push_back@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?push_back@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ?push_back@?$deque@PEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEBVImpl@time_zone@cctz@time_internal@absl@@@Z + ?push_back@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ?push_back@?$vector@PEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAVCordzHandle@cord_internal@absl@@@Z ?push_back@?$vector@PEAVLogSink@absl@@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAVLogSink@absl@@@Z ?push_back@?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEBVCordzHandle@cord_internal@absl@@@Z @@ -3849,6 +4161,8 @@ ?push_back@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBUTransition@cctz@time_internal@absl@@@Z ?push_front@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ?push_front@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z + ?push_front@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?push_front@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ?raw_code@Status@absl@@QEBAHXZ ?rbegin@string_view@absl@@QEBA?AV?$reverse_iterator@PEBD@Cr@std@@XZ ?reduce_size@InlineRep@Cord@absl@@QEAAX_K@Z @@ -3856,8 +4170,10 @@ ?reference@?$optional@_K@absl@@AEAAAEA_KXZ ?release@?$unique_ptr@$$CBVImpl@time_zone@cctz@time_internal@absl@@U?$default_delete@$$CBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAPEBVImpl@time_zone@cctz@time_internal@absl@@XZ ?release@?$unique_ptr@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEAAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@XZ + ?release@?$unique_ptr@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEAAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?release@?$unique_ptr@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@@Cr@std@@QEAAPEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@23@XZ ?release@?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEAAPEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@XZ + ?release@?$unique_ptr@VFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAPEAVFallbackCrcMemcpyEngine@crc_internal@absl@@XZ ?release@?$unique_ptr@VTimeZoneInfo@cctz@time_internal@absl@@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAPEAVTimeZoneInfo@cctz@time_internal@absl@@XZ ?remaining_inline_capacity@InlineRep@Cord@absl@@QEBA_KXZ ?remove_prefix@?$Span@$$CBD@absl@@QEAAX_K@Z @@ -3868,16 +4184,19 @@ ?remove_suffix@?$Span@D@absl@@QEAAX_K@Z ?remove_suffix@string_view@absl@@QEAAX_K@Z ?rend@string_view@absl@@QEBA?AV?$reverse_iterator@PEBD@Cr@std@@XZ + ?rep@CrcCordState@crc_internal@absl@@QEBAAEBURep@123@XZ ?rep@Rep@CordBuffer@absl@@QEBAPEAUCordRepFlat@cord_internal@3@XZ ?reserve@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAX_K@Z ?reserve@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAX_K@Z ?reserve@?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QEAAX_K@Z ?reset@?$unique_ptr@$$CBVImpl@time_zone@cctz@time_internal@absl@@U?$default_delete@$$CBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ?reset@?$unique_ptr@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$__allocator_destructor@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEAAXPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z + ?reset@?$unique_ptr@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEAAXPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ?reset@?$unique_ptr@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@@Cr@std@@QEAAXPEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@23@@Z ?reset@?$unique_ptr@ULogMessageData@LogMessage@log_internal@absl@@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAULogMessageData@LogMessage@log_internal@absl@@@Z ?reset@?$unique_ptr@UThreadIdentity@base_internal@absl@@P6AXPEAX@Z@Cr@std@@QEAAXPEAUThreadIdentity@base_internal@absl@@@Z ?reset@?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEAAXPEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Z + ?reset@?$unique_ptr@VFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAVFallbackCrcMemcpyEngine@crc_internal@absl@@@Z ?reset@?$unique_ptr@VTimeZoneIf@cctz@time_internal@absl@@U?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAVTimeZoneIf@cctz@time_internal@absl@@@Z ?reset@?$unique_ptr@VTimeZoneInfo@cctz@time_internal@absl@@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAVTimeZoneInfo@cctz@time_internal@absl@@@Z ?reset@?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEAVZoneInfoSource@cctz@time_internal@absl@@@Z @@ -3901,6 +4220,8 @@ ?second@?$__compressed_pair@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@23@XZ ?second@?$__compressed_pair@PEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QEAAAEAV?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@23@XZ ?second@?$__compressed_pair@PEAPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QEBAAEBV?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@23@XZ + ?second@?$__compressed_pair@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@23@XZ + ?second@?$__compressed_pair@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@23@XZ ?second@?$__compressed_pair@PEAPEAVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@23@XZ ?second@?$__compressed_pair@PEAPEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@23@XZ ?second@?$__compressed_pair@PEAPEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBV?$allocator@PEAVCordzHandle@cord_internal@absl@@@23@XZ @@ -3916,6 +4237,7 @@ ?second@?$__compressed_pair@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@23@XZ ?second@?$__compressed_pair@PEAUConversionItem@ParsedFormatBase@str_format_internal@absl@@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBV?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@23@XZ ?second@?$__compressed_pair@PEAULogMessageData@LogMessage@log_internal@absl@@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAU?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@23@XZ + ?second@?$__compressed_pair@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QEAAAEAV?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@23@XZ ?second@?$__compressed_pair@PEAUThreadIdentity@base_internal@absl@@P6AXPEAX@Z@Cr@std@@QEAAAEAP6AXPEAX@ZXZ ?second@?$__compressed_pair@PEAUTransition@cctz@time_internal@absl@@AEAV?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@UTransition@cctz@time_internal@absl@@@23@XZ ?second@?$__compressed_pair@PEAUTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@UTransition@cctz@time_internal@absl@@@23@XZ @@ -3927,6 +4249,7 @@ ?second@?$__compressed_pair@PEAUViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@UViableSubstitution@strings_internal@absl@@@23@XZ ?second@?$__compressed_pair@PEAUViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBV?$allocator@UViableSubstitution@strings_internal@absl@@@23@XZ ?second@?$__compressed_pair@PEAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QEAAAEAU?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@23@XZ + ?second@?$__compressed_pair@PEAVFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAU?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@23@XZ ?second@?$__compressed_pair@PEAVFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@VFormatArgImpl@str_format_internal@absl@@@23@XZ ?second@?$__compressed_pair@PEAVFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEBAAEBV?$allocator@VFormatArgImpl@str_format_internal@absl@@@23@XZ ?second@?$__compressed_pair@PEAVTimeZoneIf@cctz@time_internal@absl@@U?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAU?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@23@XZ @@ -3937,6 +4260,7 @@ ?second@?$__compressed_pair@_KV?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@Cr@std@@@Cr@std@@QEAAAEAV?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@XZ ?second@?$__compressed_pair@_KV?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@23@XZ ?second@?$__compressed_pair@_KV?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@XZ + ?second@?$__compressed_pair@_KV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@23@XZ ?second@?$civil_time@Usecond_tag@detail@cctz@time_internal@absl@@@detail@cctz@time_internal@absl@@QEBAHXZ ?second@?$civil_time@Usecond_tag@time_internal@absl@@@detail@cctz@time_internal@absl@@QEBAHXZ ?set_arg@BoundConversion@str_format_internal@absl@@QEAAXPEBVFormatArgImpl@23@@Z @@ -3976,7 +4300,9 @@ ?size@?$__bucket_list_deallocator@V?$allocator@PEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@QEBA_KXZ ?size@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@AEAAAEA_KXZ ?size@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ + ?size@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ ?size@?$deque@PEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ + ?size@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEBA_KXZ ?size@?$initializer_list@U?$pair@Vstring_view@absl@@V12@@Cr@std@@@std@@QEBA_KXZ ?size@?$initializer_list@VFormatArgImpl@str_format_internal@absl@@@std@@QEBA_KXZ ?size@?$initializer_list@W4FormatConversionCharSet@absl@@@std@@QEBA_KXZ
diff --git a/third_party/abseil-cpp/symbols_x64_rel.def b/third_party/abseil-cpp/symbols_x64_rel.def index 3ecf1683..f20f5e6 100644 --- a/third_party/abseil-cpp/symbols_x64_rel.def +++ b/third_party/abseil-cpp/symbols_x64_rel.def
@@ -1,4 +1,5 @@ EXPORTS + ?$TSS0@?1??CrcAndCopy@CrcMemcpy@crc_internal@absl@@SA?AVcrc32c_t@3@PEIAXPEIBX_KV43@_N@Z@4HA ??$?0AEBVCord@absl@@@?$optional_data_dtor_base@VCord@absl@@$0A@@optional_internal@absl@@IEAA@Uin_place_t@2@AEBVCord@2@@Z ??$?0PEAI@?$SaltedSeedSeq@Vseed_seq@Cr@std@@@random_internal@absl@@QEAA@PEAI0@Z ??$?0V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@$0A@@Cord@absl@@QEAA@$$QEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z @@ -40,6 +41,19 @@ ??$ConstructElements@V?$allocator@PEAVLogSink@absl@@@Cr@std@@V?$IteratorValueAdapter@V?$allocator@PEAVLogSink@absl@@@Cr@std@@V?$move_iterator@PEAPEAVLogSink@absl@@@23@@inlined_vector_internal@absl@@@inlined_vector_internal@absl@@YAXAEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@PEAPEAVLogSink@1@AEAV?$IteratorValueAdapter@V?$allocator@PEAVLogSink@absl@@@Cr@std@@V?$move_iterator@PEAPEAVLogSink@absl@@@23@@01@_K@Z ??$ConsumeConversion@$00@str_format_internal@absl@@YAPEBDPEBDQEBDPEAUUnboundConversion@01@PEAH@Z ??$ConsumeConversion@$0A@@str_format_internal@absl@@YAPEBDPEBDQEBDPEAUUnboundConversion@01@PEAH@Z + ??$ConvertIntArg@C@str_format_internal@absl@@YA_NCVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@D@str_format_internal@absl@@YA_NDVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@E@str_format_internal@absl@@YA_NEVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@F@str_format_internal@absl@@YA_NFVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@G@str_format_internal@absl@@YA_NGVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@H@str_format_internal@absl@@YA_NHVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@I@str_format_internal@absl@@YA_NIVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@J@str_format_internal@absl@@YA_NJVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@K@str_format_internal@absl@@YA_NKVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@Vint128@absl@@@str_format_internal@absl@@YA_NVint128@1@VFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@Vuint128@absl@@@str_format_internal@absl@@YA_NVuint128@1@VFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@_J@str_format_internal@absl@@YA_N_JVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@_K@str_format_internal@absl@@YA_N_KVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z ??$Dispatch@C@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z ??$Dispatch@D@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z ??$Dispatch@E@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z @@ -117,7 +131,9 @@ ??$StrFormat@DHHHHH_JIVstring_view@absl@@HPEBDV12@@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@AEBV?$FormatSpecTemplate@$0BPPPL@$0JPPPL@$0JPPPL@$0JPPPL@$0JPPPL@$0JPPPL@$0JPPPL@$0JPPPL@$0IAAAE@$0JPPPL@$0EAAAE@$0IAAAE@@str_format_internal@0@AEBDAEBH2222AEB_JAEBIAEBVstring_view@0@2AEBQEBD5@Z ??$StrReplaceAll@V?$initializer_list@U?$pair@Vstring_view@absl@@V12@@Cr@std@@@std@@@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@Vstring_view@0@AEBV?$initializer_list@U?$pair@Vstring_view@absl@@V12@@Cr@std@@@3@@Z ??$StrReplaceAll@V?$initializer_list@U?$pair@Vstring_view@absl@@V12@@Cr@std@@@std@@@absl@@YAHAEBV?$initializer_list@U?$pair@Vstring_view@absl@@V12@@Cr@std@@@std@@PEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@2@@Z + ??$__append@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@Cr@std@@@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AEAAXV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@12@0PEAX@Z ??$__construct_at_end@V?$move_iterator@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXV?$move_iterator@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@12@0@Z + ??$__construct_at_end@V?$move_iterator@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXV?$move_iterator@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@12@0@Z ??$__construct_at_end@V?$move_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@@?$__split_buffer@UTransition@cctz@time_internal@absl@@AEAV?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXV?$move_iterator@PEAUTransition@cctz@time_internal@absl@@@12@0@Z ??$__construct_at_end@V?$move_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@@?$__split_buffer@UTransitionType@cctz@time_internal@absl@@AEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXV?$move_iterator@PEAUTransitionType@cctz@time_internal@absl@@@12@0@Z ??$__construct_one_at_end@AEAVstring_view@absl@@AEBV12@AEA_K@?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@AEAAXAEAVstring_view@absl@@AEBV34@AEA_K@Z @@ -131,11 +147,14 @@ ??$__rehash@$00@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@AEAAX_K@Z ??$__upper_bound@U_ClassicAlgPolicy@Cr@std@@UByCivilTime@Transition@cctz@time_internal@absl@@PEBU5678@PEBU5678@U5678@U__identity@23@@Cr@std@@YAPEBUTransition@cctz@time_internal@absl@@PEBU2345@0AEBU2345@$$QEAUByCivilTime@2345@$$QEAU__identity@01@@Z ??$assign@PEBVFormatArgImpl@str_format_internal@absl@@$0A@@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEBVFormatArgImpl@str_format_internal@absl@@0@Z + ??$assign@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@Cr@std@@@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@12@0PEAX@Z ??$assign@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@?$optional_data_base@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@optional_internal@absl@@IEAAX$$QEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ??$construct_at@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@AEBUpiecewise_construct_t@23@V?$tuple@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@V?$tuple@$$V@23@PEAU123@@Cr@std@@YAPEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@01@PEAU201@AEBUpiecewise_construct_t@01@$$QEAV?$tuple@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@01@$$QEAV?$tuple@$$V@01@@Z ??$construct_at@UPayload@status_internal@absl@@AEBU123@PEAU123@@Cr@std@@YAPEAUPayload@status_internal@absl@@PEAU234@AEBU234@@Z ??$construct_at@UTransition@cctz@time_internal@absl@@$$VPEAU1234@@Cr@std@@YAPEAUTransition@cctz@time_internal@absl@@PEAU2345@@Z ??$construct_at@UTransitionType@cctz@time_internal@absl@@$$VPEAU1234@@Cr@std@@YAPEAUTransitionType@cctz@time_internal@absl@@PEAU2345@@Z + ??$copy@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@U1234@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@Cr@std@@YA?AV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@01@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@0V201@PEAX@Z + ??$copy@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@U1234@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@Cr@std@@YA?AV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@01@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@01@0V201@@Z ??$emplace@$$V@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA?AV?$__wrap_iter@PEAUTransition@cctz@time_internal@absl@@@12@V?$__wrap_iter@PEBUTransition@cctz@time_internal@absl@@@12@@Z ??$emplace@$$V@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA?AV?$__wrap_iter@PEAUTransitionType@cctz@time_internal@absl@@@12@V?$__wrap_iter@PEBUTransitionType@cctz@time_internal@absl@@@12@@Z ??$emplace_back@$$V@?$__split_buffer@UTransition@cctz@time_internal@absl@@AEAV?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ @@ -173,6 +192,7 @@ ??0ByAnyChar@absl@@QEAA@Vstring_view@1@@Z ??0ByLength@absl@@QEAA@_J@Z ??0ByString@absl@@QEAA@Vstring_view@1@@Z + ??0CRC@crc_internal@absl@@IEAA@XZ ??0CheckOpMessageBuilder@log_internal@absl@@QEAA@PEBD@Z ??0ChunkIterator@Cord@absl@@AEAA@PEBV12@@Z ??0Condition@absl@@QEAA@P6A_NPEAX@Z0@Z @@ -181,6 +201,9 @@ ??0Cord@absl@@QEAA@AEBV01@@Z ??0CordzHandle@cord_internal@absl@@IEAA@_N@Z ??0CordzInfo@cord_internal@absl@@AEAA@PEAUCordRep@12@PEBV012@W4MethodIdentifier@CordzUpdateTracker@12@@Z + ??0CrcCordState@crc_internal@absl@@QEAA@$$QEAV012@@Z + ??0CrcCordState@crc_internal@absl@@QEAA@AEBV012@@Z + ??0CrcCordState@crc_internal@absl@@QEAA@XZ ??0GraphCycles@synchronization_internal@absl@@QEAA@XZ ??0HashtablezInfo@container_internal@absl@@QEAA@XZ ??0Impl@time_zone@cctz@time_internal@absl@@AEAA@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z @@ -210,11 +233,15 @@ ??0uint128@absl@@QEAA@M@Z ??0uint128@absl@@QEAA@N@Z ??0uint128@absl@@QEAA@O@Z + ??1?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ + ??1?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1BadStatusOrAccess@absl@@UEAA@XZ + ??1CRC@crc_internal@absl@@UEAA@XZ ??1CheckOpMessageBuilder@log_internal@absl@@QEAA@XZ ??1CondVar@absl@@QEAA@XZ ??1CordzHandle@cord_internal@absl@@MEAA@XZ ??1CordzInfo@cord_internal@absl@@EEAA@XZ + ??1CrcCordState@crc_internal@absl@@QEAA@XZ ??1GraphCycles@synchronization_internal@absl@@QEAA@XZ ??1HashtablezInfo@container_internal@absl@@QEAA@XZ ??1LogMessage@log_internal@absl@@QEAA@XZ @@ -230,10 +257,13 @@ ??1ZoneInfoSource@cctz@time_internal@absl@@UEAA@XZ ??1bad_optional_access@absl@@UEAA@XZ ??1bad_variant_access@absl@@UEAA@XZ + ??4?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV012@AEBV012@@Z ??4?$optional_data@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@$0A@@optional_internal@absl@@IEAAAEAV012@$$QEAV012@@Z ??4BadStatusOrAccess@absl@@QEAAAEAV01@$$QEAV01@@Z ??4BadStatusOrAccess@absl@@QEAAAEAV01@AEBV01@@Z ??4Cord@absl@@QEAAAEAV01@Vstring_view@1@@Z + ??4CrcCordState@crc_internal@absl@@QEAAAEAV012@$$QEAV012@@Z + ??4CrcCordState@crc_internal@absl@@QEAAAEAV012@AEBV012@@Z ??6LogMessage@log_internal@absl@@QEAAAEAV012@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ??6LogMessage@log_internal@absl@@QEAAAEAV012@P6AAEAV?$basic_ostream@DU?$char_traits@D@Cr@std@@@Cr@std@@AEAV345@@Z@Z ??6LogMessage@log_internal@absl@@QEAAAEAV012@P6AAEAVios_base@Cr@std@@AEAV345@@Z@Z @@ -284,6 +314,8 @@ ??R?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@QEBAXPEAULogMessageData@LogMessage@log_internal@absl@@@Z ??XDuration@absl@@QEAAAEAV01@N@Z ??XDuration@absl@@QEAAAEAV01@_J@Z + ??Y?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@Cr@std@@QEAAAEAV012@_J@Z + ??Y?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@Cr@std@@QEAAAEAV012@_J@Z ??YDuration@absl@@QEAAAEAV01@V01@@Z ??ZDuration@absl@@QEAAAEAV01@V01@@Z ??_0Duration@absl@@QEAAAEAV01@N@Z @@ -383,12 +415,13 @@ ?CheckstrcasecmptrueImpl@log_internal@absl@@YAPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBD00@Z ?CheckstrcmpfalseImpl@log_internal@absl@@YAPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBD00@Z ?CheckstrcmptrueImpl@log_internal@absl@@YAPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBD00@Z + ?Checksum@CrcCordState@crc_internal@absl@@QEBA?AVcrc32c_t@3@XZ ?CityHash32@hash_internal@absl@@YAIPEBD_K@Z ?CityHash64@hash_internal@absl@@YA_KPEBD_K@Z ?CityHash64WithSeed@hash_internal@absl@@YA_KPEBD_K1@Z ?CityHash64WithSeeds@hash_internal@absl@@YA_KPEBD_K11@Z ?Clear@Cord@absl@@QEAAXXZ - ?ClearBackingArray@container_internal@absl@@YAXAEAVCommonFields@12@AEA_KAEBUPolicyFunctions@12@_N@Z + ?ClearBackingArray@container_internal@absl@@YAXAEAVCommonFields@12@AEBUPolicyFunctions@12@_N@Z ?ClearCurrentThreadIdentity@base_internal@absl@@YAXXZ ?ClearTimeZoneMapTestOnly@Impl@time_zone@cctz@time_internal@absl@@SAXXZ ?CombineContiguousImpl@MixingHashState@hash_internal@absl@@CA_K_KPEBE0U?$integral_constant@H$03@Cr@std@@@Z @@ -398,6 +431,12 @@ ?Compare@Cord@absl@@QEBAHVstring_view@2@@Z ?CompareImpl@Cord@absl@@AEBAHAEBV12@@Z ?CompareSlowPath@Cord@absl@@AEBAHAEBV12@_K1@Z + ?Compute@CrcNonTemporalMemcpyAVXEngine@crc_internal@absl@@UEBA?AVcrc32c_t@3@PEIAXPEIBX_KV43@@Z + ?Compute@CrcNonTemporalMemcpyEngine@crc_internal@absl@@UEBA?AVcrc32c_t@3@PEIAXPEIBX_KV43@@Z + ?Compute@FallbackCrcMemcpyEngine@crc_internal@absl@@UEBA?AVcrc32c_t@3@PEIAXPEIBX_KV43@@Z + ?ComputeCrc32c@absl@@YA?AVcrc32c_t@1@Vstring_view@1@@Z + ?Concat@CRC@crc_internal@absl@@UEAAXPEAII_K@Z + ?ConcatCrc32c@absl@@YA?AVcrc32c_t@1@V21@0_K@Z ?Consume@cord_internal@absl@@YAXPEAUCordRep@12@V?$FunctionRef@$$A6AXPEAUCordRep@cord_internal@absl@@_K1@Z@2@@Z ?ConsumeBeginTo@CordRepBtree@cord_internal@absl@@CAPEAV123@PEAV123@_K1@Z ?ConsumeUnboundConversion@str_format_internal@absl@@YAPEBDPEBD0PEAUUnboundConversion@12@PEAH@Z @@ -418,6 +457,8 @@ ?CopyToEncodedBuffer@LogMessage@log_internal@absl@@AEAAXD_KW4StringType@123@@Z ?CopyToEncodedBuffer@LogMessage@log_internal@absl@@AEAAXVstring_view@3@W4StringType@123@@Z ?Crash@Helper@internal_statusor@absl@@SAXAEBVStatus@3@@Z + ?Crc32c@CRC@crc_internal@absl@@SAPEAV123@XZ + ?CrcAndCopy@CrcMemcpy@crc_internal@absl@@SA?AVcrc32c_t@3@PEIAXPEIBX_KV43@_N@Z ?Create@CordRepRing@cord_internal@absl@@SAPEAV123@PEAUCordRep@23@_K@Z ?CreateFromLeaf@CordRepRing@cord_internal@absl@@CAPEAV123@PEAUCordRep@23@_K11@Z ?CreateSlow@CordRepBtree@cord_internal@absl@@CAPEAV123@PEAUCordRep@23@@Z @@ -452,7 +493,7 @@ ?DieBecauseNull@log_internal@absl@@YAXPEBDH0@Z ?Digits10@?$BigUnsigned@$03@strings_internal@absl@@SAHXZ ?Digits10@?$BigUnsigned@$0FE@@strings_internal@absl@@SAHXZ - ?DropDeletesWithoutResize@container_internal@absl@@YAXAEAVCommonFields@12@AEA_KAEBUPolicyFunctions@12@PEAX@Z + ?DropDeletesWithoutResize@container_internal@absl@@YAXAEAVCommonFields@12@AEBUPolicyFunctions@12@PEAX@Z ?DummyFunction@?$AtomicHook@P6A?AV?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@absl@@Vstring_view@2@AEBVCord@2@@Z@base_internal@absl@@CA?AV?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@3@Vstring_view@3@AEBVCord@3@@Z ?DummyFunction@?$AtomicHook@P6AXPEBDH000@Z@base_internal@absl@@CAXPEBDH000@Z ?DummyFunction@?$AtomicHook@P6AXPEBDPEBX@Z@base_internal@absl@@CAXPEBDPEBX@Z @@ -467,6 +508,7 @@ ?DumpStackTrace@debugging_internal@absl@@YAXHH_NP6AXPEBDPEAX@Z2@Z ?DurationFromTimespec@absl@@YA?AVDuration@1@Utimespec@@@Z ?DurationFromTimeval@absl@@YA?AVDuration@1@Utimeval@@@Z + ?Empty@CRCImpl@crc_internal@absl@@UEBAXPEAI@Z ?EmptyString@Status@absl@@CAPEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@XZ ?EnableDebugLog@CondVar@absl@@QEAAXPEBD@Z ?EnableDebugLog@Mutex@absl@@QEAAXPEBD@Z @@ -492,13 +534,18 @@ ?EqualsSlow@Status@absl@@CA_NAEBV12@0@Z ?EquivTransitions@TimeZoneInfo@cctz@time_internal@absl@@AEBA_NEE@Z ?Erase@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QEAAPEAUPayload@status_internal@3@PEBU453@0@Z - ?EraseMetaOnly@container_internal@absl@@YAXAEAVCommonFields@12@AEA_KPEAW4ctrl_t@12@_K@Z + ?EraseMetaOnly@container_internal@absl@@YAXAEAVCommonFields@12@PEAW4ctrl_t@12@_K@Z ?ErasePayload@Status@absl@@QEAA_NVstring_view@2@@Z ?ErrnoToStatus@absl@@YA?AVStatus@1@HVstring_view@1@@Z ?ErrnoToStatusCode@absl@@YA?AW4StatusCode@1@H@Z ?Eval@Condition@absl@@QEBA_NXZ ?ExitOnDFatal@log_internal@absl@@YA_NXZ ?ExpectedChecksum@Cord@absl@@QEBA?AV?$optional@I@2@XZ + ?Extend@CRC32@crc_internal@absl@@UEBAXPEAIPEBX_K@Z + ?ExtendByZeroes@CRC32@crc_internal@absl@@UEBAXPEAI_K@Z + ?ExtendByZeroesImpl@CRC32@crc_internal@absl@@AEBAXPEAI_KQEBI2@Z + ?ExtendCrc32cByZeroes@absl@@YA?AVcrc32c_t@1@V21@_K@Z + ?ExtendCrc32cInternal@crc_internal@absl@@YA?AVcrc32c_t@2@V32@Vstring_view@2@@Z ?ExtendTransitions@TimeZoneInfo@cctz@time_internal@absl@@AEAA_NXZ ?ExtractAppendBuffer@CordRepBtree@cord_internal@absl@@SA?AUExtractResult@CordRep@23@PEAV123@_K@Z ?ExtractFront@CordRepBtree@cord_internal@absl@@CAPEAUCordRep@23@PEAV123@@Z @@ -517,6 +564,8 @@ ?Fill@?$RandenPool@I@random_internal@absl@@SAXV?$Span@I@3@@Z ?Fill@?$RandenPool@_K@random_internal@absl@@SAXV?$Span@_K@3@@Z ?FillParentStack@CordzInfo@cord_internal@absl@@CA_KPEBV123@PEAPEAX@Z + ?FillWordTable@CRCImpl@crc_internal@absl@@SAXIIHPEAY0BAA@I@Z + ?FillZeroesTable@CRCImpl@crc_internal@absl@@SAHIPEAY0BAA@I@Z ?FinalizeEncodingAndFormat@LogMessageData@LogMessage@log_internal@absl@@QEAAXXZ ?Find@ByAnyChar@absl@@QEBA?AVstring_view@2@V32@_K@Z ?Find@ByChar@absl@@QEBA?AVstring_view@2@V32@_K@Z @@ -593,10 +642,12 @@ ?GetAppendBuffer@CordRepRing@cord_internal@absl@@QEAA?AV?$Span@D@3@_K@Z ?GetAppendBufferSlow@CordRepBtree@cord_internal@absl@@AEAA?AV?$Span@D@3@_K@Z ?GetAppendBufferSlowPath@Cord@absl@@AEAA?AVCordBuffer@2@_K00@Z + ?GetArchSpecificEngines@CrcMemcpy@crc_internal@absl@@CA?AUArchSpecificEngines@123@XZ ?GetCachedTID@base_internal@absl@@YAIXZ ?GetCharacter@CordRepBtree@cord_internal@absl@@QEBAD_K@Z ?GetCharacter@CordRepRing@cord_internal@absl@@QEBAD_K@Z ?GetCordzStatistics@CordzInfo@cord_internal@absl@@QEBA?AUCordzStatistics@23@XZ + ?GetCpuType@crc_internal@absl@@YA?AW4CpuType@12@XZ ?GetCurrentTimeNanos@absl@@YA_JXZ ?GetDebugStackTraceHook@debugging_internal@absl@@YAP6AXQEBQEAXHP6AXPEBDPEAX@Z2@ZXZ ?GetEstimatedFairShareMemoryUsage@cord_internal@absl@@YA_KPEBUCordRep@12@@Z @@ -623,6 +674,7 @@ ?GetStatusPayloadPrinter@status_internal@absl@@YAP6A?AV?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@2@Vstring_view@2@AEBVCord@2@@ZXZ ?GetStride@ExponentialBiased@profiling_internal@absl@@QEAA_J_J@Z ?GetTID@base_internal@absl@@YAIXZ + ?GetTestEngine@CrcMemcpy@crc_internal@absl@@SA?AV?$unique_ptr@VCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@HH@Z ?GetThreadBlockedCounter@PerThreadSem@synchronization_internal@absl@@SAPEAU?$atomic@H@Cr@std@@XZ ?GetTransitionType@TimeZoneInfo@cctz@time_internal@absl@@AEAA_NH_NAEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEAE@Z ?GetWord@?$BigUnsigned@$03@strings_internal@absl@@QEBAIH@Z @@ -643,6 +695,7 @@ ?Init@PerThreadSem@synchronization_internal@absl@@CAXPEAUThreadIdentity@base_internal@3@@Z ?InitDiscreteDistribution@random_internal@absl@@YA?AV?$vector@U?$pair@N_K@Cr@std@@V?$allocator@U?$pair@N_K@Cr@std@@@23@@Cr@std@@PEAV?$vector@NV?$allocator@N@Cr@std@@@45@@Z ?InitFrom@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QEAAXAEBV123@@Z + ?InitTables@CRC32@crc_internal@absl@@UEAAXXZ ?InitWhat@BadStatusOrAccess@absl@@AEBAXXZ ?Initialize@ExponentialBiased@profiling_internal@absl@@AEAAXXZ ?InitializeCordRepExternal@cord_internal@absl@@YAXVstring_view@2@PEAUCordRepExternal@12@@Z @@ -711,7 +764,9 @@ ?MatchesConversions@ParsedFormatBase@str_format_internal@absl@@AEBA_N_NV?$initializer_list@W4FormatConversionCharSet@absl@@@std@@@Z ?MaxFlatLength@CordTestAccess@strings_internal@absl@@SA_KXZ ?MaxFramesInLogStackTrace@log_internal@absl@@YAHXZ + ?MaybeGetCrcCordState@Cord@absl@@AEBAPEBVCrcCordState@crc_internal@2@XZ ?MaybeTrackCordImpl@CordzInfo@cord_internal@absl@@CAXAEAVInlineData@23@AEBV423@W4MethodIdentifier@CordzUpdateTracker@23@@Z + ?MemcpyCrc32c@absl@@YA?AVcrc32c_t@1@PEAXPEBX_KV21@@Z ?MergeTrees@CordRepBtree@cord_internal@absl@@CAPEAV123@PEAV123@0@Z ?MinLogLevel@absl@@YA?AW4LogSeverityAtLeast@1@XZ ?MixIntoSeedMaterial@random_internal@absl@@YAXV?$Span@$$CBI@2@V?$Span@I@2@@Z @@ -730,9 +785,11 @@ ?MultiplyStep@?$BigUnsigned@$0FE@@strings_internal@absl@@AEAAXHPEBIHH@Z ?Mutable@CordRepRing@cord_internal@absl@@CAPEAV123@PEAV123@_K@Z ?MutexDelay@synchronization_internal@absl@@YAHHH@Z - ?New@CordRepCrc@cord_internal@absl@@SAPEAU123@PEAUCordRep@23@I@Z + ?New@CordRepCrc@cord_internal@absl@@SAPEAU123@PEAUCordRep@23@VCrcCordState@crc_internal@3@@Z ?New@CordRepRing@cord_internal@absl@@CAPEAV123@_K0@Z ?NewArena@LowLevelAlloc@base_internal@absl@@SAPEAUArena@123@I@Z + ?NewCRC32AcceleratedX86ARMCombinedAll@crc_internal@absl@@YA?AV?$vector@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@V?$allocator@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@@23@@Cr@std@@XZ + ?NewInternal@CRCImpl@crc_internal@absl@@SAPEAV123@XZ ?NewString@CheckOpMessageBuilder@log_internal@absl@@QEAAPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@XZ ?Next@CordzInfo@cord_internal@absl@@QEBAPEAV123@AEBVCordzSnapshot@23@@Z ?NextTransition@TimeZone@absl@@QEBA_NVTime@2@PEAUCivilTransition@12@@Z @@ -740,6 +797,8 @@ ?NextTransition@TimeZoneLibC@cctz@time_internal@absl@@UEBA_NAEBV?$time_point@Vsystem_clock@chrono@Cr@std@@V?$duration@_JV?$ratio@$00$00@Cr@std@@@234@@chrono@Cr@std@@PEAUcivil_transition@time_zone@234@@Z ?NoPrefix@LogMessage@log_internal@absl@@QEAAAEAV123@XZ ?NominalCPUFrequency@base_internal@absl@@YANXZ + ?Normalize@CrcCordState@crc_internal@absl@@QEAAXXZ + ?NormalizedPrefixCrcAtNthChunk@CrcCordState@crc_internal@absl@@QEBA?AUPrefixCrc@123@_K@Z ?NotFoundError@absl@@YA?AVStatus@1@Vstring_view@1@@Z ?Notify@Notification@absl@@QEAAXXZ ?Now@CycleClock@base_internal@absl@@SA_JXZ @@ -766,6 +825,7 @@ ?ParseTime@absl@@YA_NVstring_view@1@0PEAVTime@1@PEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ?ParseTime@absl@@YA_NVstring_view@1@0VTimeZone@1@PEAVTime@1@PEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ?PermissionDeniedError@absl@@YA?AVStatus@1@Vstring_view@1@@Z + ?Poison@CrcCordState@crc_internal@absl@@QEAAXXZ ?Poke@Waiter@synchronization_internal@absl@@QEAAXXZ ?Post@Waiter@synchronization_internal@absl@@QEAAXXZ ?PrepareForSampling@HashtablezInfo@container_internal@absl@@QEAAX_J_K@Z @@ -816,6 +876,7 @@ ?RecordRehashSlow@container_internal@absl@@YAXPEAUHashtablezInfo@12@_K@Z ?RecordReservationSlow@container_internal@absl@@YAXPEAUHashtablezInfo@12@_K@Z ?RecordStorageChangedSlow@container_internal@absl@@YAXPEAUHashtablezInfo@12@_K1@Z + ?RefSharedEmptyRep@CrcCordState@crc_internal@absl@@CAPEAURefcountedRep@123@XZ ?Register@CycleClockSource@base_internal@absl@@CAXP6A_JXZ@Z ?RegisterAbortHook@raw_log_internal@absl@@YAXP6AXPEBDH000@Z@Z ?RegisterCondVarTracer@absl@@YAXP6AXPEBDPEBX@Z@Z @@ -828,6 +889,8 @@ ?RegisterSymbolizer@absl@@YAXP6A_NPEBXPEADH@Z@Z ?Release@ReleasableMutexLock@absl@@QEAAXXZ ?Remove@CondVar@absl@@AEAAXPEAUPerThreadSynch@base_internal@2@@Z + ?RemoveCrc32cPrefix@absl@@YA?AVcrc32c_t@1@V21@0_K@Z + ?RemoveCrc32cSuffix@absl@@YA?AVcrc32c_t@1@V21@0_K@Z ?RemoveEdge@GraphCycles@synchronization_internal@absl@@QEAAXUGraphId@23@0@Z ?RemoveExtraAsciiWhitespace@absl@@YAXPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ?RemoveLogSink@log_internal@absl@@YAXPEAVLogSink@2@@Z @@ -844,9 +907,11 @@ ?ReverseConsume@cord_internal@absl@@YAXPEAUCordRep@12@V?$FunctionRef@$$A6AXPEAUCordRep@cord_internal@absl@@_K1@Z@2@@Z ?SafeToDelete@CordzHandle@cord_internal@absl@@QEBA_NXZ ?SampleSlow@container_internal@absl@@YAPEAUHashtablezInfo@12@AEAUSamplingState@12@_K@Z + ?Scramble@CRC32@crc_internal@absl@@UEBAXPEAI@Z ?Seek@CordRepBtreeReader@cord_internal@absl@@QEAA?AVstring_view@3@_K@Z ?SendToLog@LogMessage@log_internal@absl@@AEAAXXZ ?SetCapacityForTesting@CordRepRing@cord_internal@absl@@QEAAX_K@Z + ?SetCrcCordState@Cord@absl@@AEAAXVCrcCordState@crc_internal@2@@Z ?SetCurrentThreadIdentity@base_internal@absl@@YAXPEAUThreadIdentity@12@P6AXPEAX@Z@Z ?SetExitOnDFatal@log_internal@absl@@YAX_N@Z ?SetExpectedChecksum@Cord@absl@@QEAAXI@Z @@ -918,6 +983,7 @@ ?Subcord@Cord@absl@@QEBA?AV12@_K0@Z ?SubstituteAndAppendArray@substitute_internal@absl@@YAXPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@Vstring_view@2@PEBV62@_K@Z ?Summarize@str_format_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@VUntypedFormatSpecImpl@12@V?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@2@@Z + ?SupportsArmCRC32PMULL@crc_internal@absl@@YA_NXZ ?SuppressSigabortTrace@log_internal@absl@@YA_NXZ ?Symbolize@absl@@YA_NPEBXPEADH@Z ?ThreadIsLoggingToLogSink@log_internal@absl@@YA_NXZ @@ -992,11 +1058,14 @@ ?Trans@Mutex@absl@@AEAAXPEBUMuHowS@2@@Z ?Trunc@absl@@YA?AVDuration@1@V21@0@Z ?TryLock@Mutex@absl@@QEAA_NXZ + ?TryNewCRC32AcceleratedX86ARMCombined@crc_internal@absl@@YAPEAVCRCImpl@12@XZ ?TryRemove@Mutex@absl@@AEAAXPEAUPerThreadSynch@base_internal@2@@Z ?UTC@Impl@time_zone@cctz@time_internal@absl@@SA?AV2345@XZ ?UTCImpl@Impl@time_zone@cctz@time_internal@absl@@CAPEBV12345@XZ ?UnauthenticatedError@absl@@YA?AVStatus@1@Vstring_view@1@@Z ?UnavailableError@absl@@YA?AVStatus@1@Vstring_view@1@@Z + ?UnextendByZeroes@CRC32@crc_internal@absl@@UEBAXPEAI_K@Z + ?UnextendCrc32cByZeroes@crc_internal@absl@@YA?AVcrc32c_t@2@V32@_K@Z ?UnimplementedError@absl@@YA?AVStatus@1@Vstring_view@1@@Z ?UnknownError@absl@@YA?AVStatus@1@Vstring_view@1@@Z ?Unlock@CordzInfo@cord_internal@absl@@QEAAXXZ @@ -1004,9 +1073,11 @@ ?UnlockSlow@Mutex@absl@@AEAAXPEAUSynchWaitParams@2@@Z ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@VDuration@1@@Z ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@VTime@1@@Z + ?Unref@CrcCordState@crc_internal@absl@@CAXPEAURefcountedRep@123@@Z ?UnrefNonInlined@Status@absl@@CAX_K@Z ?UnrefTree@InlineRep@Cord@absl@@AEAAXXZ ?UnsampleSlow@container_internal@absl@@YAXPEAUHashtablezInfo@12@@Z + ?Unscramble@CRC32@crc_internal@absl@@UEBAXPEAI@Z ?Untrack@CordzInfo@cord_internal@absl@@QEAAXXZ ?UpdateStackTrace@GraphCycles@synchronization_internal@absl@@QEAAXUGraphId@23@HP6AHPEAPEAXH@Z@Z ?Utf8SafeCEscape@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@Vstring_view@1@@Z @@ -1037,9 +1108,13 @@ ?Write@FILERawSink@str_format_internal@absl@@QEAAXVstring_view@3@@Z ?WriteToStderr@log_internal@absl@@YAXVstring_view@2@W4LogSeverity@2@@Z ?__add_back_capacity@?$deque@PEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAXXZ + ?__add_back_capacity@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AEAAXXZ + ?__add_back_capacity@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AEAAX_K@Z ?__append@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAX_K@Z ?__append@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAX_K@Z ?__deallocate_node@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@AEAAXPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@@Z + ?__erase_to_end@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AEAAXV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@23@@Z + ?__maybe_remove_back_spare@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AEAA_N_N@Z ?__move_range@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAXPEAUTransition@cctz@time_internal@absl@@00@Z ?__move_range@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAXPEAUTransitionType@cctz@time_internal@absl@@00@Z ?__vallocate@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@AEAAX_K@Z @@ -1052,6 +1127,7 @@ ?day_difference@impl@detail@cctz@time_internal@absl@@YA_J_JCC0CC@Z ?description@time_zone@cctz@time_internal@absl@@QEBA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@XZ ?effective_impl@time_zone@cctz@time_internal@absl@@AEBAAEBVImpl@1234@XZ + ?engines@?1??CrcAndCopy@CrcMemcpy@crc_internal@absl@@SA?AVcrc32c_t@4@PEIAXPEIBX_KV54@_N@Z@4UArchSpecificEngines@234@B ?erase@?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@QEAAPEAUPayload@status_internal@2@PEBU342@@Z ?find@string_view@absl@@QEBA_KD_K@Z ?find@string_view@absl@@QEBA_KV12@_K@Z @@ -1087,6 +1163,7 @@ ?min@?$RandenPool@G@random_internal@absl@@SAGXZ ?min@?$RandenPool@I@random_internal@absl@@SAIXZ ?min@?$RandenPool@_K@random_internal@absl@@SA_KXZ + ?mutable_rep@CrcCordState@crc_internal@absl@@QEAAPEAURep@123@XZ ?n_day@impl@detail@cctz@time_internal@absl@@YA?AUfields@2345@_JC00CCC@Z ?n_hour@impl@detail@cctz@time_internal@absl@@YA?AUfields@2345@_J0000CC@Z ?n_sec@impl@detail@cctz@time_internal@absl@@YA?AUfields@2345@_J00000@Z @@ -1100,12 +1177,19 @@ ?push_back@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ?push_back@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ?push_back@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z + ?push_back@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?push_back@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?push_back@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?push_back@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ?push_back@?$deque@PEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEBVImpl@time_zone@cctz@time_internal@absl@@@Z + ?push_back@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ?push_back@?$vector@PEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAVCordzHandle@cord_internal@absl@@@Z ?push_back@?$vector@PEAVLogSink@absl@@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAVLogSink@absl@@@Z ?push_back@?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEBVCordzHandle@cord_internal@absl@@@Z ?push_front@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ?push_front@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z + ?push_front@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?push_front@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ?raw_code@Status@absl@@QEBAHXZ ?reserve@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAX_K@Z ?reserve@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAX_K@Z
diff --git a/third_party/abseil-cpp/symbols_x64_rel_asan.def b/third_party/abseil-cpp/symbols_x64_rel_asan.def index 2faf8ff..e9f2327 100644 --- a/third_party/abseil-cpp/symbols_x64_rel_asan.def +++ b/third_party/abseil-cpp/symbols_x64_rel_asan.def
@@ -1,4 +1,5 @@ EXPORTS + ?$TSS0@?1??CrcAndCopy@CrcMemcpy@crc_internal@absl@@SA?AVcrc32c_t@3@PEIAXPEIBX_KV43@_N@Z@4HA ??$?0AEBVCord@absl@@@?$optional_data_dtor_base@VCord@absl@@$0A@@optional_internal@absl@@IEAA@Uin_place_t@2@AEBVCord@2@@Z ??$?0V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@$0A@@Cord@absl@@QEAA@$$QEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ??$?6C$0A@@LogMessage@log_internal@absl@@QEAAAEAV012@AEBC@Z @@ -38,6 +39,19 @@ ??$ConstructElements@V?$allocator@PEAVLogSink@absl@@@Cr@std@@V?$IteratorValueAdapter@V?$allocator@PEAVLogSink@absl@@@Cr@std@@V?$move_iterator@PEAPEAVLogSink@absl@@@23@@inlined_vector_internal@absl@@@inlined_vector_internal@absl@@YAXAEAV?$allocator@PEAVLogSink@absl@@@Cr@std@@PEAPEAVLogSink@1@AEAV?$IteratorValueAdapter@V?$allocator@PEAVLogSink@absl@@@Cr@std@@V?$move_iterator@PEAPEAVLogSink@absl@@@23@@01@_K@Z ??$ConsumeConversion@$00@str_format_internal@absl@@YAPEBDPEBDQEBDPEAUUnboundConversion@01@PEAH@Z ??$ConsumeConversion@$0A@@str_format_internal@absl@@YAPEBDPEBDQEBDPEAUUnboundConversion@01@PEAH@Z + ??$ConvertIntArg@C@str_format_internal@absl@@YA_NCVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@D@str_format_internal@absl@@YA_NDVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@E@str_format_internal@absl@@YA_NEVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@F@str_format_internal@absl@@YA_NFVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@G@str_format_internal@absl@@YA_NGVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@H@str_format_internal@absl@@YA_NHVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@I@str_format_internal@absl@@YA_NIVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@J@str_format_internal@absl@@YA_NJVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@K@str_format_internal@absl@@YA_NKVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@Vint128@absl@@@str_format_internal@absl@@YA_NVint128@1@VFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@Vuint128@absl@@@str_format_internal@absl@@YA_NVuint128@1@VFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@_J@str_format_internal@absl@@YA_N_JVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@_K@str_format_internal@absl@@YA_N_KVFormatConversionSpecImpl@01@PEAVFormatSinkImpl@01@@Z ??$Dispatch@C@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z ??$Dispatch@D@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z ??$Dispatch@E@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PEAX@Z @@ -114,8 +128,10 @@ ??$StrFormat@DHHHHH_JIVstring_view@absl@@HPEBDV12@@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@AEBV?$FormatSpecTemplate@$0BPPPL@$0JPPPL@$0JPPPL@$0JPPPL@$0JPPPL@$0JPPPL@$0JPPPL@$0JPPPL@$0IAAAE@$0JPPPL@$0EAAAE@$0IAAAE@@str_format_internal@0@AEBDAEBH2222AEB_JAEBIAEBVstring_view@0@2AEBQEBD5@Z ??$StrReplaceAll@V?$initializer_list@U?$pair@Vstring_view@absl@@V12@@Cr@std@@@std@@@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@Vstring_view@0@AEBV?$initializer_list@U?$pair@Vstring_view@absl@@V12@@Cr@std@@@3@@Z ??$StrReplaceAll@V?$initializer_list@U?$pair@Vstring_view@absl@@V12@@Cr@std@@@std@@@absl@@YAHAEBV?$initializer_list@U?$pair@Vstring_view@absl@@V12@@Cr@std@@@std@@PEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@2@@Z + ??$__append@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@Cr@std@@@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AEAAXV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@12@0PEAX@Z ??$__construct_at_end@PEBVFormatArgImpl@str_format_internal@absl@@$0A@@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@AEAAXPEBVFormatArgImpl@str_format_internal@absl@@0_K@Z ??$__construct_at_end@V?$move_iterator@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXV?$move_iterator@PEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@12@0@Z + ??$__construct_at_end@V?$move_iterator@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXV?$move_iterator@PEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@12@0@Z ??$__construct_at_end@V?$move_iterator@PEAUTransition@cctz@time_internal@absl@@@Cr@std@@@?$__split_buffer@UTransition@cctz@time_internal@absl@@AEAV?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXV?$move_iterator@PEAUTransition@cctz@time_internal@absl@@@12@0@Z ??$__construct_at_end@V?$move_iterator@PEAUTransitionType@cctz@time_internal@absl@@@Cr@std@@@?$__split_buffer@UTransitionType@cctz@time_internal@absl@@AEAV?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXV?$move_iterator@PEAUTransitionType@cctz@time_internal@absl@@@12@0@Z ??$__construct_one_at_end@AEAVstring_view@absl@@AEBV12@AEA_K@?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@AEAAXAEAVstring_view@absl@@AEBV34@AEA_K@Z @@ -137,11 +153,14 @@ ??$__rehash@$00@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@AEAAX_K@Z ??$__upper_bound@U_ClassicAlgPolicy@Cr@std@@UByCivilTime@Transition@cctz@time_internal@absl@@PEBU5678@PEBU5678@U5678@U__identity@23@@Cr@std@@YAPEBUTransition@cctz@time_internal@absl@@PEBU2345@0AEBU2345@$$QEAUByCivilTime@2345@$$QEAU__identity@01@@Z ??$assign@PEBVFormatArgImpl@str_format_internal@absl@@$0A@@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAAXPEBVFormatArgImpl@str_format_internal@absl@@0@Z + ??$assign@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@Cr@std@@@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@12@0PEAX@Z ??$assign@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@?$optional_data_base@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@optional_internal@absl@@IEAAX$$QEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ??$construct_at@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@AEBUpiecewise_construct_t@23@V?$tuple@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@V?$tuple@$$V@23@PEAU123@@Cr@std@@YAPEAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@01@PEAU201@AEBUpiecewise_construct_t@01@$$QEAV?$tuple@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@01@$$QEAV?$tuple@$$V@01@@Z ??$construct_at@UPayload@status_internal@absl@@AEBU123@PEAU123@@Cr@std@@YAPEAUPayload@status_internal@absl@@PEAU234@AEBU234@@Z ??$construct_at@UTransition@cctz@time_internal@absl@@$$VPEAU1234@@Cr@std@@YAPEAUTransition@cctz@time_internal@absl@@PEAU2345@@Z ??$construct_at@UTransitionType@cctz@time_internal@absl@@$$VPEAU1234@@Cr@std@@YAPEAUTransitionType@cctz@time_internal@absl@@PEAU2345@@Z + ??$copy@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@U1234@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@Cr@std@@YA?AV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@01@PEBUPrefixCrc@CrcCordState@crc_internal@absl@@0V201@PEAX@Z + ??$copy@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@U1234@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@Cr@std@@YA?AV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@01@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@01@0V201@@Z ??$emplace@$$V@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA?AV?$__wrap_iter@PEAUTransition@cctz@time_internal@absl@@@12@V?$__wrap_iter@PEBUTransition@cctz@time_internal@absl@@@12@@Z ??$emplace@$$V@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAA?AV?$__wrap_iter@PEAUTransitionType@cctz@time_internal@absl@@@12@V?$__wrap_iter@PEBUTransitionType@cctz@time_internal@absl@@@12@@Z ??$emplace_back@$$V@?$__split_buffer@UTransition@cctz@time_internal@absl@@AEAV?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ @@ -179,6 +198,7 @@ ??0ByAnyChar@absl@@QEAA@Vstring_view@1@@Z ??0ByLength@absl@@QEAA@_J@Z ??0ByString@absl@@QEAA@Vstring_view@1@@Z + ??0CRC@crc_internal@absl@@IEAA@XZ ??0CheckOpMessageBuilder@log_internal@absl@@QEAA@PEBD@Z ??0ChunkIterator@Cord@absl@@AEAA@PEBV12@@Z ??0Condition@absl@@QEAA@P6A_NPEAX@Z0@Z @@ -187,6 +207,9 @@ ??0Cord@absl@@QEAA@AEBV01@@Z ??0CordzHandle@cord_internal@absl@@IEAA@_N@Z ??0CordzInfo@cord_internal@absl@@AEAA@PEAUCordRep@12@PEBV012@W4MethodIdentifier@CordzUpdateTracker@12@@Z + ??0CrcCordState@crc_internal@absl@@QEAA@$$QEAV012@@Z + ??0CrcCordState@crc_internal@absl@@QEAA@AEBV012@@Z + ??0CrcCordState@crc_internal@absl@@QEAA@XZ ??0GraphCycles@synchronization_internal@absl@@QEAA@XZ ??0HashtablezInfo@container_internal@absl@@QEAA@XZ ??0Impl@time_zone@cctz@time_internal@absl@@AEAA@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z @@ -216,11 +239,15 @@ ??0uint128@absl@@QEAA@M@Z ??0uint128@absl@@QEAA@N@Z ??0uint128@absl@@QEAA@O@Z + ??1?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ + ??1?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAA@XZ ??1BadStatusOrAccess@absl@@UEAA@XZ + ??1CRC@crc_internal@absl@@UEAA@XZ ??1CheckOpMessageBuilder@log_internal@absl@@QEAA@XZ ??1CondVar@absl@@QEAA@XZ ??1CordzHandle@cord_internal@absl@@MEAA@XZ ??1CordzInfo@cord_internal@absl@@EEAA@XZ + ??1CrcCordState@crc_internal@absl@@QEAA@XZ ??1GraphCycles@synchronization_internal@absl@@QEAA@XZ ??1HashtablezInfo@container_internal@absl@@QEAA@XZ ??1LogMessage@log_internal@absl@@QEAA@XZ @@ -236,10 +263,13 @@ ??1ZoneInfoSource@cctz@time_internal@absl@@UEAA@XZ ??1bad_optional_access@absl@@UEAA@XZ ??1bad_variant_access@absl@@UEAA@XZ + ??4?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAAEAV012@AEBV012@@Z ??4?$optional_data@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@$0A@@optional_internal@absl@@IEAAAEAV012@$$QEAV012@@Z ??4BadStatusOrAccess@absl@@QEAAAEAV01@$$QEAV01@@Z ??4BadStatusOrAccess@absl@@QEAAAEAV01@AEBV01@@Z ??4Cord@absl@@QEAAAEAV01@Vstring_view@1@@Z + ??4CrcCordState@crc_internal@absl@@QEAAAEAV012@$$QEAV012@@Z + ??4CrcCordState@crc_internal@absl@@QEAAAEAV012@AEBV012@@Z ??6LogMessage@log_internal@absl@@QEAAAEAV012@AEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ??6LogMessage@log_internal@absl@@QEAAAEAV012@P6AAEAV?$basic_ostream@DU?$char_traits@D@Cr@std@@@Cr@std@@AEAV345@@Z@Z ??6LogMessage@log_internal@absl@@QEAAAEAV012@P6AAEAVios_base@Cr@std@@AEAV345@@Z@Z @@ -294,6 +324,8 @@ ??R__destroy_vector@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QEAAXXZ ??XDuration@absl@@QEAAAEAV01@N@Z ??XDuration@absl@@QEAAAEAV01@_J@Z + ??Y?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEAU1234@AEAU1234@PEAPEAU1234@_J$0A@@Cr@std@@QEAAAEAV012@_J@Z + ??Y?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@Cr@std@@QEAAAEAV012@_J@Z ??YDuration@absl@@QEAAAEAV01@V01@@Z ??ZDuration@absl@@QEAAAEAV01@V01@@Z ??_0Duration@absl@@QEAAAEAV01@N@Z @@ -393,12 +425,13 @@ ?CheckstrcasecmptrueImpl@log_internal@absl@@YAPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBD00@Z ?CheckstrcmpfalseImpl@log_internal@absl@@YAPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBD00@Z ?CheckstrcmptrueImpl@log_internal@absl@@YAPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBD00@Z + ?Checksum@CrcCordState@crc_internal@absl@@QEBA?AVcrc32c_t@3@XZ ?CityHash32@hash_internal@absl@@YAIPEBD_K@Z ?CityHash64@hash_internal@absl@@YA_KPEBD_K@Z ?CityHash64WithSeed@hash_internal@absl@@YA_KPEBD_K1@Z ?CityHash64WithSeeds@hash_internal@absl@@YA_KPEBD_K11@Z ?Clear@Cord@absl@@QEAAXXZ - ?ClearBackingArray@container_internal@absl@@YAXAEAVCommonFields@12@AEA_KAEBUPolicyFunctions@12@_N@Z + ?ClearBackingArray@container_internal@absl@@YAXAEAVCommonFields@12@AEBUPolicyFunctions@12@_N@Z ?ClearCurrentThreadIdentity@base_internal@absl@@YAXXZ ?ClearTimeZoneMapTestOnly@Impl@time_zone@cctz@time_internal@absl@@SAXXZ ?CombineContiguousImpl@MixingHashState@hash_internal@absl@@CA_K_KPEBE0U?$integral_constant@H$03@Cr@std@@@Z @@ -408,6 +441,12 @@ ?Compare@Cord@absl@@QEBAHVstring_view@2@@Z ?CompareImpl@Cord@absl@@AEBAHAEBV12@@Z ?CompareSlowPath@Cord@absl@@AEBAHAEBV12@_K1@Z + ?Compute@CrcNonTemporalMemcpyAVXEngine@crc_internal@absl@@UEBA?AVcrc32c_t@3@PEIAXPEIBX_KV43@@Z + ?Compute@CrcNonTemporalMemcpyEngine@crc_internal@absl@@UEBA?AVcrc32c_t@3@PEIAXPEIBX_KV43@@Z + ?Compute@FallbackCrcMemcpyEngine@crc_internal@absl@@UEBA?AVcrc32c_t@3@PEIAXPEIBX_KV43@@Z + ?ComputeCrc32c@absl@@YA?AVcrc32c_t@1@Vstring_view@1@@Z + ?Concat@CRC@crc_internal@absl@@UEAAXPEAII_K@Z + ?ConcatCrc32c@absl@@YA?AVcrc32c_t@1@V21@0_K@Z ?Consume@cord_internal@absl@@YAXPEAUCordRep@12@V?$FunctionRef@$$A6AXPEAUCordRep@cord_internal@absl@@_K1@Z@2@@Z ?ConsumeBeginTo@CordRepBtree@cord_internal@absl@@CAPEAV123@PEAV123@_K1@Z ?ConsumeUnboundConversion@str_format_internal@absl@@YAPEBDPEBD0PEAUUnboundConversion@12@PEAH@Z @@ -428,6 +467,8 @@ ?CopyToEncodedBuffer@LogMessage@log_internal@absl@@AEAAXD_KW4StringType@123@@Z ?CopyToEncodedBuffer@LogMessage@log_internal@absl@@AEAAXVstring_view@3@W4StringType@123@@Z ?Crash@Helper@internal_statusor@absl@@SAXAEBVStatus@3@@Z + ?Crc32c@CRC@crc_internal@absl@@SAPEAV123@XZ + ?CrcAndCopy@CrcMemcpy@crc_internal@absl@@SA?AVcrc32c_t@3@PEIAXPEIBX_KV43@_N@Z ?Create@CordRepRing@cord_internal@absl@@SAPEAV123@PEAUCordRep@23@_K@Z ?CreateFromLeaf@CordRepRing@cord_internal@absl@@CAPEAV123@PEAUCordRep@23@_K11@Z ?CreateSlow@CordRepBtree@cord_internal@absl@@CAPEAV123@PEAUCordRep@23@@Z @@ -462,7 +503,7 @@ ?DieBecauseNull@log_internal@absl@@YAXPEBDH0@Z ?Digits10@?$BigUnsigned@$03@strings_internal@absl@@SAHXZ ?Digits10@?$BigUnsigned@$0FE@@strings_internal@absl@@SAHXZ - ?DropDeletesWithoutResize@container_internal@absl@@YAXAEAVCommonFields@12@AEA_KAEBUPolicyFunctions@12@PEAX@Z + ?DropDeletesWithoutResize@container_internal@absl@@YAXAEAVCommonFields@12@AEBUPolicyFunctions@12@PEAX@Z ?DummyFunction@?$AtomicHook@P6A?AV?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@absl@@Vstring_view@2@AEBVCord@2@@Z@base_internal@absl@@CA?AV?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@3@Vstring_view@3@AEBVCord@3@@Z ?DummyFunction@?$AtomicHook@P6AXPEBDH000@Z@base_internal@absl@@CAXPEBDH000@Z ?DummyFunction@?$AtomicHook@P6AXPEBDPEBX@Z@base_internal@absl@@CAXPEBDPEBX@Z @@ -477,6 +518,7 @@ ?DumpStackTrace@debugging_internal@absl@@YAXHH_NP6AXPEBDPEAX@Z2@Z ?DurationFromTimespec@absl@@YA?AVDuration@1@Utimespec@@@Z ?DurationFromTimeval@absl@@YA?AVDuration@1@Utimeval@@@Z + ?Empty@CRCImpl@crc_internal@absl@@UEBAXPEAI@Z ?EmptyString@Status@absl@@CAPEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@XZ ?EnableDebugLog@CondVar@absl@@QEAAXPEBD@Z ?EnableDebugLog@Mutex@absl@@QEAAXPEBD@Z @@ -502,13 +544,18 @@ ?EqualsSlow@Status@absl@@CA_NAEBV12@0@Z ?EquivTransitions@TimeZoneInfo@cctz@time_internal@absl@@AEBA_NEE@Z ?Erase@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QEAAPEAUPayload@status_internal@3@PEBU453@0@Z - ?EraseMetaOnly@container_internal@absl@@YAXAEAVCommonFields@12@AEA_KPEAW4ctrl_t@12@_K@Z + ?EraseMetaOnly@container_internal@absl@@YAXAEAVCommonFields@12@PEAW4ctrl_t@12@_K@Z ?ErasePayload@Status@absl@@QEAA_NVstring_view@2@@Z ?ErrnoToStatus@absl@@YA?AVStatus@1@HVstring_view@1@@Z ?ErrnoToStatusCode@absl@@YA?AW4StatusCode@1@H@Z ?Eval@Condition@absl@@QEBA_NXZ ?ExitOnDFatal@log_internal@absl@@YA_NXZ ?ExpectedChecksum@Cord@absl@@QEBA?AV?$optional@I@2@XZ + ?Extend@CRC32@crc_internal@absl@@UEBAXPEAIPEBX_K@Z + ?ExtendByZeroes@CRC32@crc_internal@absl@@UEBAXPEAI_K@Z + ?ExtendByZeroesImpl@CRC32@crc_internal@absl@@AEBAXPEAI_KQEBI2@Z + ?ExtendCrc32cByZeroes@absl@@YA?AVcrc32c_t@1@V21@_K@Z + ?ExtendCrc32cInternal@crc_internal@absl@@YA?AVcrc32c_t@2@V32@Vstring_view@2@@Z ?ExtendTransitions@TimeZoneInfo@cctz@time_internal@absl@@AEAA_NXZ ?ExtractAppendBuffer@CordRepBtree@cord_internal@absl@@SA?AUExtractResult@CordRep@23@PEAV123@_K@Z ?ExtractFront@CordRepBtree@cord_internal@absl@@CAPEAUCordRep@23@PEAV123@@Z @@ -527,6 +574,8 @@ ?Fill@?$RandenPool@I@random_internal@absl@@SAXV?$Span@I@3@@Z ?Fill@?$RandenPool@_K@random_internal@absl@@SAXV?$Span@_K@3@@Z ?FillParentStack@CordzInfo@cord_internal@absl@@CA_KPEBV123@PEAPEAX@Z + ?FillWordTable@CRCImpl@crc_internal@absl@@SAXIIHPEAY0BAA@I@Z + ?FillZeroesTable@CRCImpl@crc_internal@absl@@SAHIPEAY0BAA@I@Z ?FinalizeEncodingAndFormat@LogMessageData@LogMessage@log_internal@absl@@QEAAXXZ ?Find@ByAnyChar@absl@@QEBA?AVstring_view@2@V32@_K@Z ?Find@ByChar@absl@@QEBA?AVstring_view@2@V32@_K@Z @@ -603,10 +652,12 @@ ?GetAppendBuffer@CordRepRing@cord_internal@absl@@QEAA?AV?$Span@D@3@_K@Z ?GetAppendBufferSlow@CordRepBtree@cord_internal@absl@@AEAA?AV?$Span@D@3@_K@Z ?GetAppendBufferSlowPath@Cord@absl@@AEAA?AVCordBuffer@2@_K00@Z + ?GetArchSpecificEngines@CrcMemcpy@crc_internal@absl@@CA?AUArchSpecificEngines@123@XZ ?GetCachedTID@base_internal@absl@@YAIXZ ?GetCharacter@CordRepBtree@cord_internal@absl@@QEBAD_K@Z ?GetCharacter@CordRepRing@cord_internal@absl@@QEBAD_K@Z ?GetCordzStatistics@CordzInfo@cord_internal@absl@@QEBA?AUCordzStatistics@23@XZ + ?GetCpuType@crc_internal@absl@@YA?AW4CpuType@12@XZ ?GetCurrentTimeNanos@absl@@YA_JXZ ?GetDebugStackTraceHook@debugging_internal@absl@@YAP6AXQEBQEAXHP6AXPEBDPEAX@Z2@ZXZ ?GetEstimatedFairShareMemoryUsage@cord_internal@absl@@YA_KPEBUCordRep@12@@Z @@ -633,6 +684,7 @@ ?GetStatusPayloadPrinter@status_internal@absl@@YAP6A?AV?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@2@Vstring_view@2@AEBVCord@2@@ZXZ ?GetStride@ExponentialBiased@profiling_internal@absl@@QEAA_J_J@Z ?GetTID@base_internal@absl@@YAIXZ + ?GetTestEngine@CrcMemcpy@crc_internal@absl@@SA?AV?$unique_ptr@VCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@HH@Z ?GetThreadBlockedCounter@PerThreadSem@synchronization_internal@absl@@SAPEAU?$atomic@H@Cr@std@@XZ ?GetTransitionType@TimeZoneInfo@cctz@time_internal@absl@@AEAA_NH_NAEBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEAE@Z ?GetWord@?$BigUnsigned@$03@strings_internal@absl@@QEBAIH@Z @@ -653,6 +705,7 @@ ?Init@PerThreadSem@synchronization_internal@absl@@CAXPEAUThreadIdentity@base_internal@3@@Z ?InitDiscreteDistribution@random_internal@absl@@YA?AV?$vector@U?$pair@N_K@Cr@std@@V?$allocator@U?$pair@N_K@Cr@std@@@23@@Cr@std@@PEAV?$vector@NV?$allocator@N@Cr@std@@@45@@Z ?InitFrom@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QEAAXAEBV123@@Z + ?InitTables@CRC32@crc_internal@absl@@UEAAXXZ ?InitWhat@BadStatusOrAccess@absl@@AEBAXXZ ?Initialize@ExponentialBiased@profiling_internal@absl@@AEAAXXZ ?InitializeCordRepExternal@cord_internal@absl@@YAXVstring_view@2@PEAUCordRepExternal@12@@Z @@ -721,7 +774,9 @@ ?MatchesConversions@ParsedFormatBase@str_format_internal@absl@@AEBA_N_NV?$initializer_list@W4FormatConversionCharSet@absl@@@std@@@Z ?MaxFlatLength@CordTestAccess@strings_internal@absl@@SA_KXZ ?MaxFramesInLogStackTrace@log_internal@absl@@YAHXZ + ?MaybeGetCrcCordState@Cord@absl@@AEBAPEBVCrcCordState@crc_internal@2@XZ ?MaybeTrackCordImpl@CordzInfo@cord_internal@absl@@CAXAEAVInlineData@23@AEBV423@W4MethodIdentifier@CordzUpdateTracker@23@@Z + ?MemcpyCrc32c@absl@@YA?AVcrc32c_t@1@PEAXPEBX_KV21@@Z ?MergeTrees@CordRepBtree@cord_internal@absl@@CAPEAV123@PEAV123@0@Z ?MinLogLevel@absl@@YA?AW4LogSeverityAtLeast@1@XZ ?MixIntoSeedMaterial@random_internal@absl@@YAXV?$Span@$$CBI@2@V?$Span@I@2@@Z @@ -740,9 +795,11 @@ ?MultiplyStep@?$BigUnsigned@$0FE@@strings_internal@absl@@AEAAXHPEBIHH@Z ?Mutable@CordRepRing@cord_internal@absl@@CAPEAV123@PEAV123@_K@Z ?MutexDelay@synchronization_internal@absl@@YAHHH@Z - ?New@CordRepCrc@cord_internal@absl@@SAPEAU123@PEAUCordRep@23@I@Z + ?New@CordRepCrc@cord_internal@absl@@SAPEAU123@PEAUCordRep@23@VCrcCordState@crc_internal@3@@Z ?New@CordRepRing@cord_internal@absl@@CAPEAV123@_K0@Z ?NewArena@LowLevelAlloc@base_internal@absl@@SAPEAUArena@123@I@Z + ?NewCRC32AcceleratedX86ARMCombinedAll@crc_internal@absl@@YA?AV?$vector@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@V?$allocator@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@@23@@Cr@std@@XZ + ?NewInternal@CRCImpl@crc_internal@absl@@SAPEAV123@XZ ?NewString@CheckOpMessageBuilder@log_internal@absl@@QEAAPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@XZ ?Next@CordzInfo@cord_internal@absl@@QEBAPEAV123@AEBVCordzSnapshot@23@@Z ?NextTransition@TimeZone@absl@@QEBA_NVTime@2@PEAUCivilTransition@12@@Z @@ -750,6 +807,8 @@ ?NextTransition@TimeZoneLibC@cctz@time_internal@absl@@UEBA_NAEBV?$time_point@Vsystem_clock@chrono@Cr@std@@V?$duration@_JV?$ratio@$00$00@Cr@std@@@234@@chrono@Cr@std@@PEAUcivil_transition@time_zone@234@@Z ?NoPrefix@LogMessage@log_internal@absl@@QEAAAEAV123@XZ ?NominalCPUFrequency@base_internal@absl@@YANXZ + ?Normalize@CrcCordState@crc_internal@absl@@QEAAXXZ + ?NormalizedPrefixCrcAtNthChunk@CrcCordState@crc_internal@absl@@QEBA?AUPrefixCrc@123@_K@Z ?NotFoundError@absl@@YA?AVStatus@1@Vstring_view@1@@Z ?Notify@Notification@absl@@QEAAXXZ ?Now@CycleClock@base_internal@absl@@SA_JXZ @@ -776,6 +835,7 @@ ?ParseTime@absl@@YA_NVstring_view@1@0PEAVTime@1@PEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ?ParseTime@absl@@YA_NVstring_view@1@0VTimeZone@1@PEAVTime@1@PEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ?PermissionDeniedError@absl@@YA?AVStatus@1@Vstring_view@1@@Z + ?Poison@CrcCordState@crc_internal@absl@@QEAAXXZ ?Poke@Waiter@synchronization_internal@absl@@QEAAXXZ ?Post@Waiter@synchronization_internal@absl@@QEAAXXZ ?PrepareForSampling@HashtablezInfo@container_internal@absl@@QEAAX_J_K@Z @@ -826,6 +886,7 @@ ?RecordRehashSlow@container_internal@absl@@YAXPEAUHashtablezInfo@12@_K@Z ?RecordReservationSlow@container_internal@absl@@YAXPEAUHashtablezInfo@12@_K@Z ?RecordStorageChangedSlow@container_internal@absl@@YAXPEAUHashtablezInfo@12@_K1@Z + ?RefSharedEmptyRep@CrcCordState@crc_internal@absl@@CAPEAURefcountedRep@123@XZ ?Register@CycleClockSource@base_internal@absl@@CAXP6A_JXZ@Z ?RegisterAbortHook@raw_log_internal@absl@@YAXP6AXPEBDH000@Z@Z ?RegisterCondVarTracer@absl@@YAXP6AXPEBDPEBX@Z@Z @@ -838,6 +899,8 @@ ?RegisterSymbolizer@absl@@YAXP6A_NPEBXPEADH@Z@Z ?Release@ReleasableMutexLock@absl@@QEAAXXZ ?Remove@CondVar@absl@@AEAAXPEAUPerThreadSynch@base_internal@2@@Z + ?RemoveCrc32cPrefix@absl@@YA?AVcrc32c_t@1@V21@0_K@Z + ?RemoveCrc32cSuffix@absl@@YA?AVcrc32c_t@1@V21@0_K@Z ?RemoveEdge@GraphCycles@synchronization_internal@absl@@QEAAXUGraphId@23@0@Z ?RemoveExtraAsciiWhitespace@absl@@YAXPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ?RemoveLogSink@log_internal@absl@@YAXPEAVLogSink@2@@Z @@ -854,9 +917,11 @@ ?ReverseConsume@cord_internal@absl@@YAXPEAUCordRep@12@V?$FunctionRef@$$A6AXPEAUCordRep@cord_internal@absl@@_K1@Z@2@@Z ?SafeToDelete@CordzHandle@cord_internal@absl@@QEBA_NXZ ?SampleSlow@container_internal@absl@@YAPEAUHashtablezInfo@12@AEAUSamplingState@12@_K@Z + ?Scramble@CRC32@crc_internal@absl@@UEBAXPEAI@Z ?Seek@CordRepBtreeReader@cord_internal@absl@@QEAA?AVstring_view@3@_K@Z ?SendToLog@LogMessage@log_internal@absl@@AEAAXXZ ?SetCapacityForTesting@CordRepRing@cord_internal@absl@@QEAAX_K@Z + ?SetCrcCordState@Cord@absl@@AEAAXVCrcCordState@crc_internal@2@@Z ?SetCtrl@container_internal@absl@@YAXAEBVCommonFields@12@_KE1@Z ?SetCurrentThreadIdentity@base_internal@absl@@YAXPEAUThreadIdentity@12@P6AXPEAX@Z@Z ?SetExitOnDFatal@log_internal@absl@@YAX_N@Z @@ -929,6 +994,7 @@ ?Subcord@Cord@absl@@QEBA?AV12@_K0@Z ?SubstituteAndAppendArray@substitute_internal@absl@@YAXPEAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@Vstring_view@2@PEBV62@_K@Z ?Summarize@str_format_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@VUntypedFormatSpecImpl@12@V?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@2@@Z + ?SupportsArmCRC32PMULL@crc_internal@absl@@YA_NXZ ?SuppressSigabortTrace@log_internal@absl@@YA_NXZ ?Symbolize@absl@@YA_NPEBXPEADH@Z ?ThreadIsLoggingToLogSink@log_internal@absl@@YA_NXZ @@ -1003,11 +1069,14 @@ ?Trans@Mutex@absl@@AEAAXPEBUMuHowS@2@@Z ?Trunc@absl@@YA?AVDuration@1@V21@0@Z ?TryLock@Mutex@absl@@QEAA_NXZ + ?TryNewCRC32AcceleratedX86ARMCombined@crc_internal@absl@@YAPEAVCRCImpl@12@XZ ?TryRemove@Mutex@absl@@AEAAXPEAUPerThreadSynch@base_internal@2@@Z ?UTC@Impl@time_zone@cctz@time_internal@absl@@SA?AV2345@XZ ?UTCImpl@Impl@time_zone@cctz@time_internal@absl@@CAPEBV12345@XZ ?UnauthenticatedError@absl@@YA?AVStatus@1@Vstring_view@1@@Z ?UnavailableError@absl@@YA?AVStatus@1@Vstring_view@1@@Z + ?UnextendByZeroes@CRC32@crc_internal@absl@@UEBAXPEAI_K@Z + ?UnextendCrc32cByZeroes@crc_internal@absl@@YA?AVcrc32c_t@2@V32@_K@Z ?UnimplementedError@absl@@YA?AVStatus@1@Vstring_view@1@@Z ?UnknownError@absl@@YA?AVStatus@1@Vstring_view@1@@Z ?Unlock@CordzInfo@cord_internal@absl@@QEAAXXZ @@ -1015,9 +1084,11 @@ ?UnlockSlow@Mutex@absl@@AEAAXPEAUSynchWaitParams@2@@Z ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@VDuration@1@@Z ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@VTime@1@@Z + ?Unref@CrcCordState@crc_internal@absl@@CAXPEAURefcountedRep@123@@Z ?UnrefNonInlined@Status@absl@@CAX_K@Z ?UnrefTree@InlineRep@Cord@absl@@AEAAXXZ ?UnsampleSlow@container_internal@absl@@YAXPEAUHashtablezInfo@12@@Z + ?Unscramble@CRC32@crc_internal@absl@@UEBAXPEAI@Z ?Untrack@CordzInfo@cord_internal@absl@@QEAAXXZ ?UpdateStackTrace@GraphCycles@synchronization_internal@absl@@QEAAXUGraphId@23@HP6AHPEAPEAXH@Z@Z ?Utf8SafeCEscape@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@Vstring_view@1@@Z @@ -1048,6 +1119,8 @@ ?Write@FILERawSink@str_format_internal@absl@@QEAAXVstring_view@3@@Z ?WriteToStderr@log_internal@absl@@YAXVstring_view@2@W4LogSeverity@2@@Z ?__add_back_capacity@?$deque@PEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAXXZ + ?__add_back_capacity@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AEAAXXZ + ?__add_back_capacity@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AEAAX_K@Z ?__annotate_delete@?$vector@PEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@AEBAXXZ ?__annotate_delete@?$vector@PEAVLogSink@absl@@V?$allocator@PEAVLogSink@absl@@@Cr@std@@@Cr@std@@AEBAXXZ ?__annotate_delete@?$vector@PEBVCordzHandle@cord_internal@absl@@V?$allocator@PEBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@AEBAXXZ @@ -1078,6 +1151,8 @@ ?__construct_at_end@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAX_K@Z ?__construct_at_end@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAX_K@Z ?__deallocate_node@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@AEAAXPEAU?$__hash_node_base@PEAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PEAX@Cr@std@@@23@@Z + ?__erase_to_end@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AEAAXV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PEBU1234@AEBU1234@PEBQEBU1234@_J$0A@@23@@Z + ?__maybe_remove_back_spare@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AEAA_N_N@Z ?__move_range@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAXPEAUTransition@cctz@time_internal@absl@@00@Z ?__move_range@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AEAAXPEAUTransitionType@cctz@time_internal@absl@@00@Z ?__swap_out_circular_buffer@?$vector@PEAVCordzHandle@cord_internal@absl@@V?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@AEAAXAEAU?$__split_buffer@PEAVCordzHandle@cord_internal@absl@@AEAV?$allocator@PEAVCordzHandle@cord_internal@absl@@@Cr@std@@@23@@Z @@ -1100,6 +1175,7 @@ ?day_difference@impl@detail@cctz@time_internal@absl@@YA_J_JCC0CC@Z ?description@time_zone@cctz@time_internal@absl@@QEBA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@XZ ?effective_impl@time_zone@cctz@time_internal@absl@@AEBAAEBVImpl@1234@XZ + ?engines@?1??CrcAndCopy@CrcMemcpy@crc_internal@absl@@SA?AVcrc32c_t@4@PEIAXPEIBX_KV54@_N@Z@4UArchSpecificEngines@234@B ?erase@?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@QEAAPEAUPayload@status_internal@2@PEBU342@@Z ?find@string_view@absl@@QEBA_KD_K@Z ?find@string_view@absl@@QEBA_KV12@_K@Z @@ -1135,6 +1211,7 @@ ?min@?$RandenPool@G@random_internal@absl@@SAGXZ ?min@?$RandenPool@I@random_internal@absl@@SAIXZ ?min@?$RandenPool@_K@random_internal@absl@@SA_KXZ + ?mutable_rep@CrcCordState@crc_internal@absl@@QEAAPEAURep@123@XZ ?n_day@impl@detail@cctz@time_internal@absl@@YA?AUfields@2345@_JC00CCC@Z ?n_hour@impl@detail@cctz@time_internal@absl@@YA?AUfields@2345@_J0000CC@Z ?n_sec@impl@detail@cctz@time_internal@absl@@YA?AUfields@2345@_J00000@Z @@ -1148,9 +1225,16 @@ ?push_back@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ?push_back@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ?push_back@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z + ?push_back@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?push_back@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?push_back@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?push_back@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ?push_back@?$deque@PEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEBVImpl@time_zone@cctz@time_internal@absl@@@Z + ?push_back@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ?push_front@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@AEAV?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z ?push_front@?$__split_buffer@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAPEBVImpl@time_zone@cctz@time_internal@absl@@@Z + ?push_front@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@AEAV?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAXAEBQEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?push_front@?$__split_buffer@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QEAAX$$QEAPEAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ?raw_code@Status@absl@@QEBAHXZ ?reserve@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAX_K@Z ?reserve@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QEAAX_K@Z
diff --git a/third_party/abseil-cpp/symbols_x86_dbg.def b/third_party/abseil-cpp/symbols_x86_dbg.def index 4d690db..5d86e5f9 100644 --- a/third_party/abseil-cpp/symbols_x86_dbg.def +++ b/third_party/abseil-cpp/symbols_x86_dbg.def
@@ -1,4 +1,5 @@ EXPORTS + ?$TSS0@?1??CrcAndCopy@CrcMemcpy@crc_internal@absl@@SA?AVcrc32c_t@3@PIAXPIBXIV43@_N@Z@4HA ??$?0$$CBD$0A@@VoidPtr@str_format_internal@absl@@QAE@PBD@Z ??$?0$$CBU?$atomic@_N@Cr@std@@@Condition@absl@@QAE@P6A_NPBU?$atomic@_N@Cr@std@@@Z0@Z ??$?0$$CBUCordRep@cord_internal@absl@@@Hex@absl@@QAE@PBUCordRep@cord_internal@1@W4PadSpec@1@@Z @@ -7,6 +8,7 @@ ??$?0$$T@?$Storage@PAPAVLogSink@absl@@$00$0A@@internal_compressed_tuple@container_internal@absl@@QAE@Uin_place_t@3@$$QA$$T@Z ??$?0$$T@?$Storage@PAUPayload@status_internal@absl@@$00$0A@@internal_compressed_tuple@container_internal@absl@@QAE@Uin_place_t@3@$$QA$$T@Z ??$?0$$TAAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@?$__compressed_pair@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@AAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@$$QA$$TAAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@12@@Z + ??$?0$$TAAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@?$__compressed_pair@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@AAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAE@$$QA$$TAAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@12@@Z ??$?0$$TAAV?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@?$__compressed_pair@PAPAVCordzHandle@cord_internal@absl@@AAV?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAE@$$QA$$TAAV?$allocator@PAVCordzHandle@cord_internal@absl@@@12@@Z ??$?0$$TAAV?$allocator@PAVLogSink@absl@@@Cr@std@@@?$__compressed_pair@PAPAVLogSink@absl@@AAV?$allocator@PAVLogSink@absl@@@Cr@std@@@Cr@std@@QAE@$$QA$$TAAV?$allocator@PAVLogSink@absl@@@12@@Z ??$?0$$TAAV?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@@?$__compressed_pair@PAPBVCordzHandle@cord_internal@absl@@AAV?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAE@$$QA$$TAAV?$allocator@PBVCordzHandle@cord_internal@absl@@@12@@Z @@ -15,6 +17,7 @@ ??$?0$$TAAV?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@?$__compressed_pair@PAUTransitionType@cctz@time_internal@absl@@AAV?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@$$QA$$TAAV?$allocator@UTransitionType@cctz@time_internal@absl@@@12@@Z ??$?0$$TAAV?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@?$__compressed_pair@PAUViableSubstitution@strings_internal@absl@@AAV?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QAE@$$QA$$TAAV?$allocator@UViableSubstitution@strings_internal@absl@@@12@@Z ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@$$QA$$T$$QAU__default_init_tag@12@@Z + ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAE@$$QA$$T$$QAU__default_init_tag@12@@Z ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PAPAVCordzHandle@cord_internal@absl@@V?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAE@$$QA$$T$$QAU__default_init_tag@12@@Z ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PAPAVLogSink@absl@@V?$allocator@PAVLogSink@absl@@@Cr@std@@@Cr@std@@QAE@$$QA$$T$$QAU__default_init_tag@12@@Z ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PAPBVCordzHandle@cord_internal@absl@@V?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAE@$$QA$$T$$QAU__default_init_tag@12@@Z @@ -22,8 +25,10 @@ ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PAUTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@$$QA$$T$$QAU__default_init_tag@12@@Z ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PAUTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@$$QA$$T$$QAU__default_init_tag@12@@Z ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PAUViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QAE@$$QA$$T$$QAU__default_init_tag@12@@Z + ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PAV?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@V?$allocator@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QAE@$$QA$$T$$QAU__default_init_tag@12@@Z ??$?0$$TU__default_init_tag@Cr@std@@@?$__compressed_pair@PAVFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QAE@$$QA$$T$$QAU__default_init_tag@12@@Z ??$?0$$TX@?$__compressed_pair_elem@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@$0A@$0A@@Cr@std@@QAE@$$QA$$T@Z + ??$?0$$TX@?$__compressed_pair_elem@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@$0A@$0A@@Cr@std@@QAE@$$QA$$T@Z ??$?0$$TX@?$__compressed_pair_elem@PAPAVCordzHandle@cord_internal@absl@@$0A@$0A@@Cr@std@@QAE@$$QA$$T@Z ??$?0$$TX@?$__compressed_pair_elem@PAPAVLogSink@absl@@$0A@$0A@@Cr@std@@QAE@$$QA$$T@Z ??$?0$$TX@?$__compressed_pair_elem@PAPBVCordzHandle@cord_internal@absl@@$0A@$0A@@Cr@std@@QAE@$$QA$$T@Z @@ -31,6 +36,7 @@ ??$?0$$TX@?$__compressed_pair_elem@PAUTransition@cctz@time_internal@absl@@$0A@$0A@@Cr@std@@QAE@$$QA$$T@Z ??$?0$$TX@?$__compressed_pair_elem@PAUTransitionType@cctz@time_internal@absl@@$0A@$0A@@Cr@std@@QAE@$$QA$$T@Z ??$?0$$TX@?$__compressed_pair_elem@PAUViableSubstitution@strings_internal@absl@@$0A@$0A@@Cr@std@@QAE@$$QA$$T@Z + ??$?0$$TX@?$__compressed_pair_elem@PAV?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@$0A@$0A@@Cr@std@@QAE@$$QA$$T@Z ??$?0$$TX@?$__compressed_pair_elem@PAVFormatArgImpl@str_format_internal@absl@@$0A@$0A@@Cr@std@@QAE@$$QA$$T@Z ??$?0$$V@?$__temp_value@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@AAV?$allocator@UTransition@cctz@time_internal@absl@@@12@@Z ??$?0$$V@?$__temp_value@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@AAV?$allocator@UTransitionType@cctz@time_internal@absl@@@12@@Z @@ -39,29 +45,33 @@ ??$?0$00X@?$unique_ptr@$$BY0A@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QAE@XZ ??$?0$00X@?$unique_ptr@$$CBVImpl@time_zone@cctz@time_internal@absl@@U?$default_delete@$$CBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@PBVImpl@time_zone@cctz@time_internal@absl@@@Z ??$?0$00X@?$unique_ptr@PAPBVImpl@time_zone@cctz@time_internal@absl@@V?$__allocator_destructor@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QAE@PAPBVImpl@time_zone@cctz@time_internal@absl@@$$QAV?$__allocator_destructor@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@12@@Z + ??$?0$00X@?$unique_ptr@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QAE@PAUPrefixCrc@CrcCordState@crc_internal@absl@@$$QAV?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@12@@Z ??$?0$00X@?$unique_ptr@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@23@@Cr@std@@QAE@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@12@$$QAV?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@12@@Z ??$?0$00X@?$unique_ptr@ULogMessageData@LogMessage@log_internal@absl@@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@@Cr@std@@QAE@PAULogMessageData@LogMessage@log_internal@absl@@@Z ??$?0$00X@?$unique_ptr@UThreadIdentity@base_internal@absl@@P6AXPAX@Z@Cr@std@@QAE@PAUThreadIdentity@base_internal@absl@@ABQ6AXPAX@Z@Z ??$?0$00X@?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QAE@$$T@Z ??$?0$00X@?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QAE@PAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Z ??$?0$00X@?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QAE@XZ + ??$?0$00X@?$unique_ptr@VFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QAE@PAVFallbackCrcMemcpyEngine@crc_internal@absl@@@Z ??$?0$00X@?$unique_ptr@VTimeZoneIf@cctz@time_internal@absl@@U?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@PAVTimeZoneIf@cctz@time_internal@absl@@@Z ??$?0$00X@?$unique_ptr@VTimeZoneInfo@cctz@time_internal@absl@@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@PAVTimeZoneInfo@cctz@time_internal@absl@@@Z ??$?0$00X@?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@$$T@Z ??$?0$00X@?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@PAVZoneInfoSource@cctz@time_internal@absl@@@Z ??$?0$0A@$00$$ZABVstring_view@absl@@ABH$$Z$S$$Z$$V$$ZABV01@ABH@?$__tuple_impl@U?$__tuple_indices@$0A@$00@Cr@std@@ABVstring_view@absl@@ABH@Cr@std@@QAE@U?$__tuple_indices@$0A@$00@12@U?$__tuple_types@ABVstring_view@absl@@ABH@12@U?$__tuple_indices@$S@12@U?$__tuple_types@$$V@12@ABVstring_view@absl@@ABH@Z - ??$?0AAI$0A@@?$optional@I@absl@@QAE@AAI@Z - ??$?0AAI@?$optional_data_dtor_base@I$00@optional_internal@absl@@IAE@Uin_place_t@2@AAI@Z ??$?0AAPAPBVImpl@time_zone@cctz@time_internal@absl@@V?$__allocator_destructor@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@@?$__compressed_pair@PAPBVImpl@time_zone@cctz@time_internal@absl@@V?$__allocator_destructor@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QAE@AAPAPBVImpl@time_zone@cctz@time_internal@absl@@$$QAV?$__allocator_destructor@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@12@@Z ??$?0AAPAPBVImpl@time_zone@cctz@time_internal@absl@@X@?$__compressed_pair_elem@PAPBVImpl@time_zone@cctz@time_internal@absl@@$0A@$0A@@Cr@std@@QAE@AAPAPBVImpl@time_zone@cctz@time_internal@absl@@@Z ??$?0AAPAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@12@@?$__compressed_pair@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@23@@Cr@std@@QAE@AAPAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@12@$$QAV?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@12@@Z ??$?0AAPAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@X@?$__compressed_pair_elem@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@$0A@$0A@@Cr@std@@QAE@AAPAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@12@@Z ??$?0AAPAULogMessageData@LogMessage@log_internal@absl@@U__value_init_tag@Cr@std@@@?$__compressed_pair@PAULogMessageData@LogMessage@log_internal@absl@@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@@Cr@std@@QAE@AAPAULogMessageData@LogMessage@log_internal@absl@@$$QAU__value_init_tag@12@@Z ??$?0AAPAULogMessageData@LogMessage@log_internal@absl@@X@?$__compressed_pair_elem@PAULogMessageData@LogMessage@log_internal@absl@@$0A@$0A@@Cr@std@@QAE@AAPAULogMessageData@LogMessage@log_internal@absl@@@Z + ??$?0AAPAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@?$__compressed_pair@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QAE@AAPAUPrefixCrc@CrcCordState@crc_internal@absl@@$$QAV?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@12@@Z + ??$?0AAPAUPrefixCrc@CrcCordState@crc_internal@absl@@X@?$__compressed_pair_elem@PAUPrefixCrc@CrcCordState@crc_internal@absl@@$0A@$0A@@Cr@std@@QAE@AAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ??$?0AAPAUThreadIdentity@base_internal@absl@@ABQ6AXPAX@Z@?$__compressed_pair@PAUThreadIdentity@base_internal@absl@@P6AXPAX@Z@Cr@std@@QAE@AAPAUThreadIdentity@base_internal@absl@@ABQ6AXPAX@Z@Z ??$?0AAPAUThreadIdentity@base_internal@absl@@X@?$__compressed_pair_elem@PAUThreadIdentity@base_internal@absl@@$0A@$0A@@Cr@std@@QAE@AAPAUThreadIdentity@base_internal@absl@@@Z ??$?0AAPAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U__value_init_tag@Cr@std@@@?$__compressed_pair@PAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QAE@AAPAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@$$QAU__value_init_tag@12@@Z ??$?0AAPAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@X@?$__compressed_pair_elem@PAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@$0A@$0A@@Cr@std@@QAE@AAPAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Z + ??$?0AAPAVFallbackCrcMemcpyEngine@crc_internal@absl@@U__value_init_tag@Cr@std@@@?$__compressed_pair@PAVFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QAE@AAPAVFallbackCrcMemcpyEngine@crc_internal@absl@@$$QAU__value_init_tag@12@@Z + ??$?0AAPAVFallbackCrcMemcpyEngine@crc_internal@absl@@X@?$__compressed_pair_elem@PAVFallbackCrcMemcpyEngine@crc_internal@absl@@$0A@$0A@@Cr@std@@QAE@AAPAVFallbackCrcMemcpyEngine@crc_internal@absl@@@Z ??$?0AAPAVTimeZoneIf@cctz@time_internal@absl@@U__value_init_tag@Cr@std@@@?$__compressed_pair@PAVTimeZoneIf@cctz@time_internal@absl@@U?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@AAPAVTimeZoneIf@cctz@time_internal@absl@@$$QAU__value_init_tag@12@@Z ??$?0AAPAVTimeZoneIf@cctz@time_internal@absl@@X@?$__compressed_pair_elem@PAVTimeZoneIf@cctz@time_internal@absl@@$0A@$0A@@Cr@std@@QAE@AAPAVTimeZoneIf@cctz@time_internal@absl@@@Z ??$?0AAPAVTimeZoneInfo@cctz@time_internal@absl@@U__value_init_tag@Cr@std@@@?$__compressed_pair@PAVTimeZoneInfo@cctz@time_internal@absl@@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@AAPAVTimeZoneInfo@cctz@time_internal@absl@@$$QAU__value_init_tag@12@@Z @@ -74,6 +84,7 @@ ??$?0AAV?$allocator@PAUCordRep@cord_internal@absl@@@Cr@std@@$$T$00@?$CompressedTuple@V?$allocator@PAUCordRep@cord_internal@absl@@@Cr@std@@PAPAUCordRep@cord_internal@absl@@@container_internal@absl@@QAE@AAV?$allocator@PAUCordRep@cord_internal@absl@@@Cr@std@@$$QA$$T@Z ??$?0AAV?$allocator@PAUCordRep@cord_internal@absl@@@Cr@std@@$$T@?$CompressedTupleImpl@V?$CompressedTuple@V?$allocator@PAUCordRep@cord_internal@absl@@@Cr@std@@PAPAUCordRep@cord_internal@absl@@@container_internal@absl@@U?$integer_sequence@I$0A@$00@3@$00@internal_compressed_tuple@container_internal@absl@@QAE@Uin_place_t@3@AAV?$allocator@PAUCordRep@cord_internal@absl@@@Cr@std@@$$QA$$T@Z ??$?0AAV?$allocator@PAUCordRep@cord_internal@absl@@@Cr@std@@@?$Storage@V?$allocator@PAUCordRep@cord_internal@absl@@@Cr@std@@$0A@$00@internal_compressed_tuple@container_internal@absl@@QAE@Uin_place_t@3@AAV?$allocator@PAUCordRep@cord_internal@absl@@@Cr@std@@@Z + ??$?0AAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@X@?$__compressed_pair_elem@AAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@$00$0A@@Cr@std@@QAE@AAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@12@@Z ??$?0AAV?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@X@?$__compressed_pair_elem@AAV?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@$00$0A@@Cr@std@@QAE@AAV?$allocator@PAVCordzHandle@cord_internal@absl@@@12@@Z ??$?0AAV?$allocator@PAVLogSink@absl@@@Cr@std@@$$T$00@?$CompressedTuple@V?$allocator@PAVLogSink@absl@@@Cr@std@@PAPAVLogSink@absl@@@container_internal@absl@@QAE@AAV?$allocator@PAVLogSink@absl@@@Cr@std@@$$QA$$T@Z ??$?0AAV?$allocator@PAVLogSink@absl@@@Cr@std@@$$T@?$CompressedTupleImpl@V?$CompressedTuple@V?$allocator@PAVLogSink@absl@@@Cr@std@@PAPAVLogSink@absl@@@container_internal@absl@@U?$integer_sequence@I$0A@$00@3@$00@internal_compressed_tuple@container_internal@absl@@QAE@Uin_place_t@3@AAV?$allocator@PAVLogSink@absl@@@Cr@std@@$$QA$$T@Z @@ -107,6 +118,7 @@ ??$?0HU__default_init_tag@Cr@std@@@?$__compressed_pair@IV?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@Cr@std@@@Cr@std@@QAE@$$QAH$$QAU__default_init_tag@12@@Z ??$?0HU__default_init_tag@Cr@std@@@?$__compressed_pair@IV?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@QAE@$$QAH$$QAU__default_init_tag@12@@Z ??$?0HU__default_init_tag@Cr@std@@@?$__compressed_pair@IV?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@$$QAH$$QAU__default_init_tag@12@@Z + ??$?0HU__default_init_tag@Cr@std@@@?$__compressed_pair@IV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAE@$$QAH$$QAU__default_init_tag@12@@Z ??$?0I$0A@@?$optional@I@absl@@QAE@$$QAI@Z ??$?0I@?$Storage@I$00$0A@@internal_compressed_tuple@container_internal@absl@@QAE@Uin_place_t@3@$$QAI@Z ??$?0I@?$optional_data_dtor_base@I$00@optional_internal@absl@@IAE@Uin_place_t@2@$$QAI@Z @@ -114,11 +126,13 @@ ??$?0MU__default_init_tag@Cr@std@@@?$__compressed_pair@MV?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@Cr@std@@@Cr@std@@QAE@$$QAM$$QAU__default_init_tag@12@@Z ??$?0PAI@?$SaltedSeedSeq@Vseed_seq@Cr@std@@@random_internal@absl@@QAE@PAI0@Z ??$?0PAPAPBVImpl@time_zone@cctz@time_internal@absl@@PAPAPBV01234@$0A@@?$pair@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@PAPAPBV12345@@Cr@std@@QAE@$$QAPAPAPBVImpl@time_zone@cctz@time_internal@absl@@0@Z + ??$?0PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAPAU0123@$0A@@?$pair@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAPAU1234@@Cr@std@@QAE@$$QAPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@0@Z ??$?0PAPAVCordzHandle@cord_internal@absl@@PAPAV012@$0A@@?$pair@PAPAVCordzHandle@cord_internal@absl@@PAPAV123@@Cr@std@@QAE@$$QAPAPAVCordzHandle@cord_internal@absl@@0@Z ??$?0PAPAVLogSink@absl@@@?$__wrap_iter@PBQAVLogSink@absl@@@Cr@std@@QAE@ABV?$__wrap_iter@PAPAVLogSink@absl@@@12@PAX@Z ??$?0PAPAVLogSink@absl@@PAPAV01@$0A@@?$pair@PAPAVLogSink@absl@@PAPAV12@@Cr@std@@QAE@$$QAPAPAVLogSink@absl@@0@Z ??$?0PAPBVCordzHandle@cord_internal@absl@@PAPBV012@$0A@@?$pair@PAPBVCordzHandle@cord_internal@absl@@PAPBV123@@Cr@std@@QAE@$$QAPAPBVCordzHandle@cord_internal@absl@@0@Z ??$?0PAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PAU0123@$0A@@?$pair@PAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PAU1234@@Cr@std@@QAE@$$QAPAUConversionItem@ParsedFormatBase@str_format_internal@absl@@0@Z + ??$?0PAUPrefixCrc@CrcCordState@crc_internal@absl@@AAU0123@PAPAU0123@@?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@ABU1234@PBQBU1234@H$0A@@Cr@std@@QAE@ABV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PAU1234@AAU1234@PAPAU1234@H$0A@@12@PAX@Z ??$?0PAUTransition@cctz@time_internal@absl@@@?$__wrap_iter@PBUTransition@cctz@time_internal@absl@@@Cr@std@@QAE@ABV?$__wrap_iter@PAUTransition@cctz@time_internal@absl@@@12@PAX@Z ??$?0PAUTransition@cctz@time_internal@absl@@PAU0123@$0A@@?$pair@PAUTransition@cctz@time_internal@absl@@PAU1234@@Cr@std@@QAE@$$QAPAUTransition@cctz@time_internal@absl@@0@Z ??$?0PAUTransitionType@cctz@time_internal@absl@@@?$__wrap_iter@PBUTransitionType@cctz@time_internal@absl@@@Cr@std@@QAE@ABV?$__wrap_iter@PAUTransitionType@cctz@time_internal@absl@@@12@PAX@Z @@ -126,11 +140,16 @@ ??$?0PAUViableSubstitution@strings_internal@absl@@PAU012@$0A@@?$pair@PAUViableSubstitution@strings_internal@absl@@PAU123@@Cr@std@@QAE@$$QAPAUViableSubstitution@strings_internal@absl@@0@Z ??$?0PAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@?$__compressed_pair@PAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QAE@$$QAPAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@$$QAU?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@12@@Z ??$?0PAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@X@?$__compressed_pair_elem@PAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@$0A@$0A@@Cr@std@@QAE@$$QAPAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Z + ??$?0PAVFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@?$__compressed_pair@PAVCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QAE@$$QAPAVFallbackCrcMemcpyEngine@crc_internal@absl@@$$QAU?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@12@@Z + ??$?0PAVFallbackCrcMemcpyEngine@crc_internal@absl@@X@?$__compressed_pair_elem@PAVCrcMemcpyEngine@crc_internal@absl@@$0A@$0A@@Cr@std@@QAE@$$QAPAVFallbackCrcMemcpyEngine@crc_internal@absl@@@Z ??$?0PBD@FormatArgImpl@str_format_internal@absl@@QAE@ABQBD@Z + ??$?0PBUPrefixCrc@CrcCordState@crc_internal@absl@@PAU0123@$0A@@?$pair@PBUPrefixCrc@CrcCordState@crc_internal@absl@@PAU1234@@Cr@std@@QAE@$$QAPBUPrefixCrc@CrcCordState@crc_internal@absl@@$$QAPAU3456@@Z + ??$?0PBUPrefixCrc@CrcCordState@crc_internal@absl@@PBU0123@$0A@@?$pair@PBUPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@@Cr@std@@QAE@$$QAPBUPrefixCrc@CrcCordState@crc_internal@absl@@0@Z ??$?0PBVFormatArgImpl@str_format_internal@absl@@PAV012@$0A@@?$pair@PBVFormatArgImpl@str_format_internal@absl@@PAV123@@Cr@std@@QAE@$$QAPBVFormatArgImpl@str_format_internal@absl@@$$QAPAV345@@Z ??$?0PBVFormatArgImpl@str_format_internal@absl@@PBV012@$0A@@?$pair@PBVFormatArgImpl@str_format_internal@absl@@PBV123@@Cr@std@@QAE@$$QAPBVFormatArgImpl@str_format_internal@absl@@0@Z ??$?0U?$array@D$0DKJI@@Cr@std@@XU012@H@?$Span@D@absl@@QAE@AAU?$array@D$0DKJI@@Cr@std@@@Z ??$?0U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@X@?$__compressed_pair_elem@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@$00$00@Cr@std@@QAE@$$QAU?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@12@@Z + ??$?0U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@X@?$__compressed_pair_elem@U?$default_delete@VCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAE@$$QAU?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@12@@Z ??$?0USynchEvent@absl@@@Condition@absl@@QAE@P6A_NPAUSynchEvent@1@@Z0@Z ??$?0U__value_init_tag@Cr@std@@U012@@?$__compressed_pair@PAPAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QAE@$$QAU__value_init_tag@12@0@Z ??$?0U__value_init_tag@Cr@std@@U012@@?$__compressed_pair@PAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QAE@$$QAU__value_init_tag@12@0@Z @@ -182,6 +201,7 @@ ??$?0V?$Span@I@absl@@XV01@$0A@@?$Span@I@absl@@QAE@AAV01@@Z ??$?0V?$Span@VFormatArgImpl@str_format_internal@absl@@@absl@@XV01@$0A@@?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@absl@@QAE@ABV?$Span@VFormatArgImpl@str_format_internal@absl@@@1@@Z ??$?0V?$__allocator_destructor@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@X@?$__compressed_pair_elem@V?$__allocator_destructor@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@$00$0A@@Cr@std@@QAE@$$QAV?$__allocator_destructor@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@12@@Z + ??$?0V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@X@?$__compressed_pair_elem@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@$00$0A@@Cr@std@@QAE@$$QAV?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@12@@Z ??$?0V?$__hash_iterator@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@AA_N$0A@@?$pair@V?$__hash_iterator@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@_N@Cr@std@@QAE@$$QAV?$__hash_iterator@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@12@AA_N@Z ??$?0V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@X@?$__compressed_pair_elem@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@$00$0A@@Cr@std@@QAE@$$QAV?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@12@@Z ??$?0V?$allocator@D@Cr@std@@@AlphaNum@absl@@QAE@ABV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z @@ -211,6 +231,8 @@ ??$?0V?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@XV012@H@?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@absl@@QAE@ABV?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@@Z ??$?0VBufferRawSink@str_format_internal@absl@@$0A@@FormatRawSinkImpl@str_format_internal@absl@@QAE@PAVBufferRawSink@12@@Z ??$?0VFILERawSink@str_format_internal@absl@@$0A@@FormatRawSinkImpl@str_format_internal@absl@@QAE@PAVFILERawSink@12@@Z + ??$?0VFallbackCrcMemcpyEngine@crc_internal@absl@@@?$default_delete@VCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@QAE@ABU?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@12@PAX@Z + ??$?0VFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@XX@?$unique_ptr@VCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QAE@$$QAV?$unique_ptr@VFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@12@@Z ??$?0Vstring_view@absl@@@FormatArgImpl@str_format_internal@absl@@QAE@ABVstring_view@2@@Z ??$?0Vstring_view@absl@@XV01@$0A@@?$Span@$$CBD@absl@@QAE@ABVstring_view@1@@Z ??$?0_J@FormatArgImpl@str_format_internal@absl@@QAE@AB_J@Z @@ -250,6 +272,7 @@ ??$?DN@absl@@YA?AVDuration@0@NV10@@Z ??$?D_J@absl@@YA?AVDuration@0@_JV10@@Z ??$?GPAPAPBVImpl@time_zone@cctz@time_internal@absl@@PAPAPBV01234@@Cr@std@@YAHABV?$move_iterator@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@@01@0@Z + ??$?GPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAPAU0123@@Cr@std@@YAHABV?$move_iterator@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@01@0@Z ??$?GPAUTransition@cctz@time_internal@absl@@PAU0123@@Cr@std@@YAHABV?$move_iterator@PAUTransition@cctz@time_internal@absl@@@01@0@Z ??$?GPAUTransitionType@cctz@time_internal@absl@@PAU0123@@Cr@std@@YAHABV?$move_iterator@PAUTransitionType@cctz@time_internal@absl@@@01@0@Z ??$?GPBQAVLogSink@absl@@PBQAV01@@Cr@std@@YAHABV?$__wrap_iter@PBQAVLogSink@absl@@@01@0@Z @@ -271,6 +294,7 @@ ??$?RAA_J@?$AtomicHook@P6AX_J@Z@base_internal@absl@@QBEXAA_J@Z ??$?RABQAPAPBVImpl@time_zone@cctz@time_internal@absl@@@__fn@__iter_move@ranges@Cr@std@@QBE$$QAPAPBVImpl@time_zone@cctz@time_internal@absl@@ABQAPAPBV56789@@Z ??$?RABQAPAUCordRep@cord_internal@absl@@@__fn@__iter_move@ranges@Cr@std@@QBE$$QAPAUCordRep@cord_internal@absl@@ABQAPAU567@@Z + ??$?RABQAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@__fn@__iter_move@ranges@Cr@std@@QBE$$QAPAUPrefixCrc@CrcCordState@crc_internal@absl@@ABQAPAU5678@@Z ??$?RABQAPAVLogSink@absl@@@__fn@__iter_move@ranges@Cr@std@@QBE$$QAPAVLogSink@absl@@ABQAPAV56@@Z ??$?RABQAUPayload@status_internal@absl@@@__fn@__iter_move@ranges@Cr@std@@QBE$$QAUPayload@status_internal@absl@@ABQAU567@@Z ??$?RABQAUTransition@cctz@time_internal@absl@@@__fn@__iter_move@ranges@Cr@std@@QBE$$QAUTransition@cctz@time_internal@absl@@ABQAU5678@@Z @@ -338,6 +362,19 @@ ??$ConsumeConversion@$00@str_format_internal@absl@@YAPBDPBDQBDPAUUnboundConversion@01@PAH@Z ??$ConsumeConversion@$0A@@str_format_internal@absl@@YAPBDPBDQBDPAUUnboundConversion@01@PAH@Z ??$Convert@VFormatArgImpl@str_format_internal@absl@@@FormatArgImplFriend@str_format_internal@absl@@SA_NVFormatArgImpl@12@VFormatConversionSpecImpl@12@PAVFormatSinkImpl@12@@Z + ??$ConvertIntArg@C@str_format_internal@absl@@YA_NCVFormatConversionSpecImpl@01@PAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@D@str_format_internal@absl@@YA_NDVFormatConversionSpecImpl@01@PAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@E@str_format_internal@absl@@YA_NEVFormatConversionSpecImpl@01@PAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@F@str_format_internal@absl@@YA_NFVFormatConversionSpecImpl@01@PAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@G@str_format_internal@absl@@YA_NGVFormatConversionSpecImpl@01@PAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@H@str_format_internal@absl@@YA_NHVFormatConversionSpecImpl@01@PAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@I@str_format_internal@absl@@YA_NIVFormatConversionSpecImpl@01@PAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@J@str_format_internal@absl@@YA_NJVFormatConversionSpecImpl@01@PAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@K@str_format_internal@absl@@YA_NKVFormatConversionSpecImpl@01@PAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@Vint128@absl@@@str_format_internal@absl@@YA_NVint128@1@VFormatConversionSpecImpl@01@PAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@Vuint128@absl@@@str_format_internal@absl@@YA_NVuint128@1@VFormatConversionSpecImpl@01@PAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@_J@str_format_internal@absl@@YA_N_JVFormatConversionSpecImpl@01@PAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@_K@str_format_internal@absl@@YA_N_KVFormatConversionSpecImpl@01@PAVFormatSinkImpl@01@@Z ??$CreateWithCustomLimitImpl@$$V@CordBuffer@absl@@CA?AV01@II@Z ??$Dispatch@C@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PAX@Z ??$Dispatch@D@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PAX@Z @@ -486,6 +523,7 @@ ??$MakeSpan@$SV?$InlinedVector@PAVLogSink@absl@@$0BA@V?$allocator@PAVLogSink@absl@@@Cr@std@@@absl@@@absl@@YA?AV?$Span@PAVLogSink@absl@@@0@AAV?$InlinedVector@PAVLogSink@absl@@$0BA@V?$allocator@PAVLogSink@absl@@@Cr@std@@@0@@Z ??$MakeSpan@$SV?$vector@PAVLogSink@absl@@V?$allocator@PAVLogSink@absl@@@Cr@std@@@Cr@std@@@absl@@YA?AV?$Span@PAVLogSink@absl@@@0@AAV?$vector@PAVLogSink@absl@@V?$allocator@PAVLogSink@absl@@@Cr@std@@@Cr@std@@@Z ??$MakeSpan@$SVFormatArgImpl@str_format_internal@absl@@@absl@@YA?AV?$Span@VFormatArgImpl@str_format_internal@absl@@@0@PAVFormatArgImpl@str_format_internal@0@I@Z + ??$MaskOfLength@I@crc_internal@absl@@YAIH@Z ??$Merge@$00@CordRepBtree@cord_internal@absl@@CAPAV012@PAV012@0@Z ??$Merge@$0A@@CordRepBtree@cord_internal@absl@@CAPAV012@PAV012@0@Z ??$Microseconds@H$0A@@absl@@YA?AVDuration@0@H@Z @@ -529,6 +567,7 @@ ??$ReadCallback@P6A_NPAUSynchEvent@absl@@@Z@Condition@absl@@ABEXPAP6A_NPAUSynchEvent@1@@Z@Z ??$ReadCallback@P6A_NPBU?$atomic@_N@Cr@std@@@Z@Condition@absl@@ABEXPAP6A_NPBU?$atomic@_N@Cr@std@@@Z@Z ??$Register@AB_JAAI@?$SampleRecorder@UHashtablezInfo@container_internal@absl@@@profiling_internal@absl@@QAEPAUHashtablezInfo@container_internal@2@AB_JAAI@Z + ??$RotateRight@I@crc_internal@absl@@YAIIHH@Z ??$SNPrintF@DHHH@absl@@YAHPADIABV?$FormatSpecTemplate@$0BPPPL@$0JPPPL@$0JPPPL@$0JPPPL@@str_format_internal@0@ABDABH33@Z ??$STLStringResizeUninitialized@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@X@strings_internal@absl@@YAXPAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@I@Z ??$STLStringResizeUninitializedAmortized@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@strings_internal@absl@@YAXPAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@I@Z @@ -594,6 +633,7 @@ ??$__advance@PBUTransition@cctz@time_internal@absl@@@Cr@std@@YAXAAPBUTransition@cctz@time_internal@absl@@HUrandom_access_iterator_tag@01@@Z ??$__advance@PBVFormatArgImpl@str_format_internal@absl@@@Cr@std@@YAXAAPBVFormatArgImpl@str_format_internal@absl@@HUrandom_access_iterator_tag@01@@Z ??$__allocate_at_least@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@@01@AAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@01@I@Z + ??$__allocate_at_least@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@01@AAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@01@I@Z ??$__allocate_at_least@V?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PAPAVCordzHandle@cord_internal@absl@@@01@AAV?$allocator@PAVCordzHandle@cord_internal@absl@@@01@I@Z ??$__allocate_at_least@V?$allocator@PAVLogSink@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PAPAVLogSink@absl@@@01@AAV?$allocator@PAVLogSink@absl@@@01@I@Z ??$__allocate_at_least@V?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PAPBVCordzHandle@cord_internal@absl@@@01@AAV?$allocator@PBVCordzHandle@cord_internal@absl@@@01@I@Z @@ -602,8 +642,10 @@ ??$__allocate_at_least@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PAUTransitionType@cctz@time_internal@absl@@@01@AAV?$allocator@UTransitionType@cctz@time_internal@absl@@@01@I@Z ??$__allocate_at_least@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PAUViableSubstitution@strings_internal@absl@@@01@AAV?$allocator@UViableSubstitution@strings_internal@absl@@@01@I@Z ??$__allocate_at_least@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PAVFormatArgImpl@str_format_internal@absl@@@01@AAV?$allocator@VFormatArgImpl@str_format_internal@absl@@@01@I@Z + ??$__append@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@ABU1234@PBQBU1234@H$0A@@Cr@std@@@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AAEXV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@ABU1234@PBQBU1234@H$0A@@12@0PAX@Z ??$__construct_at_end@PBVFormatArgImpl@str_format_internal@absl@@$0A@@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@AAEXPBVFormatArgImpl@str_format_internal@absl@@0I@Z ??$__construct_at_end@V?$move_iterator@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@AAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXV?$move_iterator@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@@12@0@Z + ??$__construct_at_end@V?$move_iterator@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@AAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEXV?$move_iterator@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@12@0@Z ??$__construct_at_end@V?$move_iterator@PAUTransition@cctz@time_internal@absl@@@Cr@std@@@?$__split_buffer@UTransition@cctz@time_internal@absl@@AAV?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXV?$move_iterator@PAUTransition@cctz@time_internal@absl@@@12@0@Z ??$__construct_at_end@V?$move_iterator@PAUTransitionType@cctz@time_internal@absl@@@Cr@std@@@?$__split_buffer@UTransitionType@cctz@time_internal@absl@@AAV?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXV?$move_iterator@PAUTransitionType@cctz@time_internal@absl@@@12@0@Z ??$__construct_node_hash@ABUpiecewise_construct_t@Cr@std@@V?$tuple@ABV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@V?$tuple@$$V@23@@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@AAE?AV?$unique_ptr@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@23@@12@IABUpiecewise_construct_t@12@$$QAV?$tuple@ABV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@12@$$QAV?$tuple@$$V@12@@Z @@ -615,7 +657,9 @@ ??$__construct_one_at_end@ABQBVCordzHandle@cord_internal@absl@@@?$vector@PBVCordzHandle@cord_internal@absl@@V?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@AAEXABQBVCordzHandle@cord_internal@absl@@@Z ??$__construct_one_at_end@ABUTransition@cctz@time_internal@absl@@@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AAEXABUTransition@cctz@time_internal@absl@@@Z ??$__construct_one_at_end@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@?$vector@UConversionItem@ParsedFormatBase@str_format_internal@absl@@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@AAEX$$QAUConversionItem@ParsedFormatBase@str_format_internal@absl@@@Z + ??$__copy@PBUPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@PAU1234@$0A@@Cr@std@@YA?AU?$pair@PBUPrefixCrc@CrcCordState@crc_internal@absl@@PAU1234@@01@PBUPrefixCrc@CrcCordState@crc_internal@absl@@0PAU3456@@Z ??$__copy@PBVFormatArgImpl@str_format_internal@absl@@PBV123@PAV123@$0A@@Cr@std@@YA?AU?$pair@PBVFormatArgImpl@str_format_internal@absl@@PAV123@@01@PBVFormatArgImpl@str_format_internal@absl@@0PAV345@@Z + ??$__copy_impl@$$CBUPrefixCrc@CrcCordState@crc_internal@absl@@U1234@X@Cr@std@@YA?AU?$pair@PBUPrefixCrc@CrcCordState@crc_internal@absl@@PAU1234@@01@PBUPrefixCrc@CrcCordState@crc_internal@absl@@0PAU3456@@Z ??$__copy_impl@$$CBVFormatArgImpl@str_format_internal@absl@@V123@X@Cr@std@@YA?AU?$pair@PBVFormatArgImpl@str_format_internal@absl@@PAV123@@01@PBVFormatArgImpl@str_format_internal@absl@@0PAV345@@Z ??$__cxx_atomic_compare_exchange_strong@PAVTimeZone@absl@@@Cr@std@@YA_NPAU?$__cxx_atomic_base_impl@PAVTimeZone@absl@@@01@PAPAVTimeZone@absl@@PAV34@W4memory_order@01@3@Z ??$__cxx_atomic_compare_exchange_weak@PAUHashtablezInfo@container_internal@absl@@@Cr@std@@YA_NPAU?$__cxx_atomic_base_impl@PAUHashtablezInfo@container_internal@absl@@@01@PAPAUHashtablezInfo@container_internal@absl@@PAU345@W4memory_order@01@3@Z @@ -644,6 +688,7 @@ ??$__debug_db_insert_c@V?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@YAXPAV?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@01@@Z ??$__debug_db_insert_c@V?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@YAXPAV?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@01@@Z ??$__debug_db_insert_c@V?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@YAXPAV?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@01@@Z + ??$__debug_db_insert_c@V?$vector@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@V?$allocator@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@@23@@Cr@std@@@Cr@std@@YAXPAV?$vector@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@V?$allocator@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@@23@@01@@Z ??$__debug_db_insert_c@V?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@YAXPAV?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@01@@Z ??$__debug_db_invalidate_all@V?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@@Cr@std@@YAXPAV?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@01@@Z ??$__debug_db_invalidate_all@V?$vector@PAVCordzHandle@cord_internal@absl@@V?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@YAXPAV?$vector@PAVCordzHandle@cord_internal@absl@@V?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@01@@Z @@ -656,12 +701,14 @@ ??$__debug_db_invalidate_all@V?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@YAXPAV?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@01@@Z ??$__destroy_at@PAPBVImpl@time_zone@cctz@time_internal@absl@@$0A@@Cr@std@@YAXPAPAPBVImpl@time_zone@cctz@time_internal@absl@@@Z ??$__destroy_at@PAUCordRep@cord_internal@absl@@$0A@@Cr@std@@YAXPAPAUCordRep@cord_internal@absl@@@Z + ??$__destroy_at@PAUPrefixCrc@CrcCordState@crc_internal@absl@@$0A@@Cr@std@@YAXPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ??$__destroy_at@PAVCordzHandle@cord_internal@absl@@$0A@@Cr@std@@YAXPAPAVCordzHandle@cord_internal@absl@@@Z ??$__destroy_at@PAVLogSink@absl@@$0A@@Cr@std@@YAXPAPAVLogSink@absl@@@Z ??$__destroy_at@PBVCordzHandle@cord_internal@absl@@$0A@@Cr@std@@YAXPAPBVCordzHandle@cord_internal@absl@@@Z ??$__destroy_at@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@$0A@@Cr@std@@YAXPAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@01@@Z ??$__destroy_at@UConversionItem@ParsedFormatBase@str_format_internal@absl@@$0A@@Cr@std@@YAXPAUConversionItem@ParsedFormatBase@str_format_internal@absl@@@Z ??$__destroy_at@UPayload@status_internal@absl@@$0A@@Cr@std@@YAXPAUPayload@status_internal@absl@@@Z + ??$__destroy_at@UPrefixCrc@CrcCordState@crc_internal@absl@@$0A@@Cr@std@@YAXPAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ??$__destroy_at@UTransition@cctz@time_internal@absl@@$0A@@Cr@std@@YAXPAUTransition@cctz@time_internal@absl@@@Z ??$__destroy_at@UTransitionType@cctz@time_internal@absl@@$0A@@Cr@std@@YAXPAUTransitionType@cctz@time_internal@absl@@@Z ??$__destroy_at@UViableSubstitution@strings_internal@absl@@$0A@@Cr@std@@YAXPAUViableSubstitution@strings_internal@absl@@@Z @@ -669,7 +716,9 @@ ??$__distance@PBUPayload@status_internal@absl@@@Cr@std@@YAHPBUPayload@status_internal@absl@@0Urandom_access_iterator_tag@01@@Z ??$__distance@PBUTransition@cctz@time_internal@absl@@@Cr@std@@YAHPBUTransition@cctz@time_internal@absl@@0Urandom_access_iterator_tag@01@@Z ??$__distance@PBVFormatArgImpl@str_format_internal@absl@@@Cr@std@@YAHPBVFormatArgImpl@str_format_internal@absl@@0Urandom_access_iterator_tag@01@@Z + ??$__distance@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@ABU1234@PBQBU1234@H$0A@@Cr@std@@@Cr@std@@YAHV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@ABU1234@PBQBU1234@H$0A@@01@0Urandom_access_iterator_tag@01@@Z ??$__distance@V?$move_iterator@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YAHV?$move_iterator@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@@01@0Urandom_access_iterator_tag@01@@Z + ??$__distance@V?$move_iterator@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@YAHV?$move_iterator@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@01@0Urandom_access_iterator_tag@01@@Z ??$__distance@V?$move_iterator@PAUTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YAHV?$move_iterator@PAUTransition@cctz@time_internal@absl@@@01@0Urandom_access_iterator_tag@01@@Z ??$__distance@V?$move_iterator@PAUTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YAHV?$move_iterator@PAUTransitionType@cctz@time_internal@absl@@@01@0Urandom_access_iterator_tag@01@@Z ??$__do_rehash@$00@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@AAEXI@Z @@ -682,6 +731,7 @@ ??$__launder@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YAPAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@01@PAU201@@Z ??$__lower_bound_impl@U_ClassicAlgPolicy@Cr@std@@PBUTransition@cctz@time_internal@absl@@PBU4567@U4567@U__identity@23@UByUnixTime@4567@@Cr@std@@YAPBUTransition@cctz@time_internal@absl@@PBU2345@0ABU2345@AAUByUnixTime@2345@AAU__identity@01@@Z ??$__move@U_ClassicAlgPolicy@Cr@std@@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@PAPAPBV45678@PAPAPBV45678@@Cr@std@@YA?AU?$pair@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@PAPAPBV12345@@01@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@00@Z + ??$__move@U_ClassicAlgPolicy@Cr@std@@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAPAU4567@PAPAU4567@@Cr@std@@YA?AU?$pair@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAPAU1234@@01@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@00@Z ??$__move@U_ClassicAlgPolicy@Cr@std@@PAPAVLogSink@absl@@PAPAV45@PAPAV45@@Cr@std@@YA?AU?$pair@PAPAVLogSink@absl@@PAPAV12@@01@PAPAVLogSink@absl@@00@Z ??$__move@U_ClassicAlgPolicy@Cr@std@@PAUTransition@cctz@time_internal@absl@@PAU4567@PAU4567@@Cr@std@@YA?AU?$pair@PAUTransition@cctz@time_internal@absl@@PAU1234@@01@PAUTransition@cctz@time_internal@absl@@00@Z ??$__move@U_ClassicAlgPolicy@Cr@std@@PAUTransitionType@cctz@time_internal@absl@@PAU4567@PAU4567@@Cr@std@@YA?AU?$pair@PAUTransitionType@cctz@time_internal@absl@@PAU1234@@01@PAUTransitionType@cctz@time_internal@absl@@00@Z @@ -693,9 +743,11 @@ ??$__move@U_ClassicAlgPolicy@Cr@std@@V?$reverse_iterator@PAUTransitionType@cctz@time_internal@absl@@@23@V423@V423@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PAUTransitionType@cctz@time_internal@absl@@@Cr@std@@V123@@01@V?$reverse_iterator@PAUTransitionType@cctz@time_internal@absl@@@01@00@Z ??$__move@U_ClassicAlgPolicy@Cr@std@@V?$reverse_iterator@PAUViableSubstitution@strings_internal@absl@@@23@V423@V423@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PAUViableSubstitution@strings_internal@absl@@@Cr@std@@V123@@01@V?$reverse_iterator@PAUViableSubstitution@strings_internal@absl@@@01@00@Z ??$__move_backward@U_ClassicAlgPolicy@Cr@std@@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@PAPAPBV45678@@Cr@std@@YAPAPAPBVImpl@time_zone@cctz@time_internal@absl@@PAPAPBV23456@00@Z + ??$__move_backward@U_ClassicAlgPolicy@Cr@std@@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAPAU4567@@Cr@std@@YAPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAPAU2345@00@Z ??$__move_backward@U_ClassicAlgPolicy@Cr@std@@PAUTransition@cctz@time_internal@absl@@PAU4567@@Cr@std@@YAPAUTransition@cctz@time_internal@absl@@PAU2345@00@Z ??$__move_backward@U_ClassicAlgPolicy@Cr@std@@PAUTransitionType@cctz@time_internal@absl@@PAU4567@@Cr@std@@YAPAUTransitionType@cctz@time_internal@absl@@PAU2345@00@Z ??$__move_backward_impl@U_ClassicAlgPolicy@Cr@std@@PAPBVImpl@time_zone@cctz@time_internal@absl@@PAPBV45678@@Cr@std@@YAPAPAPBVImpl@time_zone@cctz@time_internal@absl@@PAPAPBV23456@00@Z + ??$__move_backward_impl@U_ClassicAlgPolicy@Cr@std@@PAUPrefixCrc@CrcCordState@crc_internal@absl@@PAU4567@@Cr@std@@YAPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAPAU2345@00@Z ??$__move_backward_impl@U_ClassicAlgPolicy@Cr@std@@UTransition@cctz@time_internal@absl@@U4567@@Cr@std@@YAPAUTransition@cctz@time_internal@absl@@PAU2345@00@Z ??$__move_backward_impl@U_ClassicAlgPolicy@Cr@std@@UTransitionType@cctz@time_internal@absl@@U4567@@Cr@std@@YAPAUTransitionType@cctz@time_internal@absl@@PAU2345@00@Z ??$__move_impl@U_ClassicAlgPolicy@Cr@std@@PAPAVCordzHandle@cord_internal@absl@@PAPAV456@$0A@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PAPAVCordzHandle@cord_internal@absl@@@Cr@std@@V123@@01@V?$reverse_iterator@PAPAVCordzHandle@cord_internal@absl@@@01@00@Z @@ -703,6 +755,7 @@ ??$__move_impl@U_ClassicAlgPolicy@Cr@std@@PAPBVCordzHandle@cord_internal@absl@@PAPBV456@$0A@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PAPBVCordzHandle@cord_internal@absl@@@Cr@std@@V123@@01@V?$reverse_iterator@PAPBVCordzHandle@cord_internal@absl@@@01@00@Z ??$__move_impl@U_ClassicAlgPolicy@Cr@std@@PAPBVImpl@time_zone@cctz@time_internal@absl@@PAPBV45678@X@Cr@std@@YA?AU?$pair@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@PAPAPBV12345@@01@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@00@Z ??$__move_impl@U_ClassicAlgPolicy@Cr@std@@PAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PAU4567@$0A@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PAUConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@V123@@01@V?$reverse_iterator@PAUConversionItem@ParsedFormatBase@str_format_internal@absl@@@01@00@Z + ??$__move_impl@U_ClassicAlgPolicy@Cr@std@@PAUPrefixCrc@CrcCordState@crc_internal@absl@@PAU4567@X@Cr@std@@YA?AU?$pair@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAPAU1234@@01@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@00@Z ??$__move_impl@U_ClassicAlgPolicy@Cr@std@@PAUTransition@cctz@time_internal@absl@@PAU4567@$0A@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PAUTransition@cctz@time_internal@absl@@@Cr@std@@V123@@01@V?$reverse_iterator@PAUTransition@cctz@time_internal@absl@@@01@00@Z ??$__move_impl@U_ClassicAlgPolicy@Cr@std@@PAUTransitionType@cctz@time_internal@absl@@PAU4567@$0A@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PAUTransitionType@cctz@time_internal@absl@@@Cr@std@@V123@@01@V?$reverse_iterator@PAUTransitionType@cctz@time_internal@absl@@@01@00@Z ??$__move_impl@U_ClassicAlgPolicy@Cr@std@@PAUViableSubstitution@strings_internal@absl@@PAU456@$0A@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PAUViableSubstitution@strings_internal@absl@@@Cr@std@@V123@@01@V?$reverse_iterator@PAUViableSubstitution@strings_internal@absl@@@01@00@Z @@ -720,14 +773,17 @@ ??$__push_back_slow_path@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@?$vector@UConversionItem@ParsedFormatBase@str_format_internal@absl@@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@AAEX$$QAUConversionItem@ParsedFormatBase@str_format_internal@absl@@@Z ??$__rehash@$00@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@AAEXI@Z ??$__rewrap_iter@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@PAPAPBV12345@U?$__unwrap_iter_impl@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@$00@Cr@std@@@Cr@std@@YAPAPAPBVImpl@time_zone@cctz@time_internal@absl@@PAPAPBV23456@0@Z + ??$__rewrap_iter@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAPAU1234@U?$__unwrap_iter_impl@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@@Cr@std@@YAPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAPAU2345@0@Z ??$__rewrap_iter@PAPAVCordzHandle@cord_internal@absl@@PAPAV123@U?$__unwrap_iter_impl@PAPAVCordzHandle@cord_internal@absl@@$00@Cr@std@@@Cr@std@@YAPAPAVCordzHandle@cord_internal@absl@@PAPAV234@0@Z ??$__rewrap_iter@PAPAVLogSink@absl@@PAPAV12@U?$__unwrap_iter_impl@PAPAVLogSink@absl@@$00@Cr@std@@@Cr@std@@YAPAPAVLogSink@absl@@PAPAV23@0@Z ??$__rewrap_iter@PAPBVCordzHandle@cord_internal@absl@@PAPBV123@U?$__unwrap_iter_impl@PAPBVCordzHandle@cord_internal@absl@@$00@Cr@std@@@Cr@std@@YAPAPBVCordzHandle@cord_internal@absl@@PAPBV234@0@Z ??$__rewrap_iter@PAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PAU1234@U?$__unwrap_iter_impl@PAUConversionItem@ParsedFormatBase@str_format_internal@absl@@$00@Cr@std@@@Cr@std@@YAPAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PAU2345@0@Z + ??$__rewrap_iter@PAUPrefixCrc@CrcCordState@crc_internal@absl@@PAU1234@U?$__unwrap_iter_impl@PAUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@@Cr@std@@YAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAU2345@0@Z ??$__rewrap_iter@PAUTransition@cctz@time_internal@absl@@PAU1234@U?$__unwrap_iter_impl@PAUTransition@cctz@time_internal@absl@@$00@Cr@std@@@Cr@std@@YAPAUTransition@cctz@time_internal@absl@@PAU2345@0@Z ??$__rewrap_iter@PAUTransitionType@cctz@time_internal@absl@@PAU1234@U?$__unwrap_iter_impl@PAUTransitionType@cctz@time_internal@absl@@$00@Cr@std@@@Cr@std@@YAPAUTransitionType@cctz@time_internal@absl@@PAU2345@0@Z ??$__rewrap_iter@PAUViableSubstitution@strings_internal@absl@@PAU123@U?$__unwrap_iter_impl@PAUViableSubstitution@strings_internal@absl@@$00@Cr@std@@@Cr@std@@YAPAUViableSubstitution@strings_internal@absl@@PAU234@0@Z ??$__rewrap_iter@PAVFormatArgImpl@str_format_internal@absl@@PAV123@U?$__unwrap_iter_impl@PAVFormatArgImpl@str_format_internal@absl@@$00@Cr@std@@@Cr@std@@YAPAVFormatArgImpl@str_format_internal@absl@@PAV234@0@Z + ??$__rewrap_iter@PBUPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@U?$__unwrap_iter_impl@PBUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@@Cr@std@@YAPBUPrefixCrc@CrcCordState@crc_internal@absl@@PBU2345@0@Z ??$__rewrap_iter@PBVFormatArgImpl@str_format_internal@absl@@PBV123@U?$__unwrap_iter_impl@PBVFormatArgImpl@str_format_internal@absl@@$00@Cr@std@@@Cr@std@@YAPBVFormatArgImpl@str_format_internal@absl@@PBV234@0@Z ??$__rewrap_iter@V?$reverse_iterator@PAPAVCordzHandle@cord_internal@absl@@@Cr@std@@V123@U?$__unwrap_iter_impl@V?$reverse_iterator@PAPAVCordzHandle@cord_internal@absl@@@Cr@std@@$0A@@23@@Cr@std@@YA?AV?$reverse_iterator@PAPAVCordzHandle@cord_internal@absl@@@01@V201@0@Z ??$__rewrap_iter@V?$reverse_iterator@PAPAVLogSink@absl@@@Cr@std@@V123@U?$__unwrap_iter_impl@V?$reverse_iterator@PAPAVLogSink@absl@@@Cr@std@@$0A@@23@@Cr@std@@YA?AV?$reverse_iterator@PAPAVLogSink@absl@@@01@V201@0@Z @@ -736,13 +792,17 @@ ??$__rewrap_iter@V?$reverse_iterator@PAUTransition@cctz@time_internal@absl@@@Cr@std@@V123@U?$__unwrap_iter_impl@V?$reverse_iterator@PAUTransition@cctz@time_internal@absl@@@Cr@std@@$0A@@23@@Cr@std@@YA?AV?$reverse_iterator@PAUTransition@cctz@time_internal@absl@@@01@V201@0@Z ??$__rewrap_iter@V?$reverse_iterator@PAUTransitionType@cctz@time_internal@absl@@@Cr@std@@V123@U?$__unwrap_iter_impl@V?$reverse_iterator@PAUTransitionType@cctz@time_internal@absl@@@Cr@std@@$0A@@23@@Cr@std@@YA?AV?$reverse_iterator@PAUTransitionType@cctz@time_internal@absl@@@01@V201@0@Z ??$__rewrap_iter@V?$reverse_iterator@PAUViableSubstitution@strings_internal@absl@@@Cr@std@@V123@U?$__unwrap_iter_impl@V?$reverse_iterator@PAUViableSubstitution@strings_internal@absl@@@Cr@std@@$0A@@23@@Cr@std@@YA?AV?$reverse_iterator@PAUViableSubstitution@strings_internal@absl@@@01@V201@0@Z + ??$__rewrap_range@PBUPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@PBU1234@@Cr@std@@YAPBUPrefixCrc@CrcCordState@crc_internal@absl@@PBU2345@0@Z ??$__rewrap_range@PBVFormatArgImpl@str_format_internal@absl@@PBV123@PBV123@@Cr@std@@YAPBVFormatArgImpl@str_format_internal@absl@@PBV234@0@Z + ??$__to_address@$$CBUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@YAPBUPrefixCrc@CrcCordState@crc_internal@absl@@PBU2345@@Z ??$__to_address@$$CBVFormatArgImpl@str_format_internal@absl@@@Cr@std@@YAPBVFormatArgImpl@str_format_internal@absl@@PBV234@@Z ??$__to_address@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@YAPAPAPBVImpl@time_zone@cctz@time_internal@absl@@PAPAPBV23456@@Z + ??$__to_address@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@YAPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAPAU2345@@Z ??$__to_address@PAVCordzHandle@cord_internal@absl@@@Cr@std@@YAPAPAVCordzHandle@cord_internal@absl@@PAPAV234@@Z ??$__to_address@PAVLogSink@absl@@@Cr@std@@YAPAPAVLogSink@absl@@PAPAV23@@Z ??$__to_address@PBVCordzHandle@cord_internal@absl@@@Cr@std@@YAPAPBVCordzHandle@cord_internal@absl@@PAPBV234@@Z ??$__to_address@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@YAPAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PAU2345@@Z + ??$__to_address@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@YAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAU2345@@Z ??$__to_address@UTransition@cctz@time_internal@absl@@@Cr@std@@YAPAUTransition@cctz@time_internal@absl@@PAU2345@@Z ??$__to_address@UTransitionType@cctz@time_internal@absl@@@Cr@std@@YAPAUTransitionType@cctz@time_internal@absl@@PAU2345@@Z ??$__to_address@UViableSubstitution@strings_internal@absl@@@Cr@std@@YAPAUViableSubstitution@strings_internal@absl@@PAU234@@Z @@ -758,14 +818,17 @@ ??$__uninitialized_allocator_move_if_noexcept@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@V?$reverse_iterator@PAUTransitionType@cctz@time_internal@absl@@@23@V423@UTransitionType@cctz@time_internal@absl@@X@Cr@std@@YA?AV?$reverse_iterator@PAUTransitionType@cctz@time_internal@absl@@@01@AAV?$allocator@UTransitionType@cctz@time_internal@absl@@@01@V201@11@Z ??$__uninitialized_allocator_move_if_noexcept@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@V?$reverse_iterator@PAUViableSubstitution@strings_internal@absl@@@23@V423@UViableSubstitution@strings_internal@absl@@X@Cr@std@@YA?AV?$reverse_iterator@PAUViableSubstitution@strings_internal@absl@@@01@AAV?$allocator@UViableSubstitution@strings_internal@absl@@@01@V201@11@Z ??$__unwrap_iter@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@U?$__unwrap_iter_impl@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPAPAPBVImpl@time_zone@cctz@time_internal@absl@@PAPAPBV23456@@Z + ??$__unwrap_iter@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@U?$__unwrap_iter_impl@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAPAU2345@@Z ??$__unwrap_iter@PAPAVCordzHandle@cord_internal@absl@@U?$__unwrap_iter_impl@PAPAVCordzHandle@cord_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPAPAVCordzHandle@cord_internal@absl@@PAPAV234@@Z ??$__unwrap_iter@PAPAVLogSink@absl@@U?$__unwrap_iter_impl@PAPAVLogSink@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPAPAVLogSink@absl@@PAPAV23@@Z ??$__unwrap_iter@PAPBVCordzHandle@cord_internal@absl@@U?$__unwrap_iter_impl@PAPBVCordzHandle@cord_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPAPBVCordzHandle@cord_internal@absl@@PAPBV234@@Z ??$__unwrap_iter@PAUConversionItem@ParsedFormatBase@str_format_internal@absl@@U?$__unwrap_iter_impl@PAUConversionItem@ParsedFormatBase@str_format_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PAU2345@@Z + ??$__unwrap_iter@PAUPrefixCrc@CrcCordState@crc_internal@absl@@U?$__unwrap_iter_impl@PAUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAU2345@@Z ??$__unwrap_iter@PAUTransition@cctz@time_internal@absl@@U?$__unwrap_iter_impl@PAUTransition@cctz@time_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPAUTransition@cctz@time_internal@absl@@PAU2345@@Z ??$__unwrap_iter@PAUTransitionType@cctz@time_internal@absl@@U?$__unwrap_iter_impl@PAUTransitionType@cctz@time_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPAUTransitionType@cctz@time_internal@absl@@PAU2345@@Z ??$__unwrap_iter@PAUViableSubstitution@strings_internal@absl@@U?$__unwrap_iter_impl@PAUViableSubstitution@strings_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPAUViableSubstitution@strings_internal@absl@@PAU234@@Z ??$__unwrap_iter@PAVFormatArgImpl@str_format_internal@absl@@U?$__unwrap_iter_impl@PAVFormatArgImpl@str_format_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPAVFormatArgImpl@str_format_internal@absl@@PAV234@@Z + ??$__unwrap_iter@PBUPrefixCrc@CrcCordState@crc_internal@absl@@U?$__unwrap_iter_impl@PBUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPBUPrefixCrc@CrcCordState@crc_internal@absl@@PBU2345@@Z ??$__unwrap_iter@PBVFormatArgImpl@str_format_internal@absl@@U?$__unwrap_iter_impl@PBVFormatArgImpl@str_format_internal@absl@@$00@Cr@std@@$0A@@Cr@std@@YAPBVFormatArgImpl@str_format_internal@absl@@PBV234@@Z ??$__unwrap_iter@V?$reverse_iterator@PAPAVCordzHandle@cord_internal@absl@@@Cr@std@@U?$__unwrap_iter_impl@V?$reverse_iterator@PAPAVCordzHandle@cord_internal@absl@@@Cr@std@@$0A@@23@$0A@@Cr@std@@YA?AV?$reverse_iterator@PAPAVCordzHandle@cord_internal@absl@@@01@V201@@Z ??$__unwrap_iter@V?$reverse_iterator@PAPAVLogSink@absl@@@Cr@std@@U?$__unwrap_iter_impl@V?$reverse_iterator@PAPAVLogSink@absl@@@Cr@std@@$0A@@23@$0A@@Cr@std@@YA?AV?$reverse_iterator@PAPAVLogSink@absl@@@01@V201@@Z @@ -774,6 +837,7 @@ ??$__unwrap_iter@V?$reverse_iterator@PAUTransition@cctz@time_internal@absl@@@Cr@std@@U?$__unwrap_iter_impl@V?$reverse_iterator@PAUTransition@cctz@time_internal@absl@@@Cr@std@@$0A@@23@$0A@@Cr@std@@YA?AV?$reverse_iterator@PAUTransition@cctz@time_internal@absl@@@01@V201@@Z ??$__unwrap_iter@V?$reverse_iterator@PAUTransitionType@cctz@time_internal@absl@@@Cr@std@@U?$__unwrap_iter_impl@V?$reverse_iterator@PAUTransitionType@cctz@time_internal@absl@@@Cr@std@@$0A@@23@$0A@@Cr@std@@YA?AV?$reverse_iterator@PAUTransitionType@cctz@time_internal@absl@@@01@V201@@Z ??$__unwrap_iter@V?$reverse_iterator@PAUViableSubstitution@strings_internal@absl@@@Cr@std@@U?$__unwrap_iter_impl@V?$reverse_iterator@PAUViableSubstitution@strings_internal@absl@@@Cr@std@@$0A@@23@$0A@@Cr@std@@YA?AV?$reverse_iterator@PAUViableSubstitution@strings_internal@absl@@@01@V201@@Z + ??$__unwrap_range@PBUPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@@Cr@std@@YA?A?<auto>@@PBUPrefixCrc@CrcCordState@crc_internal@absl@@0@Z ??$__unwrap_range@PBVFormatArgImpl@str_format_internal@absl@@PBV123@@Cr@std@@YA?A?<auto>@@PBVFormatArgImpl@str_format_internal@absl@@0@Z ??$__upper_bound@U_ClassicAlgPolicy@Cr@std@@UByCivilTime@Transition@cctz@time_internal@absl@@PBU5678@PBU5678@U5678@U__identity@23@@Cr@std@@YAPBUTransition@cctz@time_internal@absl@@PBU2345@0ABU2345@$$QAUByCivilTime@2345@$$QAU__identity@01@@Z ??$__upper_bound@U_ClassicAlgPolicy@Cr@std@@UByUnixTime@Transition@cctz@time_internal@absl@@PBU5678@PBU5678@U5678@U__identity@23@@Cr@std@@YAPBUTransition@cctz@time_internal@absl@@PBU2345@0ABU2345@$$QAUByUnixTime@2345@$$QAU__identity@01@@Z @@ -781,6 +845,7 @@ ??$advance@PBUTransition@cctz@time_internal@absl@@HHX@Cr@std@@YAXAAPBUTransition@cctz@time_internal@absl@@H@Z ??$advance@PBVFormatArgImpl@str_format_internal@absl@@IIX@Cr@std@@YAXAAPBVFormatArgImpl@str_format_internal@absl@@I@Z ??$assign@PBVFormatArgImpl@str_format_internal@absl@@$0A@@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QAEXPBVFormatArgImpl@str_format_internal@absl@@0@Z + ??$assign@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@ABU1234@PBQBU1234@H$0A@@Cr@std@@@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEXV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@ABU1234@PBQBU1234@H$0A@@12@0PAX@Z ??$assign@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@?$optional_data_base@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@optional_internal@absl@@IAEX$$QAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ??$call_once@A6AXXZ$$V@absl@@YAXAAVonce_flag@0@A6AXXZ@Z ??$combine@H$$V@?$HashStateBase@VMixingHashState@hash_internal@absl@@@hash_internal@absl@@SA?AVMixingHashState@12@V312@ABH@Z @@ -792,6 +857,8 @@ ??$construct@PAPBVImpl@time_zone@cctz@time_internal@absl@@PAPBV12345@XX@?$allocator_traits@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@12@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@$$QAPAPBV45678@@Z ??$construct@PAUCordRep@cord_internal@absl@@ABQAU123@XX@?$allocator_traits@V?$allocator@PAUCordRep@cord_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@PAUCordRep@cord_internal@absl@@@12@PAPAUCordRep@cord_internal@absl@@ABQAU456@@Z ??$construct@PAUCordRep@cord_internal@absl@@PAU123@XX@?$allocator_traits@V?$allocator@PAUCordRep@cord_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@PAUCordRep@cord_internal@absl@@@12@PAPAUCordRep@cord_internal@absl@@$$QAPAU456@@Z + ??$construct@PAUPrefixCrc@CrcCordState@crc_internal@absl@@ABQAU1234@XX@?$allocator_traits@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@12@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@ABQAU4567@@Z + ??$construct@PAUPrefixCrc@CrcCordState@crc_internal@absl@@PAU1234@XX@?$allocator_traits@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@12@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@$$QAPAU4567@@Z ??$construct@PAVCordzHandle@cord_internal@absl@@ABQAV123@XX@?$allocator_traits@V?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@PAVCordzHandle@cord_internal@absl@@@12@PAPAVCordzHandle@cord_internal@absl@@ABQAV456@@Z ??$construct@PAVLogSink@absl@@ABQAV12@XX@?$allocator_traits@V?$allocator@PAVLogSink@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@PAVLogSink@absl@@@12@PAPAVLogSink@absl@@ABQAV45@@Z ??$construct@PAVLogSink@absl@@PAV12@XX@?$allocator_traits@V?$allocator@PAVLogSink@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@PAVLogSink@absl@@@12@PAPAVLogSink@absl@@$$QAPAV45@@Z @@ -801,6 +868,8 @@ ??$construct@UConversionItem@ParsedFormatBase@str_format_internal@absl@@U1234@XX@?$allocator_traits@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@12@PAUConversionItem@ParsedFormatBase@str_format_internal@absl@@$$QAU4567@@Z ??$construct@UPayload@status_internal@absl@@ABU123@XX@?$allocator_traits@V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@UPayload@status_internal@absl@@@12@PAUPayload@status_internal@absl@@ABU456@@Z ??$construct@UPayload@status_internal@absl@@U123@XX@?$allocator_traits@V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@UPayload@status_internal@absl@@@12@PAUPayload@status_internal@absl@@$$QAU456@@Z + ??$construct@UPrefixCrc@CrcCordState@crc_internal@absl@@ABU1234@XX@?$allocator_traits@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@12@PAUPrefixCrc@CrcCordState@crc_internal@absl@@ABU4567@@Z + ??$construct@UPrefixCrc@CrcCordState@crc_internal@absl@@U1234@XX@?$allocator_traits@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@12@PAUPrefixCrc@CrcCordState@crc_internal@absl@@$$QAU4567@@Z ??$construct@UTransition@cctz@time_internal@absl@@$$VXX@?$allocator_traits@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@UTransition@cctz@time_internal@absl@@@12@PAUTransition@cctz@time_internal@absl@@@Z ??$construct@UTransition@cctz@time_internal@absl@@ABU1234@XX@?$allocator_traits@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@UTransition@cctz@time_internal@absl@@@12@PAUTransition@cctz@time_internal@absl@@ABU4567@@Z ??$construct@UTransition@cctz@time_internal@absl@@U1234@XX@?$allocator_traits@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@UTransition@cctz@time_internal@absl@@@12@PAUTransition@cctz@time_internal@absl@@$$QAU4567@@Z @@ -812,6 +881,8 @@ ??$construct_at@PAPBVImpl@time_zone@cctz@time_internal@absl@@PAPBV12345@PAPAPBV12345@@Cr@std@@YAPAPAPBVImpl@time_zone@cctz@time_internal@absl@@PAPAPBV23456@$$QAPAPBV23456@@Z ??$construct_at@PAUCordRep@cord_internal@absl@@ABQAU123@PAPAU123@@Cr@std@@YAPAPAUCordRep@cord_internal@absl@@PAPAU234@ABQAU234@@Z ??$construct_at@PAUCordRep@cord_internal@absl@@PAU123@PAPAU123@@Cr@std@@YAPAPAUCordRep@cord_internal@absl@@PAPAU234@$$QAPAU234@@Z + ??$construct_at@PAUPrefixCrc@CrcCordState@crc_internal@absl@@ABQAU1234@PAPAU1234@@Cr@std@@YAPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAPAU2345@ABQAU2345@@Z + ??$construct_at@PAUPrefixCrc@CrcCordState@crc_internal@absl@@PAU1234@PAPAU1234@@Cr@std@@YAPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAPAU2345@$$QAPAU2345@@Z ??$construct_at@PAVCordzHandle@cord_internal@absl@@ABQAV123@PAPAV123@@Cr@std@@YAPAPAVCordzHandle@cord_internal@absl@@PAPAV234@ABQAV234@@Z ??$construct_at@PAVLogSink@absl@@ABQAV12@PAPAV12@@Cr@std@@YAPAPAVLogSink@absl@@PAPAV23@ABQAV23@@Z ??$construct_at@PAVLogSink@absl@@PAV12@PAPAV12@@Cr@std@@YAPAPAVLogSink@absl@@PAPAV23@$$QAPAV23@@Z @@ -821,36 +892,45 @@ ??$construct_at@UConversionItem@ParsedFormatBase@str_format_internal@absl@@U1234@PAU1234@@Cr@std@@YAPAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PAU2345@$$QAU2345@@Z ??$construct_at@UPayload@status_internal@absl@@ABU123@PAU123@@Cr@std@@YAPAUPayload@status_internal@absl@@PAU234@ABU234@@Z ??$construct_at@UPayload@status_internal@absl@@U123@PAU123@@Cr@std@@YAPAUPayload@status_internal@absl@@PAU234@$$QAU234@@Z + ??$construct_at@UPrefixCrc@CrcCordState@crc_internal@absl@@ABU1234@PAU1234@@Cr@std@@YAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAU2345@ABU2345@@Z + ??$construct_at@UPrefixCrc@CrcCordState@crc_internal@absl@@U1234@PAU1234@@Cr@std@@YAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAU2345@$$QAU2345@@Z ??$construct_at@UTransition@cctz@time_internal@absl@@$$VPAU1234@@Cr@std@@YAPAUTransition@cctz@time_internal@absl@@PAU2345@@Z ??$construct_at@UTransition@cctz@time_internal@absl@@ABU1234@PAU1234@@Cr@std@@YAPAUTransition@cctz@time_internal@absl@@PAU2345@ABU2345@@Z ??$construct_at@UTransition@cctz@time_internal@absl@@U1234@PAU1234@@Cr@std@@YAPAUTransition@cctz@time_internal@absl@@PAU2345@$$QAU2345@@Z ??$construct_at@UTransitionType@cctz@time_internal@absl@@$$VPAU1234@@Cr@std@@YAPAUTransitionType@cctz@time_internal@absl@@PAU2345@@Z ??$construct_at@UTransitionType@cctz@time_internal@absl@@U1234@PAU1234@@Cr@std@@YAPAUTransitionType@cctz@time_internal@absl@@PAU2345@$$QAU2345@@Z ??$construct_at@UViableSubstitution@strings_internal@absl@@AAVstring_view@3@ABV43@AAIPAU123@@Cr@std@@YAPAUViableSubstitution@strings_internal@absl@@PAU234@AAVstring_view@4@ABV54@AAI@Z + ??$copy@PBUPrefixCrc@CrcCordState@crc_internal@absl@@PAU1234@@Cr@std@@YAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PBU2345@0PAU2345@@Z + ??$copy@PBUPrefixCrc@CrcCordState@crc_internal@absl@@U1234@PAU1234@AAU1234@PAPAU1234@H$0A@@Cr@std@@YA?AV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PAU1234@AAU1234@PAPAU1234@H$0A@@01@PBUPrefixCrc@CrcCordState@crc_internal@absl@@0V201@PAX@Z ??$copy@PBVFormatArgImpl@str_format_internal@absl@@PAV123@@Cr@std@@YAPAVFormatArgImpl@str_format_internal@absl@@PBV234@0PAV234@@Z + ??$copy@UPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@ABU1234@PBQBU1234@H$0A@U1234@PAU1234@AAU1234@PAPAU1234@H$0A@@Cr@std@@YA?AV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PAU1234@AAU1234@PAPAU1234@H$0A@@01@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@ABU1234@PBQBU1234@H$0A@@01@0V201@@Z ??$countl_zero@I@absl@@YAHI@Z ??$countl_zero@_K@absl@@YAH_K@Z ??$countr_zero@I@absl@@YAHI@Z ??$destroy@PAPBVImpl@time_zone@cctz@time_internal@absl@@XX@?$allocator_traits@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@12@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@@Z ??$destroy@PAUCordRep@cord_internal@absl@@XX@?$allocator_traits@V?$allocator@PAUCordRep@cord_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@PAUCordRep@cord_internal@absl@@@12@PAPAUCordRep@cord_internal@absl@@@Z + ??$destroy@PAUPrefixCrc@CrcCordState@crc_internal@absl@@XX@?$allocator_traits@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@12@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ??$destroy@PAVCordzHandle@cord_internal@absl@@XX@?$allocator_traits@V?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@PAVCordzHandle@cord_internal@absl@@@12@PAPAVCordzHandle@cord_internal@absl@@@Z ??$destroy@PAVLogSink@absl@@XX@?$allocator_traits@V?$allocator@PAVLogSink@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@PAVLogSink@absl@@@12@PAPAVLogSink@absl@@@Z ??$destroy@PBVCordzHandle@cord_internal@absl@@XX@?$allocator_traits@V?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@PBVCordzHandle@cord_internal@absl@@@12@PAPBVCordzHandle@cord_internal@absl@@@Z ??$destroy@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@12@PAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@12@@Z ??$destroy@UConversionItem@ParsedFormatBase@str_format_internal@absl@@XX@?$allocator_traits@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@12@PAUConversionItem@ParsedFormatBase@str_format_internal@absl@@@Z ??$destroy@UPayload@status_internal@absl@@XX@?$allocator_traits@V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@UPayload@status_internal@absl@@@12@PAUPayload@status_internal@absl@@@Z + ??$destroy@UPrefixCrc@CrcCordState@crc_internal@absl@@XX@?$allocator_traits@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@12@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ??$destroy@UTransition@cctz@time_internal@absl@@XX@?$allocator_traits@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@UTransition@cctz@time_internal@absl@@@12@PAUTransition@cctz@time_internal@absl@@@Z ??$destroy@UTransitionType@cctz@time_internal@absl@@XX@?$allocator_traits@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@UTransitionType@cctz@time_internal@absl@@@12@PAUTransitionType@cctz@time_internal@absl@@@Z ??$destroy@UViableSubstitution@strings_internal@absl@@XX@?$allocator_traits@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@UViableSubstitution@strings_internal@absl@@@12@PAUViableSubstitution@strings_internal@absl@@@Z ??$destroy@VFormatArgImpl@str_format_internal@absl@@XX@?$allocator_traits@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@VFormatArgImpl@str_format_internal@absl@@@12@PAVFormatArgImpl@str_format_internal@absl@@@Z ??$destroy_at@PAPBVImpl@time_zone@cctz@time_internal@absl@@$0A@@Cr@std@@YAXPAPAPBVImpl@time_zone@cctz@time_internal@absl@@@Z ??$destroy_at@PAUCordRep@cord_internal@absl@@$0A@@Cr@std@@YAXPAPAUCordRep@cord_internal@absl@@@Z + ??$destroy_at@PAUPrefixCrc@CrcCordState@crc_internal@absl@@$0A@@Cr@std@@YAXPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ??$destroy_at@PAVCordzHandle@cord_internal@absl@@$0A@@Cr@std@@YAXPAPAVCordzHandle@cord_internal@absl@@@Z ??$destroy_at@PAVLogSink@absl@@$0A@@Cr@std@@YAXPAPAVLogSink@absl@@@Z ??$destroy_at@PBVCordzHandle@cord_internal@absl@@$0A@@Cr@std@@YAXPAPBVCordzHandle@cord_internal@absl@@@Z ??$destroy_at@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@$0A@@Cr@std@@YAXPAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@01@@Z ??$destroy_at@UConversionItem@ParsedFormatBase@str_format_internal@absl@@$0A@@Cr@std@@YAXPAUConversionItem@ParsedFormatBase@str_format_internal@absl@@@Z ??$destroy_at@UPayload@status_internal@absl@@$0A@@Cr@std@@YAXPAUPayload@status_internal@absl@@@Z + ??$destroy_at@UPrefixCrc@CrcCordState@crc_internal@absl@@$0A@@Cr@std@@YAXPAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ??$destroy_at@UTransition@cctz@time_internal@absl@@$0A@@Cr@std@@YAXPAUTransition@cctz@time_internal@absl@@@Z ??$destroy_at@UTransitionType@cctz@time_internal@absl@@$0A@@Cr@std@@YAXPAUTransitionType@cctz@time_internal@absl@@@Z ??$destroy_at@UViableSubstitution@strings_internal@absl@@$0A@@Cr@std@@YAXPAUViableSubstitution@strings_internal@absl@@@Z @@ -859,7 +939,9 @@ ??$distance@PBUTransition@cctz@time_internal@absl@@@?$_IterOps@U_ClassicAlgPolicy@Cr@std@@@Cr@std@@SAHPBUTransition@cctz@time_internal@absl@@0@Z ??$distance@PBUTransition@cctz@time_internal@absl@@@Cr@std@@YAHPBUTransition@cctz@time_internal@absl@@0@Z ??$distance@PBVFormatArgImpl@str_format_internal@absl@@@Cr@std@@YAHPBVFormatArgImpl@str_format_internal@absl@@0@Z + ??$distance@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@ABU1234@PBQBU1234@H$0A@@Cr@std@@@Cr@std@@YAHV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@ABU1234@PBQBU1234@H$0A@@01@0@Z ??$distance@V?$move_iterator@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YAHV?$move_iterator@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@@01@0@Z + ??$distance@V?$move_iterator@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@YAHV?$move_iterator@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@01@0@Z ??$distance@V?$move_iterator@PAUTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YAHV?$move_iterator@PAUTransition@cctz@time_internal@absl@@@01@0@Z ??$distance@V?$move_iterator@PAUTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YAHV?$move_iterator@PAUTransitionType@cctz@time_internal@absl@@@01@0@Z ??$emplace@$$V@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE?AV?$__wrap_iter@PAUTransition@cctz@time_internal@absl@@@12@V?$__wrap_iter@PBUTransition@cctz@time_internal@absl@@@12@@Z @@ -928,6 +1010,7 @@ ??$make_pair@AAV?$reverse_iterator@PAUTransitionType@cctz@time_internal@absl@@@Cr@std@@V123@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PAUTransitionType@cctz@time_internal@absl@@@Cr@std@@V123@@01@AAV?$reverse_iterator@PAUTransitionType@cctz@time_internal@absl@@@01@$$QAV301@@Z ??$make_pair@AAV?$reverse_iterator@PAUViableSubstitution@strings_internal@absl@@@Cr@std@@V123@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PAUViableSubstitution@strings_internal@absl@@@Cr@std@@V123@@01@AAV?$reverse_iterator@PAUViableSubstitution@strings_internal@absl@@@01@$$QAV301@@Z ??$make_pair@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@PAPAPBV12345@@Cr@std@@YA?AU?$pair@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@PAPAPBV12345@@01@$$QAPAPAPBVImpl@time_zone@cctz@time_internal@absl@@0@Z + ??$make_pair@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAPAU1234@@Cr@std@@YA?AU?$pair@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAPAU1234@@01@$$QAPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@0@Z ??$make_pair@PAPAVCordzHandle@cord_internal@absl@@PAPAV123@@Cr@std@@YA?AU?$pair@PAPAVCordzHandle@cord_internal@absl@@PAPAV123@@01@$$QAPAPAVCordzHandle@cord_internal@absl@@0@Z ??$make_pair@PAPAVLogSink@absl@@PAPAV12@@Cr@std@@YA?AU?$pair@PAPAVLogSink@absl@@PAPAV12@@01@$$QAPAPAVLogSink@absl@@0@Z ??$make_pair@PAPBVCordzHandle@cord_internal@absl@@PAPBV123@@Cr@std@@YA?AU?$pair@PAPBVCordzHandle@cord_internal@absl@@PAPBV123@@01@$$QAPAPBVCordzHandle@cord_internal@absl@@0@Z @@ -935,6 +1018,7 @@ ??$make_pair@PAUTransition@cctz@time_internal@absl@@PAU1234@@Cr@std@@YA?AU?$pair@PAUTransition@cctz@time_internal@absl@@PAU1234@@01@$$QAPAUTransition@cctz@time_internal@absl@@0@Z ??$make_pair@PAUTransitionType@cctz@time_internal@absl@@PAU1234@@Cr@std@@YA?AU?$pair@PAUTransitionType@cctz@time_internal@absl@@PAU1234@@01@$$QAPAUTransitionType@cctz@time_internal@absl@@0@Z ??$make_pair@PAUViableSubstitution@strings_internal@absl@@PAU123@@Cr@std@@YA?AU?$pair@PAUViableSubstitution@strings_internal@absl@@PAU123@@01@$$QAPAUViableSubstitution@strings_internal@absl@@0@Z + ??$make_pair@PBUPrefixCrc@CrcCordState@crc_internal@absl@@PAU1234@@Cr@std@@YA?AU?$pair@PBUPrefixCrc@CrcCordState@crc_internal@absl@@PAU1234@@01@$$QAPBUPrefixCrc@CrcCordState@crc_internal@absl@@$$QAPAU3456@@Z ??$make_pair@PBVFormatArgImpl@str_format_internal@absl@@PAV123@@Cr@std@@YA?AU?$pair@PBVFormatArgImpl@str_format_internal@absl@@PAV123@@01@$$QAPBVFormatArgImpl@str_format_internal@absl@@$$QAPAV345@@Z ??$make_pair@V?$reverse_iterator@PAPAVCordzHandle@cord_internal@absl@@@Cr@std@@V123@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PAPAVCordzHandle@cord_internal@absl@@@Cr@std@@V123@@01@$$QAV?$reverse_iterator@PAPAVCordzHandle@cord_internal@absl@@@01@0@Z ??$make_pair@V?$reverse_iterator@PAPAVLogSink@absl@@@Cr@std@@V123@@Cr@std@@YA?AU?$pair@V?$reverse_iterator@PAPAVLogSink@absl@@@Cr@std@@V123@@01@$$QAV?$reverse_iterator@PAPAVLogSink@absl@@@01@0@Z @@ -946,11 +1030,13 @@ ??$make_unique@ULogMessageData@LogMessage@log_internal@absl@@AAPBDAAHAAW4LogSeverity@4@VTime@4@@Cr@std@@YA?AV?$unique_ptr@ULogMessageData@LogMessage@log_internal@absl@@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@@01@AAPBDAAHAAW4LogSeverity@absl@@$$QAVTime@4@@Z ??$make_unique@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@$$V@Cr@std@@YA?AV?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@01@XZ ??$make_unique@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@AAV12@@Cr@std@@YA?AV?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@01@AAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Z + ??$make_unique@VFallbackCrcMemcpyEngine@crc_internal@absl@@$$V@Cr@std@@YA?AV?$unique_ptr@VFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@01@XZ ??$max@VDuration@absl@@@Cr@std@@YAABVDuration@absl@@ABV23@0@Z ??$max@VDuration@absl@@U?$__less@VDuration@absl@@V12@@Cr@std@@@Cr@std@@YAABVDuration@absl@@ABV23@0U?$__less@VDuration@absl@@V12@@01@@Z ??$max_size@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAIABV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@12@@Z ??$max_size@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@XX@?$allocator_traits@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@SAIABV?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@12@@Z ??$max_size@V?$allocator@PAUCordRep@cord_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@PAUCordRep@cord_internal@absl@@@Cr@std@@@Cr@std@@SAIABV?$allocator@PAUCordRep@cord_internal@absl@@@12@@Z + ??$max_size@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAIABV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@12@@Z ??$max_size@V?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@SAIABV?$allocator@PAVCordzHandle@cord_internal@absl@@@12@@Z ??$max_size@V?$allocator@PAVLogSink@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@PAVLogSink@absl@@@Cr@std@@@Cr@std@@SAIABV?$allocator@PAVLogSink@absl@@@12@@Z ??$max_size@V?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@SAIABV?$allocator@PBVCordzHandle@cord_internal@absl@@@12@@Z @@ -958,6 +1044,7 @@ ??$max_size@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@XX@?$allocator_traits@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@SAIABV?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@12@@Z ??$max_size@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@SAIABV?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@12@@Z ??$max_size@V?$allocator@UPayload@status_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@Cr@std@@SAIABV?$allocator@UPayload@status_internal@absl@@@12@@Z + ??$max_size@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAIABV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@12@@Z ??$max_size@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAIABV?$allocator@UTransition@cctz@time_internal@absl@@@12@@Z ??$max_size@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAIABV?$allocator@UTransitionType@cctz@time_internal@absl@@@12@@Z ??$max_size@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@XX@?$allocator_traits@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@SAIABV?$allocator@UViableSubstitution@strings_internal@absl@@@12@@Z @@ -966,6 +1053,7 @@ ??$min@VDuration@absl@@U?$__less@VDuration@absl@@V12@@Cr@std@@@Cr@std@@YAABVDuration@absl@@ABV23@0U?$__less@VDuration@absl@@V12@@01@@Z ??$move@AA_J@absl@@YA$$QA_JAA_J@Z ??$move@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@PAPAPBV12345@@Cr@std@@YAPAPAPBVImpl@time_zone@cctz@time_internal@absl@@PAPAPBV23456@00@Z + ??$move@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAPAU1234@@Cr@std@@YAPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAPAU2345@00@Z ??$move@PAPAVLogSink@absl@@PAPAV12@@Cr@std@@YAPAPAVLogSink@absl@@PAPAV23@00@Z ??$move@PAUTransition@cctz@time_internal@absl@@PAU1234@@Cr@std@@YAPAUTransition@cctz@time_internal@absl@@PAU2345@00@Z ??$move@PAUTransitionType@cctz@time_internal@absl@@PAU1234@@Cr@std@@YAPAUTransitionType@cctz@time_internal@absl@@PAU2345@00@Z @@ -977,12 +1065,15 @@ ??$move@V?$reverse_iterator@PAUTransitionType@cctz@time_internal@absl@@@Cr@std@@V123@@Cr@std@@YA?AV?$reverse_iterator@PAUTransitionType@cctz@time_internal@absl@@@01@V201@00@Z ??$move@V?$reverse_iterator@PAUViableSubstitution@strings_internal@absl@@@Cr@std@@V123@@Cr@std@@YA?AV?$reverse_iterator@PAUViableSubstitution@strings_internal@absl@@@01@V201@00@Z ??$move_backward@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@PAPAPBV12345@@Cr@std@@YAPAPAPBVImpl@time_zone@cctz@time_internal@absl@@PAPAPBV23456@00@Z + ??$move_backward@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAPAU1234@@Cr@std@@YAPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAPAU2345@00@Z ??$move_backward@PAUTransition@cctz@time_internal@absl@@PAU1234@@Cr@std@@YAPAUTransition@cctz@time_internal@absl@@PAU2345@00@Z ??$move_backward@PAUTransitionType@cctz@time_internal@absl@@PAU1234@@Cr@std@@YAPAUTransitionType@cctz@time_internal@absl@@PAU2345@00@Z ??$next@AAPBUTransition@cctz@time_internal@absl@@@?$_IterOps@U_ClassicAlgPolicy@Cr@std@@@Cr@std@@SAPBUTransition@cctz@time_internal@absl@@AAPBU3456@H@Z ??$next@PBUTransition@cctz@time_internal@absl@@@Cr@std@@YAPBUTransition@cctz@time_internal@absl@@PBU2345@H@Z ??$reset@PAPAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@?$unique_ptr@$$BY0A@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QAEXPAPAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@12@@Z + ??$rotr@I@absl@@YAIIH@Z ??$swap@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@YAXAAPAPAPBVImpl@time_zone@cctz@time_internal@absl@@0@Z + ??$swap@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@YAXAAPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@0@Z ??$swap@PAPAVCordzHandle@cord_internal@absl@@@Cr@std@@YAXAAPAPAVCordzHandle@cord_internal@absl@@0@Z ??$swap@PAPAVLogSink@absl@@@Cr@std@@YAXAAPAPAVLogSink@absl@@0@Z ??$swap@PAPBVCordzHandle@cord_internal@absl@@@Cr@std@@YAXAAPAPBVCordzHandle@cord_internal@absl@@0@Z @@ -1049,6 +1140,7 @@ ??0?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QAE@ABV?$allocator@UPayload@status_internal@absl@@@Cr@std@@@Z ??0?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QAE@XZ ??0?$__allocator_destructor@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@AAV?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@12@I@Z + ??0?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAE@AAV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@12@I@Z ??0?$__atomic_base@P6AXABUHashtablezInfo@container_internal@absl@@@Z$0A@@Cr@std@@QAE@P6AXABUHashtablezInfo@container_internal@absl@@@Z@Z ??0?$__atomic_base@PAUHashtablezInfo@container_internal@absl@@$0A@@Cr@std@@QAE@PAUHashtablezInfo@container_internal@absl@@@Z ??0?$__atomic_base@PAVCordzInfo@cord_internal@absl@@$0A@@Cr@std@@QAE@PAVCordzInfo@cord_internal@absl@@@Z @@ -1060,6 +1152,7 @@ ??0?$__compressed_pair_elem@U?$default_delete@$$CBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAE@U__value_init_tag@12@@Z ??0?$__compressed_pair_elem@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAE@U__value_init_tag@12@@Z ??0?$__compressed_pair_elem@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@$00$00@Cr@std@@QAE@U__value_init_tag@12@@Z + ??0?$__compressed_pair_elem@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAE@U__value_init_tag@12@@Z ??0?$__compressed_pair_elem@U?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAE@U__value_init_tag@12@@Z ??0?$__compressed_pair_elem@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAE@U__value_init_tag@12@@Z ??0?$__compressed_pair_elem@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAE@U__value_init_tag@12@@Z @@ -1068,15 +1161,18 @@ ??0?$__compressed_pair_elem@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@Cr@std@@$00$00@Cr@std@@QAE@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAE@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@$00$00@Cr@std@@QAE@U__default_init_tag@12@@Z + ??0?$__compressed_pair_elem@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAE@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAE@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@PAVLogSink@absl@@@Cr@std@@$00$00@Cr@std@@QAE@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAE@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAE@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@$00$00@Cr@std@@QAE@U__value_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAE@U__default_init_tag@12@@Z + ??0?$__compressed_pair_elem@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAE@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAE@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAE@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAE@U__default_init_tag@12@@Z + ??0?$__compressed_pair_elem@V?$allocator@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@$00$00@Cr@std@@QAE@U__default_init_tag@12@@Z ??0?$__compressed_pair_elem@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAE@U__default_init_tag@12@@Z ??0?$__cxx_atomic_base_impl@P6AXABUHashtablezInfo@container_internal@absl@@@Z@Cr@std@@QAE@P6AXABUHashtablezInfo@container_internal@absl@@@Z@Z ??0?$__cxx_atomic_base_impl@PAUHashtablezInfo@container_internal@absl@@@Cr@std@@QAE@PAUHashtablezInfo@container_internal@absl@@@Z @@ -1085,6 +1181,8 @@ ??0?$__cxx_atomic_impl@PAUHashtablezInfo@container_internal@absl@@U?$__cxx_atomic_base_impl@PAUHashtablezInfo@container_internal@absl@@@Cr@std@@@Cr@std@@QAE@PAUHashtablezInfo@container_internal@absl@@@Z ??0?$__cxx_atomic_impl@PAVCordzInfo@cord_internal@absl@@U?$__cxx_atomic_base_impl@PAVCordzInfo@cord_internal@absl@@@Cr@std@@@Cr@std@@QAE@PAVCordzInfo@cord_internal@absl@@@Z ??0?$__deque_iterator@PBVImpl@time_zone@cctz@time_internal@absl@@PAPBV12345@AAPBV12345@PAPAPBV12345@H$0A@@Cr@std@@AAE@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@PAPBV34567@@Z + ??0?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PAU1234@AAU1234@PAPAU1234@H$0A@@Cr@std@@AAE@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAU3456@@Z + ??0?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@ABU1234@PBQBU1234@H$0A@@Cr@std@@AAE@PBQBUPrefixCrc@CrcCordState@crc_internal@absl@@PBU3456@@Z ??0?$__hash_const_iterator@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@QAE@ABV?$__hash_iterator@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@12@@Z ??0?$__hash_iterator@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@AAE@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@12@PBX@Z ??0?$__hash_map_const_iterator@V?$__hash_const_iterator@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@QAE@V?$__hash_map_iterator@V?$__hash_iterator@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@12@@Z @@ -1095,6 +1193,7 @@ ??0?$__non_trivial_if@$00V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??0?$__non_trivial_if@$00V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@QAE@XZ ??0?$__non_trivial_if@$00V?$allocator@PAUCordRep@cord_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ + ??0?$__non_trivial_if@$00V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??0?$__non_trivial_if@$00V?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??0?$__non_trivial_if@$00V?$allocator@PAVLogSink@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??0?$__non_trivial_if@$00V?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ @@ -1102,14 +1201,18 @@ ??0?$__non_trivial_if@$00V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@QAE@XZ ??0?$__non_trivial_if@$00V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??0?$__non_trivial_if@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ + ??0?$__non_trivial_if@$00V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??0?$__non_trivial_if@$00V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??0?$__non_trivial_if@$00V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??0?$__non_trivial_if@$00V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ + ??0?$__non_trivial_if@$00V?$allocator@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@QAE@XZ ??0?$__non_trivial_if@$00V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??0?$__policy_invoker@$$A6A?AV?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@ABV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@23@@Z@__function@Cr@std@@AAE@P6A?AV?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@23@PBT__policy_storage@123@ABV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@23@@Z@Z ??0?$__policy_invoker@$$A6A?AV?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@ABV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@23@@Z@__function@Cr@std@@QAE@XZ ??0?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@AAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@IIAAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@12@@Z ??0?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ + ??0?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@AAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAE@IIAAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@12@@Z + ??0?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??0?$__split_buffer@PAVCordzHandle@cord_internal@absl@@AAV?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAE@IIAAV?$allocator@PAVCordzHandle@cord_internal@absl@@@12@@Z ??0?$__split_buffer@PAVLogSink@absl@@AAV?$allocator@PAVLogSink@absl@@@Cr@std@@@Cr@std@@QAE@IIAAV?$allocator@PAVLogSink@absl@@@12@@Z ??0?$__split_buffer@PBVCordzHandle@cord_internal@absl@@AAV?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAE@IIAAV?$allocator@PBVCordzHandle@cord_internal@absl@@@12@@Z @@ -1128,6 +1231,7 @@ ??0?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@QAE@XZ ??0?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@QAE@XZ ??0?$allocator@PAUCordRep@cord_internal@absl@@@Cr@std@@QAE@XZ + ??0?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QAE@XZ ??0?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@QAE@XZ ??0?$allocator@PAVLogSink@absl@@@Cr@std@@QAE@XZ ??0?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@QAE@XZ @@ -1135,9 +1239,11 @@ ??0?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@QAE@XZ ??0?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@QAE@XZ ??0?$allocator@UPayload@status_internal@absl@@@Cr@std@@QAE@XZ + ??0?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QAE@XZ ??0?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@QAE@XZ ??0?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@QAE@XZ ??0?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@QAE@XZ + ??0?$allocator@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QAE@XZ ??0?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@QAE@XZ ??0?$atomic@P6AXABUHashtablezInfo@container_internal@absl@@@Z@Cr@std@@QAE@P6AXABUHashtablezInfo@container_internal@absl@@@Z@Z ??0?$atomic@PAUHashtablezInfo@container_internal@absl@@@Cr@std@@QAE@PAUHashtablezInfo@container_internal@absl@@@Z @@ -1171,8 +1277,10 @@ ??0?$civil_time@Uyear_tag@time_internal@absl@@@detail@cctz@time_internal@absl@@QAE@XZ ??0?$civil_time@Uyear_tag@time_internal@absl@@@detail@cctz@time_internal@absl@@QAE@_J00000@Z ??0?$deque@PBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ + ??0?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??0?$move_iterator@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@QAE@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@@Z ??0?$move_iterator@PAPAUCordRep@cord_internal@absl@@@Cr@std@@QAE@PAPAUCordRep@cord_internal@absl@@@Z + ??0?$move_iterator@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QAE@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ??0?$move_iterator@PAPAVLogSink@absl@@@Cr@std@@QAE@PAPAVLogSink@absl@@@Z ??0?$move_iterator@PAUPayload@status_internal@absl@@@Cr@std@@QAE@PAUPayload@status_internal@absl@@@Z ??0?$move_iterator@PAUTransition@cctz@time_internal@absl@@@Cr@std@@QAE@PAUTransition@cctz@time_internal@absl@@@Z @@ -1206,6 +1314,7 @@ ??0?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??0?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??0?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ + ??0?$vector@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@V?$allocator@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QAE@XZ ??0?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??0AlphaNum@absl@@QAE@H@Z ??0AlphaNum@absl@@QAE@I@Z @@ -1228,6 +1337,9 @@ ??0ByAnyChar@absl@@QAE@Vstring_view@1@@Z ??0ByLength@absl@@QAE@H@Z ??0ByString@absl@@QAE@Vstring_view@1@@Z + ??0CRC32@crc_internal@absl@@QAE@XZ + ??0CRC@crc_internal@absl@@IAE@XZ + ??0CRCImpl@crc_internal@absl@@QAE@XZ ??0CheckOpMessageBuilder@log_internal@absl@@QAE@PBD@Z ??0ChunkIterator@Cord@absl@@AAE@PAUCordRep@cord_internal@2@@Z ??0ChunkIterator@Cord@absl@@AAE@PBV12@@Z @@ -1258,10 +1370,15 @@ ??0CordzUpdateScope@cord_internal@absl@@QAE@PAVCordzInfo@12@W4MethodIdentifier@CordzUpdateTracker@12@@Z ??0CordzUpdateTracker@cord_internal@absl@@QAE@XZ ??0Counter@CordzUpdateTracker@cord_internal@absl@@QAE@XZ + ??0CrcCordState@crc_internal@absl@@QAE@$$QAV012@@Z + ??0CrcCordState@crc_internal@absl@@QAE@ABV012@@Z + ??0CrcCordState@crc_internal@absl@@QAE@XZ + ??0CrcMemcpyEngine@crc_internal@absl@@IAE@XZ ??0Duration@absl@@AAE@_JI@Z ??0Duration@absl@@QAE@XZ ??0ErrnoSaver@base_internal@absl@@QAE@XZ ??0FILERawSink@str_format_internal@absl@@QAE@PAU_iobuf@@@Z + ??0FallbackCrcMemcpyEngine@crc_internal@absl@@QAE@XZ ??0Filler@CordRepRing@cord_internal@absl@@QAE@PAV123@I@Z ??0FormatConversionSpecImpl@str_format_internal@absl@@QAE@XZ ??0FormatSinkImpl@str_format_internal@absl@@QAE@VFormatRawSinkImpl@12@@Z @@ -1301,12 +1418,16 @@ ??0Payload@status_internal@absl@@QAE@$$QAU012@@Z ??0Payload@status_internal@absl@@QAE@ABU012@@Z ??0PosixTimeZone@cctz@time_internal@absl@@QAE@XZ + ??0PrefixCrc@CrcCordState@crc_internal@absl@@QAE@IVcrc32c_t@3@@Z + ??0PrefixCrc@CrcCordState@crc_internal@absl@@QAE@XZ ??0ProtoField@log_internal@absl@@QAE@XZ ??0Randen@random_internal@absl@@QAE@XZ ??0ReaderMutexLock@absl@@QAE@PAVMutex@1@@Z ??0RefcountAndFlags@cord_internal@absl@@QAE@XZ + ??0RefcountedRep@CrcCordState@crc_internal@absl@@QAE@XZ ??0Rep@CordBuffer@absl@@QAE@PAUCordRepFlat@cord_internal@2@@Z ??0Rep@CordBuffer@absl@@QAE@XZ + ??0Rep@CrcCordState@crc_internal@absl@@QAE@XZ ??0Rep@GraphCycles@synchronization_internal@absl@@QAE@XZ ??0SchedulingHelper@base_internal@absl@@QAE@W4SchedulingMode@12@@Z ??0ScopedDisable@SchedulingGuard@base_internal@absl@@QAE@XZ @@ -1341,8 +1462,10 @@ ??0WriterMutexLock@absl@@QAE@PAVMutex@1@@Z ??0ZoneInfoSource@cctz@time_internal@absl@@QAE@XZ ??0_ConstructTransaction@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@AAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@PAPAPAPBVImpl@time_zone@cctz@time_internal@absl@@I@Z + ??0_ConstructTransaction@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@AAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAE@PAPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@I@Z ??0_ConstructTransaction@?$__split_buffer@UTransition@cctz@time_internal@absl@@AAV?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@PAPAUTransition@cctz@time_internal@absl@@I@Z ??0_ConstructTransaction@?$__split_buffer@UTransitionType@cctz@time_internal@absl@@AAV?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@PAPAUTransitionType@cctz@time_internal@absl@@I@Z + ??0_ConstructTransaction@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAE@PAV123@AAU__deque_block_range@123@@Z ??0_ConstructTransaction@?$vector@PAVCordzHandle@cord_internal@absl@@V?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAE@AAV123@I@Z ??0_ConstructTransaction@?$vector@PAVLogSink@absl@@V?$allocator@PAVLogSink@absl@@@Cr@std@@@Cr@std@@QAE@AAV123@I@Z ??0_ConstructTransaction@?$vector@PBVCordzHandle@cord_internal@absl@@V?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAE@AAV123@I@Z @@ -1351,6 +1474,8 @@ ??0_ConstructTransaction@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@AAV123@I@Z ??0_ConstructTransaction@?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QAE@AAV123@I@Z ??0_ConstructTransaction@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QAE@AAV123@I@Z + ??0__deque_block_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAE@PAUPrefixCrc@CrcCordState@crc_internal@absl@@0@Z + ??0__deque_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAE@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PAU1234@AAU1234@PAPAU1234@H$0A@@23@0@Z ??0__destroy_vector@?$vector@PAVCordzHandle@cord_internal@absl@@V?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAE@AAV123@@Z ??0__destroy_vector@?$vector@PBVCordzHandle@cord_internal@absl@@V?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAE@AAV123@@Z ??0__destroy_vector@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@AAV123@@Z @@ -1360,6 +1485,7 @@ ??0absolute_lookup@time_zone@cctz@time_internal@absl@@QAE@XZ ??0civil_lookup@time_zone@cctz@time_internal@absl@@QAE@XZ ??0civil_transition@time_zone@cctz@time_internal@absl@@QAE@XZ + ??0crc32c_t@absl@@QAE@I@Z ??0fields@detail@cctz@time_internal@absl@@QAE@_JCCCCC@Z ??0int128@absl@@AAE@_J_K@Z ??0int128@absl@@QAE@H@Z @@ -1398,6 +1524,8 @@ ??1?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QAE@XZ ??1?$__policy_func@$$A6A?AV?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@ABV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@23@@Z@__function@Cr@std@@QAE@XZ ??1?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@AAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ + ??1?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@AAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ + ??1?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??1?$__split_buffer@PAVCordzHandle@cord_internal@absl@@AAV?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??1?$__split_buffer@PAVLogSink@absl@@AAV?$allocator@PAVLogSink@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??1?$__split_buffer@PBVCordzHandle@cord_internal@absl@@AAV?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ @@ -1407,6 +1535,7 @@ ??1?$__split_buffer@UViableSubstitution@strings_internal@absl@@AAV?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??1?$__temp_value@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??1?$__temp_value@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ + ??1?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??1?$function@$$A6A?AV?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@ABV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@23@@Z@Cr@std@@QAE@XZ ??1?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@absl@@QAE@XZ ??1?$optional_data@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@$0A@@optional_internal@absl@@QAE@XZ @@ -1415,10 +1544,12 @@ ??1?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@QAE@XZ ??1?$unique_ptr@$$CBVImpl@time_zone@cctz@time_internal@absl@@U?$default_delete@$$CBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??1?$unique_ptr@PAPBVImpl@time_zone@cctz@time_internal@absl@@V?$__allocator_destructor@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QAE@XZ + ??1?$unique_ptr@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QAE@XZ ??1?$unique_ptr@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@23@@Cr@std@@QAE@XZ ??1?$unique_ptr@ULogMessageData@LogMessage@log_internal@absl@@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??1?$unique_ptr@UThreadIdentity@base_internal@absl@@P6AXPAX@Z@Cr@std@@QAE@XZ ??1?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QAE@XZ + ??1?$unique_ptr@VFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??1?$unique_ptr@VTimeZoneIf@cctz@time_internal@absl@@U?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??1?$unique_ptr@VTimeZoneInfo@cctz@time_internal@absl@@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??1?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ @@ -1429,14 +1560,21 @@ ??1?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??1?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??1BadStatusOrAccess@absl@@UAE@XZ + ??1CRC32@crc_internal@absl@@UAE@XZ + ??1CRC@crc_internal@absl@@UAE@XZ + ??1CRCImpl@crc_internal@absl@@UAE@XZ ??1CheckOpMessageBuilder@log_internal@absl@@QAE@XZ ??1CondVar@absl@@QAE@XZ ??1Cord@absl@@QAE@XZ ??1CordBuffer@absl@@QAE@XZ + ??1CordRepCrc@cord_internal@absl@@QAE@XZ ??1CordzHandle@cord_internal@absl@@MAE@XZ ??1CordzInfo@cord_internal@absl@@EAE@XZ ??1CordzUpdateScope@cord_internal@absl@@QAE@XZ + ??1CrcCordState@crc_internal@absl@@QAE@XZ + ??1CrcMemcpyEngine@crc_internal@absl@@UAE@XZ ??1ErrnoSaver@base_internal@absl@@QAE@XZ + ??1FallbackCrcMemcpyEngine@crc_internal@absl@@UAE@XZ ??1FormatSinkImpl@str_format_internal@absl@@QAE@XZ ??1GraphCycles@synchronization_internal@absl@@QAE@XZ ??1HashtablezInfo@container_internal@absl@@QAE@XZ @@ -1455,6 +1593,8 @@ ??1Payload@status_internal@absl@@QAE@XZ ??1PosixTimeZone@cctz@time_internal@absl@@QAE@XZ ??1ReaderMutexLock@absl@@QAE@XZ + ??1RefcountedRep@CrcCordState@crc_internal@absl@@QAE@XZ + ??1Rep@CrcCordState@crc_internal@absl@@QAE@XZ ??1Rep@GraphCycles@synchronization_internal@absl@@QAE@XZ ??1SchedulingHelper@base_internal@absl@@QAE@XZ ??1ScopedDisable@SchedulingGuard@base_internal@absl@@QAE@XZ @@ -1472,8 +1612,10 @@ ??1WriterMutexLock@absl@@QAE@XZ ??1ZoneInfoSource@cctz@time_internal@absl@@UAE@XZ ??1_ConstructTransaction@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@AAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ + ??1_ConstructTransaction@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@AAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??1_ConstructTransaction@?$__split_buffer@UTransition@cctz@time_internal@absl@@AAV?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??1_ConstructTransaction@?$__split_buffer@UTransitionType@cctz@time_internal@absl@@AAV?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ + ??1_ConstructTransaction@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??1_ConstructTransaction@?$vector@PAVCordzHandle@cord_internal@absl@@V?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??1_ConstructTransaction@?$vector@PAVLogSink@absl@@V?$allocator@PAVLogSink@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??1_ConstructTransaction@?$vector@PBVCordzHandle@cord_internal@absl@@V?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ @@ -1484,6 +1626,7 @@ ??1_ConstructTransaction@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??1bad_optional_access@absl@@UAE@XZ ??1bad_variant_access@absl@@UAE@XZ + ??4?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEAAV012@ABV012@@Z ??4?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@absl@@QAEAAV01@$$QAV01@@Z ??4?$optional_data@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@$0A@@optional_internal@absl@@IAEAAV012@$$QAV012@@Z ??4?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QAEAAV012@$$QAV012@@Z @@ -1492,8 +1635,11 @@ ??4Cord@absl@@QAEAAV01@$$QAV01@@Z ??4Cord@absl@@QAEAAV01@Vstring_view@1@@Z ??4CordzUpdateTracker@cord_internal@absl@@QAEAAV012@ABV012@@Z + ??4CrcCordState@crc_internal@absl@@QAEAAV012@$$QAV012@@Z + ??4CrcCordState@crc_internal@absl@@QAEAAV012@ABV012@@Z ??4InlineRep@Cord@absl@@QAEAAV012@$$QAV012@@Z ??4Payload@status_internal@absl@@QAEAAU012@$$QAU012@@Z + ??4Rep@CrcCordState@crc_internal@absl@@QAEAAU0123@ABU0123@@Z ??4Status@absl@@QAEAAV01@$$QAV01@@Z ??4Status@absl@@QAEAAV01@ABV01@@Z ??4int128@absl@@QAEAAV01@H@Z @@ -1509,6 +1655,7 @@ ??6absl@@YA?AVuint128@0@V10@H@Z ??6absl@@YAAAV?$basic_ostream@DU?$char_traits@D@Cr@std@@@Cr@std@@AAV123@ABVCord@0@@Z ??6absl@@YAAAV?$basic_ostream@DU?$char_traits@D@Cr@std@@@Cr@std@@AAV123@ABVStatus@0@@Z + ??6absl@@YAAAV?$basic_ostream@DU?$char_traits@D@Cr@std@@@Cr@std@@AAV123@Vcrc32c_t@0@@Z ??6absl@@YAAAV?$basic_ostream@DU?$char_traits@D@Cr@std@@@Cr@std@@AAV123@Vint128@0@@Z ??6absl@@YAAAV?$basic_ostream@DU?$char_traits@D@Cr@std@@@Cr@std@@AAV123@Vstring_view@0@@Z ??6absl@@YAAAV?$basic_ostream@DU?$char_traits@D@Cr@std@@@Cr@std@@AAV123@Vuint128@0@@Z @@ -1534,6 +1681,9 @@ ??6time_internal@absl@@YAAAV?$basic_ostream@DU?$char_traits@D@Cr@std@@@Cr@std@@AAV234@V?$civil_time@Uyear_tag@time_internal@absl@@@detail@cctz@01@@Z ??7absl@@YA_NVuint128@0@@Z ??8ChunkIterator@Cord@absl@@QBE_NABV012@@Z + ??8Cr@std@@YA_NABU__deque_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@01@0@Z + ??8Cr@std@@YA_NABV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PAU1234@AAU1234@PAPAU1234@H$0A@@01@0@Z + ??8Cr@std@@YA_NABV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@ABU1234@PBQBU1234@H$0A@@01@0@Z ??8Cr@std@@YA_NABV?$__hash_const_iterator@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@01@0@Z ??8Cr@std@@YA_NABV?$__hash_iterator@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@01@0@Z ??8GraphId@synchronization_internal@absl@@QBE_NABU012@@Z @@ -1544,6 +1694,9 @@ ??8absl@@YA_NVstring_view@0@0@Z ??8absl@@YA_NVuint128@0@0@Z ??9ChunkIterator@Cord@absl@@QBE_NABV012@@Z + ??9Cr@std@@YA_NABU__deque_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@01@0@Z + ??9Cr@std@@YA_NABV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PAU1234@AAU1234@PAPAU1234@H$0A@@01@0@Z + ??9Cr@std@@YA_NABV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@ABU1234@PBQBU1234@H$0A@@01@0@Z ??9Cr@std@@YA_NABV?$__hash_const_iterator@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@01@0@Z ??9Cr@std@@YA_NABV?$__hash_iterator@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@01@0@Z ??9Cr@std@@YA_NABV?$__hash_map_const_iterator@V?$__hash_const_iterator@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@01@0@Z @@ -1559,6 +1712,7 @@ ??A?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@absl@@QBEABVFormatArgImpl@str_format_internal@1@I@Z ??A?$Span@D@absl@@QBEAADI@Z ??A?$Span@I@absl@@QBEAAII@Z + ??A?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QBEABUPrefixCrc@CrcCordState@crc_internal@absl@@I@Z ??A?$unique_ptr@$$BY0A@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QBEAAPAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@12@I@Z ??A?$unordered_map@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@QAEAAPBVImpl@time_zone@cctz@time_internal@absl@@ABV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@12@@Z ??A?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEAAUTransition@cctz@time_internal@absl@@I@Z @@ -1577,6 +1731,7 @@ ??BCord@absl@@QBE?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@XZ ??BCordRepBtreeReader@cord_internal@absl@@QBE_NXZ ??BTimeZone@absl@@QBE?AVtime_zone@cctz@time_internal@1@XZ + ??Bcrc32c_t@absl@@QBEIXZ ??Bint128@absl@@QBEDXZ ??Bint128@absl@@QBENXZ ??Bint128@absl@@QBE_JXZ @@ -1597,6 +1752,8 @@ ??C?$unique_ptr@VTimeZoneInfo@cctz@time_internal@absl@@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QBEPAVTimeZoneInfo@cctz@time_internal@absl@@XZ ??CChunkIterator@Cord@absl@@QBEPBVstring_view@2@XZ ??D?$__deque_iterator@PBVImpl@time_zone@cctz@time_internal@absl@@PAPBV12345@AAPBV12345@PAPAPBV12345@H$0A@@Cr@std@@QBEAAPBVImpl@time_zone@cctz@time_internal@absl@@XZ + ??D?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PAU1234@AAU1234@PAPAU1234@H$0A@@Cr@std@@QBEAAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ??D?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@ABU1234@PBQBU1234@H$0A@@Cr@std@@QBEABUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ??D?$__hash_map_iterator@V?$__hash_iterator@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@QBEAAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@12@XZ ??D?$__wrap_iter@PAPAVCordzHandle@cord_internal@absl@@@Cr@std@@QBEAAPAVCordzHandle@cord_internal@absl@@XZ ??D?$__wrap_iter@PAPAVLogSink@absl@@@Cr@std@@QBEAAPAVLogSink@absl@@XZ @@ -1605,6 +1762,7 @@ ??D?$__wrap_iter@PBUConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@QBEABUConversionItem@ParsedFormatBase@str_format_internal@absl@@XZ ??D?$move_iterator@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@QBE$$QAPAPBVImpl@time_zone@cctz@time_internal@absl@@XZ ??D?$move_iterator@PAPAUCordRep@cord_internal@absl@@@Cr@std@@QBE$$QAPAUCordRep@cord_internal@absl@@XZ + ??D?$move_iterator@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QBE$$QAPAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ??D?$move_iterator@PAPAVLogSink@absl@@@Cr@std@@QBE$$QAPAVLogSink@absl@@XZ ??D?$move_iterator@PAUPayload@status_internal@absl@@@Cr@std@@QBE$$QAUPayload@status_internal@absl@@XZ ??D?$move_iterator@PAUTransition@cctz@time_internal@absl@@@Cr@std@@QBE$$QAUTransition@cctz@time_internal@absl@@XZ @@ -1613,8 +1771,11 @@ ??D?$unique_ptr@ULogMessageData@LogMessage@log_internal@absl@@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@@Cr@std@@QBEAAULogMessageData@LogMessage@log_internal@absl@@XZ ??D?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QBEAAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@XZ ??DChunkIterator@Cord@absl@@QBE?AVstring_view@2@XZ + ??D__deque_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QBE?AU__deque_block_range@123@XZ ??Dabsl@@YA?AVint128@0@V10@0@Z ??Dabsl@@YA?AVuint128@0@V10@0@Z + ??E?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PAU1234@AAU1234@PAPAU1234@H$0A@@Cr@std@@QAEAAV012@XZ + ??E?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@ABU1234@PBQBU1234@H$0A@@Cr@std@@QAEAAV012@XZ ??E?$__hash_iterator@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@QAEAAV012@XZ ??E?$__hash_map_iterator@V?$__hash_iterator@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@QAEAAV012@XZ ??E?$__wrap_iter@PAPAVCordzHandle@cord_internal@absl@@@Cr@std@@QAEAAV012@XZ @@ -1623,12 +1784,15 @@ ??E?$__wrap_iter@PBUConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@QAEAAV012@XZ ??E?$move_iterator@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@QAEAAV012@XZ ??E?$move_iterator@PAPAUCordRep@cord_internal@absl@@@Cr@std@@QAEAAV012@XZ + ??E?$move_iterator@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QAEAAV012@XZ ??E?$move_iterator@PAPAVLogSink@absl@@@Cr@std@@QAEAAV012@XZ ??E?$move_iterator@PAUPayload@status_internal@absl@@@Cr@std@@QAEAAV012@XZ ??E?$move_iterator@PAUTransition@cctz@time_internal@absl@@@Cr@std@@QAEAAV012@XZ ??E?$move_iterator@PAUTransitionType@cctz@time_internal@absl@@@Cr@std@@QAEAAV012@XZ ??EChunkIterator@Cord@absl@@QAEAAV012@XZ + ??E__deque_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEAAU0123@XZ ??Euint128@absl@@QAEAAV01@XZ + ??GCr@std@@YAHABV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@ABU1234@PBQBU1234@H$0A@@01@0@Z ??Gabsl@@YA?AVDuration@0@V10@0@Z ??Gabsl@@YA?AVDuration@0@V10@@Z ??Gabsl@@YA?AVDuration@0@VTime@0@0@Z @@ -1640,6 +1804,8 @@ ??Gdetail@cctz@time_internal@absl@@YA?AV?$civil_time@Usecond_tag@detail@cctz@time_internal@absl@@@0123@V40123@_J@Z ??Gdetail@cctz@time_internal@absl@@YA_JV?$civil_time@Uday_tag@detail@cctz@time_internal@absl@@@0123@0@Z ??Gdetail@cctz@time_internal@absl@@YA_JV?$civil_time@Usecond_tag@detail@cctz@time_internal@absl@@@0123@0@Z + ??H?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PAU1234@AAU1234@PAPAU1234@H$0A@@Cr@std@@QBE?AV012@H@Z + ??H?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@ABU1234@PBQBU1234@H$0A@@Cr@std@@QBE?AV012@H@Z ??Habsl@@YA?AVDuration@0@V10@0@Z ??Habsl@@YA?AVTime@0@V10@VDuration@0@@Z ??Habsl@@YA?AVint128@0@V10@0@Z @@ -1720,6 +1886,7 @@ ??R?$RandenPool@I@random_internal@absl@@QAEIXZ ??R?$RandenPool@_K@random_internal@absl@@QAE_KXZ ??R?$__allocator_destructor@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXPAPBVImpl@time_zone@cctz@time_internal@absl@@@Z + ??R?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEXPAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ??R?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@QAEXPAPAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@12@@Z ??R?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@QAEXPAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@12@@Z ??R?$__less@VDuration@absl@@V12@@Cr@std@@QBE_NABVDuration@absl@@0@Z @@ -1729,6 +1896,7 @@ ??R?$default_delete@$$CBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@QBEXPBVImpl@time_zone@cctz@time_internal@absl@@@Z ??R?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@QBEXPAULogMessageData@LogMessage@log_internal@absl@@@Z ??R?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@QBEXPAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Z + ??R?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@QBEXPAVFallbackCrcMemcpyEngine@crc_internal@absl@@@Z ??R?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@QBEXPAVTimeZoneIf@cctz@time_internal@absl@@@Z ??R?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@Cr@std@@QBEXPAVTimeZoneInfo@cctz@time_internal@absl@@@Z ??R?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@QBEXPAVZoneInfoSource@cctz@time_internal@absl@@@Z @@ -1751,6 +1919,8 @@ ??XDuration@absl@@QAEAAV01@_J@Z ??Xint128@absl@@QAEAAV01@V01@@Z ??Xuint128@absl@@QAEAAV01@V01@@Z + ??Y?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PAU1234@AAU1234@PAPAU1234@H$0A@@Cr@std@@QAEAAV012@H@Z + ??Y?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@ABU1234@PBQBU1234@H$0A@@Cr@std@@QAEAAV012@H@Z ??YDuration@absl@@QAEAAV01@V01@@Z ??YTime@absl@@QAEAAV01@VDuration@1@@Z ??Yint128@absl@@QAEAAV01@V01@@Z @@ -1904,13 +2074,14 @@ ?CheckstrcasecmptrueImpl@log_internal@absl@@YAPAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBD00@Z ?CheckstrcmpfalseImpl@log_internal@absl@@YAPAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBD00@Z ?CheckstrcmptrueImpl@log_internal@absl@@YAPAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBD00@Z + ?Checksum@CrcCordState@crc_internal@absl@@QBE?AVcrc32c_t@3@XZ ?Chunks@Cord@absl@@QBE?AVChunkRange@12@XZ ?CityHash32@hash_internal@absl@@YAIPBDI@Z ?CityHash64@hash_internal@absl@@YA_KPBDI@Z ?CityHash64WithSeed@hash_internal@absl@@YA_KPBDI_K@Z ?CityHash64WithSeeds@hash_internal@absl@@YA_KPBDI_K1@Z ?Clear@Cord@absl@@QAEXXZ - ?ClearBackingArray@container_internal@absl@@YAXAAVCommonFields@12@AAIABUPolicyFunctions@12@_N@Z + ?ClearBackingArray@container_internal@absl@@YAXAAVCommonFields@12@ABUPolicyFunctions@12@_N@Z ?ClearCurrentThreadIdentity@base_internal@absl@@YAXXZ ?ClearTimeZoneMapTestOnly@Impl@time_zone@cctz@time_internal@absl@@SAXXZ ?CodeToInlinedRep@Status@absl@@CAIW4StatusCode@2@@Z @@ -1923,7 +2094,13 @@ ?CompareImpl@Cord@absl@@ABEHABV12@@Z ?CompareSlowPath@Cord@absl@@ABEHABV12@II@Z ?CompareSlowPath@Cord@absl@@ABEHVstring_view@2@II@Z + ?Compute@CrcNonTemporalMemcpyAVXEngine@crc_internal@absl@@UBE?AVcrc32c_t@3@PIAXPIBXIV43@@Z + ?Compute@CrcNonTemporalMemcpyEngine@crc_internal@absl@@UBE?AVcrc32c_t@3@PIAXPIBXIV43@@Z + ?Compute@FallbackCrcMemcpyEngine@crc_internal@absl@@UBE?AVcrc32c_t@3@PIAXPIBXIV43@@Z ?ComputeCapacity@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@SAIII@Z + ?ComputeCrc32c@absl@@YA?AVcrc32c_t@1@Vstring_view@1@@Z + ?Concat@CRC@crc_internal@absl@@UAEXPAIII@Z + ?ConcatCrc32c@absl@@YA?AVcrc32c_t@1@V21@0I@Z ?ConstructNext@?$IteratorValueAdapter@V?$allocator@PAUCordRep@cord_internal@absl@@@Cr@std@@V?$move_iterator@PAPAUCordRep@cord_internal@absl@@@23@@inlined_vector_internal@absl@@QAEXAAV?$allocator@PAUCordRep@cord_internal@absl@@@Cr@std@@PAPAUCordRep@cord_internal@3@@Z ?ConstructNext@?$IteratorValueAdapter@V?$allocator@PAVLogSink@absl@@@Cr@std@@V?$move_iterator@PAPAVLogSink@absl@@@23@@inlined_vector_internal@absl@@QAEXAAV?$allocator@PAVLogSink@absl@@@Cr@std@@PAPAVLogSink@3@@Z ?ConstructNext@?$IteratorValueAdapter@V?$allocator@UPayload@status_internal@absl@@@Cr@std@@PBUPayload@status_internal@absl@@@inlined_vector_internal@absl@@QAEXAAV?$allocator@UPayload@status_internal@absl@@@Cr@std@@PAUPayload@status_internal@3@@Z @@ -1949,7 +2126,7 @@ ?CopyBeginTo@CordRepBtree@cord_internal@absl@@ABEPAV123@II@Z ?CopyCordToString@absl@@YAXABVCord@1@PAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ?CopyPrefix@CordRepBtree@cord_internal@absl@@AAE?AUCopyResult@123@I_N@Z - ?CopyRaw@CordRepBtree@cord_internal@absl@@ABEPAV123@XZ + ?CopyRaw@CordRepBtree@cord_internal@absl@@ABEPAV123@I@Z ?CopySuffix@CordRepBtree@cord_internal@absl@@AAE?AUCopyResult@123@I@Z ?CopyTo@InlineRep@Cord@absl@@QBEXPAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ?CopyToArraySlowPath@Cord@absl@@ABEXPAD@Z @@ -1957,6 +2134,9 @@ ?CopyToEncodedBuffer@LogMessage@log_internal@absl@@AAEXVstring_view@3@W4StringType@123@@Z ?CopyToEndFrom@CordRepBtree@cord_internal@absl@@ABEPAV123@II@Z ?Crash@Helper@internal_statusor@absl@@SAXABVStatus@3@@Z + ?Crc32CAndCopy@crc_internal@absl@@YA?AVcrc32c_t@2@PIAXPIBXIV32@_N@Z + ?Crc32c@CRC@crc_internal@absl@@SAPAV123@XZ + ?CrcAndCopy@CrcMemcpy@crc_internal@absl@@SA?AVcrc32c_t@3@PIAXPIBXIV43@_N@Z ?Create@CordRepBtree@cord_internal@absl@@SAPAV123@PAUCordRep@23@@Z ?Create@CordRepFlat@cord_internal@absl@@SAPAU123@Vstring_view@3@I@Z ?Create@CordRepRing@cord_internal@absl@@SAPAV123@PAUCordRep@23@I@Z @@ -2042,7 +2222,7 @@ ?DoStore@?$AtomicHook@P6AX_J@Z@base_internal@absl@@AAE_NP6AX_J@Z@Z ?DoStore@?$AtomicHook@P6A_NPBXPADH@Z@base_internal@absl@@AAE_NP6A_NPBXPADH@Z@Z ?DoStore@?$AtomicHook@P6A_NW4LogSeverity@absl@@PBDHPAPADPAH@Z@base_internal@absl@@AAE_NP6A_NW4LogSeverity@3@PBDHPAPADPAH@Z@Z - ?DropDeletesWithoutResize@container_internal@absl@@YAXAAVCommonFields@12@AAIABUPolicyFunctions@12@PAX@Z + ?DropDeletesWithoutResize@container_internal@absl@@YAXAAVCommonFields@12@ABUPolicyFunctions@12@PAX@Z ?DummyFunction@?$AtomicHook@P6A?AV?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@absl@@Vstring_view@2@ABVCord@2@@Z@base_internal@absl@@CA?AV?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@3@Vstring_view@3@ABVCord@3@@Z ?DummyFunction@?$AtomicHook@P6AXPBDH000@Z@base_internal@absl@@CAXPBDH000@Z ?DummyFunction@?$AtomicHook@P6AXPBDPBX@Z@base_internal@absl@@CAXPBDPBX@Z @@ -2064,6 +2244,7 @@ ?Edges@CordRepBtree@cord_internal@absl@@QBE?AV?$Span@QAUCordRep@cord_internal@absl@@@3@XZ ?EmplaceTree@InlineRep@Cord@absl@@QAEXPAUCordRep@cord_internal@3@ABVInlineData@53@W4MethodIdentifier@CordzUpdateTracker@53@@Z ?EmplaceTree@InlineRep@Cord@absl@@QAEXPAUCordRep@cord_internal@3@W4MethodIdentifier@CordzUpdateTracker@53@@Z + ?Empty@CRCImpl@crc_internal@absl@@UBEXPAI@Z ?EmptyGroup@container_internal@absl@@YAPAW4ctrl_t@12@XZ ?EmptyString@Status@absl@@CAPBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@XZ ?EnableDebugLog@CondVar@absl@@QAEXPBD@Z @@ -2092,7 +2273,7 @@ ?EqualsSlow@Status@absl@@CA_NABV12@0@Z ?EquivTransitions@TimeZoneInfo@cctz@time_internal@absl@@ABE_NEE@Z ?Erase@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QAEPAUPayload@status_internal@3@PBU453@0@Z - ?EraseMetaOnly@container_internal@absl@@YAXAAVCommonFields@12@AAIPAW4ctrl_t@12@I@Z + ?EraseMetaOnly@container_internal@absl@@YAXAAVCommonFields@12@PAW4ctrl_t@12@I@Z ?ErasePayload@Status@absl@@QAE_NVstring_view@2@@Z ?ErrnoToStatus@absl@@YA?AVStatus@1@HVstring_view@1@@Z ?ErrnoToStatusCode@absl@@YA?AW4StatusCode@1@H@Z @@ -2100,6 +2281,13 @@ ?Excess@str_format_internal@absl@@YAIII@Z ?ExitOnDFatal@log_internal@absl@@YA_NXZ ?ExpectedChecksum@Cord@absl@@QBE?AV?$optional@I@2@XZ + ?Extend@CRC32@crc_internal@absl@@UBEXPAIPBXI@Z + ?ExtendByZeroes@CRC32@crc_internal@absl@@UBEXPAII@Z + ?ExtendByZeroesImpl@CRC32@crc_internal@absl@@ABEXPAIIQBI1@Z + ?ExtendCrc32c@absl@@YA?AVcrc32c_t@1@V21@Vstring_view@1@@Z + ?ExtendCrc32cByZeroes@absl@@YA?AVcrc32c_t@1@V21@I@Z + ?ExtendCrc32cInline@crc_internal@absl@@YA_NPAIPBDI@Z + ?ExtendCrc32cInternal@crc_internal@absl@@YA?AVcrc32c_t@2@V32@Vstring_view@2@@Z ?ExtendTransitions@TimeZoneInfo@cctz@time_internal@absl@@AAE_NXZ ?ExtractAppendBuffer@CordRepBtree@cord_internal@absl@@SA?AUExtractResult@CordRep@23@PAV123@I@Z ?ExtractFront@CordRepBtree@cord_internal@absl@@CAPAUCordRep@23@PAV123@@Z @@ -2119,6 +2307,8 @@ ?Fill@?$RandenPool@I@random_internal@absl@@SAXV?$Span@I@3@@Z ?Fill@?$RandenPool@_K@random_internal@absl@@SAXV?$Span@_K@3@@Z ?FillParentStack@CordzInfo@cord_internal@absl@@CAIPBV123@PAPAX@Z + ?FillWordTable@CRCImpl@crc_internal@absl@@SAXIIHPAY0BAA@I@Z + ?FillZeroesTable@CRCImpl@crc_internal@absl@@SAHIPAY0BAA@I@Z ?FinalizeEncodingAndFormat@LogMessageData@LogMessage@log_internal@absl@@QAEXXZ ?Find@ByAnyChar@absl@@QBE?AVstring_view@2@V32@I@Z ?Find@ByChar@absl@@QBE?AVstring_view@2@V32@I@Z @@ -2239,6 +2429,7 @@ ?GetAppendBuffer@CordRepRing@cord_internal@absl@@QAE?AV?$Span@D@3@I@Z ?GetAppendBufferSlow@CordRepBtree@cord_internal@absl@@AAE?AV?$Span@D@3@I@Z ?GetAppendBufferSlowPath@Cord@absl@@AAE?AVCordBuffer@2@III@Z + ?GetArchSpecificEngines@CrcMemcpy@crc_internal@absl@@CA?AUArchSpecificEngines@123@XZ ?GetCachedTID@base_internal@absl@@YAIXZ ?GetCapacity@?$AllocationTransaction@V?$allocator@PAUCordRep@cord_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QAEAAIXZ ?GetCapacity@?$AllocationTransaction@V?$allocator@PAVLogSink@absl@@@Cr@std@@@inlined_vector_internal@absl@@QAEAAIXZ @@ -2247,6 +2438,7 @@ ?GetCharacter@CordRepRing@cord_internal@absl@@QBEDI@Z ?GetCond@WinHelper@Waiter@synchronization_internal@absl@@SAPAU_RTL_CONDITION_VARIABLE@@PAV234@@Z ?GetCordzStatistics@CordzInfo@cord_internal@absl@@QBE?AUCordzStatistics@23@XZ + ?GetCpuType@crc_internal@absl@@YA?AW4CpuType@12@XZ ?GetCurrentTimeNanos@absl@@YA_JXZ ?GetData@?$AllocationTransaction@V?$allocator@PAUCordRep@cord_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QAEAAPAPAUCordRep@cord_internal@3@XZ ?GetData@?$AllocationTransaction@V?$allocator@PAVLogSink@absl@@@Cr@std@@@inlined_vector_internal@absl@@QAEAAPAPAVLogSink@3@XZ @@ -2317,6 +2509,7 @@ ?GetStride@ExponentialBiased@profiling_internal@absl@@QAE_J_J@Z ?GetTID@base_internal@absl@@YAIXZ ?GetTagForChar@str_format_internal@absl@@YA?AVConvTag@12@D@Z + ?GetTestEngine@CrcMemcpy@crc_internal@absl@@SA?AV?$unique_ptr@VCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@HH@Z ?GetThreadBlockedCounter@PerThreadSem@synchronization_internal@absl@@SAPAU?$atomic@H@Cr@std@@XZ ?GetTransitionType@TimeZoneInfo@cctz@time_internal@absl@@AAE_NH_NABV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PAE@Z ?GetWaiter@Waiter@synchronization_internal@absl@@SAPAV123@PAUThreadIdentity@base_internal@3@@Z @@ -2377,6 +2570,7 @@ ?InitFirst@CordRepBtreeNavigator@cord_internal@absl@@QAEPAUCordRep@23@PAVCordRepBtree@23@@Z ?InitFrom@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QAEXABV123@@Z ?InitInstance@CordRepBtree@cord_internal@absl@@AAEXHII@Z + ?InitTables@CRC32@crc_internal@absl@@UAEXXZ ?InitTree@ChunkIterator@Cord@absl@@AAEXPAUCordRep@cord_internal@3@@Z ?InitWhat@BadStatusOrAccess@absl@@ABEXXZ ?Initialize@ExponentialBiased@profiling_internal@absl@@AAEXXZ @@ -2422,6 +2616,7 @@ ?IsInternal@absl@@YA_NABVStatus@1@@Z ?IsInvalidArgument@absl@@YA_NABVStatus@1@@Z ?IsMovedFrom@Status@absl@@CA_NI@Z + ?IsNormalized@CrcCordState@crc_internal@absl@@QBE_NXZ ?IsNotFound@absl@@YA_NABVStatus@1@@Z ?IsOne@RefcountAndFlags@cord_internal@absl@@QAE_NXZ ?IsOutOfRange@absl@@YA_NABVStatus@1@@Z @@ -2446,6 +2641,7 @@ ?LengthToTag@CordTestAccess@strings_internal@absl@@SAEI@Z ?Load16@big_endian@absl@@YAGPBX@Z ?Load32@big_endian@absl@@YAIPBX@Z + ?Load32@little_endian@absl@@YAIPBX@Z ?Load@?$AtomicHook@P6A?AV?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@absl@@Vstring_view@2@ABVCord@2@@Z@base_internal@absl@@QBEP6A?AV?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@3@Vstring_view@3@ABVCord@3@@ZXZ ?Load@?$AtomicHook@P6AXXZ@base_internal@absl@@QBEP6AXXZXZ ?Load@TimeZoneIf@cctz@time_internal@absl@@SA?AV?$unique_ptr@VTimeZoneIf@cctz@time_internal@absl@@U?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@ABV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@67@@Z @@ -2502,8 +2698,10 @@ ?MaxFlatLength@CordTestAccess@strings_internal@absl@@SAIXZ ?MaxFramesInLogStackTrace@log_internal@absl@@YAHXZ ?MaxVarintSize@log_internal@absl@@YA_KXZ + ?MaybeGetCrcCordState@Cord@absl@@ABEPBVCrcCordState@crc_internal@2@XZ ?MaybeRemoveEmptyCrcNode@InlineRep@Cord@absl@@AAEXXZ ?MaybeTrackCordImpl@CordzInfo@cord_internal@absl@@CAXAAVInlineData@23@ABV423@W4MethodIdentifier@CordzUpdateTracker@23@@Z + ?MemcpyCrc32c@absl@@YA?AVcrc32c_t@1@PAXPBXIV21@@Z ?MergeTrees@CordRepBtree@cord_internal@absl@@CAPAV123@PAV123@0@Z ?Min@string_view@absl@@CAIII@Z ?MinLogLevel@absl@@YA?AW4LogSeverityAtLeast@1@XZ @@ -2530,11 +2728,13 @@ ?New@CordRepBtree@cord_internal@absl@@SAPAV123@H@Z ?New@CordRepBtree@cord_internal@absl@@SAPAV123@PAUCordRep@23@@Z ?New@CordRepBtree@cord_internal@absl@@SAPAV123@PAV123@0@Z - ?New@CordRepCrc@cord_internal@absl@@SAPAU123@PAUCordRep@23@I@Z + ?New@CordRepCrc@cord_internal@absl@@SAPAU123@PAUCordRep@23@VCrcCordState@crc_internal@3@@Z ?New@CordRepFlat@cord_internal@absl@@SAPAU123@I@Z ?New@CordRepFlat@cord_internal@absl@@SAPAU123@ULarge@123@I@Z ?New@CordRepRing@cord_internal@absl@@CAPAV123@II@Z ?NewArena@LowLevelAlloc@base_internal@absl@@SAPAUArena@123@I@Z + ?NewCRC32AcceleratedX86ARMCombinedAll@crc_internal@absl@@YA?AV?$vector@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@V?$allocator@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@@23@@Cr@std@@XZ + ?NewInternal@CRCImpl@crc_internal@absl@@SAPAV123@XZ ?NewString@CheckOpMessageBuilder@log_internal@absl@@QAEPAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@XZ ?Next@CordRepBtreeNavigator@cord_internal@absl@@QAEPAUCordRep@23@XZ ?Next@CordRepBtreeReader@cord_internal@absl@@QAE?AVstring_view@3@XZ @@ -2550,7 +2750,9 @@ ?NextUp@CordRepBtreeNavigator@cord_internal@absl@@AAEPAUCordRep@23@XZ ?NoPrefix@LogMessage@log_internal@absl@@QAEAAV123@XZ ?NominalCPUFrequency@base_internal@absl@@YANXZ + ?Normalize@CrcCordState@crc_internal@absl@@QAEXXZ ?NormalizeLogSeverity@absl@@YA?AW4LogSeverity@1@W421@@Z + ?NormalizedPrefixCrcAtNthChunk@CrcCordState@crc_internal@absl@@QBE?AUPrefixCrc@123@I@Z ?NotFoundError@absl@@YA?AVStatus@1@Vstring_view@1@@Z ?Notify@Notification@absl@@QAEXXZ ?Now@CycleClock@base_internal@absl@@SA_JXZ @@ -2559,6 +2761,7 @@ ?Now@absl@@YA?AVTime@1@XZ ?NullSafeStringView@absl@@YA?AVstring_view@1@PBD@Z ?NumCPUs@base_internal@absl@@YAHXZ + ?NumChunks@CrcCordState@crc_internal@absl@@QBEIXZ ?NumClonedBytes@container_internal@absl@@YAIXZ ?ODRCheck@CordzHandle@cord_internal@absl@@ABEXXZ ?ODRCheck@CordzInfo@cord_internal@absl@@ABEXXZ @@ -2590,9 +2793,11 @@ ?Piece@AlphaNum@absl@@QBE?AVstring_view@2@XZ ?PiecewiseChunkSize@hash_internal@absl@@YAIXZ ?PointerToRep@Status@absl@@CAIPAUStatusRep@status_internal@2@@Z + ?Poison@CrcCordState@crc_internal@absl@@QAEXXZ ?Poke@Waiter@synchronization_internal@absl@@QAEXXZ ?Post@PerThreadSem@synchronization_internal@absl@@CAXPAUThreadIdentity@base_internal@3@@Z ?Post@Waiter@synchronization_internal@absl@@QAEXXZ + ?PrefetchNta@base_internal@absl@@YAXPBX@Z ?PrepareForSampling@HashtablezInfo@container_internal@absl@@QAEX_JI@Z ?PrepareToDie@LogMessage@log_internal@absl@@AAEXXZ ?PrepareToModify@Status@absl@@AAEXXZ @@ -2655,8 +2860,10 @@ ?RecordStorageChanged@HashtablezInfoHandle@container_internal@absl@@QAEXII@Z ?RecordStorageChangedSlow@container_internal@absl@@YAXPAUHashtablezInfo@12@II@Z ?Ref@CordRep@cord_internal@absl@@SAPAU123@PAU123@@Z + ?Ref@CrcCordState@crc_internal@absl@@CAXPAURefcountedRep@123@@Z ?Ref@Status@absl@@CAXI@Z ?RefCordRep@CordzInfo@cord_internal@absl@@QBEPAUCordRep@23@XZ + ?RefSharedEmptyRep@CrcCordState@crc_internal@absl@@CAPAURefcountedRep@123@XZ ?Register@CycleClockSource@base_internal@absl@@CAXP6A_JXZ@Z ?RegisterAbortHook@raw_log_internal@absl@@YAXP6AXPBDH000@Z@Z ?RegisterCondVarTracer@absl@@YAXP6AXPBDPBX@Z@Z @@ -2673,6 +2880,8 @@ ?Release@ReleasableMutexLock@absl@@QAEXXZ ?Remove@CondVar@absl@@AAEXPAUPerThreadSynch@base_internal@2@@Z ?RemoveChunkPrefix@ChunkIterator@Cord@absl@@AAEXI@Z + ?RemoveCrc32cPrefix@absl@@YA?AVcrc32c_t@1@V21@0I@Z + ?RemoveCrc32cSuffix@absl@@YA?AVcrc32c_t@1@V21@0I@Z ?RemoveCrcNode@cord_internal@absl@@YAPAUCordRep@12@PAU312@@Z ?RemoveEdge@GraphCycles@synchronization_internal@absl@@QAEXUGraphId@23@0@Z ?RemoveExtraAsciiWhitespace@absl@@YAXPAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z @@ -2687,8 +2896,8 @@ ?Reset@?$AllocationTransaction@V?$allocator@PAUCordRep@cord_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@AAEXXZ ?Reset@?$AllocationTransaction@V?$allocator@PAVLogSink@absl@@@Cr@std@@@inlined_vector_internal@absl@@AAEXXZ ?Reset@?$AllocationTransaction@V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@AAEXXZ - ?ResetCtrl@container_internal@absl@@YAXAAVCommonFields@12@AAII@Z - ?ResetGrowthLeft@container_internal@absl@@YAXAAVCommonFields@12@AAI@Z + ?ResetCtrl@container_internal@absl@@YAXAAVCommonFields@12@I@Z + ?ResetGrowthLeft@container_internal@absl@@YAXAAVCommonFields@12@@Z ?ResetToBuiltinUTC@TimeZoneInfo@cctz@time_internal@absl@@AAE_NABV?$duration@_JV?$ratio@$00$00@Cr@std@@@chrono@Cr@std@@@Z ?ResetToEmpty@InlineRep@Cord@absl@@AAEXXZ ?Resize@?$ResizeUninitializedTraits@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@X@strings_internal@absl@@SAXPAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@I@Z @@ -2701,6 +2910,7 @@ ?SampleSlow@container_internal@absl@@YAPAUHashtablezInfo@12@AAUSamplingState@12@I@Z ?SanitizerPoisonMemoryRegion@container_internal@absl@@YAXPBXI@Z ?SanitizerUnpoisonMemoryRegion@container_internal@absl@@YAXPBXI@Z + ?Scramble@CRC32@crc_internal@absl@@UBEXPAI@Z ?Seek@CordRepBtreeNavigator@cord_internal@absl@@QAE?AUPosition@123@I@Z ?Seek@CordRepBtreeReader@cord_internal@absl@@QAE?AVstring_view@3@I@Z ?SendToLog@LogMessage@log_internal@absl@@AAEXXZ @@ -2711,6 +2921,7 @@ ?SetConversionChar@FormatConversionSpecImplFriend@str_format_internal@absl@@SAXW4FormatConversionChar@3@PAVFormatConversionSpecImpl@23@@Z ?SetCordRep@CordzInfo@cord_internal@absl@@QAEXPAUCordRep@23@@Z ?SetCordRep@CordzUpdateScope@cord_internal@absl@@QBEXPAUCordRep@23@@Z + ?SetCrcCordState@Cord@absl@@AAEXVCrcCordState@crc_internal@2@@Z ?SetCtrl@container_internal@absl@@YAXABVCommonFields@12@IEI@Z ?SetCtrl@container_internal@absl@@YAXABVCommonFields@12@IW4ctrl_t@12@I@Z ?SetCurrentThreadIdentity@base_internal@absl@@YAXPAUThreadIdentity@12@P6AXPAX@Z@Z @@ -2830,6 +3041,7 @@ ?SubtractSize@?$Storage@PAUCordRep@cord_internal@absl@@$0CP@V?$allocator@PAUCordRep@cord_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QAEXI@Z ?SubtractSize@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QAEXI@Z ?Summarize@str_format_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@VUntypedFormatSpecImpl@12@V?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@2@@Z + ?SupportsArmCRC32PMULL@crc_internal@absl@@YA_NXZ ?SuppressSigabortTrace@log_internal@absl@@YA_NXZ ?Symbolize@absl@@YA_NPBXPADH@Z ?TagToAllocatedSize@cord_internal@absl@@YAIE@Z @@ -2881,6 +3093,7 @@ ?ToDoubleSeconds@absl@@YANVDuration@1@@Z ?ToHost16@big_endian@absl@@YAGG@Z ?ToHost32@big_endian@absl@@YAII@Z + ?ToHost32@little_endian@absl@@YAII@Z ?ToHost64@little_endian@absl@@YA_K_K@Z ?ToInt64@time_internal@absl@@YA_JVDuration@2@V?$ratio@$00$00@Cr@std@@@Z ?ToInt64@time_internal@absl@@YA_JVDuration@2@V?$ratio@$00$0DLJKMKAA@@Cr@std@@@Z @@ -2924,6 +3137,7 @@ ?TryLock@Mutex@absl@@QAE_NXZ ?TryLockImpl@SpinLock@base_internal@absl@@AAE_NXZ ?TryLockInternal@SpinLock@base_internal@absl@@AAEIII@Z + ?TryNewCRC32AcceleratedX86ARMCombined@crc_internal@absl@@YAPAVCRCImpl@12@XZ ?TryRemove@Mutex@absl@@AAEXPAUPerThreadSynch@base_internal@2@@Z ?UTC@Impl@time_zone@cctz@time_internal@absl@@SA?AV2345@XZ ?UTCImpl@Impl@time_zone@cctz@time_internal@absl@@CAPBV12345@XZ @@ -2936,6 +3150,8 @@ ?UnalignedLoad64@base_internal@absl@@YA_KPBX@Z ?UnauthenticatedError@absl@@YA?AVStatus@1@Vstring_view@1@@Z ?UnavailableError@absl@@YA?AVStatus@1@Vstring_view@1@@Z + ?UnextendByZeroes@CRC32@crc_internal@absl@@UBEXPAII@Z + ?UnextendCrc32cByZeroes@crc_internal@absl@@YA?AVcrc32c_t@2@V32@I@Z ?UnimplementedError@absl@@YA?AVStatus@1@Vstring_view@1@@Z ?UniversalEpoch@absl@@YA?AVTime@1@XZ ?UnknownError@absl@@YA?AVStatus@1@Vstring_view@1@@Z @@ -2947,12 +3163,14 @@ ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@VTime@1@@Z ?Unref@CordRep@cord_internal@absl@@SAXPAU123@@Z ?Unref@CordRepBtree@cord_internal@absl@@SAXV?$Span@QAUCordRep@cord_internal@absl@@@3@@Z + ?Unref@CrcCordState@crc_internal@absl@@CAXPAURefcountedRep@123@@Z ?Unref@Status@absl@@CAXI@Z ?UnrefNonInlined@Status@absl@@CAXI@Z ?UnrefTree@InlineRep@Cord@absl@@AAEXXZ ?Unregister@?$SampleRecorder@UHashtablezInfo@container_internal@absl@@@profiling_internal@absl@@QAEXPAUHashtablezInfo@container_internal@3@@Z ?UnsafeSetCordRep@CordzInfo@cord_internal@absl@@AAEXPAUCordRep@23@@Z ?UnsampleSlow@container_internal@absl@@YAXPAUHashtablezInfo@12@@Z + ?Unscramble@CRC32@crc_internal@absl@@UBEXPAI@Z ?Untrack@CordzInfo@cord_internal@absl@@QAEXXZ ?UpdateStackTrace@GraphCycles@synchronization_internal@absl@@QAEXUGraphId@23@HP6AHPAPAXH@Z@Z ?Utf8SafeCEscape@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@Vstring_view@1@@Z @@ -3013,11 +3231,15 @@ ?WriterUnlock@Mutex@absl@@QAEXXZ ?ZeroDuration@absl@@YA?AVDuration@1@XZ ?__add_back_capacity@?$deque@PBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AAEXXZ + ?__add_back_capacity@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AAEXI@Z + ?__add_back_capacity@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AAEXXZ ?__addr@?$__temp_value@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEPAUTransition@cctz@time_internal@absl@@XZ ?__addr@?$__temp_value@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEPAUTransitionType@cctz@time_internal@absl@@XZ ?__alloc@?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@QAEAAV?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@23@XZ ?__alloc@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@AAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEAAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@23@XZ ?__alloc@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEAAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@23@XZ + ?__alloc@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@AAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEAAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@23@XZ + ?__alloc@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEAAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@23@XZ ?__alloc@?$__split_buffer@PAVCordzHandle@cord_internal@absl@@AAV?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAEAAV?$allocator@PAVCordzHandle@cord_internal@absl@@@23@XZ ?__alloc@?$__split_buffer@PAVLogSink@absl@@AAV?$allocator@PAVLogSink@absl@@@Cr@std@@@Cr@std@@QAEAAV?$allocator@PAVLogSink@absl@@@23@XZ ?__alloc@?$__split_buffer@PBVCordzHandle@cord_internal@absl@@AAV?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAEAAV?$allocator@PBVCordzHandle@cord_internal@absl@@@23@XZ @@ -3026,6 +3248,7 @@ ?__alloc@?$__split_buffer@UTransitionType@cctz@time_internal@absl@@AAV?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEAAV?$allocator@UTransitionType@cctz@time_internal@absl@@@23@XZ ?__alloc@?$__split_buffer@UViableSubstitution@strings_internal@absl@@AAV?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QAEAAV?$allocator@UViableSubstitution@strings_internal@absl@@@23@XZ ?__alloc@?$deque@PBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEAAV?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@23@XZ + ?__alloc@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEAAV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@23@XZ ?__alloc@?$vector@PAVCordzHandle@cord_internal@absl@@V?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@AAEAAV?$allocator@PAVCordzHandle@cord_internal@absl@@@23@XZ ?__alloc@?$vector@PAVCordzHandle@cord_internal@absl@@V?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@ABEABV?$allocator@PAVCordzHandle@cord_internal@absl@@@23@XZ ?__alloc@?$vector@PAVLogSink@absl@@V?$allocator@PAVLogSink@absl@@@Cr@std@@@Cr@std@@AAEAAV?$allocator@PAVLogSink@absl@@@23@XZ @@ -3074,7 +3297,10 @@ ?__append@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AAEXI@Z ?__append@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AAEXI@Z ?__back_spare@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QBEIXZ + ?__back_spare@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QBEIXZ ?__back_spare@?$deque@PBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QBEIXZ + ?__back_spare@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QBEIXZ + ?__back_spare_blocks@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QBEIXZ ?__base_destruct_at_end@?$vector@PAVCordzHandle@cord_internal@absl@@V?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@AAEXPAPAVCordzHandle@cord_internal@absl@@@Z ?__base_destruct_at_end@?$vector@PAVLogSink@absl@@V?$allocator@PAVLogSink@absl@@@Cr@std@@@Cr@std@@AAEXPAPAVLogSink@absl@@@Z ?__base_destruct_at_end@?$vector@PBVCordzHandle@cord_internal@absl@@V?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@AAEXPAPBVCordzHandle@cord_internal@absl@@@Z @@ -3084,6 +3310,7 @@ ?__base_destruct_at_end@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@AAEXPAVFormatArgImpl@str_format_internal@absl@@@Z ?__call_empty@?$__policy_invoker@$$A6A?AV?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@ABV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@23@@Z@__function@Cr@std@@CA?AV?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@34@PBT__policy_storage@234@ABV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@34@@Z ?__capacity@?$deque@PBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QBEIXZ + ?__capacity@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QBEIXZ ?__clear@?$vector@PAVCordzHandle@cord_internal@absl@@V?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@AAEXXZ ?__clear@?$vector@PBVCordzHandle@cord_internal@absl@@V?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@AAEXXZ ?__clear@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AAEXXZ @@ -3094,11 +3321,19 @@ ?__construct_at_end@?$__split_buffer@UTransitionType@cctz@time_internal@absl@@AAV?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXI@Z ?__construct_at_end@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AAEXI@Z ?__construct_at_end@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AAEXI@Z + ?__copy_assign_alloc@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AAEXABV123@@Z + ?__copy_assign_alloc@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AAEXABV123@U?$integral_constant@_N$0A@@23@@Z ?__deallocate_node@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@AAEXPAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@23@@Z ?__destruct_at_begin@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXPAPAPBVImpl@time_zone@cctz@time_internal@absl@@@Z ?__destruct_at_begin@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXPAPAPBVImpl@time_zone@cctz@time_internal@absl@@U?$integral_constant@_N$00@23@@Z + ?__destruct_at_begin@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEXPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?__destruct_at_begin@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEXPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@U?$integral_constant@_N$00@23@@Z ?__destruct_at_end@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@AAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXPAPAPBVImpl@time_zone@cctz@time_internal@absl@@@Z ?__destruct_at_end@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@AAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXPAPAPBVImpl@time_zone@cctz@time_internal@absl@@U?$integral_constant@_N$0A@@23@@Z + ?__destruct_at_end@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@AAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEXPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?__destruct_at_end@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@AAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEXPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@U?$integral_constant@_N$0A@@23@@Z + ?__destruct_at_end@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEXPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?__destruct_at_end@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEXPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@U?$integral_constant@_N$0A@@23@@Z ?__destruct_at_end@?$__split_buffer@PAVCordzHandle@cord_internal@absl@@AAV?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAEXPAPAVCordzHandle@cord_internal@absl@@@Z ?__destruct_at_end@?$__split_buffer@PAVCordzHandle@cord_internal@absl@@AAV?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAEXPAPAVCordzHandle@cord_internal@absl@@U?$integral_constant@_N$0A@@23@@Z ?__destruct_at_end@?$__split_buffer@PAVLogSink@absl@@AAV?$allocator@PAVLogSink@absl@@@Cr@std@@@Cr@std@@QAEXPAPAVLogSink@absl@@@Z @@ -3122,6 +3357,10 @@ ?__end_cap@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@AAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QBEABQAPAPBVImpl@time_zone@cctz@time_internal@absl@@XZ ?__end_cap@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEAAPAPAPBVImpl@time_zone@cctz@time_internal@absl@@XZ ?__end_cap@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QBEABQAPAPBVImpl@time_zone@cctz@time_internal@absl@@XZ + ?__end_cap@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@AAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEAAPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?__end_cap@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@AAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QBEABQAPAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?__end_cap@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEAAPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?__end_cap@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QBEABQAPAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?__end_cap@?$__split_buffer@PAVCordzHandle@cord_internal@absl@@AAV?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAEAAPAPAVCordzHandle@cord_internal@absl@@XZ ?__end_cap@?$__split_buffer@PAVCordzHandle@cord_internal@absl@@AAV?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QBEABQAPAVCordzHandle@cord_internal@absl@@XZ ?__end_cap@?$__split_buffer@PAVLogSink@absl@@AAV?$allocator@PAVLogSink@absl@@@Cr@std@@@Cr@std@@QAEAAPAPAVLogSink@absl@@XZ @@ -3152,8 +3391,11 @@ ?__end_cap@?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@ABEABQAUViableSubstitution@strings_internal@absl@@XZ ?__end_cap@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@AAEAAPAVFormatArgImpl@str_format_internal@absl@@XZ ?__end_cap@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@ABEABQAVFormatArgImpl@str_format_internal@absl@@XZ + ?__erase_to_end@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AAEXV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@ABU1234@PBQBU1234@H$0A@@23@@Z ?__front_spare@?$deque@PBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QBEIXZ + ?__front_spare@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QBEIXZ ?__get@?$__compressed_pair_elem@AAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@$00$0A@@Cr@std@@QAEAAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@23@XZ + ?__get@?$__compressed_pair_elem@AAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@$00$0A@@Cr@std@@QAEAAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@AAV?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@$00$0A@@Cr@std@@QAEAAV?$allocator@PAVCordzHandle@cord_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@AAV?$allocator@PAVLogSink@absl@@@Cr@std@@$00$0A@@Cr@std@@QAEAAV?$allocator@PAVLogSink@absl@@@23@XZ ?__get@?$__compressed_pair_elem@AAV?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@$00$0A@@Cr@std@@QAEAAV?$allocator@PBVCordzHandle@cord_internal@absl@@@23@XZ @@ -3165,6 +3407,8 @@ ?__get@?$__compressed_pair_elem@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@$0A@$0A@@Cr@std@@QBEABQAPAPBVImpl@time_zone@cctz@time_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PAPAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@$0A@$0A@@Cr@std@@QAEAAPAPAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@23@XZ ?__get@?$__compressed_pair_elem@PAPAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@$0A@$0A@@Cr@std@@QBEABQAPAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@23@XZ + ?__get@?$__compressed_pair_elem@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@$0A@$0A@@Cr@std@@QAEAAPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?__get@?$__compressed_pair_elem@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@$0A@$0A@@Cr@std@@QBEABQAPAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PAPAVCordzHandle@cord_internal@absl@@$0A@$0A@@Cr@std@@QAEAAPAPAVCordzHandle@cord_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PAPAVCordzHandle@cord_internal@absl@@$0A@$0A@@Cr@std@@QBEABQAPAVCordzHandle@cord_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PAPAVLogSink@absl@@$0A@$0A@@Cr@std@@QAEAAPAPAVLogSink@absl@@XZ @@ -3179,6 +3423,8 @@ ?__get@?$__compressed_pair_elem@PAUConversionItem@ParsedFormatBase@str_format_internal@absl@@$0A@$0A@@Cr@std@@QBEABQAUConversionItem@ParsedFormatBase@str_format_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PAULogMessageData@LogMessage@log_internal@absl@@$0A@$0A@@Cr@std@@QAEAAPAULogMessageData@LogMessage@log_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PAULogMessageData@LogMessage@log_internal@absl@@$0A@$0A@@Cr@std@@QBEABQAULogMessageData@LogMessage@log_internal@absl@@XZ + ?__get@?$__compressed_pair_elem@PAUPrefixCrc@CrcCordState@crc_internal@absl@@$0A@$0A@@Cr@std@@QAEAAPAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?__get@?$__compressed_pair_elem@PAUPrefixCrc@CrcCordState@crc_internal@absl@@$0A@$0A@@Cr@std@@QBEABQAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PAUThreadIdentity@base_internal@absl@@$0A@$0A@@Cr@std@@QAEAAPAUThreadIdentity@base_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PAUTransition@cctz@time_internal@absl@@$0A@$0A@@Cr@std@@QAEAAPAUTransition@cctz@time_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PAUTransition@cctz@time_internal@absl@@$0A@$0A@@Cr@std@@QBEABQAUTransition@cctz@time_internal@absl@@XZ @@ -3188,6 +3434,7 @@ ?__get@?$__compressed_pair_elem@PAUViableSubstitution@strings_internal@absl@@$0A@$0A@@Cr@std@@QBEABQAUViableSubstitution@strings_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@$0A@$0A@@Cr@std@@QAEAAPAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@XZ ?__get@?$__compressed_pair_elem@PAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@$0A@$0A@@Cr@std@@QBEABQAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@XZ + ?__get@?$__compressed_pair_elem@PAVFallbackCrcMemcpyEngine@crc_internal@absl@@$0A@$0A@@Cr@std@@QAEAAPAVFallbackCrcMemcpyEngine@crc_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PAVFormatArgImpl@str_format_internal@absl@@$0A@$0A@@Cr@std@@QAEAAPAVFormatArgImpl@str_format_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PAVFormatArgImpl@str_format_internal@absl@@$0A@$0A@@Cr@std@@QBEABQAVFormatArgImpl@str_format_internal@absl@@XZ ?__get@?$__compressed_pair_elem@PAVTimeZoneIf@cctz@time_internal@absl@@$0A@$0A@@Cr@std@@QAEAAPAVTimeZoneIf@cctz@time_internal@absl@@XZ @@ -3202,10 +3449,12 @@ ?__get@?$__compressed_pair_elem@U?$default_delete@$$CBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAEAAU?$default_delete@$$CBVImpl@time_zone@cctz@time_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAEAAU?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@$00$00@Cr@std@@QAEAAU?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@23@XZ + ?__get@?$__compressed_pair_elem@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAEAAU?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@U?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAEAAU?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAEAAU?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAEAAU?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@V?$__allocator_destructor@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@$00$0A@@Cr@std@@QAEAAV?$__allocator_destructor@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@XZ + ?__get@?$__compressed_pair_elem@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@$00$0A@@Cr@std@@QAEAAV?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@23@XZ ?__get@?$__compressed_pair_elem@V?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@$00$0A@@Cr@std@@QAEAAV?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@@23@XZ ?__get@?$__compressed_pair_elem@V?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@$00$0A@@Cr@std@@QBEABV?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@@23@XZ ?__get@?$__compressed_pair_elem@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@$00$0A@@Cr@std@@QAEAAV?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@23@XZ @@ -3213,6 +3462,7 @@ ?__get@?$__compressed_pair_elem@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@Cr@std@@$00$00@Cr@std@@QAEAAV?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAEAAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@$00$00@Cr@std@@QAEAAV?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@23@XZ + ?__get@?$__compressed_pair_elem@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAEAAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAEAAV?$allocator@PAVCordzHandle@cord_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@$00$00@Cr@std@@QBEABV?$allocator@PAVCordzHandle@cord_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@PAVLogSink@absl@@@Cr@std@@$00$00@Cr@std@@QAEAAV?$allocator@PAVLogSink@absl@@@23@XZ @@ -3223,6 +3473,7 @@ ?__get@?$__compressed_pair_elem@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@$00$00@Cr@std@@QAEAAV?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAEAAV?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@$00$00@Cr@std@@QBEABV?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@23@XZ + ?__get@?$__compressed_pair_elem@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAEAAV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAEAAV?$allocator@UTransition@cctz@time_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QBEABV?$allocator@UTransition@cctz@time_internal@absl@@@23@XZ ?__get@?$__compressed_pair_elem@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@$00$00@Cr@std@@QAEAAV?$allocator@UTransitionType@cctz@time_internal@absl@@@23@XZ @@ -3246,6 +3497,7 @@ ?__make_iter@?$vector@UConversionItem@ParsedFormatBase@str_format_internal@absl@@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@ABE?AV?$__wrap_iter@PBUConversionItem@ParsedFormatBase@str_format_internal@absl@@@23@PBUConversionItem@ParsedFormatBase@str_format_internal@absl@@@Z ?__make_iter@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AAE?AV?$__wrap_iter@PAUTransition@cctz@time_internal@absl@@@23@PAUTransition@cctz@time_internal@absl@@@Z ?__make_iter@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AAE?AV?$__wrap_iter@PAUTransitionType@cctz@time_internal@absl@@@23@PAUTransitionType@cctz@time_internal@absl@@@Z + ?__maybe_remove_back_spare@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AAE_N_N@Z ?__move_range@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AAEXPAUTransition@cctz@time_internal@absl@@00@Z ?__move_range@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AAEXPAUTransitionType@cctz@time_internal@absl@@00@Z ?__node_alloc@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@QAEAAV?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@23@XZ @@ -3258,16 +3510,20 @@ ?__recommend@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@ABEII@Z ?__recommend@?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@ABEII@Z ?__recommend@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@ABEII@Z + ?__recommend_blocks@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAII@Z ?__rehash_unique@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@QAEXI@Z ?__rewrap@?$__unwrap_iter_impl@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@$00@Cr@std@@SAPAPAPBVImpl@time_zone@cctz@time_internal@absl@@PAPAPBV45678@0@Z + ?__rewrap@?$__unwrap_iter_impl@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@SAPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAPAU4567@0@Z ?__rewrap@?$__unwrap_iter_impl@PAPAVCordzHandle@cord_internal@absl@@$00@Cr@std@@SAPAPAVCordzHandle@cord_internal@absl@@PAPAV456@0@Z ?__rewrap@?$__unwrap_iter_impl@PAPAVLogSink@absl@@$00@Cr@std@@SAPAPAVLogSink@absl@@PAPAV45@0@Z ?__rewrap@?$__unwrap_iter_impl@PAPBVCordzHandle@cord_internal@absl@@$00@Cr@std@@SAPAPBVCordzHandle@cord_internal@absl@@PAPBV456@0@Z ?__rewrap@?$__unwrap_iter_impl@PAUConversionItem@ParsedFormatBase@str_format_internal@absl@@$00@Cr@std@@SAPAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PAU4567@0@Z + ?__rewrap@?$__unwrap_iter_impl@PAUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@SAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAU4567@0@Z ?__rewrap@?$__unwrap_iter_impl@PAUTransition@cctz@time_internal@absl@@$00@Cr@std@@SAPAUTransition@cctz@time_internal@absl@@PAU4567@0@Z ?__rewrap@?$__unwrap_iter_impl@PAUTransitionType@cctz@time_internal@absl@@$00@Cr@std@@SAPAUTransitionType@cctz@time_internal@absl@@PAU4567@0@Z ?__rewrap@?$__unwrap_iter_impl@PAUViableSubstitution@strings_internal@absl@@$00@Cr@std@@SAPAUViableSubstitution@strings_internal@absl@@PAU456@0@Z ?__rewrap@?$__unwrap_iter_impl@PAVFormatArgImpl@str_format_internal@absl@@$00@Cr@std@@SAPAVFormatArgImpl@str_format_internal@absl@@PAV456@0@Z + ?__rewrap@?$__unwrap_iter_impl@PBUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@SAPBUPrefixCrc@CrcCordState@crc_internal@absl@@PBU4567@0@Z ?__rewrap@?$__unwrap_iter_impl@PBVFormatArgImpl@str_format_internal@absl@@$00@Cr@std@@SAPBVFormatArgImpl@str_format_internal@absl@@PBV456@0@Z ?__rewrap@?$__unwrap_iter_impl@V?$reverse_iterator@PAPAVCordzHandle@cord_internal@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PAPAVCordzHandle@cord_internal@absl@@@23@V423@0@Z ?__rewrap@?$__unwrap_iter_impl@V?$reverse_iterator@PAPAVLogSink@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PAPAVLogSink@absl@@@23@V423@0@Z @@ -3276,9 +3532,12 @@ ?__rewrap@?$__unwrap_iter_impl@V?$reverse_iterator@PAUTransition@cctz@time_internal@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PAUTransition@cctz@time_internal@absl@@@23@V423@0@Z ?__rewrap@?$__unwrap_iter_impl@V?$reverse_iterator@PAUTransitionType@cctz@time_internal@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PAUTransitionType@cctz@time_internal@absl@@@23@V423@0@Z ?__rewrap@?$__unwrap_iter_impl@V?$reverse_iterator@PAUViableSubstitution@strings_internal@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PAUViableSubstitution@strings_internal@absl@@@23@V423@0@Z + ?__rewrap@?$__unwrap_range_impl@PBUPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@@Cr@std@@SA?A?<auto>@@PBUPrefixCrc@CrcCordState@crc_internal@absl@@0@Z ?__rewrap@?$__unwrap_range_impl@PBVFormatArgImpl@str_format_internal@absl@@PBV123@@Cr@std@@SA?A?<auto>@@PBVFormatArgImpl@str_format_internal@absl@@0@Z ?__size@?$deque@PBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEAAIXZ ?__size@?$deque@PBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QBEABIXZ + ?__size@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEAAIXZ + ?__size@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QBEABIXZ ?__swap_out_circular_buffer@?$vector@PAVCordzHandle@cord_internal@absl@@V?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@AAEXAAU?$__split_buffer@PAVCordzHandle@cord_internal@absl@@AAV?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@23@@Z ?__swap_out_circular_buffer@?$vector@PAVLogSink@absl@@V?$allocator@PAVLogSink@absl@@@Cr@std@@@Cr@std@@AAEXAAU?$__split_buffer@PAVLogSink@absl@@AAV?$allocator@PAVLogSink@absl@@@Cr@std@@@23@@Z ?__swap_out_circular_buffer@?$vector@PBVCordzHandle@cord_internal@absl@@V?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@AAEXAAU?$__split_buffer@PBVCordzHandle@cord_internal@absl@@AAV?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@@23@@Z @@ -3297,14 +3556,17 @@ ?__throw_length_error@?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@ABEXXZ ?__throw_length_error@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@ABEXXZ ?__unwrap@?$__unwrap_iter_impl@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@$00@Cr@std@@SAPAPAPBVImpl@time_zone@cctz@time_internal@absl@@PAPAPBV45678@@Z + ?__unwrap@?$__unwrap_iter_impl@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@SAPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAPAU4567@@Z ?__unwrap@?$__unwrap_iter_impl@PAPAVCordzHandle@cord_internal@absl@@$00@Cr@std@@SAPAPAVCordzHandle@cord_internal@absl@@PAPAV456@@Z ?__unwrap@?$__unwrap_iter_impl@PAPAVLogSink@absl@@$00@Cr@std@@SAPAPAVLogSink@absl@@PAPAV45@@Z ?__unwrap@?$__unwrap_iter_impl@PAPBVCordzHandle@cord_internal@absl@@$00@Cr@std@@SAPAPBVCordzHandle@cord_internal@absl@@PAPBV456@@Z ?__unwrap@?$__unwrap_iter_impl@PAUConversionItem@ParsedFormatBase@str_format_internal@absl@@$00@Cr@std@@SAPAUConversionItem@ParsedFormatBase@str_format_internal@absl@@PAU4567@@Z + ?__unwrap@?$__unwrap_iter_impl@PAUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@SAPAUPrefixCrc@CrcCordState@crc_internal@absl@@PAU4567@@Z ?__unwrap@?$__unwrap_iter_impl@PAUTransition@cctz@time_internal@absl@@$00@Cr@std@@SAPAUTransition@cctz@time_internal@absl@@PAU4567@@Z ?__unwrap@?$__unwrap_iter_impl@PAUTransitionType@cctz@time_internal@absl@@$00@Cr@std@@SAPAUTransitionType@cctz@time_internal@absl@@PAU4567@@Z ?__unwrap@?$__unwrap_iter_impl@PAUViableSubstitution@strings_internal@absl@@$00@Cr@std@@SAPAUViableSubstitution@strings_internal@absl@@PAU456@@Z ?__unwrap@?$__unwrap_iter_impl@PAVFormatArgImpl@str_format_internal@absl@@$00@Cr@std@@SAPAVFormatArgImpl@str_format_internal@absl@@PAV456@@Z + ?__unwrap@?$__unwrap_iter_impl@PBUPrefixCrc@CrcCordState@crc_internal@absl@@$00@Cr@std@@SAPBUPrefixCrc@CrcCordState@crc_internal@absl@@PBU4567@@Z ?__unwrap@?$__unwrap_iter_impl@PBVFormatArgImpl@str_format_internal@absl@@$00@Cr@std@@SAPBVFormatArgImpl@str_format_internal@absl@@PBV456@@Z ?__unwrap@?$__unwrap_iter_impl@V?$reverse_iterator@PAPAVCordzHandle@cord_internal@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PAPAVCordzHandle@cord_internal@absl@@@23@V423@@Z ?__unwrap@?$__unwrap_iter_impl@V?$reverse_iterator@PAPAVLogSink@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PAPAVLogSink@absl@@@23@V423@@Z @@ -3313,6 +3575,7 @@ ?__unwrap@?$__unwrap_iter_impl@V?$reverse_iterator@PAUTransition@cctz@time_internal@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PAUTransition@cctz@time_internal@absl@@@23@V423@@Z ?__unwrap@?$__unwrap_iter_impl@V?$reverse_iterator@PAUTransitionType@cctz@time_internal@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PAUTransitionType@cctz@time_internal@absl@@@23@V423@@Z ?__unwrap@?$__unwrap_iter_impl@V?$reverse_iterator@PAUViableSubstitution@strings_internal@absl@@@Cr@std@@$0A@@Cr@std@@SA?AV?$reverse_iterator@PAUViableSubstitution@strings_internal@absl@@@23@V423@@Z + ?__unwrap@?$__unwrap_range_impl@PBUPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@@Cr@std@@SA?A?<auto>@@PBUPrefixCrc@CrcCordState@crc_internal@absl@@0@Z ?__unwrap@?$__unwrap_range_impl@PBVFormatArgImpl@str_format_internal@absl@@PBV123@@Cr@std@@SA?A?<auto>@@PBVFormatArgImpl@str_format_internal@absl@@0@Z ?__upcast@?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@QAEPAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@23@XZ ?__vallocate@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@AAEXI@Z @@ -3329,6 +3592,7 @@ ?allocate@?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@QAEPAPAPBVImpl@time_zone@cctz@time_internal@absl@@I@Z ?allocate@?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@QAEPAPAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@23@I@Z ?allocate@?$allocator@PAUCordRep@cord_internal@absl@@@Cr@std@@QAEPAPAUCordRep@cord_internal@absl@@I@Z + ?allocate@?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QAEPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@I@Z ?allocate@?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@QAEPAPAVCordzHandle@cord_internal@absl@@I@Z ?allocate@?$allocator@PAVLogSink@absl@@@Cr@std@@QAEPAPAVLogSink@absl@@I@Z ?allocate@?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@QAEPAPBVCordzHandle@cord_internal@absl@@I@Z @@ -3336,6 +3600,7 @@ ?allocate@?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@QAEPAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@23@I@Z ?allocate@?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@QAEPAUConversionItem@ParsedFormatBase@str_format_internal@absl@@I@Z ?allocate@?$allocator@UPayload@status_internal@absl@@@Cr@std@@QAEPAUPayload@status_internal@absl@@I@Z + ?allocate@?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QAEPAUPrefixCrc@CrcCordState@crc_internal@absl@@I@Z ?allocate@?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@QAEPAUTransition@cctz@time_internal@absl@@I@Z ?allocate@?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@QAEPAUTransitionType@cctz@time_internal@absl@@I@Z ?allocate@?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@QAEPAUViableSubstitution@strings_internal@absl@@I@Z @@ -3346,6 +3611,7 @@ ?allocate@?$allocator_traits@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAPAPBVImpl@time_zone@cctz@time_internal@absl@@AAV?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@23@I@Z ?allocate@?$allocator_traits@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@SAPAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@23@AAV?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@23@I@Z ?allocate@?$allocator_traits@V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@Cr@std@@SAPAUPayload@status_internal@absl@@AAV?$allocator@UPayload@status_internal@absl@@@23@I@Z + ?allocate@?$allocator_traits@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAPAUPrefixCrc@CrcCordState@crc_internal@absl@@AAV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@23@I@Z ?arg@BoundConversion@str_format_internal@absl@@QBEPBVFormatArgImpl@23@XZ ?as_chars@InlineData@cord_internal@absl@@QAEPADXZ ?as_chars@InlineData@cord_internal@absl@@QBEPBDXZ @@ -3363,6 +3629,8 @@ ?back@?$InlinedVector@H$0CP@V?$allocator@H@Cr@std@@@absl@@QAEAAHXZ ?back@?$InlinedVector@PAUCordRep@cord_internal@absl@@$01V?$allocator@PAUCordRep@cord_internal@absl@@@Cr@std@@@absl@@QAEAAPAUCordRep@cord_internal@2@XZ ?back@?$InlinedVector@PAUCordRep@cord_internal@absl@@$0CP@V?$allocator@PAUCordRep@cord_internal@absl@@@Cr@std@@@absl@@QAEAAPAUCordRep@cord_internal@2@XZ + ?back@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEAAPAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?back@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QBEABUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?back@?$vector@UConversionItem@ParsedFormatBase@str_format_internal@absl@@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@QAEAAUConversionItem@ParsedFormatBase@str_format_internal@absl@@XZ ?back@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEAAUTransition@cctz@time_internal@absl@@XZ ?back@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEAAUTransitionType@cctz@time_internal@absl@@XZ @@ -3377,6 +3645,7 @@ ?base@?$__wrap_iter@PBUTransition@cctz@time_internal@absl@@@Cr@std@@QBEPBUTransition@cctz@time_internal@absl@@XZ ?base@?$__wrap_iter@PBUTransitionType@cctz@time_internal@absl@@@Cr@std@@QBEPBUTransitionType@cctz@time_internal@absl@@XZ ?base@?$move_iterator@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@QGBEABQAPAPBVImpl@time_zone@cctz@time_internal@absl@@XZ + ?base@?$move_iterator@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QGBEABQAPAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?base@?$move_iterator@PAUTransition@cctz@time_internal@absl@@@Cr@std@@QGBEABQAUTransition@cctz@time_internal@absl@@XZ ?base@?$move_iterator@PAUTransitionType@cctz@time_internal@absl@@@Cr@std@@QGBEABQAUTransitionType@cctz@time_internal@absl@@XZ ?base@?$reverse_iterator@PAPAVCordzHandle@cord_internal@absl@@@Cr@std@@QBEPAPAVCordzHandle@cord_internal@absl@@XZ @@ -3395,6 +3664,10 @@ ?begin@?$Span@QAUCordRep@cord_internal@absl@@@absl@@QBEPBQAUCordRep@cord_internal@2@XZ ?begin@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@QAE?AV?$__hash_iterator@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@23@XZ ?begin@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEPAPAPBVImpl@time_zone@cctz@time_internal@absl@@XZ + ?begin@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?begin@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QBEPBQAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?begin@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAE?AV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PAU1234@AAU1234@PAPAU1234@H$0A@@23@XZ + ?begin@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QBE?AV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@ABU1234@PBQBU1234@H$0A@@23@XZ ?begin@?$initializer_list@U?$pair@Vstring_view@absl@@V12@@Cr@std@@@std@@QBEPBU?$pair@Vstring_view@absl@@V12@@Cr@2@XZ ?begin@?$initializer_list@VFormatArgImpl@str_format_internal@absl@@@std@@QBEPBVFormatArgImpl@str_format_internal@absl@@XZ ?begin@?$initializer_list@Vstring_view@absl@@@std@@QBEPBVstring_view@absl@@XZ @@ -3408,6 +3681,7 @@ ?begin@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE?AV?$__wrap_iter@PAUTransitionType@cctz@time_internal@absl@@@23@XZ ?begin@ChunkRange@Cord@absl@@QBE?AVChunkIterator@23@XZ ?begin@CordRepBtree@cord_internal@absl@@QBEIXZ + ?begin@__deque_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QBE?AU1234@XZ ?begin@string_view@absl@@QBEPBDXZ ?btree@CordRep@cord_internal@absl@@QAEPAVCordRepBtree@23@XZ ?btree@CordRep@cord_internal@absl@@QBEPBVCordRepBtree@23@XZ @@ -3417,6 +3691,8 @@ ?bytes_value@ProtoField@log_internal@absl@@QBE?AV?$Span@$$CBD@3@XZ ?capacity@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@AAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QBEIXZ ?capacity@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QBEIXZ + ?capacity@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@AAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QBEIXZ + ?capacity@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QBEIXZ ?capacity@?$__split_buffer@PAVCordzHandle@cord_internal@absl@@AAV?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QBEIXZ ?capacity@?$__split_buffer@PAVLogSink@absl@@AAV?$allocator@PAVLogSink@absl@@@Cr@std@@@Cr@std@@QBEIXZ ?capacity@?$__split_buffer@PBVCordzHandle@cord_internal@absl@@AAV?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QBEIXZ @@ -3441,6 +3717,8 @@ ?clear@?$InlinedVector@PAVLogSink@absl@@$0BA@V?$allocator@PAVLogSink@absl@@@Cr@std@@@absl@@QAEXXZ ?clear@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@QAEXXZ ?clear@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@AAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXXZ + ?clear@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@AAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEXXZ + ?clear@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEXXZ ?clear@?$__split_buffer@PAVCordzHandle@cord_internal@absl@@AAV?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAEXXZ ?clear@?$__split_buffer@PAVLogSink@absl@@AAV?$allocator@PAVLogSink@absl@@@Cr@std@@@Cr@std@@QAEXXZ ?clear@?$__split_buffer@PBVCordzHandle@cord_internal@absl@@AAV?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAEXXZ @@ -3448,6 +3726,7 @@ ?clear@?$__split_buffer@UTransition@cctz@time_internal@absl@@AAV?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXXZ ?clear@?$__split_buffer@UTransitionType@cctz@time_internal@absl@@AAV?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXXZ ?clear@?$__split_buffer@UViableSubstitution@strings_internal@absl@@AAV?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QAEXXZ + ?clear@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEXXZ ?clear@?$unordered_map@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@QAEXXZ ?clear@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXXZ ?clear@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QAEXXZ @@ -3509,6 +3788,7 @@ ?deallocate@?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@QAEXPAPAPBVImpl@time_zone@cctz@time_internal@absl@@I@Z ?deallocate@?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@QAEXPAPAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@23@I@Z ?deallocate@?$allocator@PAUCordRep@cord_internal@absl@@@Cr@std@@QAEXPAPAUCordRep@cord_internal@absl@@I@Z + ?deallocate@?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QAEXPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@I@Z ?deallocate@?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@QAEXPAPAVCordzHandle@cord_internal@absl@@I@Z ?deallocate@?$allocator@PAVLogSink@absl@@@Cr@std@@QAEXPAPAVLogSink@absl@@I@Z ?deallocate@?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@QAEXPAPBVCordzHandle@cord_internal@absl@@I@Z @@ -3516,6 +3796,7 @@ ?deallocate@?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@QAEXPAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@23@I@Z ?deallocate@?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@QAEXPAUConversionItem@ParsedFormatBase@str_format_internal@absl@@I@Z ?deallocate@?$allocator@UPayload@status_internal@absl@@@Cr@std@@QAEXPAUPayload@status_internal@absl@@I@Z + ?deallocate@?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@QAEXPAUPrefixCrc@CrcCordState@crc_internal@absl@@I@Z ?deallocate@?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@QAEXPAUTransition@cctz@time_internal@absl@@I@Z ?deallocate@?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@QAEXPAUTransitionType@cctz@time_internal@absl@@I@Z ?deallocate@?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@QAEXPAUViableSubstitution@strings_internal@absl@@I@Z @@ -3523,6 +3804,7 @@ ?deallocate@?$allocator_traits@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@23@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@I@Z ?deallocate@?$allocator_traits@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@23@PAPAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@23@I@Z ?deallocate@?$allocator_traits@V?$allocator@PAUCordRep@cord_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@PAUCordRep@cord_internal@absl@@@23@PAPAUCordRep@cord_internal@absl@@I@Z + ?deallocate@?$allocator_traits@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@23@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@I@Z ?deallocate@?$allocator_traits@V?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@PAVCordzHandle@cord_internal@absl@@@23@PAPAVCordzHandle@cord_internal@absl@@I@Z ?deallocate@?$allocator_traits@V?$allocator@PAVLogSink@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@PAVLogSink@absl@@@23@PAPAVLogSink@absl@@I@Z ?deallocate@?$allocator_traits@V?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@PBVCordzHandle@cord_internal@absl@@@23@PAPBVCordzHandle@cord_internal@absl@@I@Z @@ -3530,6 +3812,7 @@ ?deallocate@?$allocator_traits@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@23@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@23@I@Z ?deallocate@?$allocator_traits@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@23@PAUConversionItem@ParsedFormatBase@str_format_internal@absl@@I@Z ?deallocate@?$allocator_traits@V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@UPayload@status_internal@absl@@@23@PAUPayload@status_internal@absl@@I@Z + ?deallocate@?$allocator_traits@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@23@PAUPrefixCrc@CrcCordState@crc_internal@absl@@I@Z ?deallocate@?$allocator_traits@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@UTransition@cctz@time_internal@absl@@@23@PAUTransition@cctz@time_internal@absl@@I@Z ?deallocate@?$allocator_traits@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@UTransitionType@cctz@time_internal@absl@@@23@PAUTransitionType@cctz@time_internal@absl@@I@Z ?deallocate@?$allocator_traits@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@SAXAAV?$allocator@UViableSubstitution@strings_internal@absl@@@23@PAUViableSubstitution@strings_internal@absl@@I@Z @@ -3549,6 +3832,8 @@ ?empty@?$Span@D@absl@@QBE_NXZ ?empty@?$Span@I@absl@@QBE_NXZ ?empty@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QBE_NXZ + ?empty@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QBE_NXZ + ?empty@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QBE_NXZ ?empty@?$vector@UConversionItem@ParsedFormatBase@str_format_internal@absl@@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@QBE_NXZ ?empty@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QBE_NXZ ?empty@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QBE_NXZ @@ -3564,7 +3849,10 @@ ?end@?$Span@QAUCordRep@cord_internal@absl@@@absl@@QBEPBQAUCordRep@cord_internal@2@XZ ?end@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@QAE?AV?$__hash_iterator@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@23@XZ ?end@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEPAPAPBVImpl@time_zone@cctz@time_internal@absl@@XZ + ?end@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?end@?$deque@PBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE?AV?$__deque_iterator@PBVImpl@time_zone@cctz@time_internal@absl@@PAPBV12345@AAPBV12345@PAPAPBV12345@H$0A@@23@XZ + ?end@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAE?AV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PAU1234@AAU1234@PAPAU1234@H$0A@@23@XZ + ?end@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QBE?AV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@ABU1234@PBQBU1234@H$0A@@23@XZ ?end@?$initializer_list@U?$pair@Vstring_view@absl@@V12@@Cr@std@@@std@@QBEPBU?$pair@Vstring_view@absl@@V12@@Cr@2@XZ ?end@?$initializer_list@Vstring_view@absl@@@std@@QBEPBVstring_view@absl@@XZ ?end@?$unordered_map@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@QAE?AV?$__hash_map_iterator@V?$__hash_iterator@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@23@XZ @@ -3575,7 +3863,9 @@ ?end@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE?AV?$__wrap_iter@PAUTransitionType@cctz@time_internal@absl@@@23@XZ ?end@ChunkRange@Cord@absl@@QBE?AVChunkIterator@23@XZ ?end@CordRepBtree@cord_internal@absl@@QBEIXZ + ?end@__deque_range@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QBE?AU1234@XZ ?end@string_view@absl@@QBEPBDXZ + ?engines@?1??CrcAndCopy@CrcMemcpy@crc_internal@absl@@SA?AVcrc32c_t@4@PIAXPIBXIV54@_N@Z@4UArchSpecificEngines@234@B ?entries@CordRepRing@cord_internal@absl@@QBEIII@Z ?entries@CordRepRing@cord_internal@absl@@QBEIXZ ?entry_begin_pos@CordRepRing@cord_internal@absl@@QBEABII@Z @@ -3612,6 +3902,8 @@ ?first@?$__compressed_pair@IV?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@QBEABIXZ ?first@?$__compressed_pair@IV?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEAAIXZ ?first@?$__compressed_pair@IV?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QBEABIXZ + ?first@?$__compressed_pair@IV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEAAIXZ + ?first@?$__compressed_pair@IV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QBEABIXZ ?first@?$__compressed_pair@MV?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@Cr@std@@@Cr@std@@QAEAAMXZ ?first@?$__compressed_pair@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@AAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEAAPAPAPBVImpl@time_zone@cctz@time_internal@absl@@XZ ?first@?$__compressed_pair@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@AAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QBEABQAPAPBVImpl@time_zone@cctz@time_internal@absl@@XZ @@ -3619,6 +3911,10 @@ ?first@?$__compressed_pair@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QBEABQAPAPBVImpl@time_zone@cctz@time_internal@absl@@XZ ?first@?$__compressed_pair@PAPAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QAEAAPAPAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@23@XZ ?first@?$__compressed_pair@PAPAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QBEABQAPAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@23@XZ + ?first@?$__compressed_pair@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@AAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEAAPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?first@?$__compressed_pair@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@AAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QBEABQAPAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?first@?$__compressed_pair@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEAAPAPAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?first@?$__compressed_pair@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QBEABQAPAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?first@?$__compressed_pair@PAPAVCordzHandle@cord_internal@absl@@AAV?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAEAAPAPAVCordzHandle@cord_internal@absl@@XZ ?first@?$__compressed_pair@PAPAVCordzHandle@cord_internal@absl@@AAV?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QBEABQAPAVCordzHandle@cord_internal@absl@@XZ ?first@?$__compressed_pair@PAPAVCordzHandle@cord_internal@absl@@V?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAEAAPAPAVCordzHandle@cord_internal@absl@@XZ @@ -3641,6 +3937,8 @@ ?first@?$__compressed_pair@PAUConversionItem@ParsedFormatBase@str_format_internal@absl@@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@QBEABQAUConversionItem@ParsedFormatBase@str_format_internal@absl@@XZ ?first@?$__compressed_pair@PAULogMessageData@LogMessage@log_internal@absl@@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@@Cr@std@@QAEAAPAULogMessageData@LogMessage@log_internal@absl@@XZ ?first@?$__compressed_pair@PAULogMessageData@LogMessage@log_internal@absl@@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@@Cr@std@@QBEABQAULogMessageData@LogMessage@log_internal@absl@@XZ + ?first@?$__compressed_pair@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QAEAAPAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ + ?first@?$__compressed_pair@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QBEABQAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?first@?$__compressed_pair@PAUThreadIdentity@base_internal@absl@@P6AXPAX@Z@Cr@std@@QAEAAPAUThreadIdentity@base_internal@absl@@XZ ?first@?$__compressed_pair@PAUTransition@cctz@time_internal@absl@@AAV?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEAAPAUTransition@cctz@time_internal@absl@@XZ ?first@?$__compressed_pair@PAUTransition@cctz@time_internal@absl@@AAV?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QBEABQAUTransition@cctz@time_internal@absl@@XZ @@ -3656,6 +3954,7 @@ ?first@?$__compressed_pair@PAUViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QBEABQAUViableSubstitution@strings_internal@absl@@XZ ?first@?$__compressed_pair@PAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QAEAAPAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@XZ ?first@?$__compressed_pair@PAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QBEABQAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@XZ + ?first@?$__compressed_pair@PAVFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEAAPAVFallbackCrcMemcpyEngine@crc_internal@absl@@XZ ?first@?$__compressed_pair@PAVFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QAEAAPAVFormatArgImpl@str_format_internal@absl@@XZ ?first@?$__compressed_pair@PAVFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QBEABQAVFormatArgImpl@str_format_internal@absl@@XZ ?first@?$__compressed_pair@PAVTimeZoneIf@cctz@time_internal@absl@@U?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEAAPAVTimeZoneIf@cctz@time_internal@absl@@XZ @@ -3674,6 +3973,7 @@ ?from_chars@absl@@YA?AUfrom_chars_result@1@PBD0AAMW4chars_format@1@@Z ?from_chars@absl@@YA?AUfrom_chars_result@1@PBD0AANW4chars_format@1@@Z ?front@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEAAPAPBVImpl@time_zone@cctz@time_internal@absl@@XZ + ?front@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEAAPAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?front@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEAAUTransition@cctz@time_internal@absl@@XZ ?front@string_view@absl@@QBEABDXZ ?gbswap_16@absl@@YAGG@Z @@ -3693,6 +3993,7 @@ ?get@?$__temp_value@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEAAUTransitionType@cctz@time_internal@absl@@XZ ?get@?$__tuple_leaf@$0A@ABVstring_view@absl@@$0A@@Cr@std@@QBEABVstring_view@absl@@XZ ?get@?$unique_ptr@PAPBVImpl@time_zone@cctz@time_internal@absl@@V?$__allocator_destructor@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QBEPAPBVImpl@time_zone@cctz@time_internal@absl@@XZ + ?get@?$unique_ptr@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QBEPAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?get@?$unique_ptr@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@23@@Cr@std@@QBEPAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@23@XZ ?get@?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QBEPAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@XZ ?get@?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QBEPAVZoneInfoSource@cctz@time_internal@absl@@XZ @@ -3701,6 +4002,7 @@ ?get_deleter@?$unique_ptr@$$BY0A@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QBEABV?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@@23@XZ ?get_deleter@?$unique_ptr@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@23@@Cr@std@@QAEAAV?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@23@XZ ?get_deleter@?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QAEAAU?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@23@XZ + ?get_deleter@?$unique_ptr@VFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEAAU?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@23@XZ ?get_from_arg@InputValue@UnboundConversion@str_format_internal@absl@@QBEHXZ ?get_weekday@detail@cctz@time_internal@absl@@YA?AW4weekday@1234@ABV?$civil_time@Usecond_tag@detail@cctz@time_internal@absl@@@1234@@Z ?get_yearday@detail@cctz@time_internal@absl@@YAHABV?$civil_time@Usecond_tag@detail@cctz@time_internal@absl@@@1234@@Z @@ -3795,6 +4097,7 @@ ?month@?$civil_time@Umonth_tag@detail@cctz@time_internal@absl@@@detail@cctz@time_internal@absl@@QBEHXZ ?month@?$civil_time@Usecond_tag@detail@cctz@time_internal@absl@@@detail@cctz@time_internal@absl@@QBEHXZ ?month@?$civil_time@Usecond_tag@time_internal@absl@@@detail@cctz@time_internal@absl@@QBEHXZ + ?mutable_rep@CrcCordState@crc_internal@absl@@QAEPAURep@123@XZ ?n_day@impl@detail@cctz@time_internal@absl@@YA?AUfields@2345@_JC00CCC@Z ?n_hour@impl@detail@cctz@time_internal@absl@@YA?AUfields@2345@_J0000CC@Z ?n_min@impl@detail@cctz@time_internal@absl@@YA?AUfields@2345@_J00000C@Z @@ -3804,6 +4107,8 @@ ?next@?$probe_seq@$0BA@@container_internal@absl@@QAEXXZ ?next_transition@time_zone@cctz@time_internal@absl@@QBE_NABV?$time_point@Vsystem_clock@chrono@Cr@std@@V?$duration@_JV?$ratio@$00$00@Cr@std@@@234@@chrono@Cr@std@@PAUcivil_transition@1234@@Z ?next_weekday@detail@cctz@time_internal@absl@@YA?AV?$civil_time@Uday_tag@detail@cctz@time_internal@absl@@@1234@V51234@W4weekday@1234@@Z + ?non_temporal_store_memcpy@crc_internal@absl@@YAPAXPIAXPIBXI@Z + ?non_temporal_store_memcpy_avx@crc_internal@absl@@YAPAXPIAXPIBXI@Z ?offset@?$probe_seq@$0BA@@container_internal@absl@@QBEII@Z ?offset@?$probe_seq@$0BA@@container_internal@absl@@QBEIXZ ?ok@Status@absl@@QBE_NXZ @@ -3817,8 +4122,10 @@ ?pop_back@?$InlinedVector@H$0CP@V?$allocator@H@Cr@std@@@absl@@QAEXXZ ?pop_back@?$InlinedVector@PAUCordRep@cord_internal@absl@@$01V?$allocator@PAUCordRep@cord_internal@absl@@@Cr@std@@@absl@@QAEXXZ ?pop_back@?$InlinedVector@PAUCordRep@cord_internal@absl@@$0CP@V?$allocator@PAUCordRep@cord_internal@absl@@@Cr@std@@@absl@@QAEXXZ + ?pop_back@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEXXZ ?pop_back@?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QAEXXZ ?pop_front@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXXZ + ?pop_front@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEXXZ ?pos@Filler@CordRepRing@cord_internal@absl@@QBEIXZ ?precision@FormatConversionSpecImpl@str_format_internal@absl@@QBEHXZ ?prefix@LogEntry@absl@@QBE_NXZ @@ -3831,7 +4138,12 @@ ?push_back@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@AAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEX$$QAPAPBVImpl@time_zone@cctz@time_internal@absl@@@Z ?push_back@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEX$$QAPAPBVImpl@time_zone@cctz@time_internal@absl@@@Z ?push_back@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXABQAPBVImpl@time_zone@cctz@time_internal@absl@@@Z + ?push_back@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@AAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEX$$QAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?push_back@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@AAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEXABQAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?push_back@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEX$$QAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?push_back@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEXABQAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ?push_back@?$deque@PBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXABQBVImpl@time_zone@cctz@time_internal@absl@@@Z + ?push_back@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEX$$QAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ?push_back@?$vector@PAVCordzHandle@cord_internal@absl@@V?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAEXABQAVCordzHandle@cord_internal@absl@@@Z ?push_back@?$vector@PAVLogSink@absl@@V?$allocator@PAVLogSink@absl@@@Cr@std@@@Cr@std@@QAEXABQAVLogSink@absl@@@Z ?push_back@?$vector@PBVCordzHandle@cord_internal@absl@@V?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAEXABQBVCordzHandle@cord_internal@absl@@@Z @@ -3839,6 +4151,8 @@ ?push_back@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXABUTransition@cctz@time_internal@absl@@@Z ?push_front@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@AAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXABQAPBVImpl@time_zone@cctz@time_internal@absl@@@Z ?push_front@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEX$$QAPAPBVImpl@time_zone@cctz@time_internal@absl@@@Z + ?push_front@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@AAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEXABQAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?push_front@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEX$$QAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ?raw_code@Status@absl@@QBEHXZ ?rbegin@string_view@absl@@QBE?AV?$reverse_iterator@PBD@Cr@std@@XZ ?reduce_size@InlineRep@Cord@absl@@QAEXI@Z @@ -3846,8 +4160,10 @@ ?reference@?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@absl@@AAEAAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@XZ ?release@?$unique_ptr@$$CBVImpl@time_zone@cctz@time_internal@absl@@U?$default_delete@$$CBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEPBVImpl@time_zone@cctz@time_internal@absl@@XZ ?release@?$unique_ptr@PAPBVImpl@time_zone@cctz@time_internal@absl@@V?$__allocator_destructor@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QAEPAPBVImpl@time_zone@cctz@time_internal@absl@@XZ + ?release@?$unique_ptr@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QAEPAUPrefixCrc@CrcCordState@crc_internal@absl@@XZ ?release@?$unique_ptr@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@23@@Cr@std@@QAEPAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@23@XZ ?release@?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QAEPAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@XZ + ?release@?$unique_ptr@VFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEPAVFallbackCrcMemcpyEngine@crc_internal@absl@@XZ ?release@?$unique_ptr@VTimeZoneInfo@cctz@time_internal@absl@@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEPAVTimeZoneInfo@cctz@time_internal@absl@@XZ ?remaining_inline_capacity@InlineRep@Cord@absl@@QBEIXZ ?remove_prefix@?$Span@$$CBD@absl@@QAEXI@Z @@ -3858,16 +4174,19 @@ ?remove_suffix@?$Span@D@absl@@QAEXI@Z ?remove_suffix@string_view@absl@@QAEXI@Z ?rend@string_view@absl@@QBE?AV?$reverse_iterator@PBD@Cr@std@@XZ + ?rep@CrcCordState@crc_internal@absl@@QBEABURep@123@XZ ?rep@Rep@CordBuffer@absl@@QBEPAUCordRepFlat@cord_internal@3@XZ ?reserve@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXI@Z ?reserve@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXI@Z ?reserve@?$vector@UViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QAEXI@Z ?reset@?$unique_ptr@$$CBVImpl@time_zone@cctz@time_internal@absl@@U?$default_delete@$$CBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXPBVImpl@time_zone@cctz@time_internal@absl@@@Z ?reset@?$unique_ptr@PAPBVImpl@time_zone@cctz@time_internal@absl@@V?$__allocator_destructor@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QAEXPAPBVImpl@time_zone@cctz@time_internal@absl@@@Z + ?reset@?$unique_ptr@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QAEXPAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ?reset@?$unique_ptr@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@V?$__hash_node_destructor@V?$allocator@U?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@23@@Cr@std@@QAEXPAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@23@@Z ?reset@?$unique_ptr@ULogMessageData@LogMessage@log_internal@absl@@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@@Cr@std@@QAEXPAULogMessageData@LogMessage@log_internal@absl@@@Z ?reset@?$unique_ptr@UThreadIdentity@base_internal@absl@@P6AXPAX@Z@Cr@std@@QAEXPAUThreadIdentity@base_internal@absl@@@Z ?reset@?$unique_ptr@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QAEXPAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Z + ?reset@?$unique_ptr@VFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEXPAVFallbackCrcMemcpyEngine@crc_internal@absl@@@Z ?reset@?$unique_ptr@VTimeZoneIf@cctz@time_internal@absl@@U?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXPAVTimeZoneIf@cctz@time_internal@absl@@@Z ?reset@?$unique_ptr@VTimeZoneInfo@cctz@time_internal@absl@@U?$default_delete@VTimeZoneInfo@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXPAVTimeZoneInfo@cctz@time_internal@absl@@@Z ?reset@?$unique_ptr@VZoneInfoSource@cctz@time_internal@absl@@U?$default_delete@VZoneInfoSource@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXPAVZoneInfoSource@cctz@time_internal@absl@@@Z @@ -3889,11 +4208,14 @@ ?second@?$__compressed_pair@IV?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@Cr@std@@@Cr@std@@QAEAAV?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@XZ ?second@?$__compressed_pair@IV?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@QAEAAV?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@23@XZ ?second@?$__compressed_pair@IV?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEAAV?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@23@XZ + ?second@?$__compressed_pair@IV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEAAV?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@23@XZ ?second@?$__compressed_pair@MV?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@Cr@std@@@Cr@std@@QAEAAV?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@XZ ?second@?$__compressed_pair@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@AAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEAAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@23@XZ ?second@?$__compressed_pair@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEAAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@23@XZ ?second@?$__compressed_pair@PAPAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QAEAAV?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@@23@XZ ?second@?$__compressed_pair@PAPAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@V?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@@23@@Cr@std@@QBEABV?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@@23@XZ + ?second@?$__compressed_pair@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@AAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEAAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@23@XZ + ?second@?$__compressed_pair@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEAAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@23@XZ ?second@?$__compressed_pair@PAPAVCordzHandle@cord_internal@absl@@AAV?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAEAAV?$allocator@PAVCordzHandle@cord_internal@absl@@@23@XZ ?second@?$__compressed_pair@PAPAVCordzHandle@cord_internal@absl@@V?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAEAAV?$allocator@PAVCordzHandle@cord_internal@absl@@@23@XZ ?second@?$__compressed_pair@PAPAVCordzHandle@cord_internal@absl@@V?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QBEABV?$allocator@PAVCordzHandle@cord_internal@absl@@@23@XZ @@ -3909,6 +4231,7 @@ ?second@?$__compressed_pair@PAUConversionItem@ParsedFormatBase@str_format_internal@absl@@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@QAEAAV?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@23@XZ ?second@?$__compressed_pair@PAUConversionItem@ParsedFormatBase@str_format_internal@absl@@V?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@Cr@std@@@Cr@std@@QBEABV?$allocator@UConversionItem@ParsedFormatBase@str_format_internal@absl@@@23@XZ ?second@?$__compressed_pair@PAULogMessageData@LogMessage@log_internal@absl@@U?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@Cr@std@@@Cr@std@@QAEAAU?$default_delete@ULogMessageData@LogMessage@log_internal@absl@@@23@XZ + ?second@?$__compressed_pair@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@@Cr@std@@QAEAAV?$__allocator_destructor@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@23@XZ ?second@?$__compressed_pair@PAUThreadIdentity@base_internal@absl@@P6AXPAX@Z@Cr@std@@QAEAAP6AXPAX@ZXZ ?second@?$__compressed_pair@PAUTransition@cctz@time_internal@absl@@AAV?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEAAV?$allocator@UTransition@cctz@time_internal@absl@@@23@XZ ?second@?$__compressed_pair@PAUTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEAAV?$allocator@UTransition@cctz@time_internal@absl@@@23@XZ @@ -3920,6 +4243,7 @@ ?second@?$__compressed_pair@PAUViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QAEAAV?$allocator@UViableSubstitution@strings_internal@absl@@@23@XZ ?second@?$__compressed_pair@PAUViableSubstitution@strings_internal@absl@@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@QBEABV?$allocator@UViableSubstitution@strings_internal@absl@@@23@XZ ?second@?$__compressed_pair@PAV?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@U?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@Cr@std@@@Cr@std@@QAEAAU?$default_delete@V?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@@23@XZ + ?second@?$__compressed_pair@PAVFallbackCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEAAU?$default_delete@VFallbackCrcMemcpyEngine@crc_internal@absl@@@23@XZ ?second@?$__compressed_pair@PAVFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QAEAAV?$allocator@VFormatArgImpl@str_format_internal@absl@@@23@XZ ?second@?$__compressed_pair@PAVFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QBEABV?$allocator@VFormatArgImpl@str_format_internal@absl@@@23@XZ ?second@?$__compressed_pair@PAVTimeZoneIf@cctz@time_internal@absl@@U?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEAAU?$default_delete@VTimeZoneIf@cctz@time_internal@absl@@@23@XZ @@ -3966,7 +4290,9 @@ ?size@?$__bucket_list_deallocator@V?$allocator@PAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@Cr@std@@@Cr@std@@@Cr@std@@QBEIXZ ?size@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@AAEAAIXZ ?size@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QBEIXZ + ?size@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QBEIXZ ?size@?$deque@PBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QBEIXZ + ?size@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QBEIXZ ?size@?$initializer_list@U?$pair@Vstring_view@absl@@V12@@Cr@std@@@std@@QBEIXZ ?size@?$initializer_list@VFormatArgImpl@str_format_internal@absl@@@std@@QBEIXZ ?size@?$initializer_list@W4FormatConversionCharSet@absl@@@std@@QBEIXZ
diff --git a/third_party/abseil-cpp/symbols_x86_rel.def b/third_party/abseil-cpp/symbols_x86_rel.def index dba3082..370d5231 100644 --- a/third_party/abseil-cpp/symbols_x86_rel.def +++ b/third_party/abseil-cpp/symbols_x86_rel.def
@@ -1,4 +1,5 @@ EXPORTS + ?$TSS0@?1??CrcAndCopy@CrcMemcpy@crc_internal@absl@@SA?AVcrc32c_t@3@PIAXPIBXIV43@_N@Z@4HA ??$?0ABVCord@absl@@@?$optional_data_dtor_base@VCord@absl@@$0A@@optional_internal@absl@@IAE@Uin_place_t@2@ABVCord@2@@Z ??$?0PAI@?$SaltedSeedSeq@Vseed_seq@Cr@std@@@random_internal@absl@@QAE@PAI0@Z ??$?0V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@$0A@@Cord@absl@@QAE@$$QAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z @@ -40,6 +41,19 @@ ??$ConstructElements@V?$allocator@PAVLogSink@absl@@@Cr@std@@V?$IteratorValueAdapter@V?$allocator@PAVLogSink@absl@@@Cr@std@@V?$move_iterator@PAPAVLogSink@absl@@@23@@inlined_vector_internal@absl@@@inlined_vector_internal@absl@@YAXAAV?$allocator@PAVLogSink@absl@@@Cr@std@@PAPAVLogSink@1@AAV?$IteratorValueAdapter@V?$allocator@PAVLogSink@absl@@@Cr@std@@V?$move_iterator@PAPAVLogSink@absl@@@23@@01@I@Z ??$ConsumeConversion@$00@str_format_internal@absl@@YAPBDPBDQBDPAUUnboundConversion@01@PAH@Z ??$ConsumeConversion@$0A@@str_format_internal@absl@@YAPBDPBDQBDPAUUnboundConversion@01@PAH@Z + ??$ConvertIntArg@C@str_format_internal@absl@@YA_NCVFormatConversionSpecImpl@01@PAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@D@str_format_internal@absl@@YA_NDVFormatConversionSpecImpl@01@PAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@E@str_format_internal@absl@@YA_NEVFormatConversionSpecImpl@01@PAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@F@str_format_internal@absl@@YA_NFVFormatConversionSpecImpl@01@PAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@G@str_format_internal@absl@@YA_NGVFormatConversionSpecImpl@01@PAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@H@str_format_internal@absl@@YA_NHVFormatConversionSpecImpl@01@PAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@I@str_format_internal@absl@@YA_NIVFormatConversionSpecImpl@01@PAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@J@str_format_internal@absl@@YA_NJVFormatConversionSpecImpl@01@PAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@K@str_format_internal@absl@@YA_NKVFormatConversionSpecImpl@01@PAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@Vint128@absl@@@str_format_internal@absl@@YA_NVint128@1@VFormatConversionSpecImpl@01@PAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@Vuint128@absl@@@str_format_internal@absl@@YA_NVuint128@1@VFormatConversionSpecImpl@01@PAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@_J@str_format_internal@absl@@YA_N_JVFormatConversionSpecImpl@01@PAVFormatSinkImpl@01@@Z + ??$ConvertIntArg@_K@str_format_internal@absl@@YA_N_KVFormatConversionSpecImpl@01@PAVFormatSinkImpl@01@@Z ??$Dispatch@C@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PAX@Z ??$Dispatch@D@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PAX@Z ??$Dispatch@E@FormatArgImpl@str_format_internal@absl@@CA_NTData@012@VFormatConversionSpecImpl@12@PAX@Z @@ -117,6 +131,7 @@ ??$StrReplaceAll@V?$initializer_list@U?$pair@Vstring_view@absl@@V12@@Cr@std@@@std@@@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@Vstring_view@0@ABV?$initializer_list@U?$pair@Vstring_view@absl@@V12@@Cr@std@@@3@@Z ??$StrReplaceAll@V?$initializer_list@U?$pair@Vstring_view@absl@@V12@@Cr@std@@@std@@@absl@@YAHABV?$initializer_list@U?$pair@Vstring_view@absl@@V12@@Cr@std@@@std@@PAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@2@@Z ??$__allocate_at_least@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@@01@AAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@01@I@Z + ??$__allocate_at_least@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@01@AAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@01@I@Z ??$__allocate_at_least@V?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PAPAVCordzHandle@cord_internal@absl@@@01@AAV?$allocator@PAVCordzHandle@cord_internal@absl@@@01@I@Z ??$__allocate_at_least@V?$allocator@PAVLogSink@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PAPAVLogSink@absl@@@01@AAV?$allocator@PAVLogSink@absl@@@01@I@Z ??$__allocate_at_least@V?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PAPBVCordzHandle@cord_internal@absl@@@01@AAV?$allocator@PBVCordzHandle@cord_internal@absl@@@01@I@Z @@ -125,7 +140,9 @@ ??$__allocate_at_least@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PAUTransitionType@cctz@time_internal@absl@@@01@AAV?$allocator@UTransitionType@cctz@time_internal@absl@@@01@I@Z ??$__allocate_at_least@V?$allocator@UViableSubstitution@strings_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PAUViableSubstitution@strings_internal@absl@@@01@AAV?$allocator@UViableSubstitution@strings_internal@absl@@@01@I@Z ??$__allocate_at_least@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@YA?AU?$__allocation_result@PAVFormatArgImpl@str_format_internal@absl@@@01@AAV?$allocator@VFormatArgImpl@str_format_internal@absl@@@01@I@Z + ??$__append@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@ABU1234@PBQBU1234@H$0A@@Cr@std@@@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AAEXV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@ABU1234@PBQBU1234@H$0A@@12@0PAX@Z ??$__construct_at_end@V?$move_iterator@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@AAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXV?$move_iterator@PAPAPBVImpl@time_zone@cctz@time_internal@absl@@@12@0@Z + ??$__construct_at_end@V?$move_iterator@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@AAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEXV?$move_iterator@PAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@12@0@Z ??$__construct_at_end@V?$move_iterator@PAUTransition@cctz@time_internal@absl@@@Cr@std@@@?$__split_buffer@UTransition@cctz@time_internal@absl@@AAV?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXV?$move_iterator@PAUTransition@cctz@time_internal@absl@@@12@0@Z ??$__construct_at_end@V?$move_iterator@PAUTransitionType@cctz@time_internal@absl@@@Cr@std@@@?$__split_buffer@UTransitionType@cctz@time_internal@absl@@AAV?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXV?$move_iterator@PAUTransitionType@cctz@time_internal@absl@@@12@0@Z ??$__destroy_at@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@$0A@@Cr@std@@YAXPAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@01@@Z @@ -135,12 +152,15 @@ ??$__rehash@$00@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@AAEXI@Z ??$__upper_bound@U_ClassicAlgPolicy@Cr@std@@UByCivilTime@Transition@cctz@time_internal@absl@@PBU5678@PBU5678@U5678@U__identity@23@@Cr@std@@YAPBUTransition@cctz@time_internal@absl@@PBU2345@0ABU2345@$$QAUByCivilTime@2345@$$QAU__identity@01@@Z ??$assign@PBVFormatArgImpl@str_format_internal@absl@@$0A@@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@QAEXPBVFormatArgImpl@str_format_internal@absl@@0@Z + ??$assign@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@ABU1234@PBQBU1234@H$0A@@Cr@std@@@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEXV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@ABU1234@PBQBU1234@H$0A@@12@0PAX@Z ??$assign@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@?$optional_data_base@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@optional_internal@absl@@IAEX$$QAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ??$construct_at@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@ABUpiecewise_construct_t@23@V?$tuple@ABV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@V?$tuple@$$V@23@PAU123@@Cr@std@@YAPAU?$pair@$$CBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@01@PAU201@ABUpiecewise_construct_t@01@$$QAV?$tuple@ABV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@01@$$QAV?$tuple@$$V@01@@Z ??$construct_at@UPayload@status_internal@absl@@ABU123@PAU123@@Cr@std@@YAPAUPayload@status_internal@absl@@PAU234@ABU234@@Z ??$construct_at@UTransition@cctz@time_internal@absl@@$$VPAU1234@@Cr@std@@YAPAUTransition@cctz@time_internal@absl@@PAU2345@@Z ??$construct_at@UTransitionType@cctz@time_internal@absl@@$$VPAU1234@@Cr@std@@YAPAUTransitionType@cctz@time_internal@absl@@PAU2345@@Z ??$construct_at@UViableSubstitution@strings_internal@absl@@AAVstring_view@3@ABV43@AAIPAU123@@Cr@std@@YAPAUViableSubstitution@strings_internal@absl@@PAU234@AAVstring_view@4@ABV54@AAI@Z + ??$copy@PBUPrefixCrc@CrcCordState@crc_internal@absl@@U1234@PAU1234@AAU1234@PAPAU1234@H$0A@@Cr@std@@YA?AV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PAU1234@AAU1234@PAPAU1234@H$0A@@01@PBUPrefixCrc@CrcCordState@crc_internal@absl@@0V201@PAX@Z + ??$copy@UPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@ABU1234@PBQBU1234@H$0A@U1234@PAU1234@AAU1234@PAPAU1234@H$0A@@Cr@std@@YA?AV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PAU1234@AAU1234@PAPAU1234@H$0A@@01@V?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@ABU1234@PBQBU1234@H$0A@@01@0V201@@Z ??$emplace@$$V@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE?AV?$__wrap_iter@PAUTransition@cctz@time_internal@absl@@@12@V?$__wrap_iter@PBUTransition@cctz@time_internal@absl@@@12@@Z ??$emplace@$$V@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAE?AV?$__wrap_iter@PAUTransitionType@cctz@time_internal@absl@@@12@V?$__wrap_iter@PBUTransitionType@cctz@time_internal@absl@@@12@@Z ??$emplace_back@$$V@?$__split_buffer@UTransition@cctz@time_internal@absl@@AAV?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXXZ @@ -175,6 +195,7 @@ ??0ByAnyChar@absl@@QAE@Vstring_view@1@@Z ??0ByLength@absl@@QAE@H@Z ??0ByString@absl@@QAE@Vstring_view@1@@Z + ??0CRC@crc_internal@absl@@IAE@XZ ??0CheckOpMessageBuilder@log_internal@absl@@QAE@PBD@Z ??0ChunkIterator@Cord@absl@@AAE@PBV12@@Z ??0Condition@absl@@QAE@P6A_NPAX@Z0@Z @@ -183,6 +204,9 @@ ??0Cord@absl@@QAE@ABV01@@Z ??0CordzHandle@cord_internal@absl@@IAE@_N@Z ??0CordzInfo@cord_internal@absl@@AAE@PAUCordRep@12@PBV012@W4MethodIdentifier@CordzUpdateTracker@12@@Z + ??0CrcCordState@crc_internal@absl@@QAE@$$QAV012@@Z + ??0CrcCordState@crc_internal@absl@@QAE@ABV012@@Z + ??0CrcCordState@crc_internal@absl@@QAE@XZ ??0GraphCycles@synchronization_internal@absl@@QAE@XZ ??0HashtablezInfo@container_internal@absl@@QAE@XZ ??0Impl@time_zone@cctz@time_internal@absl@@AAE@ABV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z @@ -211,11 +235,15 @@ ??0uint128@absl@@QAE@M@Z ??0uint128@absl@@QAE@N@Z ??0uint128@absl@@QAE@O@Z + ??1?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ + ??1?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAE@XZ ??1BadStatusOrAccess@absl@@UAE@XZ + ??1CRC@crc_internal@absl@@UAE@XZ ??1CheckOpMessageBuilder@log_internal@absl@@QAE@XZ ??1CondVar@absl@@QAE@XZ ??1CordzHandle@cord_internal@absl@@MAE@XZ ??1CordzInfo@cord_internal@absl@@EAE@XZ + ??1CrcCordState@crc_internal@absl@@QAE@XZ ??1GraphCycles@synchronization_internal@absl@@QAE@XZ ??1HashtablezInfo@container_internal@absl@@QAE@XZ ??1LogMessage@log_internal@absl@@QAE@XZ @@ -231,10 +259,13 @@ ??1ZoneInfoSource@cctz@time_internal@absl@@UAE@XZ ??1bad_optional_access@absl@@UAE@XZ ??1bad_variant_access@absl@@UAE@XZ + ??4?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEAAV012@ABV012@@Z ??4?$optional_data@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@$0A@@optional_internal@absl@@IAEAAV012@$$QAV012@@Z ??4BadStatusOrAccess@absl@@QAEAAV01@$$QAV01@@Z ??4BadStatusOrAccess@absl@@QAEAAV01@ABV01@@Z ??4Cord@absl@@QAEAAV01@Vstring_view@1@@Z + ??4CrcCordState@crc_internal@absl@@QAEAAV012@$$QAV012@@Z + ??4CrcCordState@crc_internal@absl@@QAEAAV012@ABV012@@Z ??6LogMessage@log_internal@absl@@QAEAAV012@ABV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ??6LogMessage@log_internal@absl@@QAEAAV012@P6AAAV?$basic_ostream@DU?$char_traits@D@Cr@std@@@Cr@std@@AAV345@@Z@Z ??6LogMessage@log_internal@absl@@QAEAAV012@P6AAAVios_base@Cr@std@@AAV345@@Z@Z @@ -382,12 +413,13 @@ ?CheckstrcasecmptrueImpl@log_internal@absl@@YAPAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBD00@Z ?CheckstrcmpfalseImpl@log_internal@absl@@YAPAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBD00@Z ?CheckstrcmptrueImpl@log_internal@absl@@YAPAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBD00@Z + ?Checksum@CrcCordState@crc_internal@absl@@QBE?AVcrc32c_t@3@XZ ?CityHash32@hash_internal@absl@@YAIPBDI@Z ?CityHash64@hash_internal@absl@@YA_KPBDI@Z ?CityHash64WithSeed@hash_internal@absl@@YA_KPBDI_K@Z ?CityHash64WithSeeds@hash_internal@absl@@YA_KPBDI_K1@Z ?Clear@Cord@absl@@QAEXXZ - ?ClearBackingArray@container_internal@absl@@YAXAAVCommonFields@12@AAIABUPolicyFunctions@12@_N@Z + ?ClearBackingArray@container_internal@absl@@YAXAAVCommonFields@12@ABUPolicyFunctions@12@_N@Z ?ClearCurrentThreadIdentity@base_internal@absl@@YAXXZ ?ClearTimeZoneMapTestOnly@Impl@time_zone@cctz@time_internal@absl@@SAXXZ ?CombineContiguousImpl@MixingHashState@hash_internal@absl@@CA_K_KPBEIU?$integral_constant@H$03@Cr@std@@@Z @@ -398,6 +430,12 @@ ?CompareImpl@Cord@absl@@ABEHABV12@@Z ?CompareSlowPath@Cord@absl@@ABEHABV12@II@Z ?CompareSlowPath@Cord@absl@@ABEHVstring_view@2@II@Z + ?Compute@CrcNonTemporalMemcpyAVXEngine@crc_internal@absl@@UBE?AVcrc32c_t@3@PIAXPIBXIV43@@Z + ?Compute@CrcNonTemporalMemcpyEngine@crc_internal@absl@@UBE?AVcrc32c_t@3@PIAXPIBXIV43@@Z + ?Compute@FallbackCrcMemcpyEngine@crc_internal@absl@@UBE?AVcrc32c_t@3@PIAXPIBXIV43@@Z + ?ComputeCrc32c@absl@@YA?AVcrc32c_t@1@Vstring_view@1@@Z + ?Concat@CRC@crc_internal@absl@@UAEXPAIII@Z + ?ConcatCrc32c@absl@@YA?AVcrc32c_t@1@V21@0I@Z ?Consume@cord_internal@absl@@YAXPAUCordRep@12@V?$FunctionRef@$$A6AXPAUCordRep@cord_internal@absl@@II@Z@2@@Z ?ConsumeBeginTo@CordRepBtree@cord_internal@absl@@CAPAV123@PAV123@II@Z ?ConsumeUnboundConversion@str_format_internal@absl@@YAPBDPBD0PAUUnboundConversion@12@PAH@Z @@ -417,6 +455,8 @@ ?CopyToEncodedBuffer@LogMessage@log_internal@absl@@AAEXDIW4StringType@123@@Z ?CopyToEncodedBuffer@LogMessage@log_internal@absl@@AAEXVstring_view@3@W4StringType@123@@Z ?Crash@Helper@internal_statusor@absl@@SAXABVStatus@3@@Z + ?Crc32c@CRC@crc_internal@absl@@SAPAV123@XZ + ?CrcAndCopy@CrcMemcpy@crc_internal@absl@@SA?AVcrc32c_t@3@PIAXPIBXIV43@_N@Z ?Create@CordRepRing@cord_internal@absl@@SAPAV123@PAUCordRep@23@I@Z ?CreateFromLeaf@CordRepRing@cord_internal@absl@@CAPAV123@PAUCordRep@23@III@Z ?CreateSlow@CordRepBtree@cord_internal@absl@@CAPAV123@PAUCordRep@23@@Z @@ -451,7 +491,7 @@ ?DieBecauseNull@log_internal@absl@@YAXPBDH0@Z ?Digits10@?$BigUnsigned@$03@strings_internal@absl@@SAHXZ ?Digits10@?$BigUnsigned@$0FE@@strings_internal@absl@@SAHXZ - ?DropDeletesWithoutResize@container_internal@absl@@YAXAAVCommonFields@12@AAIABUPolicyFunctions@12@PAX@Z + ?DropDeletesWithoutResize@container_internal@absl@@YAXAAVCommonFields@12@ABUPolicyFunctions@12@PAX@Z ?DummyFunction@?$AtomicHook@P6A?AV?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@absl@@Vstring_view@2@ABVCord@2@@Z@base_internal@absl@@CA?AV?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@3@Vstring_view@3@ABVCord@3@@Z ?DummyFunction@?$AtomicHook@P6AXPBDH000@Z@base_internal@absl@@CAXPBDH000@Z ?DummyFunction@?$AtomicHook@P6AXPBDPBX@Z@base_internal@absl@@CAXPBDPBX@Z @@ -466,6 +506,7 @@ ?DumpStackTrace@debugging_internal@absl@@YAXHH_NP6AXPBDPAX@Z2@Z ?DurationFromTimespec@absl@@YA?AVDuration@1@Utimespec@@@Z ?DurationFromTimeval@absl@@YA?AVDuration@1@Utimeval@@@Z + ?Empty@CRCImpl@crc_internal@absl@@UBEXPAI@Z ?EmptyString@Status@absl@@CAPBV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@XZ ?EnableDebugLog@CondVar@absl@@QAEXPBD@Z ?EnableDebugLog@Mutex@absl@@QAEXPBD@Z @@ -491,13 +532,18 @@ ?EqualsSlow@Status@absl@@CA_NABV12@0@Z ?EquivTransitions@TimeZoneInfo@cctz@time_internal@absl@@ABE_NEE@Z ?Erase@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QAEPAUPayload@status_internal@3@PBU453@0@Z - ?EraseMetaOnly@container_internal@absl@@YAXAAVCommonFields@12@AAIPAW4ctrl_t@12@I@Z + ?EraseMetaOnly@container_internal@absl@@YAXAAVCommonFields@12@PAW4ctrl_t@12@I@Z ?ErasePayload@Status@absl@@QAE_NVstring_view@2@@Z ?ErrnoToStatus@absl@@YA?AVStatus@1@HVstring_view@1@@Z ?ErrnoToStatusCode@absl@@YA?AW4StatusCode@1@H@Z ?Eval@Condition@absl@@QBE_NXZ ?ExitOnDFatal@log_internal@absl@@YA_NXZ ?ExpectedChecksum@Cord@absl@@QBE?AV?$optional@I@2@XZ + ?Extend@CRC32@crc_internal@absl@@UBEXPAIPBXI@Z + ?ExtendByZeroes@CRC32@crc_internal@absl@@UBEXPAII@Z + ?ExtendByZeroesImpl@CRC32@crc_internal@absl@@ABEXPAIIQBI1@Z + ?ExtendCrc32cByZeroes@absl@@YA?AVcrc32c_t@1@V21@I@Z + ?ExtendCrc32cInternal@crc_internal@absl@@YA?AVcrc32c_t@2@V32@Vstring_view@2@@Z ?ExtendTransitions@TimeZoneInfo@cctz@time_internal@absl@@AAE_NXZ ?ExtractAppendBuffer@CordRepBtree@cord_internal@absl@@SA?AUExtractResult@CordRep@23@PAV123@I@Z ?ExtractFront@CordRepBtree@cord_internal@absl@@CAPAUCordRep@23@PAV123@@Z @@ -516,6 +562,8 @@ ?Fill@?$RandenPool@I@random_internal@absl@@SAXV?$Span@I@3@@Z ?Fill@?$RandenPool@_K@random_internal@absl@@SAXV?$Span@_K@3@@Z ?FillParentStack@CordzInfo@cord_internal@absl@@CAIPBV123@PAPAX@Z + ?FillWordTable@CRCImpl@crc_internal@absl@@SAXIIHPAY0BAA@I@Z + ?FillZeroesTable@CRCImpl@crc_internal@absl@@SAHIPAY0BAA@I@Z ?FinalizeEncodingAndFormat@LogMessageData@LogMessage@log_internal@absl@@QAEXXZ ?Find@ByAnyChar@absl@@QBE?AVstring_view@2@V32@I@Z ?Find@ByChar@absl@@QBE?AVstring_view@2@V32@I@Z @@ -592,10 +640,12 @@ ?GetAppendBuffer@CordRepRing@cord_internal@absl@@QAE?AV?$Span@D@3@I@Z ?GetAppendBufferSlow@CordRepBtree@cord_internal@absl@@AAE?AV?$Span@D@3@I@Z ?GetAppendBufferSlowPath@Cord@absl@@AAE?AVCordBuffer@2@III@Z + ?GetArchSpecificEngines@CrcMemcpy@crc_internal@absl@@CA?AUArchSpecificEngines@123@XZ ?GetCachedTID@base_internal@absl@@YAIXZ ?GetCharacter@CordRepBtree@cord_internal@absl@@QBEDI@Z ?GetCharacter@CordRepRing@cord_internal@absl@@QBEDI@Z ?GetCordzStatistics@CordzInfo@cord_internal@absl@@QBE?AUCordzStatistics@23@XZ + ?GetCpuType@crc_internal@absl@@YA?AW4CpuType@12@XZ ?GetCurrentTimeNanos@absl@@YA_JXZ ?GetDebugStackTraceHook@debugging_internal@absl@@YAP6AXQBQAXHP6AXPBDPAX@Z2@ZXZ ?GetEstimatedFairShareMemoryUsage@cord_internal@absl@@YAIPBUCordRep@12@@Z @@ -622,6 +672,7 @@ ?GetStatusPayloadPrinter@status_internal@absl@@YAP6A?AV?$optional@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@2@Vstring_view@2@ABVCord@2@@ZXZ ?GetStride@ExponentialBiased@profiling_internal@absl@@QAE_J_J@Z ?GetTID@base_internal@absl@@YAIXZ + ?GetTestEngine@CrcMemcpy@crc_internal@absl@@SA?AV?$unique_ptr@VCrcMemcpyEngine@crc_internal@absl@@U?$default_delete@VCrcMemcpyEngine@crc_internal@absl@@@Cr@std@@@Cr@std@@HH@Z ?GetThreadBlockedCounter@PerThreadSem@synchronization_internal@absl@@SAPAU?$atomic@H@Cr@std@@XZ ?GetTransitionType@TimeZoneInfo@cctz@time_internal@absl@@AAE_NH_NABV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PAE@Z ?GetWord@?$BigUnsigned@$03@strings_internal@absl@@QBEIH@Z @@ -642,6 +693,7 @@ ?Init@PerThreadSem@synchronization_internal@absl@@CAXPAUThreadIdentity@base_internal@3@@Z ?InitDiscreteDistribution@random_internal@absl@@YA?AV?$vector@U?$pair@NI@Cr@std@@V?$allocator@U?$pair@NI@Cr@std@@@23@@Cr@std@@PAV?$vector@NV?$allocator@N@Cr@std@@@45@@Z ?InitFrom@?$Storage@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@inlined_vector_internal@absl@@QAEXABV123@@Z + ?InitTables@CRC32@crc_internal@absl@@UAEXXZ ?InitWhat@BadStatusOrAccess@absl@@ABEXXZ ?Initialize@ExponentialBiased@profiling_internal@absl@@AAEXXZ ?InitializeCordRepExternal@cord_internal@absl@@YAXVstring_view@2@PAUCordRepExternal@12@@Z @@ -710,7 +762,9 @@ ?MatchesConversions@ParsedFormatBase@str_format_internal@absl@@ABE_N_NV?$initializer_list@W4FormatConversionCharSet@absl@@@std@@@Z ?MaxFlatLength@CordTestAccess@strings_internal@absl@@SAIXZ ?MaxFramesInLogStackTrace@log_internal@absl@@YAHXZ + ?MaybeGetCrcCordState@Cord@absl@@ABEPBVCrcCordState@crc_internal@2@XZ ?MaybeTrackCordImpl@CordzInfo@cord_internal@absl@@CAXAAVInlineData@23@ABV423@W4MethodIdentifier@CordzUpdateTracker@23@@Z + ?MemcpyCrc32c@absl@@YA?AVcrc32c_t@1@PAXPBXIV21@@Z ?MergeTrees@CordRepBtree@cord_internal@absl@@CAPAV123@PAV123@0@Z ?MinLogLevel@absl@@YA?AW4LogSeverityAtLeast@1@XZ ?MixIntoSeedMaterial@random_internal@absl@@YAXV?$Span@$$CBI@2@V?$Span@I@2@@Z @@ -729,9 +783,11 @@ ?MultiplyStep@?$BigUnsigned@$0FE@@strings_internal@absl@@AAEXHPBIHH@Z ?Mutable@CordRepRing@cord_internal@absl@@CAPAV123@PAV123@I@Z ?MutexDelay@synchronization_internal@absl@@YAHHH@Z - ?New@CordRepCrc@cord_internal@absl@@SAPAU123@PAUCordRep@23@I@Z + ?New@CordRepCrc@cord_internal@absl@@SAPAU123@PAUCordRep@23@VCrcCordState@crc_internal@3@@Z ?New@CordRepRing@cord_internal@absl@@CAPAV123@II@Z ?NewArena@LowLevelAlloc@base_internal@absl@@SAPAUArena@123@I@Z + ?NewCRC32AcceleratedX86ARMCombinedAll@crc_internal@absl@@YA?AV?$vector@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@V?$allocator@V?$unique_ptr@VCRCImpl@crc_internal@absl@@U?$default_delete@VCRCImpl@crc_internal@absl@@@Cr@std@@@Cr@std@@@23@@Cr@std@@XZ + ?NewInternal@CRCImpl@crc_internal@absl@@SAPAV123@XZ ?NewString@CheckOpMessageBuilder@log_internal@absl@@QAEPAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@XZ ?Next@CordzInfo@cord_internal@absl@@QBEPAV123@ABVCordzSnapshot@23@@Z ?NextTransition@TimeZone@absl@@QBE_NVTime@2@PAUCivilTransition@12@@Z @@ -739,6 +795,8 @@ ?NextTransition@TimeZoneLibC@cctz@time_internal@absl@@UBE_NABV?$time_point@Vsystem_clock@chrono@Cr@std@@V?$duration@_JV?$ratio@$00$00@Cr@std@@@234@@chrono@Cr@std@@PAUcivil_transition@time_zone@234@@Z ?NoPrefix@LogMessage@log_internal@absl@@QAEAAV123@XZ ?NominalCPUFrequency@base_internal@absl@@YANXZ + ?Normalize@CrcCordState@crc_internal@absl@@QAEXXZ + ?NormalizedPrefixCrcAtNthChunk@CrcCordState@crc_internal@absl@@QBE?AUPrefixCrc@123@I@Z ?NotFoundError@absl@@YA?AVStatus@1@Vstring_view@1@@Z ?Notify@Notification@absl@@QAEXXZ ?Now@CycleClock@base_internal@absl@@SA_JXZ @@ -766,6 +824,7 @@ ?ParseTime@absl@@YA_NVstring_view@1@0PAVTime@1@PAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ?ParseTime@absl@@YA_NVstring_view@1@0VTimeZone@1@PAVTime@1@PAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ?PermissionDeniedError@absl@@YA?AVStatus@1@Vstring_view@1@@Z + ?Poison@CrcCordState@crc_internal@absl@@QAEXXZ ?Poke@Waiter@synchronization_internal@absl@@QAEXXZ ?Post@Waiter@synchronization_internal@absl@@QAEXXZ ?PrepareForSampling@HashtablezInfo@container_internal@absl@@QAEX_JI@Z @@ -816,6 +875,7 @@ ?RecordRehashSlow@container_internal@absl@@YAXPAUHashtablezInfo@12@I@Z ?RecordReservationSlow@container_internal@absl@@YAXPAUHashtablezInfo@12@I@Z ?RecordStorageChangedSlow@container_internal@absl@@YAXPAUHashtablezInfo@12@II@Z + ?RefSharedEmptyRep@CrcCordState@crc_internal@absl@@CAPAURefcountedRep@123@XZ ?Register@CycleClockSource@base_internal@absl@@CAXP6A_JXZ@Z ?RegisterAbortHook@raw_log_internal@absl@@YAXP6AXPBDH000@Z@Z ?RegisterCondVarTracer@absl@@YAXP6AXPBDPBX@Z@Z @@ -828,6 +888,8 @@ ?RegisterSymbolizer@absl@@YAXP6A_NPBXPADH@Z@Z ?Release@ReleasableMutexLock@absl@@QAEXXZ ?Remove@CondVar@absl@@AAEXPAUPerThreadSynch@base_internal@2@@Z + ?RemoveCrc32cPrefix@absl@@YA?AVcrc32c_t@1@V21@0I@Z + ?RemoveCrc32cSuffix@absl@@YA?AVcrc32c_t@1@V21@0I@Z ?RemoveEdge@GraphCycles@synchronization_internal@absl@@QAEXUGraphId@23@0@Z ?RemoveExtraAsciiWhitespace@absl@@YAXPAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@Z ?RemoveLogSink@log_internal@absl@@YAXPAVLogSink@2@@Z @@ -844,9 +906,11 @@ ?ReverseConsume@cord_internal@absl@@YAXPAUCordRep@12@V?$FunctionRef@$$A6AXPAUCordRep@cord_internal@absl@@II@Z@2@@Z ?SafeToDelete@CordzHandle@cord_internal@absl@@QBE_NXZ ?SampleSlow@container_internal@absl@@YAPAUHashtablezInfo@12@AAUSamplingState@12@I@Z + ?Scramble@CRC32@crc_internal@absl@@UBEXPAI@Z ?Seek@CordRepBtreeReader@cord_internal@absl@@QAE?AVstring_view@3@I@Z ?SendToLog@LogMessage@log_internal@absl@@AAEXXZ ?SetCapacityForTesting@CordRepRing@cord_internal@absl@@QAEXI@Z + ?SetCrcCordState@Cord@absl@@AAEXVCrcCordState@crc_internal@2@@Z ?SetCurrentThreadIdentity@base_internal@absl@@YAXPAUThreadIdentity@12@P6AXPAX@Z@Z ?SetExitOnDFatal@log_internal@absl@@YAX_N@Z ?SetExpectedChecksum@Cord@absl@@QAEXI@Z @@ -918,6 +982,7 @@ ?Subcord@Cord@absl@@QBE?AV12@II@Z ?SubstituteAndAppendArray@substitute_internal@absl@@YAXPAV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@Vstring_view@2@PBV62@I@Z ?Summarize@str_format_internal@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@VUntypedFormatSpecImpl@12@V?$Span@$$CBVFormatArgImpl@str_format_internal@absl@@@2@@Z + ?SupportsArmCRC32PMULL@crc_internal@absl@@YA_NXZ ?SuppressSigabortTrace@log_internal@absl@@YA_NXZ ?Symbolize@absl@@YA_NPBXPADH@Z ?ThreadIsLoggingToLogSink@log_internal@absl@@YA_NXZ @@ -992,11 +1057,14 @@ ?Trans@Mutex@absl@@AAEXPBUMuHowS@2@@Z ?Trunc@absl@@YA?AVDuration@1@V21@0@Z ?TryLock@Mutex@absl@@QAE_NXZ + ?TryNewCRC32AcceleratedX86ARMCombined@crc_internal@absl@@YAPAVCRCImpl@12@XZ ?TryRemove@Mutex@absl@@AAEXPAUPerThreadSynch@base_internal@2@@Z ?UTC@Impl@time_zone@cctz@time_internal@absl@@SA?AV2345@XZ ?UTCImpl@Impl@time_zone@cctz@time_internal@absl@@CAPBV12345@XZ ?UnauthenticatedError@absl@@YA?AVStatus@1@Vstring_view@1@@Z ?UnavailableError@absl@@YA?AVStatus@1@Vstring_view@1@@Z + ?UnextendByZeroes@CRC32@crc_internal@absl@@UBEXPAII@Z + ?UnextendCrc32cByZeroes@crc_internal@absl@@YA?AVcrc32c_t@2@V32@I@Z ?UnimplementedError@absl@@YA?AVStatus@1@Vstring_view@1@@Z ?UnknownError@absl@@YA?AVStatus@1@Vstring_view@1@@Z ?Unlock@CordzInfo@cord_internal@absl@@QAEXXZ @@ -1004,9 +1072,11 @@ ?UnlockSlow@Mutex@absl@@AAEXPAUSynchWaitParams@2@@Z ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@VDuration@1@@Z ?UnparseFlag@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@VTime@1@@Z + ?Unref@CrcCordState@crc_internal@absl@@CAXPAURefcountedRep@123@@Z ?UnrefNonInlined@Status@absl@@CAXI@Z ?UnrefTree@InlineRep@Cord@absl@@AAEXXZ ?UnsampleSlow@container_internal@absl@@YAXPAUHashtablezInfo@12@@Z + ?Unscramble@CRC32@crc_internal@absl@@UBEXPAI@Z ?Untrack@CordzInfo@cord_internal@absl@@QAEXXZ ?UpdateStackTrace@GraphCycles@synchronization_internal@absl@@QAEXUGraphId@23@HP6AHPAPAXH@Z@Z ?Utf8SafeCEscape@absl@@YA?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@Vstring_view@1@@Z @@ -1037,9 +1107,13 @@ ?Write@FILERawSink@str_format_internal@absl@@QAEXVstring_view@3@@Z ?WriteToStderr@log_internal@absl@@YAXVstring_view@2@W4LogSeverity@2@@Z ?__add_back_capacity@?$deque@PBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AAEXXZ + ?__add_back_capacity@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AAEXI@Z + ?__add_back_capacity@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AAEXXZ ?__append@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AAEXI@Z ?__append@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AAEXI@Z ?__deallocate_node@?$__hash_table@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@V?$__unordered_map_hasher@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$__unordered_map_equal@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@23@U?$equal_to@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@U?$hash@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@@23@$00@23@V?$allocator@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@23@@Cr@std@@AAEXPAU?$__hash_node_base@PAU?$__hash_node@U?$__hash_value_type@V?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@PAX@Cr@std@@@23@@Z + ?__erase_to_end@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AAEXV?$__deque_iterator@UPrefixCrc@CrcCordState@crc_internal@absl@@PBU1234@ABU1234@PBQBU1234@H$0A@@23@@Z + ?__maybe_remove_back_spare@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@AAE_N_N@Z ?__move_range@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AAEXPAUTransition@cctz@time_internal@absl@@00@Z ?__move_range@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@AAEXPAUTransitionType@cctz@time_internal@absl@@00@Z ?__vallocate@?$vector@VFormatArgImpl@str_format_internal@absl@@V?$allocator@VFormatArgImpl@str_format_internal@absl@@@Cr@std@@@Cr@std@@AAEXI@Z @@ -1052,6 +1126,7 @@ ?day_difference@impl@detail@cctz@time_internal@absl@@YA_J_JCC0CC@Z ?description@time_zone@cctz@time_internal@absl@@QBE?AV?$basic_string@DU?$char_traits@D@Cr@std@@V?$allocator@D@23@@Cr@std@@XZ ?effective_impl@time_zone@cctz@time_internal@absl@@ABEABVImpl@1234@XZ + ?engines@?1??CrcAndCopy@CrcMemcpy@crc_internal@absl@@SA?AVcrc32c_t@4@PIAXPIBXIV54@_N@Z@4UArchSpecificEngines@234@B ?erase@?$InlinedVector@UPayload@status_internal@absl@@$00V?$allocator@UPayload@status_internal@absl@@@Cr@std@@@absl@@QAEPAUPayload@status_internal@2@PBU342@@Z ?find@string_view@absl@@QBEIDI@Z ?find@string_view@absl@@QBEIV12@I@Z @@ -1087,6 +1162,7 @@ ?min@?$RandenPool@G@random_internal@absl@@SAGXZ ?min@?$RandenPool@I@random_internal@absl@@SAIXZ ?min@?$RandenPool@_K@random_internal@absl@@SA_KXZ + ?mutable_rep@CrcCordState@crc_internal@absl@@QAEPAURep@123@XZ ?n_day@impl@detail@cctz@time_internal@absl@@YA?AUfields@2345@_JC00CCC@Z ?n_hour@impl@detail@cctz@time_internal@absl@@YA?AUfields@2345@_J0000CC@Z ?n_sec@impl@detail@cctz@time_internal@absl@@YA?AUfields@2345@_J00000@Z @@ -1100,7 +1176,12 @@ ?push_back@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@AAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEX$$QAPAPBVImpl@time_zone@cctz@time_internal@absl@@@Z ?push_back@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEX$$QAPAPBVImpl@time_zone@cctz@time_internal@absl@@@Z ?push_back@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXABQAPBVImpl@time_zone@cctz@time_internal@absl@@@Z + ?push_back@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@AAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEX$$QAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?push_back@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@AAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEXABQAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?push_back@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEX$$QAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?push_back@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEXABQAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ?push_back@?$deque@PBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXABQBVImpl@time_zone@cctz@time_internal@absl@@@Z + ?push_back@?$deque@UPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@UPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEX$$QAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ?push_back@?$vector@PAVCordzHandle@cord_internal@absl@@V?$allocator@PAVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAEXABQAVCordzHandle@cord_internal@absl@@@Z ?push_back@?$vector@PAVLogSink@absl@@V?$allocator@PAVLogSink@absl@@@Cr@std@@@Cr@std@@QAEXABQAVLogSink@absl@@@Z ?push_back@?$vector@PBVCordzHandle@cord_internal@absl@@V?$allocator@PBVCordzHandle@cord_internal@absl@@@Cr@std@@@Cr@std@@QAEXABQBVCordzHandle@cord_internal@absl@@@Z @@ -1108,6 +1189,8 @@ ?push_back@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXABUTransition@cctz@time_internal@absl@@@Z ?push_front@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@AAV?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXABQAPBVImpl@time_zone@cctz@time_internal@absl@@@Z ?push_front@?$__split_buffer@PAPBVImpl@time_zone@cctz@time_internal@absl@@V?$allocator@PAPBVImpl@time_zone@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEX$$QAPAPBVImpl@time_zone@cctz@time_internal@absl@@@Z + ?push_front@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@AAV?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEXABQAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z + ?push_front@?$__split_buffer@PAUPrefixCrc@CrcCordState@crc_internal@absl@@V?$allocator@PAUPrefixCrc@CrcCordState@crc_internal@absl@@@Cr@std@@@Cr@std@@QAEX$$QAPAUPrefixCrc@CrcCordState@crc_internal@absl@@@Z ?raw_code@Status@absl@@QBEHXZ ?reserve@?$vector@UTransition@cctz@time_internal@absl@@V?$allocator@UTransition@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXI@Z ?reserve@?$vector@UTransitionType@cctz@time_internal@absl@@V?$allocator@UTransitionType@cctz@time_internal@absl@@@Cr@std@@@Cr@std@@QAEXI@Z
diff --git a/third_party/blink/common/fenced_frame/redacted_fenced_frame_config_mojom_traits.cc b/third_party/blink/common/fenced_frame/redacted_fenced_frame_config_mojom_traits.cc index dd51bfcf..b5253788 100644 --- a/third_party/blink/common/fenced_frame/redacted_fenced_frame_config_mojom_traits.cc +++ b/third_party/blink/common/fenced_frame/redacted_fenced_frame_config_mojom_traits.cc
@@ -4,6 +4,7 @@ #include "third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config_mojom_traits.h" +#include "third_party/blink/public/common/fenced_frame/fenced_frame_utils.h" #include "third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config.h" #include "third_party/blink/public/mojom/fenced_frame/fenced_frame_config.mojom.h" @@ -416,7 +417,9 @@ blink::FencedFrame::RedactedFencedFrameConfig>:: Read(blink::mojom::FencedFrameConfigDataView data, blink::FencedFrame::RedactedFencedFrameConfig* out_config) { - if (!data.ReadMappedUrl(&out_config->mapped_url_) || + GURL urn_uuid; + if (!data.ReadUrnUuid(&urn_uuid) || + !data.ReadMappedUrl(&out_config->mapped_url_) || !data.ReadContentSize(&out_config->content_size_) || !data.ReadContainerSize(&out_config->container_size_) || !data.ReadDeprecatedShouldFreezeInitialSize( @@ -429,6 +432,11 @@ return false; } + if (!blink::IsValidUrnUuidURL(urn_uuid)) { + return false; + } + + out_config->urn_ = std::move(urn_uuid); return true; }
diff --git a/third_party/blink/common/origin_trials/manual_completion_origin_trial_features.cc b/third_party/blink/common/origin_trials/manual_completion_origin_trial_features.cc index a392ccb6..46d163c5 100644 --- a/third_party/blink/common/origin_trials/manual_completion_origin_trial_features.cc +++ b/third_party/blink/common/origin_trials/manual_completion_origin_trial_features.cc
@@ -15,12 +15,13 @@ bool FeatureHasExpiryGracePeriod(OriginTrialFeature feature) { static OriginTrialFeature const kHasExpiryGracePeriod[] = { - // Enable the kOriginTrialsSampleAPIExpiryGracePeriod and - // kOriginTrialsSampleAPIExpiryGracePeriodThirdParty features - // as a manual completion features, for tests. + // Enable the kOriginTrialsSampleAPI* features as a manual completion + // features, for tests. OriginTrialFeature::kOriginTrialsSampleAPIExpiryGracePeriod, OriginTrialFeature::kOriginTrialsSampleAPIExpiryGracePeriodThirdParty, OriginTrialFeature::kOriginTrialsSampleAPIPersistentExpiryGracePeriod, + // Production grace period trials start here: + OriginTrialFeature::kWebViewXRequestedWithDeprecation, }; return base::Contains(kHasExpiryGracePeriod, feature); }
diff --git a/third_party/blink/common/origin_trials/persistent_origin_trials.cc b/third_party/blink/common/origin_trials/persistent_origin_trials.cc index 054203d..0422cd7 100644 --- a/third_party/blink/common/origin_trials/persistent_origin_trials.cc +++ b/third_party/blink/common/origin_trials/persistent_origin_trials.cc
@@ -19,6 +19,8 @@ // tests. "FrobulatePersistent", "FrobulatePersistentExpiryGracePeriod", + // Production persistent origin trials follow below: + "WebViewXRequestedWithDeprecation", }; return base::Contains(kPersistentTrials, trial_name); }
diff --git a/third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config_mojom_traits.h b/third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config_mojom_traits.h index 48a6443..5dfa7a8 100644 --- a/third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config_mojom_traits.h +++ b/third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config_mojom_traits.h
@@ -223,6 +223,12 @@ struct BLINK_COMMON_EXPORT StructTraits<blink::mojom::FencedFrameConfigDataView, blink::FencedFrame::RedactedFencedFrameConfig> { + static const GURL& urn_uuid( + const blink::FencedFrame::RedactedFencedFrameConfig& config) { + // Whenever a redacted config is sent over an IPC, its `urn_` member is + // expected to be non-nullopt. + return config.urn_.value(); + } static const absl::optional<Prop<GURL>>& mapped_url( const blink::FencedFrame::RedactedFencedFrameConfig& config) { return config.mapped_url_;
diff --git a/third_party/blink/public/mojom/BUILD.gn b/third_party/blink/public/mojom/BUILD.gn index 5be6aba..5eed991 100644 --- a/third_party/blink/public/mojom/BUILD.gn +++ b/third_party/blink/public/mojom/BUILD.gn
@@ -193,6 +193,7 @@ "service_worker/service_worker_worker_client_registry.mojom", "shared_storage/shared_storage.mojom", "site_engagement/site_engagement.mojom", + "smart_card/smart_card.mojom", "sms/webotp_service.mojom", "speculation_rules/speculation_rules.mojom", "speech/speech_recognition_error.mojom",
diff --git a/third_party/blink/public/mojom/fenced_frame/fenced_frame_config.mojom b/third_party/blink/public/mojom/fenced_frame/fenced_frame_config.mojom index 853374e..943e069 100644 --- a/third_party/blink/public/mojom/fenced_frame/fenced_frame_config.mojom +++ b/third_party/blink/public/mojom/fenced_frame/fenced_frame_config.mojom
@@ -92,12 +92,15 @@ }; // The `FencedFrameConfig` struct is used to transfer a redacted version -// (`blink::RedactedFencedFrameConfig`) of `content::FencedFrameConfig` across -// processes. In brief, this is a collection of properties that the browser -// process exposes to an embedder that may wish to load into a fenced frame. -// The config will determine the fenced frame's behavior, but it may have -// certain fields redacted (marked as opaque) in order to preserve privacy. -// For example: +// (`blink::RedactedFencedFrameConfig`) of `content::FencedFrameConfig` from the +// browser process, to the renderer process, where the redaction process is +// specific to whether the target renderer is either a fenced frame's embedder +// or a frame inside the fenced frame tree. For more documentation on the +// redaction process, see the comments above `content::FencedFrameConfig`. In +// brief, this is a collection of properties that the browser process exposes to +// an embedder that may wish to load into a fenced frame. The config will +// determine the fenced frame's behavior, but it may have certain fields +// redacted (marked as opaque) in order to preserve privacy. For example: // * This object is returned to the caller of APIs that use fenced frames, // so that they can inspect the (unredacted) information inside and then // load it into a fenced frame. @@ -105,6 +108,10 @@ // frame will be given access to these objects in order to load the nested // configs. struct FencedFrameConfig { + // This is the actual URL that will be loaded into the fenced frame when + // navigated to. It can be opaque because for the current use cases (FLEDGE, + // shared storage), we never want to expose anything about the actual resource + // beyond its existence, to the embedder of a fenced frame. PotentiallyOpaqueURL? mapped_url; PotentiallyOpaqueSize? container_size; @@ -120,6 +127,14 @@ PotentiallyOpaqueSharedStorageBudgetMetadata? shared_storage_budget_metadata; PotentiallyOpaqueReportingMetadata? reporting_metadata; + + // This is the internal URN that represents this config in the browser-side + // `FencedFrameURLMapping`. When this config is navigated to via a fenced + // frame, it is this internal urn:uuid that we send to the browser to navigate + // to the actual browser-side `content::FencedFrameConfig` object that + // represents this instance of this struct. `blink::IsValidUrnUuidURL()` will + // always be true when called with this urn. + url.mojom.Url urn_uuid; }; // The `FencedFrameProperties` struct is used to transfer a redacted version
diff --git a/third_party/blink/public/mojom/interest_group/ad_auction_service.mojom b/third_party/blink/public/mojom/interest_group/ad_auction_service.mojom index 8d38ff4d..d2bb9a4 100644 --- a/third_party/blink/public/mojom/interest_group/ad_auction_service.mojom +++ b/third_party/blink/public/mojom/interest_group/ad_auction_service.mojom
@@ -4,6 +4,7 @@ module blink.mojom; +import "third_party/blink/public/mojom/fenced_frame/fenced_frame_config.mojom"; import "third_party/blink/public/mojom/parakeet/ad_request.mojom"; import "third_party/blink/public/mojom/interest_group/interest_group_types.mojom"; import "url/mojom/origin.mojom"; @@ -49,12 +50,13 @@ // the interest groups owned by `interest_group_buyers` and the auction // config `decision_logic_url`. The result of the auction is a URL for the // winning ad creative, which the publisher page loads into a page or iframe - // in the owner's domain. If no ad wins the auction, null is returned. - // `manually_aborted` is set to true only if the auction was manually - // cancelled successfully via a call to `abort_receiver->Abort()`. + // in the owner's domain. This URL is embedded inside `config` below. If no ad + // wins the auction, null is returned. `manually_aborted` is set to true only + // if the auction was manually cancelled successfully via a call to + // `abort_receiver->Abort()`. RunAdAuction(AuctionAdConfig config, pending_receiver<AbortableAdAuction>? abort_receiver) - => (bool manually_aborted, url.mojom.Url? ad_display_url); + => (bool manually_aborted, FencedFrameConfig? config); // Requests that the browser process create or overwrite persisted interest // group keyed by `group.owner` and `group.name` with information from
diff --git a/third_party/blink/public/mojom/smart_card/DIR_METADATA b/third_party/blink/public/mojom/smart_card/DIR_METADATA new file mode 100644 index 0000000..7f4c9b5 --- /dev/null +++ b/third_party/blink/public/mojom/smart_card/DIR_METADATA
@@ -0,0 +1,11 @@ +# Metadata information for this directory. +# +# For more information on DIR_METADATA files, see: +# https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md +# +# For the schema of this file, see Metadata message: +# https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto + +monorail { + component: "Blink>SmartCard" +}
diff --git a/third_party/blink/public/mojom/smart_card/OWNERS b/third_party/blink/public/mojom/smart_card/OWNERS new file mode 100644 index 0000000..fca46b7 --- /dev/null +++ b/third_party/blink/public/mojom/smart_card/OWNERS
@@ -0,0 +1,4 @@ +file://third_party/blink/renderer/modules/smart_card/OWNERS + +per-file *.mojom=set noparent +per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/third_party/blink/public/mojom/smart_card/smart_card.mojom b/third_party/blink/public/mojom/smart_card/smart_card.mojom new file mode 100644 index 0000000..7c7fcef8 --- /dev/null +++ b/third_party/blink/public/mojom/smart_card/smart_card.mojom
@@ -0,0 +1,11 @@ +// Copyright 2022 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +module blink.mojom; + +// Interface for accessing smart card readers from the render process. +// The implementation is responsible for checking access permissions. +interface SmartCardService { + // TODO(crbug.com/1386175): Add methods +};
diff --git a/third_party/blink/renderer/bindings/core/v8/active_script_wrappable.h b/third_party/blink/renderer/bindings/core/v8/active_script_wrappable.h index 12320a5..6dc3233 100644 --- a/third_party/blink/renderer/bindings/core/v8/active_script_wrappable.h +++ b/third_party/blink/renderer/bindings/core/v8/active_script_wrappable.h
@@ -7,7 +7,6 @@ #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/platform/bindings/active_script_wrappable_base.h" - namespace blink { class ExecutionContext; @@ -31,6 +30,9 @@ // ActiveScriptWrappable<T> also have to provide a GetExecutionContext() method // that returns the ExecutionContext or nullptr. A nullptr or already destroyed // context results in ignoring HasPendingActivity(). +// +// Automatically activates the ASW behavior after construction. For lazy +// initialization, see LazyActiveScriptWrappable below. template <typename T> class ActiveScriptWrappable : public ActiveScriptWrappableBase { public: @@ -39,8 +41,10 @@ ~ActiveScriptWrappable() override = default; - protected: - ActiveScriptWrappable() = default; + // See trait below. + void ActiveScriptWrappableBaseConstructed() { + RegisterActiveScriptWrappable(); + } bool IsContextDestroyed() const final { return IsContextDestroyedForActiveScriptWrappable( @@ -50,6 +54,40 @@ bool DispatchHasPendingActivity() const final { return static_cast<const T*>(this)->HasPendingActivity(); } + + protected: + ActiveScriptWrappable() = default; +}; + +// Same as ActiveScriptWrappable with the difference the the object is not +// automatically activated. Instead, child classes need to use +// `RegisterActiveScriptWrappable()` to activate the +// ASW behavior. +template <typename T> +class LazyActiveScriptWrappable : public ActiveScriptWrappableBase { + public: + LazyActiveScriptWrappable(const LazyActiveScriptWrappable&) = delete; + LazyActiveScriptWrappable& operator=(const LazyActiveScriptWrappable&) = + delete; + + ~LazyActiveScriptWrappable() override = default; + + // Registers the ASW, activating it. + void RegisterActiveScriptWrappable() { + ActiveScriptWrappableBase::RegisterActiveScriptWrappable(); + } + + bool IsContextDestroyed() const final { + return IsContextDestroyedForActiveScriptWrappable( + static_cast<const T*>(this)->GetExecutionContext()); + } + + bool DispatchHasPendingActivity() const final { + return static_cast<const T*>(this)->HasPendingActivity(); + } + + protected: + LazyActiveScriptWrappable() = default; }; // Helper for ActiveScriptWrappable<T>::IsContextDestroyed(); @@ -58,4 +96,28 @@ } // namespace blink +namespace cppgc { + +template <typename T, typename Unused> +struct PostConstructionCallbackTrait; +template <typename T> +struct PostConstructionCallbackTrait< + T, + std::void_t< + decltype(std::declval<T>().ActiveScriptWrappableBaseConstructed())>> { + static void Call(T* object) { + static_assert(std::is_base_of<blink::ActiveScriptWrappableBase, T>::value, + "Only ActiveScriptWrappableBase should use the " + "post-construction hook."); + // Registering the ActiveScriptWrappableBase after construction means that + // the garbage collector does not need to deal with objects that are + // currently under construction. This is important as checking whether ASW + // should be treated as active involves calling virtual functions which may + // not work during construction. The objects in construction are kept alive + // via conservative stack scanning. + object->ActiveScriptWrappableBaseConstructed(); + } +}; +} // namespace cppgc + #endif // THIRD_PARTY_BLINK_RENDERER_BINDINGS_CORE_V8_ACTIVE_SCRIPT_WRAPPABLE_H_
diff --git a/third_party/blink/renderer/core/css/css_font_selector.cc b/third_party/blink/renderer/core/css/css_font_selector.cc index e610f30..793962c 100644 --- a/third_party/blink/renderer/core/css/css_font_selector.cc +++ b/third_party/blink/renderer/core/css/css_font_selector.cc
@@ -125,28 +125,28 @@ } if (request_description.GetFontVariantAlternates()) { - StyleRuleFontFeatureValues* font_feature_values = + const FontFeatureValuesStorage* feature_values_storage = document.GetStyleEngine().FontFeatureValuesForFamily(family_name); scoped_refptr<FontVariantAlternates> new_alternates = nullptr; - if (font_feature_values) { + if (feature_values_storage) { new_alternates = request_description.GetFontVariantAlternates()->Resolve( - [font_feature_values](AtomicString alias) { - return font_feature_values->ResolveStylistic(alias); + [feature_values_storage](AtomicString alias) { + return feature_values_storage->ResolveStylistic(alias); }, - [font_feature_values](AtomicString alias) { - return font_feature_values->ResolveStyleset(alias); + [feature_values_storage](AtomicString alias) { + return feature_values_storage->ResolveStyleset(alias); }, - [font_feature_values](AtomicString alias) { - return font_feature_values->ResolveCharacterVariant(alias); + [feature_values_storage](AtomicString alias) { + return feature_values_storage->ResolveCharacterVariant(alias); }, - [font_feature_values](AtomicString alias) { - return font_feature_values->ResolveSwash(alias); + [feature_values_storage](AtomicString alias) { + return feature_values_storage->ResolveSwash(alias); }, - [font_feature_values](AtomicString alias) { - return font_feature_values->ResolveOrnaments(alias); + [feature_values_storage](AtomicString alias) { + return feature_values_storage->ResolveOrnaments(alias); }, - [font_feature_values](AtomicString alias) { - return font_feature_values->ResolveAnnotation(alias); + [feature_values_storage](AtomicString alias) { + return feature_values_storage->ResolveAnnotation(alias); }); } else { // If no StyleRuleFontFeature alias table values for this font was found,
diff --git a/third_party/blink/renderer/core/css/css_uri_value.cc b/third_party/blink/renderer/core/css/css_uri_value.cc index b744ae7..3dfcf95 100644 --- a/third_party/blink/renderer/core/css/css_uri_value.cc +++ b/third_party/blink/renderer/core/css/css_uri_value.cc
@@ -52,6 +52,24 @@ return AtomicString(AbsoluteUrl().FragmentIdentifier()); } +const AtomicString& CSSURIValue::NormalizedFragmentIdentifier() const { + if (normalized_fragment_identifier_cache_.IsNull()) { + normalized_fragment_identifier_cache_ = + AtomicString(DecodeURLEscapeSequences( + FragmentIdentifier(), DecodeURLMode::kUTF8OrIsomorphic)); + } + + // NOTE: If is_local_ is true, the normalized URL may be different + // (we don't invalidate the cache when the base URL changes), + // but it should not matter for the fragment. We DCHECK that we get + // the right result, to be sure. + DCHECK_EQ(normalized_fragment_identifier_cache_, + AtomicString(DecodeURLEscapeSequences( + FragmentIdentifier(), DecodeURLMode::kUTF8OrIsomorphic))); + + return normalized_fragment_identifier_cache_; +} + KURL CSSURIValue::AbsoluteUrl() const { return KURL(absolute_url_); }
diff --git a/third_party/blink/renderer/core/css/css_uri_value.h b/third_party/blink/renderer/core/css/css_uri_value.h index 1589e6b..87f2530 100644 --- a/third_party/blink/renderer/core/css/css_uri_value.h +++ b/third_party/blink/renderer/core/css/css_uri_value.h
@@ -24,7 +24,7 @@ CSSURIValue(const AtomicString&, const KURL&); CSSURIValue(const AtomicString& relative_url, const AtomicString& absolute_url); - CSSURIValue(const AtomicString& absolute_url); + explicit CSSURIValue(const AtomicString& absolute_url); ~CSSURIValue(); SVGResource* EnsureResourceReference() const; @@ -39,6 +39,13 @@ bool IsLocal(const Document&) const; AtomicString FragmentIdentifier() const; + // Fragment identifier with trailing spaces removed and URL + // escape sequences decoded. This is cached, because it can take + // a surprisingly long time to normalize the URL into an absolute + // value if we have lots of SVG elements that need to re-run this + // over and over again. + const AtomicString& NormalizedFragmentIdentifier() const; + bool Equals(const CSSURIValue&) const; CSSURIValue* ValueWithURLMadeAbsolute(const KURL& base_url, @@ -50,6 +57,7 @@ KURL AbsoluteUrl() const; AtomicString relative_url_; + mutable AtomicString normalized_fragment_identifier_cache_; bool is_local_; mutable Member<SVGResource> resource_;
diff --git a/third_party/blink/renderer/core/css/resolver/cascade_map.cc b/third_party/blink/renderer/core/css/resolver/cascade_map.cc index 6840f62..b8bd580 100644 --- a/third_party/blink/renderer/core/css/resolver/cascade_map.cc +++ b/third_party/blink/renderer/core/css/resolver/cascade_map.cc
@@ -69,12 +69,11 @@ return list.Top(backing_vector_); } -const CascadePriority* CascadeMap::FindRevertLayer( - const CSSPropertyName& name, - CascadePriority revert_from) const { - auto find_revert_layer = - [this](const CascadeMap::CascadePriorityList& list, - CascadePriority revert_from) -> const CascadePriority* { +const CascadePriority* CascadeMap::FindRevertLayer(const CSSPropertyName& name, + uint64_t revert_from) const { + auto find_revert_layer = [this]( + const CascadeMap::CascadePriorityList& list, + uint64_t revert_from) -> const CascadePriority* { for (auto iter = list.Begin(backing_vector_); iter != list.End(backing_vector_); ++iter) { if (iter->ForLayerComparison() < revert_from)
diff --git a/third_party/blink/renderer/core/css/resolver/cascade_map.h b/third_party/blink/renderer/core/css/resolver/cascade_map.h index 5cca6d1..e8ef720 100644 --- a/third_party/blink/renderer/core/css/resolver/cascade_map.h +++ b/third_party/blink/renderer/core/css/resolver/cascade_map.h
@@ -50,9 +50,10 @@ backing_vector_); } // Similar to Find(name, origin), but returns the CascadePriority from cascade - // layers below the given priority. + // layers below the given priority. The uint64_t is presumed to come from + // CascadePriority::ForLayerComparison(). const CascadePriority* FindRevertLayer(const CSSPropertyName&, - CascadePriority) const; + uint64_t) const; // Similar to Find(), if you already have the right CascadePriorityList. CascadePriority& Top(CascadePriorityList&); // Adds an entry to the map if the incoming priority is greater than or equal
diff --git a/third_party/blink/renderer/core/css/resolver/cascade_priority.h b/third_party/blink/renderer/core/css/resolver/cascade_priority.h index 3df3c04..c15ca1d 100644 --- a/third_party/blink/renderer/core/css/resolver/cascade_priority.h +++ b/third_party/blink/renderer/core/css/resolver/cascade_priority.h
@@ -67,9 +67,9 @@ static constexpr uint64_t kLayerOrderOffset = 36; // of low_bits_ static constexpr uint64_t kPositionOffset = 4; // of low_bits_ - static constexpr uint32_t kOriginImportanceMask = + static constexpr uint64_t kOriginImportanceMask = 0xF << kOriginImportanceOffset; // of high_bits_ - static constexpr uint32_t kTreeOrderMask = 0xFFFF; // of high_bits_ + static constexpr uint64_t kTreeOrderMask = 0xFFFF; // of high_bits_ static constexpr uint64_t kLayerOrderMask = static_cast<uint64_t>(0xFFFF) << kLayerOrderOffset; // of low_bits_ static constexpr uint64_t kPositionMask = static_cast<uint64_t>(0xFFFFFFFF) @@ -120,20 +120,31 @@ uint8_t GetGeneration() const { return low_bits_ & kGenerationMask; } bool IsInlineStyle() const { return (low_bits_ >> kIsInlineStyleOffset) & 1; } - // Returns a CascadePriority that ignores the importance and all sorting - // criteria below layer order, which allows us to compare if two - // CascadePriorities belong to the same cascade layer. - CascadePriority ForLayerComparison() const { - uint64_t important_xor = - (((~static_cast<uint64_t>(high_bits_) >> kImportantBit) & 1) - 1); - uint32_t high_important_xor = - important_xor & (kOriginImportanceMask | kTreeOrderMask); - uint32_t high_bits_without_importance = high_bits_ ^ high_important_xor; - uint64_t low_important_xor = important_xor & kLayerOrderMask; - uint64_t low_bits_without_importance_position_and_generation = - (low_bits_ ^ low_important_xor) & ~(kGenerationMask | kPositionMask); - return CascadePriority(low_bits_without_importance_position_and_generation, - high_bits_without_importance); + // Returns a value that compares like CascadePriority, except that it + // ignores the importance and all sorting criteria below layer order, + // which allows us to compare if two CascadePriorities belong + // to the same cascade layer. + uint64_t ForLayerComparison() const { + // Our value to compare is essentially 96 bits. Get the uppermost 64 bits + // (we don't care about generation and position). + uint64_t bits = + (low_bits_ >> 32) | (static_cast<uint64_t>(high_bits_) << 32); + + // NOTE: This branch will get converted into a conditional move by the + // compiler. + if (bits & (1ull << (kImportantBit + 32))) { + // Remove importance, which means; we need to clear the importance bit. + // But if set, it has previously flipped some other interesting bits + // (origin/importance, tree order and layer order), so we need to flip + // them back before returning. (We do not flip the kTransition bit + // in the encoded origin, nor the comes-from-inline-style bit.) + bits ^= kOriginImportanceMask << 32; + bits ^= kTreeOrderMask << 32; + bits ^= kLayerOrderMask >> 32; + } + + bits >>= kLayerOrderOffset - 32; // Remove everything below layer_order. + return bits; } bool operator>=(const CascadePriority& o) const { @@ -165,7 +176,7 @@ uint64_t low_bits_; // Bit 0-15: tree_order (encoded) - // Bit 16-23: origin/importance (encoded) + // Bit 16-20: origin/importance (encoded; bit 19 is importance) uint32_t high_bits_; };
diff --git a/third_party/blink/renderer/core/css/resolver/element_style_resources.cc b/third_party/blink/renderer/core/css/resolver/element_style_resources.cc index 1693651a..462fdbf 100644 --- a/third_party/blink/renderer/core/css/resolver/element_style_resources.cc +++ b/third_party/blink/renderer/core/css/resolver/element_style_resources.cc
@@ -251,9 +251,8 @@ if (value.IsLocal(element_.GetDocument())) { SVGTreeScopeResources& tree_scope_resources = element_.OriginatingTreeScope().EnsureSVGTreeScopedResources(); - AtomicString decoded_fragment(DecodeURLEscapeSequences( - value.FragmentIdentifier(), DecodeURLMode::kUTF8OrIsomorphic)); - return tree_scope_resources.ResourceForId(decoded_fragment); + return tree_scope_resources.ResourceForId( + value.NormalizedFragmentIdentifier()); } if (AllowExternalResources(property)) { pending_svg_resource_properties_.insert(property);
diff --git a/third_party/blink/renderer/core/css/style_engine.cc b/third_party/blink/renderer/core/css/style_engine.cc index c7f21c7..806909e 100644 --- a/third_party/blink/renderer/core/css/style_engine.cc +++ b/third_party/blink/renderer/core/css/style_engine.cc
@@ -2310,7 +2310,7 @@ } if (changed_rule_flags & kFontFeatureValuesRules) { - font_feature_values_rule_map_.clear(); + font_feature_values_storage_map_.clear(); AddFontFeatureValuesRulesFromSheets(new_style_sheets); MarkFontsNeedUpdate(); } @@ -2439,7 +2439,7 @@ // TODO(https://crbug.com/1382722): Support @font-feature-values in shadow // trees and support scoping correctly. if (tree_scope.RootNode().IsDocumentNode()) { - font_feature_values_rule_map_.clear(); + font_feature_values_storage_map_.clear(); AddFontFeatureValuesRulesFromSheets(active_user_style_sheets_); AddFontFeatureValuesRulesFromSheets(new_style_sheets); } @@ -2704,7 +2704,11 @@ font_feature_values_rules = rule_set.FontFeatureValuesRules(); for (auto& rule : font_feature_values_rules) { for (auto& font_family : rule->GetFamilies()) { - font_feature_values_rule_map_.Set(String(font_family).FoldCase(), rule); + auto add_result = font_feature_values_storage_map_.insert( + String(font_family).FoldCase(), rule->Storage()); + if (!add_result.is_new_entry) { + add_result.stored_value->value.FuseUpdate(rule->Storage()); + } } } } @@ -2761,16 +2765,17 @@ return it->value.Get(); } -StyleRuleFontFeatureValues* StyleEngine::FontFeatureValuesForFamily( +const FontFeatureValuesStorage* StyleEngine::FontFeatureValuesForFamily( AtomicString font_family) { - if (font_feature_values_rule_map_.empty() || font_family.empty()) + if (font_feature_values_storage_map_.empty() || font_family.empty()) return nullptr; - auto it = font_feature_values_rule_map_.find(String(font_family).FoldCase()); - if (it == font_feature_values_rule_map_.end()) + auto it = + font_feature_values_storage_map_.find(String(font_family).FoldCase()); + if (it == font_feature_values_storage_map_.end()) return nullptr; - return it->value.Get(); + return &(it->value); } DocumentStyleEnvironmentVariables& StyleEngine::EnsureEnvironmentVariables() { @@ -3550,7 +3555,6 @@ visitor->Trace(active_user_style_sheets_); visitor->Trace(keyframes_rule_map_); visitor->Trace(font_palette_values_rule_map_); - visitor->Trace(font_feature_values_rule_map_); visitor->Trace(user_counter_style_map_); visitor->Trace(user_cascade_layer_map_); visitor->Trace(inspector_style_sheet_);
diff --git a/third_party/blink/renderer/core/css/style_engine.h b/third_party/blink/renderer/core/css/style_engine.h index d1be3be9..e2ad54cf 100644 --- a/third_party/blink/renderer/core/css/style_engine.h +++ b/third_party/blink/renderer/core/css/style_engine.h
@@ -96,7 +96,7 @@ class StyleResolverStats; class StyleRuleFontFace; class StyleRuleFontPaletteValues; -class StyleRuleFontFeatureValues; +class FontFeatureValuesStorage; class StyleRuleKeyframes; class StyleRuleUsageTracker; class StyleSheet; @@ -529,7 +529,7 @@ AtomicString palette_name, AtomicString font_family); - StyleRuleFontFeatureValues* FontFeatureValuesForFamily( + const FontFeatureValuesStorage* FontFeatureValuesForFamily( AtomicString font_family); CounterStyleMap* GetUserCounterStyleMap() { return user_counter_style_map_; } @@ -934,9 +934,8 @@ // multiple @font-feature-values rules are defined for a given family, the // resulting values definitions are the union of the definitions contained // within these rules. - using FontFeatureValuesRuleMap = - HeapHashMap<String, Member<StyleRuleFontFeatureValues>>; - FontFeatureValuesRuleMap font_feature_values_rule_map_; + using FontFeatureValuesRuleMap = HashMap<String, FontFeatureValuesStorage>; + FontFeatureValuesRuleMap font_feature_values_storage_map_; Member<CounterStyleMap> user_counter_style_map_;
diff --git a/third_party/blink/renderer/core/css/style_rule_font_feature_values.cc b/third_party/blink/renderer/core/css/style_rule_font_feature_values.cc index 5eef1f2a..664cd89 100644 --- a/third_party/blink/renderer/core/css/style_rule_font_feature_values.cc +++ b/third_party/blink/renderer/core/css/style_rule_font_feature_values.cc
@@ -31,6 +31,76 @@ } } +FontFeatureValuesStorage::FontFeatureValuesStorage( + FontFeatureAliases stylistic, + FontFeatureAliases styleset, + FontFeatureAliases character_variant, + FontFeatureAliases swash, + FontFeatureAliases ornaments, + FontFeatureAliases annotation) + : stylistic_(stylistic), + styleset_(styleset), + character_variant_(character_variant), + swash_(swash), + ornaments_(ornaments), + annotation_(annotation) {} + +Vector<uint32_t> FontFeatureValuesStorage::ResolveStylistic( + AtomicString alias) const { + return ResolveInternal(stylistic_, alias); +} + +Vector<uint32_t> FontFeatureValuesStorage::ResolveStyleset( + AtomicString alias) const { + return ResolveInternal(styleset_, alias); +} + +Vector<uint32_t> FontFeatureValuesStorage::ResolveCharacterVariant( + AtomicString alias) const { + return ResolveInternal(character_variant_, alias); +} + +Vector<uint32_t> FontFeatureValuesStorage::ResolveSwash( + AtomicString alias) const { + return ResolveInternal(swash_, alias); +} + +Vector<uint32_t> FontFeatureValuesStorage::ResolveOrnaments( + AtomicString alias) const { + return ResolveInternal(ornaments_, alias); +} +Vector<uint32_t> FontFeatureValuesStorage::ResolveAnnotation( + AtomicString alias) const { + return ResolveInternal(annotation_, alias); +} + +void FontFeatureValuesStorage::FuseUpdate( + const FontFeatureValuesStorage& other) { + auto merge_maps = [](FontFeatureAliases& own, + const FontFeatureAliases& other) { + for (auto entry : other) { + own.Set(entry.key, entry.value); + } + }; + + merge_maps(stylistic_, other.stylistic_); + merge_maps(styleset_, other.styleset_); + merge_maps(character_variant_, other.character_variant_); + merge_maps(swash_, other.swash_); + merge_maps(ornaments_, other.ornaments_); + merge_maps(annotation_, other.annotation_); +} + +/* static */ +Vector<uint32_t> FontFeatureValuesStorage::ResolveInternal( + const FontFeatureAliases& aliases, + AtomicString alias) { + auto find_result = aliases.find(alias); + if (find_result == aliases.end()) + return {}; + return find_result->value; +} + StyleRuleFontFeatureValues::StyleRuleFontFeatureValues( Vector<AtomicString> families, FontFeatureAliases stylistic, @@ -41,12 +111,12 @@ FontFeatureAliases annotation) : StyleRuleBase(kFontFeatureValues), families_(std::move(families)), - stylistic_(stylistic), - styleset_(styleset), - character_variant_(character_variant), - swash_(swash), - ornaments_(ornaments), - annotation_(annotation) {} + feature_values_storage_(stylistic, + styleset, + character_variant, + swash, + ornaments, + annotation) {} StyleRuleFontFeatureValues::StyleRuleFontFeatureValues( const StyleRuleFontFeatureValues&) = default; @@ -72,41 +142,4 @@ StyleRuleBase::TraceAfterDispatch(visitor); } -Vector<uint32_t> StyleRuleFontFeatureValues::ResolveStylistic( - AtomicString alias) { - return ResolveInternal(stylistic_, alias); -} - -Vector<uint32_t> StyleRuleFontFeatureValues::ResolveStyleset( - AtomicString alias) { - return ResolveInternal(styleset_, alias); -} - -Vector<uint32_t> StyleRuleFontFeatureValues::ResolveCharacterVariant( - AtomicString alias) { - return ResolveInternal(character_variant_, alias); -} - -Vector<uint32_t> StyleRuleFontFeatureValues::ResolveSwash(AtomicString alias) { - return ResolveInternal(swash_, alias); -} - -Vector<uint32_t> StyleRuleFontFeatureValues::ResolveOrnaments( - AtomicString alias) { - return ResolveInternal(ornaments_, alias); -} -Vector<uint32_t> StyleRuleFontFeatureValues::ResolveAnnotation( - AtomicString alias) { - return ResolveInternal(annotation_, alias); -} - -Vector<uint32_t> StyleRuleFontFeatureValues::ResolveInternal( - const FontFeatureAliases& aliases, - AtomicString alias) { - auto find_result = aliases.find(alias); - if (find_result == aliases.end()) - return {}; - return find_result->value; -} - } // namespace blink
diff --git a/third_party/blink/renderer/core/css/style_rule_font_feature_values.h b/third_party/blink/renderer/core/css/style_rule_font_feature_values.h index 77adb40..5c6b1379 100644 --- a/third_party/blink/renderer/core/css/style_rule_font_feature_values.h +++ b/third_party/blink/renderer/core/css/style_rule_font_feature_values.h
@@ -47,6 +47,55 @@ } }; +class CORE_EXPORT FontFeatureValuesStorage { + public: + FontFeatureValuesStorage(FontFeatureAliases stylistic, + FontFeatureAliases styleset, + FontFeatureAliases character_variant, + FontFeatureAliases swash, + FontFeatureAliases ornaments, + FontFeatureAliases annotation); + + FontFeatureValuesStorage() = default; + FontFeatureValuesStorage(const FontFeatureValuesStorage& other) = default; + + FontFeatureValuesStorage& operator=(const FontFeatureValuesStorage& other) = + default; + + Vector<uint32_t> ResolveStylistic(AtomicString) const; + Vector<uint32_t> ResolveStyleset(AtomicString) const; + Vector<uint32_t> ResolveCharacterVariant(AtomicString) const; + Vector<uint32_t> ResolveSwash(AtomicString) const; + Vector<uint32_t> ResolveOrnaments(AtomicString) const; + Vector<uint32_t> ResolveAnnotation(AtomicString) const; + + // Update and extend this FontFeatureValuesStorage with information from + // `other`. Intended to be used in `StyleEngine::AddFontFeatureValuesRules` + // to merge multiple at-rules in a document so that their maps became + // unified, compare + // https://drafts.csswg.org/css-fonts-4/#font-feature-values-syntax: If + // multiple @font-feature-values rules are defined for a given family, the + // resulting values definitions are the union of the definitions contained + // within these rules. + // Updates FontFeatureAliases from other without checking families overlap. + void FuseUpdate(const FontFeatureValuesStorage& other); + + private: + // TODO(https://crbug.com/716567): Only styleset and character variant take + // two values for each alias, the others take 1 value. Consider reducing + // storage here. + FontFeatureAliases stylistic_; + FontFeatureAliases styleset_; + FontFeatureAliases character_variant_; + FontFeatureAliases swash_; + FontFeatureAliases ornaments_; + FontFeatureAliases annotation_; + static Vector<uint32_t> ResolveInternal(const FontFeatureAliases&, + AtomicString); + + friend class StyleRuleFontFeatureValues; +}; + class CORE_EXPORT StyleRuleFontFeatureValues : public StyleRuleBase { public: StyleRuleFontFeatureValues(Vector<AtomicString> families, @@ -68,35 +117,31 @@ return MakeGarbageCollected<StyleRuleFontFeatureValues>(*this); } - Vector<uint32_t> ResolveStylistic(AtomicString); - Vector<uint32_t> ResolveStyleset(AtomicString); - Vector<uint32_t> ResolveCharacterVariant(AtomicString); - Vector<uint32_t> ResolveSwash(AtomicString); - Vector<uint32_t> ResolveOrnaments(AtomicString); - Vector<uint32_t> ResolveAnnotation(AtomicString); + const FontFeatureValuesStorage& Storage() { return feature_values_storage_; } // Accessors needed for cssom implementation. - FontFeatureAliases* GetStylistic() { return &stylistic_; } - FontFeatureAliases* GetStyleset() { return &styleset_; } - FontFeatureAliases* GetCharacterVariant() { return &character_variant_; } - FontFeatureAliases* GetSwash() { return &swash_; } - FontFeatureAliases* GetOrnaments() { return &ornaments_; } - FontFeatureAliases* GetAnnotation() { return &annotation_; } + FontFeatureAliases* GetStylistic() { + return &feature_values_storage_.stylistic_; + } + FontFeatureAliases* GetStyleset() { + return &feature_values_storage_.styleset_; + } + FontFeatureAliases* GetCharacterVariant() { + return &feature_values_storage_.character_variant_; + } + FontFeatureAliases* GetSwash() { return &feature_values_storage_.swash_; } + FontFeatureAliases* GetOrnaments() { + return &feature_values_storage_.ornaments_; + } + FontFeatureAliases* GetAnnotation() { + return &feature_values_storage_.annotation_; + } void TraceAfterDispatch(blink::Visitor*) const; private: - Vector<uint32_t> ResolveInternal(const FontFeatureAliases&, AtomicString); - // TODO(https://crbug.com/716567): Only styleset and character variant take - // two values for each alias, the others take 1 value. Consider reducing - // storage here. Vector<AtomicString> families_; - FontFeatureAliases stylistic_; - FontFeatureAliases styleset_; - FontFeatureAliases character_variant_; - FontFeatureAliases swash_; - FontFeatureAliases ornaments_; - FontFeatureAliases annotation_; + FontFeatureValuesStorage feature_values_storage_; }; template <>
diff --git a/third_party/blink/renderer/core/html/forms/html_input_element.cc b/third_party/blink/renderer/core/html/forms/html_input_element.cc index fb408cf..8cd288b 100644 --- a/third_party/blink/renderer/core/html/forms/html_input_element.cc +++ b/third_party/blink/renderer/core/html/forms/html_input_element.cc
@@ -169,8 +169,10 @@ } HTMLImageLoader& HTMLInputElement::EnsureImageLoader() { - if (!image_loader_) + if (!image_loader_) { image_loader_ = MakeGarbageCollected<HTMLImageLoader>(this); + RegisterActiveScriptWrappable(); + } return *image_loader_; }
diff --git a/third_party/blink/renderer/core/html/forms/html_input_element.h b/third_party/blink/renderer/core/html/forms/html_input_element.h index a26086f..bf4ff13 100644 --- a/third_party/blink/renderer/core/html/forms/html_input_element.h +++ b/third_party/blink/renderer/core/html/forms/html_input_element.h
@@ -55,7 +55,7 @@ class CORE_EXPORT HTMLInputElement : public TextControlElement, - public ActiveScriptWrappable<HTMLInputElement> { + public LazyActiveScriptWrappable<HTMLInputElement> { DEFINE_WRAPPERTYPEINFO(); public:
diff --git a/third_party/blink/renderer/core/layout/layout_box_hot.cc b/third_party/blink/renderer/core/layout/layout_box_hot.cc index bdf8f58f..18f9b5c 100644 --- a/third_party/blink/renderer/core/layout/layout_box_hot.cc +++ b/third_party/blink/renderer/core/layout/layout_box_hot.cc
@@ -510,7 +510,8 @@ const NGLayoutResult* cloned_cached_layout_result = NGLayoutResult::CloneWithPostLayoutFragments(*cached_layout_result); #endif - RecalcLayoutOverflow(); + if (!NGDisableSideEffectsScope::IsDisabled()) + RecalcLayoutOverflow(); // We need to update the cached layout result, as the call to // RecalcLayoutOverflow() might have modified it.
diff --git a/third_party/blink/renderer/core/layout/ng/layout_ng_mixin.cc b/third_party/blink/renderer/core/layout/ng/layout_ng_mixin.cc index b0d590ef3..5684536d 100644 --- a/third_party/blink/renderer/core/layout/ng/layout_ng_mixin.cc +++ b/third_party/blink/renderer/core/layout/ng/layout_ng_mixin.cc
@@ -20,6 +20,7 @@ #include "third_party/blink/renderer/core/layout/ng/ng_box_fragment_builder.h" #include "third_party/blink/renderer/core/layout/ng/ng_constraint_space.h" #include "third_party/blink/renderer/core/layout/ng/ng_constraint_space_builder.h" +#include "third_party/blink/renderer/core/layout/ng/ng_disable_side_effects_scope.h" #include "third_party/blink/renderer/core/layout/ng/ng_layout_result.h" #include "third_party/blink/renderer/core/layout/ng/ng_length_utils.h" #include "third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part.h" @@ -128,6 +129,7 @@ template <typename Base> RecalcLayoutOverflowResult LayoutNGMixin<Base>::RecalcLayoutOverflow() { Base::CheckIsNotDestroyed(); + DCHECK(!NGDisableSideEffectsScope::IsDisabled()); return Base::RecalcLayoutOverflowNG(); }
diff --git a/third_party/blink/renderer/modules/ad_auction/navigator_auction.cc b/third_party/blink/renderer/modules/ad_auction/navigator_auction.cc index de7dd1b..3b707332 100644 --- a/third_party/blink/renderer/modules/ad_auction/navigator_auction.cc +++ b/third_party/blink/renderer/modules/ad_auction/navigator_auction.cc
@@ -1785,7 +1785,8 @@ ScriptPromiseResolver* resolver, std::unique_ptr<ScopedAbortState> scoped_abort_state, bool manually_aborted, - const absl::optional<KURL>& result_url) { + const absl::optional<FencedFrame::RedactedFencedFrameConfig>& + result_config) { if (!resolver->GetExecutionContext() || resolver->GetExecutionContext()->IsContextDestroyed()) return; @@ -1796,8 +1797,10 @@ if (manually_aborted) { DCHECK(abort_signal && abort_signal->aborted()); resolver->Reject(abort_signal->reason(script_state)); - } else if (result_url) { - resolver->Resolve(result_url); + } else if (result_config) { + DCHECK(result_config->mapped_url().has_value()); + DCHECK(!result_config->mapped_url()->potentially_opaque_value.has_value()); + resolver->Resolve(KURL(result_config->urn().value())); } else { resolver->Resolve(v8::Null(script_state->GetIsolate())); }
diff --git a/third_party/blink/renderer/modules/ad_auction/navigator_auction.h b/third_party/blink/renderer/modules/ad_auction/navigator_auction.h index 7aeaf0e..05d992a 100644 --- a/third_party/blink/renderer/modules/ad_auction/navigator_auction.h +++ b/third_party/blink/renderer/modules/ad_auction/navigator_auction.h
@@ -9,6 +9,7 @@ #include <memory> #include "base/memory/scoped_refptr.h" +#include "third_party/blink/public/common/fenced_frame/redacted_fenced_frame_config.h" #include "third_party/blink/public/mojom/interest_group/ad_auction_service.mojom-blink.h" #include "third_party/blink/public/mojom/interest_group/interest_group_types.mojom-blink.h" #include "third_party/blink/renderer/core/frame/navigator.h" @@ -182,10 +183,11 @@ void FinalizeAdComplete(ScriptPromiseResolver* resolver, const absl::optional<KURL>& creative_url); // Completion callback for Mojo call made by runAdAuction(). - void AuctionComplete(ScriptPromiseResolver*, - std::unique_ptr<ScopedAbortState>, - bool manually_aborted, - const absl::optional<KURL>&); + void AuctionComplete( + ScriptPromiseResolver*, + std::unique_ptr<ScopedAbortState>, + bool manually_aborted, + const absl::optional<FencedFrame::RedactedFencedFrameConfig>&); // Completion callback for Mojo call made by deprecatedURNToURL(). void GetURLFromURNComplete(ScriptPromiseResolver*, const absl::optional<KURL>&);
diff --git a/third_party/blink/renderer/platform/bindings/active_script_wrappable_base.cc b/third_party/blink/renderer/platform/bindings/active_script_wrappable_base.cc index 0ceb9892..51b36034 100644 --- a/third_party/blink/renderer/platform/bindings/active_script_wrappable_base.cc +++ b/third_party/blink/renderer/platform/bindings/active_script_wrappable_base.cc
@@ -10,7 +10,7 @@ namespace blink { -void ActiveScriptWrappableBase::ActiveScriptWrappableBaseConstructed() { +void ActiveScriptWrappableBase::RegisterActiveScriptWrappable() { DCHECK(ThreadState::Current()); V8PerIsolateData::From(ThreadState::Current()->GetIsolate()) ->GetActiveScriptWrappableManager()
diff --git a/third_party/blink/renderer/platform/bindings/active_script_wrappable_base.h b/third_party/blink/renderer/platform/bindings/active_script_wrappable_base.h index 424a0437..8936c1c5 100644 --- a/third_party/blink/renderer/platform/bindings/active_script_wrappable_base.h +++ b/third_party/blink/renderer/platform/bindings/active_script_wrappable_base.h
@@ -9,7 +9,6 @@ #include "third_party/blink/renderer/platform/heap/garbage_collected.h" #include "third_party/blink/renderer/platform/platform_export.h" -#include "v8/include/v8.h" namespace blink { @@ -28,38 +27,12 @@ virtual bool IsContextDestroyed() const = 0; virtual bool DispatchHasPendingActivity() const = 0; - // See trait below. - // - // Registering the ActiveScriptWrappableBase after construction means that - // the garbage collector does not need to deal with objects that are - // currently under construction. This is important as checking whether ASW - // should be treated as active involves calling virtual functions which may - // not work during construction. The objects in construction are kept alive - // via conservative stack scanning. - void ActiveScriptWrappableBaseConstructed(); - protected: ActiveScriptWrappableBase() = default; + + void RegisterActiveScriptWrappable(); }; } // namespace blink -namespace cppgc { -template <typename T, typename Unused> -struct PostConstructionCallbackTrait; - -template <typename T> -struct PostConstructionCallbackTrait< - T, - std::void_t< - decltype(std::declval<T>().ActiveScriptWrappableBaseConstructed())>> { - static void Call(T* object) { - static_assert(std::is_base_of<blink::ActiveScriptWrappableBase, T>::value, - "Only ActiveScriptWrappableBase should use the " - "post-construction hook."); - object->ActiveScriptWrappableBaseConstructed(); - } -}; -} // namespace cppgc - #endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_BINDINGS_ACTIVE_SCRIPT_WRAPPABLE_BASE_H_
diff --git a/third_party/blink/renderer/platform/peerconnection/bridge_ice_controller_test.cc b/third_party/blink/renderer/platform/peerconnection/bridge_ice_controller_test.cc index e853491..27b4b949 100644 --- a/third_party/blink/renderer/platform/peerconnection/bridge_ice_controller_test.cc +++ b/third_party/blink/renderer/platform/peerconnection/bridge_ice_controller_test.cc
@@ -4,8 +4,8 @@ #include "third_party/webrtc_overrides/p2p/base/bridge_ice_controller.h" +#include "base/memory/scoped_refptr.h" #include "base/test/task_environment.h" - #include "base/time/time.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" @@ -74,34 +74,35 @@ std::unique_ptr<MockIceController> will_move = std::make_unique<MockIceController>(IceControllerFactoryArgs{}); MockIceController* wrapped = will_move.get(); - BridgeIceController controller(env.GetMainThreadTaskRunner(), &agent, - std::move(will_move)); + scoped_refptr<BridgeIceController> controller = + base::MakeRefCounted<BridgeIceController>(env.GetMainThreadTaskRunner(), + &agent, std::move(will_move)); EXPECT_CALL(*wrapped, SetIceConfig(Ref(*kIceConfig))); - controller.SetIceConfig(*kIceConfig); + controller->SetIceConfig(*kIceConfig); EXPECT_CALL(*wrapped, GetUseCandidateAttr(kConnection, NominationMode::AGGRESSIVE, IceMode::ICEMODE_LITE)) .WillOnce(Return(true)); - EXPECT_TRUE(controller.GetUseCandidateAttribute( + EXPECT_TRUE(controller->GetUseCandidateAttribute( kConnection, NominationMode::AGGRESSIVE, IceMode::ICEMODE_LITE)); EXPECT_CALL(*wrapped, AddConnection(kConnection)); - controller.OnConnectionAdded(kConnection); + controller->OnConnectionAdded(kConnection); EXPECT_CALL(*wrapped, OnConnectionDestroyed(kConnection)); - controller.OnConnectionDestroyed(kConnection); + controller->OnConnectionDestroyed(kConnection); EXPECT_CALL(*wrapped, SetSelectedConnection(kConnection)); - controller.OnConnectionSwitched(kConnection); + controller->OnConnectionSwitched(kConnection); EXPECT_CALL(*wrapped, MarkConnectionPinged(kConnection)); - controller.OnConnectionPinged(kConnection); + controller->OnConnectionPinged(kConnection); EXPECT_CALL(*wrapped, FindNextPingableConnection()) .WillOnce(Return(kConnection)); - EXPECT_EQ(controller.FindNextPingableConnection(), kConnection); + EXPECT_EQ(controller->FindNextPingableConnection(), kConnection); } TEST(BridgeIceControllerTest, HandlesImmediateSwitchRequest) { @@ -110,8 +111,9 @@ std::unique_ptr<NiceMockIceController> will_move = std::make_unique<NiceMockIceController>(IceControllerFactoryArgs{}); NiceMockIceController* wrapped = will_move.get(); - BridgeIceController controller(env.GetMainThreadTaskRunner(), &agent, - std::move(will_move)); + scoped_refptr<BridgeIceController> controller = + base::MakeRefCounted<BridgeIceController>(env.GetMainThreadTaskRunner(), + &agent, std::move(will_move)); IceSwitchReason reason = IceSwitchReason::NOMINATION_ON_CONTROLLED_SIDE; std::vector<const Connection*> conns_to_forget{kConnectionTwo}; @@ -132,7 +134,7 @@ EXPECT_CALL(agent, ForgetLearnedStateForConnections( ElementsAreArray(conns_to_forget))); - EXPECT_TRUE(controller.OnImmediateSwitchRequest(reason, kConnection)); + EXPECT_TRUE(controller->OnImmediateSwitchRequest(reason, kConnection)); // No rechecks before recheck delay. env.FastForwardBy(base::Milliseconds(recheck_delay_ms - 1)); @@ -156,8 +158,9 @@ std::unique_ptr<NiceMockIceController> will_move = std::make_unique<NiceMockIceController>(IceControllerFactoryArgs{}); NiceMockIceController* wrapped = will_move.get(); - BridgeIceController controller(env.GetMainThreadTaskRunner(), &agent, - std::move(will_move)); + scoped_refptr<BridgeIceController> controller = + base::MakeRefCounted<BridgeIceController>(env.GetMainThreadTaskRunner(), + &agent, std::move(will_move)); IceSwitchReason reason = IceSwitchReason::NEW_CONNECTION_FROM_LOCAL_CANDIDATE; std::vector<const Connection*> conns_to_forget{kConnectionTwo}; @@ -182,7 +185,7 @@ EXPECT_CALL(agent, PruneConnections(ElementsAreArray(conns_to_prune))) .InSequence(sort_and_switch); - controller.OnImmediateSortAndSwitchRequest(reason); + controller->OnImmediateSortAndSwitchRequest(reason); // No rechecks before recheck delay. env.FastForwardBy(base::Milliseconds(recheck_delay_ms - 1)); @@ -210,8 +213,9 @@ std::unique_ptr<NiceMockIceController> will_move = std::make_unique<NiceMockIceController>(IceControllerFactoryArgs{}); NiceMockIceController* wrapped = will_move.get(); - BridgeIceController controller(env.GetMainThreadTaskRunner(), &agent, - std::move(will_move)); + scoped_refptr<BridgeIceController> controller = + base::MakeRefCounted<BridgeIceController>(env.GetMainThreadTaskRunner(), + &agent, std::move(will_move)); IceSwitchReason reason = IceSwitchReason::NETWORK_PREFERENCE_CHANGE; @@ -220,7 +224,7 @@ EXPECT_CALL(*wrapped, SortAndSwitchConnection(_)).Times(0); EXPECT_CALL(agent, SwitchSelectedConnection(_, _)).Times(0); - controller.OnSortAndSwitchRequest(reason); + controller->OnSortAndSwitchRequest(reason); std::vector<const Connection*> conns_to_forget{kConnectionTwo}; int recheck_delay_ms = 10; @@ -250,15 +254,16 @@ std::unique_ptr<NiceMockIceController> will_move = std::make_unique<NiceMockIceController>(IceControllerFactoryArgs{}); NiceMockIceController* wrapped = will_move.get(); - BridgeIceController controller(env.GetMainThreadTaskRunner(), &agent, - std::move(will_move)); + scoped_refptr<BridgeIceController> controller = + base::MakeRefCounted<BridgeIceController>(env.GetMainThreadTaskRunner(), + &agent, std::move(will_move)); // Pinging does not start automatically, unless triggered through a sort. EXPECT_CALL(*wrapped, HasPingableConnection()).Times(0); EXPECT_CALL(*wrapped, SelectConnectionToPing(_)).Times(0); EXPECT_CALL(agent, OnStartedPinging()).Times(0); - controller.OnSortAndSwitchRequest(IceSwitchReason::DATA_RECEIVED); + controller->OnSortAndSwitchRequest(IceSwitchReason::DATA_RECEIVED); // Pinging does not start if no pingable connection. EXPECT_CALL(*wrapped, HasPingableConnection()).WillOnce(Return(false)); @@ -285,7 +290,7 @@ .WillOnce(Return(ping_result)); EXPECT_CALL(agent, SendPingRequest(kConnection)).InSequence(start_pinging); - controller.OnSortAndSwitchRequest(IceSwitchReason::DATA_RECEIVED); + controller->OnSortAndSwitchRequest(IceSwitchReason::DATA_RECEIVED); env.FastForwardBy(kTick); // ICE controller should recheck and ping after the recheck delay.
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 index 377b2b82..d0a4f0b 100644 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -3222,6 +3222,14 @@ public: true, }, { + name: "WebViewXRequestedWithDeprecation", + origin_trial_feature_name: "WebViewXRequestedWithDeprecation", + origin_trial_allows_insecure: true, + origin_trial_os: ["android"], + origin_trial_type: "deprecation", + status: "experimental", + }, + { name: "WebVTTRegions", status: "experimental", },
diff --git a/third_party/blink/renderer/platform/video_capture/video_capture_impl.cc b/third_party/blink/renderer/platform/video_capture/video_capture_impl.cc index 4b4dc626..ea3c417 100644 --- a/third_party/blink/renderer/platform/video_capture/video_capture_impl.cc +++ b/third_party/blink/renderer/platform/video_capture/video_capture_impl.cc
@@ -811,8 +811,7 @@ for (const auto& client : clients_) client.second.state_update_cb.Run(state_); clients_.clear(); - RecordStartOutcomeUMA(start_timedout_ ? VideoCaptureStartOutcome::kTimedout - : VideoCaptureStartOutcome::kFailed); + RecordStartOutcomeUMA(result->get_error_code()); return; } @@ -828,7 +827,7 @@ // a frame refresh to start the video call with. // Capture device will make a decision if it should refresh a frame. RequestRefreshFrame(); - RecordStartOutcomeUMA(VideoCaptureStartOutcome::kStarted); + RecordStartOutcomeUMA(media::VideoCaptureError::kNone); break; case media::mojom::VideoCaptureState::STOPPED: OnLog("VideoCaptureImpl changing state to VIDEO_CAPTURE_STATE_STOPPED"); @@ -1155,7 +1154,6 @@ base::BindOnce(&VideoCaptureImpl::OnStartTimedout, base::Unretained(this))); } - start_timedout_ = false; start_outcome_reported_ = false; base::UmaHistogramBoolean("Media.VideoCapture.Start", true); @@ -1167,8 +1165,6 @@ DCHECK_CALLED_ON_VALID_THREAD(io_thread_checker_); OnLog("VideoCaptureImpl timed out during starting"); - start_timedout_ = true; - OnStateChanged(media::mojom::blink::VideoCaptureResult::NewErrorCode( media::VideoCaptureError::kVideoCaptureImplTimedOutOnStart)); } @@ -1209,11 +1205,26 @@ return video_capture_host_.get(); } -void VideoCaptureImpl::RecordStartOutcomeUMA(VideoCaptureStartOutcome outcome) { +void VideoCaptureImpl::RecordStartOutcomeUMA( + media::VideoCaptureError error_code) { // Record the success or failure of starting only the first time we transition // into such a state, not eg when resuming after pausing. if (!start_outcome_reported_) { + VideoCaptureStartOutcome outcome; + switch (error_code) { + case media::VideoCaptureError::kNone: + outcome = VideoCaptureStartOutcome::kStarted; + break; + case media::VideoCaptureError::kVideoCaptureImplTimedOutOnStart: + outcome = VideoCaptureStartOutcome::kTimedout; + break; + default: + outcome = VideoCaptureStartOutcome::kFailed; + break; + } base::UmaHistogramEnumeration("Media.VideoCapture.StartOutcome", outcome); + base::UmaHistogramEnumeration("Media.VideoCapture.StartErrorCode", + error_code); start_outcome_reported_ = true; } }
diff --git a/third_party/blink/renderer/platform/video_capture/video_capture_impl.h b/third_party/blink/renderer/platform/video_capture/video_capture_impl.h index 403dedb..5870b18 100644 --- a/third_party/blink/renderer/platform/video_capture/video_capture_impl.h +++ b/third_party/blink/renderer/platform/video_capture/video_capture_impl.h
@@ -231,7 +231,7 @@ void OnStartTimedout(); - void RecordStartOutcomeUMA(VideoCaptureStartOutcome outcome); + void RecordStartOutcomeUMA(media::VideoCaptureError error_code); // Callback for when GPU context lost is detected. The method fetches the new // GPU factories handle on |main_task_runner_| and sets |gpu_factories_| to @@ -279,7 +279,6 @@ base::TimeTicks first_frame_ref_time_; VideoCaptureState state_; - bool start_timedout_ = false; bool start_outcome_reported_ = false; int num_first_frame_logs_ = 0;
diff --git a/third_party/blink/renderer/platform/video_capture/video_capture_impl_test.cc b/third_party/blink/renderer/platform/video_capture/video_capture_impl_test.cc index 67e6367..14f488b 100644 --- a/third_party/blink/renderer/platform/video_capture/video_capture_impl_test.cc +++ b/third_party/blink/renderer/platform/video_capture/video_capture_impl_test.cc
@@ -290,6 +290,8 @@ histogram_tester.ExpectUniqueSample("Media.VideoCapture.StartOutcome", VideoCaptureStartOutcome::kStarted, 1); + histogram_tester.ExpectUniqueSample("Media.VideoCapture.StartErrorCode", + media::VideoCaptureError::kNone, 1); } TEST_F(VideoCaptureImplTest, TwoClientsInSequence) { @@ -732,6 +734,8 @@ histogram_tester.ExpectTotalCount("Media.VideoCapture.Start", 1); histogram_tester.ExpectTotalCount("Media.VideoCapture.StartOutcome", 1); + histogram_tester.ExpectUniqueSample("Media.VideoCapture.StartErrorCode", + media::VideoCaptureError::kNone, 1); } TEST_F(VideoCaptureImplTest, EndedBeforeStop) { @@ -767,6 +771,8 @@ // Successful start before the error, so StartOutcome is kStarted. histogram_tester.ExpectUniqueSample("Media.VideoCapture.StartOutcome", VideoCaptureStartOutcome::kStarted, 1); + histogram_tester.ExpectUniqueSample("Media.VideoCapture.StartErrorCode", + media::VideoCaptureError::kNone, 1); } TEST_F(VideoCaptureImplTest, WinSystemPermissionsErrorUpdatesCorrectState) { @@ -922,6 +928,9 @@ histogram_tester.ExpectTotalCount("Media.VideoCapture.Start", 1); histogram_tester.ExpectUniqueSample("Media.VideoCapture.StartOutcome", VideoCaptureStartOutcome::kTimedout, 1); + histogram_tester.ExpectUniqueSample( + "Media.VideoCapture.StartErrorCode", + media::VideoCaptureError::kVideoCaptureImplTimedOutOnStart, 1); } TEST_F(VideoCaptureImplTest, StartTimeout_FeatureDisabled) { @@ -951,6 +960,8 @@ histogram_tester.ExpectTotalCount("Media.VideoCapture.Start", 1); histogram_tester.ExpectUniqueSample("Media.VideoCapture.StartOutcome", VideoCaptureStartOutcome::kStarted, 1); + histogram_tester.ExpectUniqueSample("Media.VideoCapture.StartErrorCode", + media::VideoCaptureError::kNone, 1); } TEST_F(VideoCaptureImplTest, ErrorBeforeStart) { @@ -971,6 +982,9 @@ histogram_tester.ExpectTotalCount("Media.VideoCapture.Start", 1); histogram_tester.ExpectUniqueSample("Media.VideoCapture.StartOutcome", VideoCaptureStartOutcome::kFailed, 1); + histogram_tester.ExpectUniqueSample( + "Media.VideoCapture.StartErrorCode", + media::VideoCaptureError::kIntentionalErrorRaisedByUnitTest, 1); } #if BUILDFLAG(IS_WIN)
diff --git a/third_party/blink/web_tests/SlowTests b/third_party/blink/web_tests/SlowTests index 0d7b581..6976a87 100644 --- a/third_party/blink/web_tests/SlowTests +++ b/third_party/blink/web_tests/SlowTests
@@ -254,7 +254,6 @@ crbug.com/853977 [ Linux ] http/tests/fetch/chromium/call-extra-crash-tee.html [ Slow ] crbug.com/853977 [ Linux ] http/tests/fetch/chromium/release-handle-crash.html [ Slow ] -crbug.com/865262 [ Mac ] media/controls/text-track-menu-pointer-selection.html [ Slow ] crbug.com/942951 media/controls/controls-layout-in-different-size.html [ Slow ]
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index 6a983b8..6ac99a94 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -163,7 +163,6 @@ # TODO(crbug.com/1367142): Re-enable this test crbug.com/1339293 external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-remove-src.html [ Crash Failure Pass Timeout ] crbug.com/1339293 external/wpt/content-security-policy/media-src/media-src-7_1_2.sub.html [ Crash Failure Pass Timeout ] -crbug.com/1339293 [ Linux ] external/wpt/content-security-policy/media-src/media-src-blocked.sub.html [ Failure Pass Timeout ] # ====== Timed HTML parser budget tests to here ======================== @@ -2137,7 +2136,6 @@ crbug.com/987138 [ Linux ] media/controls/doubletap-to-jump-forwards.html [ Pass Timeout ] crbug.com/987138 [ Win ] media/controls/doubletap-to-jump-forwards.html [ Pass Timeout ] crbug.com/1122742 http/tests/devtools/sources/debugger/source-frame-inline-breakpoint-decorations.js [ Pass Timeout ] -crbug.com/1002377 external/wpt/service-workers/service-worker/update-bytecheck.https.html [ Pass Timeout ] crbug.com/805756 external/wpt/html/semantics/tabular-data/processing-model-1/span-limits.html [ Pass Timeout ] # crbug.com/1218716: These fail when TrustTokenOriginTrial is enabled. @@ -3016,6 +3014,10 @@ crbug.com/626703 [ Win ] virtual/partitioned-cookies/http/tests/inspector-protocol/network/disabled-cache-navigation.js [ Failure ] # ====== New tests from wpt-importer added here ====== +crbug.com/626703 [ Win11 ] external/wpt/credential-management/fedcm-iframe.https.html [ Timeout ] +crbug.com/626703 [ Win11 ] external/wpt/fetch/metadata/generated/element-meta-refresh.optional.sub.html [ Timeout ] +crbug.com/626703 [ Win11 ] virtual/pending-beacon/external/wpt/pending-beacon/pending_post_beacon-cors.tentative.https.window.html [ Timeout ] +crbug.com/626703 [ Win11 ] virtual/prefetch/external/wpt/speculation-rules/prefetch/out-of-document-rule-set.https.html?include=FollowRedirect [ Timeout ] crbug.com/626703 external/wpt/css/css-contain/container-queries/nested-query-containers.html [ Crash Failure Timeout ] crbug.com/626703 [ Mac12 ] external/wpt/html/semantics/links/hyperlink-auditing/headers.optional.html [ Timeout ] crbug.com/626703 [ Mac12 ] external/wpt/content-security-policy/embedded-enforcement/subsumption_algorithm-general.html [ Timeout ] @@ -3425,10 +3427,6 @@ crbug.com/626703 [ Linux ] external/wpt/url/a-element.html [ Failure ] crbug.com/892337 external/wpt/resource-timing/content-type-parsing.html [ Failure Timeout ] -# Out-of-order pointerevents: https://github.com/w3c/pointerevents/issues/355 -crbug.com/1186788 [ Linux ] external/wpt/pointerevents/pointerevent_pointercapture_in_frame.html?pen [ Failure Pass Timeout ] -crbug.com/1186788 [ Mac ] external/wpt/pointerevents/pointerevent_pointercapture_in_frame.html?pen [ Failure Pass Timeout ] - crbug.com/1147998 external/wpt/pointerevents/pointerevent_after_target_removed.html?mouse [ Failure ] crbug.com/1147674 external/wpt/pointerevents/pointerevent_after_target_removed.html?pen [ Failure ] crbug.com/1147674 external/wpt/pointerevents/pointerevent_after_target_removed.html?touch [ Failure ]
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json index e9b1dd6..aec68bb 100644 --- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json +++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
@@ -120541,6 +120541,19 @@ {} ] ], + "font-variant-alternates-19.html": [ + "6e9caf2e47cf8875a7756c8c2ce0ac7be2b22e26", + [ + null, + [ + [ + "/css/css-fonts/font-variant-alternates-19-ref.html", + "==" + ] + ], + {} + ] + ], "font-variant-caps-01.html": [ "9e96486e33f8ae964e1de2118218ecc88f1bff29", [ @@ -212684,6 +212697,19 @@ {} ] ], + "outline-style-inherit.html": [ + "7a82bc790f5c35fb74d45ec1b84901a195943bd9", + [ + null, + [ + [ + "/css/css-ui/outline-style-inherit-ref.html", + "==" + ] + ], + {} + ] + ], "outline-with-padding-001.html": [ "716491ca25eae11238b7240a3635bdb8a88187cf", [ @@ -239622,7 +239648,22 @@ ], {} ] - ] + ], + "xslt": { + "sort.html": [ + "631c3edd6aee36e66f7aa10aef7cdc5c2f520e43", + [ + null, + [ + [ + "/dom/xslt/sort-ref.html", + "==" + ] + ], + {} + ] + ] + } }, "encoding": { "eof-shift_jis.html": [ @@ -245569,6 +245610,19 @@ {} ] ], + "details-revert.html": [ + "760cc8281e820d2ef256eb22d88d7aa8f090b821", + [ + null, + [ + [ + "/html/rendering/the-details-element/details-revert-ref.html", + "==" + ] + ], + {} + ] + ], "summary-display-flex.html": [ "c495516cf3dabd27952f44293c5b39629bd56c64", [ @@ -259354,11 +259408,11 @@ "support": { ".cache": { "gitignore2.json": [ - "7fd0a93d30dc5ca701af7731a45e94d7fbbcdb7d", + "618b7edf44dadc669172c5cab7ebe16fa4648cd8", [] ], "mtime.json": [ - "6c7f0daff985729260271a06657c6ee5f3193a99", + "ba3aa9b32bf802709f10d947b82e3c270d7d1c40", [] ] }, @@ -259631,6 +259685,10 @@ "732d3cef746bdf091879b397dd85af527b168170", [] ], + "bindings-inject-values-bypass-chain.html.ini": [ + "ab75b1b8be2142a31c2653c6cbef5204d9df5c75", + [] + ], "database-names-by-origin.html.ini": [ "21e89fe0a7caf86946c6fe5d345b6fb4b68defa9", [] @@ -259644,7 +259702,7 @@ [] ], "idbobjectstore_batchGetAll_largeValue.tentative.any.js.ini": [ - "c7c1807ce99028a1f77467c32528dc22c8a32d79", + "85e7da2fb96aaf34194dc946ba5c4fe81da3318e", [] ], "resources": { @@ -259702,7 +259760,7 @@ [] ], "structured-clone.any.js.ini": [ - "244c9165b4dc8c076f25f93dc3c9bf03913b1525", + "26dea5c50d9a7eb89ca03a04fb0af648e3f822e2", [] ] }, @@ -263586,6 +263644,10 @@ "1cdc709f21e2e435b69af943ae2d2e9c0731540f", [] ], + "subsumption_algorithm-source_list-wildcards.html.ini": [ + "bea0cc932fd04ee83a0539548208ebacff839b84", + [] + ], "support": { "echo-allow-csp-from.py": [ "3a914379671ce91b6991750f5b7b9b6bf4afa02c", @@ -264958,10 +265020,6 @@ "2b1d42a8d16c04cf339366b05262c27516e4196c", [] ], - "prefetch-header-allowed.html.ini": [ - "126f726516e8f7d6b2073faa3e8764d7230ae16a", - [] - ], "prefetch-header-blocked-by-default.html.headers": [ "6d19ed181eeb513622eab41dcd8f94967338b387", [] @@ -265896,17 +265954,13 @@ [] ], "cookieListItem_attributes.https.any.js.ini": [ - "5f4f70a3cd5d691a0cffb6d4ba50990c1ccf1127", + "4d1e919783c4ebfbd810d207c065df93d8615551", [] ], "cookieStore_set_arguments.https.any.js.ini": [ "19fabbd941e25554adcc42e0adae99bcf4b16a3e", [] ], - "cookieStore_subscribe_arguments.https.any.js.ini": [ - "e1cf95d6f041415f98d2de576c764ad6f93b63f8", - [] - ], "resources": { "always_changing_sw.sub.js": [ "9fdf99848fa50316e275cd6636a5755270a9bb1e", @@ -265965,7 +266019,7 @@ [] ], "domain.sub.html.ini": [ - "256efe788b05b40236ba1d47e733a47a7f5cbbe7", + "0843509b1a1fea7adde01eaecbfdd9669593eb44", [] ], "resources": { @@ -266192,12 +266246,8 @@ ] }, "samesite": { - "about-blank-subresource.https.html.ini": [ - "2e65780b8b8dc8c13869b298952186b189c6e7aa", - [] - ], "form-post-blank-reload.https.html.ini": [ - "cff3fc495bac3351066bc2c1c82128c679a3fab6", + "474bdcb939113d28f9ec5d5eeedd78f0f3c471d7", [] ], "form-post-blank.https.html.ini": [ @@ -266354,7 +266404,7 @@ [] ], "fedcm-cross-origin-policy.https.html.ini": [ - "2fd6329e2821890c067ff58d9aa76a2957afbdd1", + "1fedefe5002e1361e9add536cec2c0cc974c27b1", [] ], "fedcm-cross-origin-policy.https.html.sub.headers": [ @@ -266366,7 +266416,7 @@ [] ], "fedcm-iframe.https.html.ini": [ - "3a40718b8df87030eac0a9c9a1903ba56e507038", + "2f27a9b8534c0f6d87e9946c45eedf4a091d8046", [] ], "fedcm-logout-rps.https.html.headers": [ @@ -266380,7 +266430,7 @@ ] }, "fedcm-network-requests.https.html.ini": [ - "2407bd6c6c4d7f8aa63c109bc1144b5079593cf8", + "14f5926ca2a04ae196d5790b037cc2bf662c9b2a", [] ], "federatedcredential-framed-get.sub.https-expected.txt": [ @@ -275140,10 +275190,6 @@ "ff88b1e74a951b77458340de03b91d177302543e", [] ], - "anchor-name-inline-001.html.ini": [ - "35bea808d82e0e7fa2aabbdd5d3c79b90a3556dc", - [] - ], "anchor-position-inline-003.html.ini": [ "2f6987b7cac6728749fc0c3f308bbb2e8684d276", [] @@ -275227,7 +275273,7 @@ [] ], "Element-getAnimations-dynamic-changes.tentative.html.ini": [ - "02694929677056c713869f66cc6b6381ee7f7098", + "90372850a2b15bec987edeacd277c571fa2bae64", [] ], "KeyframeEffect-getKeyframes.tentative-expected.txt": [ @@ -285949,7 +285995,7 @@ [] ], "image-as-flexitem-size-007v.html.ini": [ - "c8aa4b5796a4f1f672b7769e34ac51dbb8048db2", + "04842e5f3f8acaf182ec117218d3adae19fcc85c", [] ], "interactive": { @@ -287636,6 +287682,10 @@ "cd54bef9a8cfde39273d375c9373ae4ee26fd6f3", [] ], + "font-variant-alternates-19-ref.html": [ + "22c178c64f22d558d9cd725f75ae06e0f01ccfd8", + [] + ], "font-variant-caps-01-ref.html": [ "68f9ef0c002b36172d07f7357dceeb95851c241e", [] @@ -299206,7 +299256,7 @@ [] ], "initial-letter-block-position-drop-under-ruby.html.ini": [ - "c638dc792ad0c4f086b1785e31ad9f87bf71a995", + "4890148034ec5798f685c8972eaa6a383d0820e2", [] ], "initial-letter-block-position-margins-ref.html": [ @@ -299218,7 +299268,7 @@ [] ], "initial-letter-block-position-margins-rtl.html.ini": [ - "7dd454ccc02d9006a244d8811eb808233484ef66", + "a084bdb3aac01e0c8abc03e4f018725cb3e5765a", [] ], "initial-letter-block-position-margins-vlr-ref.html": [ @@ -299266,7 +299316,7 @@ [] ], "initial-letter-block-position-raise-under-ruby-tall.html.ini": [ - "23cf7f03b9730e4ad3df5a6b34badd343357f508", + "b9fce01bd2f83e4b13330648839ac003ec701f8e", [] ], "initial-letter-block-position-raise-under-ruby.html.ini": [ @@ -299286,7 +299336,7 @@ [] ], "initial-letter-drop-initial-rtl.html.ini": [ - "d6e86990f0cd7dde7154de02ce20b0bf63e97fc6", + "04516eb078242106741db3c5add65563d0241752", [] ], "initial-letter-drop-initial-vlr-ref.html": [ @@ -299326,7 +299376,7 @@ [] ], "initial-letter-float-001-vlr.html.ini": [ - "c90a4c2d81fa1d6dea8c956c8a593c503338dec0", + "815486cd822115d5d8a0861fb545fb9d6eff1c90", [] ], "initial-letter-float-001-vrl-ref.html": [ @@ -299338,7 +299388,7 @@ [] ], "initial-letter-float-001.html.ini": [ - "263a4211cc99b44532d99c92af3a04bad8ed4b45", + "3d20a75e89b3d6b44c4fa4151cd68d2c9c663d39", [] ], "initial-letter-float-002-ref.html": [ @@ -299346,7 +299396,7 @@ [] ], "initial-letter-float-002.html.ini": [ - "eeb0e18a7eace82f31abbdd12e385c425c5845fa", + "2e8b17aca51ee554d27822eec333954f9cfa77f8", [] ], "initial-letter-float-003-ref.html": [ @@ -299354,7 +299404,7 @@ [] ], "initial-letter-float-003.html.ini": [ - "f6a18f2aec246924917019158f5fd184bc6d6255", + "d2c468522cfcd63ded4619e37875635e4ebf9e89", [] ], "initial-letter-float-004-ref.html": [ @@ -299382,7 +299432,7 @@ [] ], "initial-letter-indentation-rtl.html.ini": [ - "776a6e966f53708bea9c42982fdaa96d630dce1e", + "94f83221e57c2b98b4c8e5138e709e8dbe1c889d", [] ], "initial-letter-indentation.html.ini": [ @@ -299450,7 +299500,7 @@ [] ], "initial-letter-short-para-initial-letter-clears.html.ini": [ - "2634a62e13be53b0042daa30c201a02845233d60", + "cbde01eb286cf7ddcfadac050241bead4dc6a78f", [] ], "initial-letter-short-para-initial-letter-wraps-ref.html": [ @@ -299458,7 +299508,7 @@ [] ], "initial-letter-short-para-initial-letter-wraps.html.ini": [ - "d49d2e5d77a3f49cd3993ea057145629bba33c9a", + "09a887f3e5787c0cdcf296ea379df7e4379a532c", [] ], "initial-letter-sunk-initial-ref.html": [ @@ -299699,10 +299749,6 @@ } }, "fallback-intrinsic-sizes": { - "constructor-error.https.html.ini": [ - "3ab53016c15110c81b40cdd928fc8f072afb021c", - [] - ], "fallback-ref.html": [ "6808e14eb683fde8c30a2c89318c6cccba12ca1a", [] @@ -299710,7 +299756,7 @@ }, "fallback-layout": { "constructor-error.https.html.ini": [ - "ec85dd01b511a3edf5a7c7531259a15aabb2a158", + "3ab53016c15110c81b40cdd928fc8f072afb021c", [] ], "fallback-layout-fallback-ref.html": [ @@ -300870,7 +300916,7 @@ [] ], "clip-path-inline-002.html.ini": [ - "a2eabbf232c203107a27deb8592abf508f3a5adc", + "84724ceb17adbb81abbf45520c33b82b13c67f36", [] ], "clip-path-inline-003.html.ini": [ @@ -303986,6 +304032,10 @@ "6eed083f037d166b20a812075b8f16cf47d19183", [] ], + "scrollable-overflow-zero-one-axis.html.ini": [ + "9ee49f23f48eb803f502b2fca95f32ccd15a8b6b", + [] + ], "scrollbar-gutter-002-ref.html": [ "ae51682c75920743d4ae69fffe8b566a3758c7a4", [] @@ -304502,10 +304552,6 @@ "08893127a68872dbb8be4645275cbd5bfcc16ee0", [] ], - "parse-input-arguments-008.https.html.ini": [ - "aadef1ed16169ee3e50fabca830cf2fa8b707237", - [] - ], "parse-input-arguments-010.https.html.ini": [ "2fe67ddb232722d2676757352c87fbfc7adc93d8", [] @@ -304518,6 +304564,10 @@ "9905f9f8ad5e64a36db44308b83d79cce7f0dad7", [] ], + "parse-input-arguments-022.https.html.ini": [ + "6ba66bd89150dab549a623dfa1415f74d2cd3466", + [] + ], "parse-input-arguments-ref.html": [ "862212092a488948c202d88ba18334a738b583a8", [] @@ -306967,7 +307017,7 @@ [] ], "ruby-text-combine-upright-001b.html.ini": [ - "654ce463d1c2e4eac1fc8aad024ad0e5ce2313f9", + "a46dccba60458b604661f69c557f1e82e4b7c17c", [] ], "ruby-text-combine-upright-002-ref.html": [ @@ -307758,6 +307808,10 @@ [] ] }, + "shape-image-004.html.ini": [ + "6c9a22ffb69db34061b6f53d9a70ab869efa4916", + [] + ], "shape-image-015.html.ini": [ "0e7ac635768f727fe058a0ff2bd1b8073a3bf21c", [] @@ -314072,7 +314126,7 @@ [] ], "text-transform-capitalize-007.html.ini": [ - "dd72f428ccbd1f7842f3521f5f30584317c35c31", + "4dd4f078df482979aef56a6f67251ad514fe3ad0", [] ], "text-transform-capitalize-010.html.ini": [ @@ -318847,6 +318901,10 @@ "transitioncancel-002.html.ini": [ "ad398f3897842d5300b9c1b28e915ea99f43bf0b", [] + ], + "transitionevent-interface.html.ini": [ + "b2fa44c3ce7568cf94fcbf38135452e0d925f27c", + [] ] }, "css-typed-om": { @@ -318898,6 +318956,16 @@ [] ] }, + "stylevalue-serialization": { + "cssTransformValue.tentative-expected.txt": [ + "5828ede250aa654bdfc19220a3c60acbdd4b476b", + [] + ], + "cssTransformValue.tentative.html.ini": [ + "91d72b719e6cec02d819f06abb30f085e5e81038", + [] + ] + }, "stylevalue-subclasses": { "cssHSL-expected.txt": [ "14e8a1896894575bfdf765a4e632c0d872afb3cf", @@ -319085,99 +319153,99 @@ }, "properties": { "accent-color-expected.txt": [ - "08f9287a96c5c59b34948f10cbf7f92f711058fd", + "f46a4ccdd2cd7b7880a690b9b1e939151a8ea700", [] ], "accent-color.html.ini": [ - "c44420d90d8ff37a9981ab3bdc0e59161be00634", + "86a933030552ae17c6f8042aee6938a6272444c2", [] ], "alignment-baseline-expected.txt": [ - "a30a92f46fca6f79da48d46185659b08b3ce28a2", + "2613769a15260c9b721c900c92fd179891e249f3", [] ], "alignment-baseline.html.ini": [ - "80987e613a3eb3808914f1d203794d57037b07c3", + "a221448cb500ad2117b6e5250bc6aca119b1e990", [] ], "all-expected.txt": [ - "6c675b791ffb82b5baf63d4849b798a157ac7239", + "3e210eb1cad3109adf279e8613b5dd0553fac707", [] ], "all.html.ini": [ - "71a129a9f80da07a06aa15df85ecc2187314c005", + "0fa6917a37d77954cdccba643e0ec00b69a60449", [] ], "animation-delay-expected.txt": [ - "cc7dbff98e6f143ee6cb0b6043ec8a214990222f", + "de1a138ba3c6272528239bd5304db074f306ce58", [] ], "animation-delay.html.ini": [ - "cfa7cd26f89c225a1a9cf4cc1ee24604d084aa6e", + "2a90a921ae747a8f3309bed1e143b03c35832338", [] ], "animation-name-expected.txt": [ - "2982aecdc77e578208aa5afa9dd0180bc382bfad", + "1f2029daea82f618b4c7a92ebe9f543d4ae88966", [] ], "animation-name.html.ini": [ - "349fb06fe882b8175f7dcbfc45a04ee7aa200693", + "30eef910f5512ed380c4f53e847ea40572343fad", [] ], "background-expected.txt": [ - "fdf2474a67270c5544aebf0445ac57b597e72ee2", + "e3d235f26dad52073e0a7cf078a322a8a03ca22a", [] ], "background-position-expected.txt": [ - "ce6027b291c076e2021e474a63643c124ee4e336", + "56c3c648b2dc30c21b8f32033c2eb0ecac78e321", [] ], "background-position.html.ini": [ - "33832ac7e24850344c636992f6b85a18c47532d8", + "e7e4a4ce5ce1be35e3cbb08d39305aaece52ed9f", [] ], "background-repeat-expected.txt": [ - "2ac07b76710594ee3182ba7eab3fda89b3e11db1", + "a2153be3cebe732614381572a7c3d2ecb91ac9a2", [] ], "background-repeat.html.ini": [ - "9b3fd0c475fedc999f2e2494600db21d39993bf6", + "f74b02941a1bf1aca3fb761a46214c5f69e9fce8", [] ], "background.html.ini": [ - "94dd77033aa4f4be76b95829f298410a97468888", + "fa11815c34456b23ec7f2cecba409d20e8d156f1", [] ], "border-radius-expected.txt": [ - "7c9503536f27655ece43717afbcd6d603fe1a0da", + "bf0468837312fe53a88f9362a9e317b5ad18d0fb", [] ], "border-radius.html.ini": [ - "1faa41c0c37cdcae914e3b93a267c546104e8a67", + "7475d20ca11e8d12422822b95fd3b44e7fdcb243", [] ], "break-expected.txt": [ - "043fdeeeb10d9797414de13629fc7b48c12adf76", + "0bbc6d7878b60ea129df4f65f76be119109e96e1", [] ], "break.html.ini": [ - "e43ad9d4a56527d39d3f5dfb3af3a41a821888e6", + "3751eb6c2bdd2c4927c876038113859a64ed058c", [] ], "clip-path-expected.txt": [ - "a1ea808c4b5d181327158b55dea7884d724e1bda", + "6d8560ec56a07791206cf7f9ace5a08fed156d6e", [] ], "clip-path.html.ini": [ - "7a4cd1104bc1466ce8ad623dde077fc7625ca7d5", + "7ab59006801a19d78702ee186a50e6b4d2ee8561", [] ], "container-name-expected.txt": [ - "55177c51700a9cb880c88c057058774d1e05f0fc", + "65e19cbe55086be653e45cd97e8c42c3218a0f1b", [] ], "container-name.html.ini": [ - "6e820a9ca94ad22ffef6012c66b9502b38f3b347", + "bbe66d7737584a73dff3fa386dd7164881061316", [] ], "display.html.ini": [ @@ -319185,19 +319253,19 @@ [] ], "dominant-baseline-expected.txt": [ - "ad29e04ffeb7affc08ef0969d14a68564627f6bf", + "ff40f87806e67655107612d603f8017e1dd291da", [] ], "dominant-baseline.html.ini": [ - "873b7c8d0a435f7b1ce9f963c58020de9f556b5a", + "2e69ec2db78175afd92e0b57acb8b6afd623de36", [] ], "fill-color-expected.txt": [ - "9e54337273a9f04323e2cdcb15129617a6db02a7", + "ce96f52b5f2d45fdc8f5c70d33cd2f5d7d93280b", [] ], "fill-color.html.ini": [ - "1b31c03736c9c1e57e7d86e1fb6a7bdb253c65b9", + "2908a67c98f3c16435eb856038ae0f1a5a209a0d", [] ], "fill-expected.txt": [ @@ -319209,15 +319277,15 @@ [] ], "font-language-override-expected.txt": [ - "07387f64ec785e50dbeea77bcc3f38bb18227671", + "2a7c48d1e31671b51b3adaafae36e36336ea48ba", [] ], "font-language-override.html.ini": [ - "eb12a46de7c118242022059ead69f1bc45084eff", + "f9ba074d22333963ca136254c84ed3be42f8245d", [] ], "font-palette-expected.txt": [ - "c3a442fbfc54a7591ef2dc4dc198297082983825", + "03ac102758a6a03da766c8dc86ff73e2f28a3a4c", [] ], "font-palette.html.ini": [ @@ -319225,59 +319293,59 @@ [] ], "font-presentation-expected.txt": [ - "1ca793c020a3584d3583a0a1b3899f92c53addaa", + "21262d5271f3814b3a0147c6e7965646c009fd25", [] ], "font-presentation.html.ini": [ - "975dd0358e380f1b9a518f8f53571cb219e8a113", + "f7ae7751fdf7f2b3434395517518f65e2a696a65", [] ], "font-size-expected.txt": [ - "d5c4f10399ddaa7086761f1979fa03602756dd82", + "f0b58f112d112d5af0c13b961f976a41a3f7a1ab", [] ], "font-size.html.ini": [ - "4aa234893ddea5b1009f1cec41ce871d086d1e2d", + "def6a661e8aea3d77a0f7497ac6dc57d77921e82", [] ], "font-stretch-expected.txt": [ - "4ab9d8b3a82943b9c264e6a024bd765dc4220064", + "ff60fffce9bbd856619f0754bf59063b0b3ed3bc", [] ], "font-stretch.html.ini": [ - "5f43ab9e12f3f08b2f50f6b4de82f312cc115821", + "41dc15814f7fb003f5e636cb54195172ce7650fb", [] ], "font-style-expected.txt": [ - "865fce542aecfedea807465fb153b91b0c449228", + "3c147243ac8233d04c77a057c5f28cbe4cc4fdde", [] ], "font-style.html.ini": [ - "5f2cc9e6e1bd7897849853ea72a452401c0745d3", + "858ae4977265c1715ef370568afd7b3b0ac1ee76", [] ], "font-variant-alternates-expected.txt": [ - "d68d44af74c7b921682c551600014a65303aed99", + "850a09db53b633208286e9b3f0708e3986485011", [] ], "font-variant-alternates.html.ini": [ - "8584638bb4bf41c6a730386155a98031285e2916", + "b212ba07a60e34fe0efb5bc95d2b26ae695feb60", [] ], "font-variant-emoji-expected.txt": [ - "eb685a48262cda657f8a5e2a9fbb385116cd0aca", + "951bee833bd2df52689b77f74c2f45b610f35f3c", [] ], "font-variant-emoji.html.ini": [ - "c3cb329ba94c3515de1df0c7393c9c4b19a4fe79", + "fac7fff876de4fcac56fd5a1020ef52ee1fd4725", [] ], "font-weight-expected.txt": [ - "1e36de6b3117fe97dd5694d978e5c71bbfe3e653", + "064383275ed35e15898cc4f46296fe4bc95ea8a7", [] ], "font-weight.html.ini": [ - "6463de106f2380f79b6bcab0bd4eb75134ced18b", + "49b15fe96e5128fde17193da4db3f9d10215c46f", [] ], "grid-gap-expected.txt": [ @@ -319289,63 +319357,63 @@ [] ], "image-rendering-expected.txt": [ - "f4868950ecfff310b0c4f5840e63c2e095805ff9", + "657e9f1b878c5d131020c399386b4769deea3f87", [] ], "image-rendering.html.ini": [ - "9b24b2c641f8cc9917bf4bcfd601c67c7bad16e8", + "bbe0713b882c064f207af01be6573f46102c9d84", [] ], "letter-spacing-expected.txt": [ - "15cc7d7ffa8c740e162f1d1e630472d64b0dc132", + "bdaa8801909f9509beccc4934135f1fc55df46cd", [] ], "letter-spacing.html.ini": [ - "03bf8880f9227bfd8ccf68b25e644e46dfa2d493", + "3f3e4c7e76f8bc3d840b969b274d9c8a28213200", [] ], "line-height-expected.txt": [ - "3dc0cdfe6daf53b7c4f0feb5b6ec3da2d5e7a340", + "730411f2cf8f4bba6d2797491c1d8214596674a1", [] ], "line-height.html.ini": [ - "b01bfd793d2168d1670d122f0a52060026331120", + "adca73244e27dd7419623262f6fa6a5c156832bb", [] ], "list-style-type-expected.txt": [ - "03465d6414be3db40a701c28e68282ab7f7e4bb6", + "3ad49a7291688e9a3bd104725e91dbd76619884a", [] ], "list-style-type.html.ini": [ - "65e6514adad404cfb6a4c03da81424adf5d4ee4e", + "e9cfe581cc4b95bb0bc9cf1cb6676e9f9f492691", [] ], "logical-expected.txt": [ - "f9a30fc3790d2beeb254cbde182da68afd83f50c", + "68c2ccf54866acd922790ecc5299cb2bd3d0cfa8", [] ], "logical.html.ini": [ - "56782359dde71a92c4f8697986db59077120e27e", + "0faf47cb1a04598c89f3143e94440e7b3ad7f321", [] ], "margin-expected.txt": [ - "2d19bdaad0b50fec5a95526ecc1d9f86423caac2", + "c9ec899308e6e140b2b54a8a3cb9b405cbc0838f", [] ], "margin.html.ini": [ - "bdc986a69fa83d3af376457fafd7e714908d5937", + "2ba94d750f3d4db11ff288496987d6efc99c83af", [] ], "mask-image-expected.txt": [ - "fc9e038f38118eb4a54ecdc08e62635732fb618f", + "d092d712c93ed1b48cea1f164d9bef9efac3b6c8", [] ], "mask-image.html.ini": [ - "f8a283eb2de139522cefaeddabc2bfa48bc6e118", + "cecd4b635e7436a8cb51118ed1c7b3d4834ad99c", [] ], "object-position-expected.txt": [ - "63f0d72bb0e18c44ea95543770f14197d1823abe", + "dbb972a439a202d8cf5b09ea4207c4a578d6819a", [] ], "object-position.html.ini": [ @@ -319353,7 +319421,7 @@ [] ], "offset-anchor-expected.txt": [ - "9d299239befd9068d689a1f11ea7105a6256c9f0", + "a3f56595ab741426242225348139619abedb8856", [] ], "offset-anchor.html.ini": [ @@ -319361,7 +319429,7 @@ [] ], "offset-position-expected.txt": [ - "3a89566ec622b59df7a7ae40cde8ece5e4a3f65c", + "bbcb4c0e4f8d7c02316d2cd14833afd4af33c000", [] ], "offset-position.html.ini": [ @@ -319369,69 +319437,69 @@ [] ], "offset-rotate-expected.txt": [ - "1252eba6f77a2dcb5adf6c30b1b7a7938b880128", + "c3f05baf07186a389cc627066c0eafac1a928334", [] ], "offset-rotate.html.ini": [ - "a892173181212a23167c03b7b897d0bbf7f58315", + "25742733ad154fd2d498cc359e9b81f97de1a327", [] ], "outline-style-expected.txt": [ - "03c29c10ad6b362893c471c43b3859fc3262903c", + "505671f7a36d15751a819a49e9cf9b025b22376a", [] ], "outline-style.html.ini": [ - "b9986007f93b69ef8349ab86c079a26ef870a159", + "623705a39eab9acad089dac5757a373876bc32ff", [] ], "overflow-wrap-expected.txt": [ - "d60ce8637e6557ab5907e17b76e5f6e7da0a3433", + "24622bff1f83d4290bbd0b327c8cf33e144c75a3", [] ], "overflow-wrap.html.ini": [ - "cee7cafce3e52d6546cd131999c60f0f4665107e", + "6210d253eda862e18a44e5a2e99895e1754dd58c", [] ], "page-expected.txt": [ - "1394a995a3233f5f480026260803356341076e6e", + "cd60ff6f76ca252d1dbdee06239b11dc58366396", [] ], "page.html.ini": [ - "77f758fa1213efb651044fa593630902ec896692", + "865cecc6f5098f9e46983b38bd077e509ef47f8c", [] ], "paint-order-expected.txt": [ - "495cb6eca35b6cbd7075d971a4c846bfc6785f43", + "3261f2c43e673ad39ca419b92a04f6f6db70c1a5", [] ], "paint-order.html.ini": [ - "65db27caa41d6de62f1387c8bd8f074d2434df62", + "3137957e8ec19dee5dab05fd04f1147414cd3ac2", [] ], "perspective-origin-expected.txt": [ - "544361493c5ac05a9c54cf68024edfb2ee251aec", + "083464a2ac06a8c034dd530844ed8f85154e5a13", [] ], "perspective-origin.html.ini": [ - "4ac00c283c284f8dade448f3017c8a8bf9285f17", + "50e8145e55134b2af1a09ec206839d6e7d024da8", [] ], "resources": { "testsuite.js": [ - "1f4195353d1d5dc0e2fe3c75ac7701032930d095", + "a365f001316e66c0a3102b784a3f8ffe522fe404", [] ] }, "scroll-snap-align-expected.txt": [ - "34bbe3f5a5ef9f01e38aa912d5b2d2ea453f6085", + "b2fe52ae965d50ce7724b31fd70a3ce60e37e8c3", [] ], "scroll-snap-align.html.ini": [ - "268a8a45d40d7a37e36256447469a4374b2dfd42", + "f0656cf7cde362b372cf524e637b6de759b64af0", [] ], "scroll-snap-type-expected.txt": [ - "44302c7c83f62f538e2fd16ef0b212449d76dd25", + "a92e53037e5f154453c7f583528a96373f81f248", [] ], "scroll-snap-type.html.ini": [ @@ -319439,11 +319507,11 @@ [] ], "shape-outside-expected.txt": [ - "47ad5375a71c6d628ec90c1dac2dd4726208fca7", + "ff1061040b26cca1ec944317f3c1dea9aecd04e8", [] ], "shape-outside.html.ini": [ - "8d4cf678a95d36f10fe7df6a4fb001cbdc6b07b5", + "14673cce5a2b4280fa8cde1aa0bc1a005dbae24c", [] ], "shape-rendering.html.ini": [ @@ -319451,11 +319519,11 @@ [] ], "speak-expected.txt": [ - "11e61feceab036a666e0cfe496660e57f27ee9ec", + "f79446945265dc8e73234bdceb422abcfc7b16a5", [] ], "speak.html.ini": [ - "a51bf4dfad249c3975b6772056bd5281b3d62084", + "6df047325cf896ee98039f333c3211fd0f25cac8", [] ], "stroke-expected.txt": [ @@ -319463,11 +319531,11 @@ [] ], "stroke-linejoin-expected.txt": [ - "9933a6f8f701691578cbe217419d58cb1586f614", + "2892b60ec4215644c5cca49fdc57bc2a66f2f523", [] ], "stroke-linejoin.html.ini": [ - "20aa45d8ed52e9336c11e3999085e085e24098cb", + "e5fc47afb534e7f4303dd969a7588979e92aa6c4", [] ], "stroke.html.ini": [ @@ -319475,7 +319543,7 @@ [] ], "text-combine-upright-expected.txt": [ - "2768a30eaef11f353d86b125e76d1e1e8d2c2570", + "525280494dc9b6a642df8299a3df9e5dd339fcda", [] ], "text-combine-upright.html.ini": [ @@ -319483,19 +319551,19 @@ [] ], "text-decoration-line-expected.txt": [ - "345f6d5c62345b15302cce978819cb2b7ee7a8bd", + "9e328f14e61acf8b777cd0108d30a867be693c6d", [] ], "text-decoration-line.html.ini": [ - "855e8b79ecf065e1ec64d2602726d3d545158cbb", + "948cb81487861582ede8d96e44061f296101efd6", [] ], "text-decoration-skip-expected.txt": [ - "2a64dcc47d5370b15db44b18fe3d7da098e14275", + "d6218671d70958a5277dae34c79b9f72d81082f9", [] ], "text-decoration-skip.html.ini": [ - "95d082e8770e467bb17fc3799502c53d241c5735", + "62fe65860b36fe7d23d132a63c7ef4d175271769", [] ], "text-indent.html.ini": [ @@ -319507,47 +319575,47 @@ [] ], "text-justify.html.ini": [ - "178fcf3eec16728c3ac5f83e4598bd57cb0004a0", + "494735a1b4fc13891fd327d1e39fc7b2822b8a4c", [] ], "text-overflow-expected.txt": [ - "71ce9ef61f952f2c2d3978687f6e66951d06ccef", + "5c7ca08576657ee0b3e95d6771926aab7c5fddac", [] ], "text-overflow.html.ini": [ - "d7ba989a9549f736a94f83e779fcb5e7b342bb06", + "61a25d23f05ab107fd0732e2b2c1cf392968f780", [] ], "text-size-adjust-expected.txt": [ - "a8d1f57bd7d14d15338fd648d4d0d6f5afc40367", + "a3991dad09344faa2e1bc14dc06cbcbb285ff242", [] ], "text-size-adjust.html.ini": [ - "2e253c1169bc2dc6c5a411ea33dbad0b5f50e7a1", + "7c8634dcd26e6fc940ed56055a509f19c6ea6693", [] ], "text-transform-expected.txt": [ - "937ef198079865e89a6c703a82fba891e4c0a9f7", + "950bf7e8b8ad9ac538319b05b498a849268e5592", [] ], "text-transform.html.ini": [ - "94cdb7618264d738f630c882b385a615037f46b6", + "88a579f45ba29c628ed891ee6f0871b709ef6234", [] ], "transform-box-expected.txt": [ - "a52e46b1a20c7aaac066b077d0a169e7fd8f5262", + "59880906762b6b84b05b713bfe768c3f18c1984b", [] ], "transform-box.html.ini": [ - "aec291c91f81935741d461cf096702394f254d81", + "229c9a3712f539de8943e4ce0881bd308e1a9c6f", [] ], "transform-style-expected.txt": [ - "de2e5e1ce4eac00d64fdf218a2b0e645256d0731", + "5677ca5bb791d9233ea0fef17a0d6652e22005b4", [] ], "transform-style.html.ini": [ - "05989cc75cb0693de92c749389c048e3106755ba", + "357bade4eef3876bfbeedf7e06da0f3697d20c1f", [] ], "transition-expected.txt": [ @@ -319559,35 +319627,35 @@ [] ], "user-select-expected.txt": [ - "5f63479e6a55086719f8b1e3e1d1ed9d8d8a3ed0", + "949dccd165a6dacac8b4966b22aa92890b631edb", [] ], "user-select.html.ini": [ - "1e5a9d6af1832ed92caa182c3b5f08783f73203b", + "5130c07d0d2b7ec9f7846ae98c36ca0fbd378bba", [] ], "word-spacing-expected.txt": [ - "9be80a7b0bba808996a05c9d68ed5fb20743883d", + "93451acd5049bf11524b510816e5a17ed0fdbe87", [] ], "word-spacing.html.ini": [ - "bc13e0238a02aebec90a54e53c0f2300da0a6ddf", + "c1bd9ae51a5eade1c0acd0bdc4977142338c6c55", [] ], "word-wrap-expected.txt": [ - "a19c49bbcee9bfd44e5f8280ba445e81afe6891e", + "6adefe6a4aa6c1ed610bfe57364382dc73035b1c", [] ], "word-wrap.html.ini": [ - "b7b679da444e7f08ce69b8ddbbfb835b4557f1ea", + "f67ff8ec3a1510d890dbdda0e41dd9f3adebea11", [] ], "writing-mode-expected.txt": [ - "8c5213aa1ac1da2b3437ed75a91e7cfb61289cbc", + "74387f5d76c84e7f45bca0716f451aa31926a815", [] ], "writing-mode.html.ini": [ - "c0c46ab3a902bf9acce9a7e626615174fc5b8192", + "0ba598fdc7138ce8266bb8d96f3d8e2e6ddf18d2", [] ] } @@ -320834,6 +320902,10 @@ "aafa2b053cb30d77997743a226901d6dd4472724", [] ], + "outline-style-inherit-ref.html": [ + "e66e037ed020c5164a8f6adfe41e4e3ffcc3841b", + [] + ], "parsing": { "cursor-valid-expected.txt": [ "c14f52fc219e5668f1d29b0f3dc0536b84e7029f", @@ -330351,11 +330423,11 @@ [] ], "ElementInternals-setFormValue.html.ini": [ - "546d07e7527fd5f44b347a3979e2c77e5a927e34", + "7c2ce0ab004c320b5d2fa4d042fb3ae583bcfbb9", [] ], "ElementInternals-target-element-is-held-strongly.html.ini": [ - "64240c7da3675b2e19a60595557e1f8dc3938b1b", + "0e40cdcfd4fb985ed37bafbd93a7a0943aa52541", [] ], "ElementInternals-validation-expected.txt": [ @@ -331382,7 +331454,7 @@ [] ], "scroll_support.js": [ - "d3be27408072cba64e06343293880c7115502beb", + "169393e4c3e4194548d8989bb3855d32e023ce24", [] ], "scrollend-event-fired-after-sequence-of-scrolls.tentative.html.ini": [ @@ -331398,7 +331470,7 @@ [] ], "scrollend-event-for-user-scroll.html.ini": [ - "dcf646bd300355112d6fc1af4be7aa3c6d53dc40", + "ef3da60e35d195e5b4f33bc1543eefff85a5b91b", [] ] } @@ -331938,8 +332010,8 @@ } }, "ranges": { - "Range-mutations-replaceData.html.ini": [ - "51870a60a546d1da49f45ec8b1651271708a7d27", + "Range-mutations-deleteData.html.ini": [ + "8a4d2feb07a10de291aaf74a7996c09fef195942", [] ], "Range-mutations.js": [ @@ -332037,6 +332109,10 @@ "externalScript.js": [ "7a2bf3622554937bf483a3b3afa9f16187fdabf6", [] + ], + "sort-ref.html": [ + "163002d0d09b1f629611562d1bc79863013e4ae6", + [] ] } }, @@ -332074,7 +332150,7 @@ [] ], "innerhtml-01.xhtml.ini": [ - "708d849ef05d46b22e8f3b0745a48a9e5f992b71", + "dc54db07a45a84c4e2123524589400efa67e07bf", [] ], "innerhtml-05-expected.txt": [ @@ -332141,6 +332217,10 @@ "a89cd980a750fb8a20e48b4cde3f25913ed5ed41", [] ], + "fn-normalize-space.html.ini": [ + "31b35e4e57e18f281d0223b78b9a65c270cf3150", + [] + ], "helpers.js": [ "0805bd682b48461588250a22018a6bd90990d002", [] @@ -332188,7 +332268,7 @@ ] }, "xml_xpath_runner.html.ini": [ - "e30b173ba6781bb3a2bc4cbd8084b380617b9df5", + "b9af709d743120691862162d43e765066c8ab218", [] ], "xml_xpath_tests.xml": [ @@ -332235,7 +332315,7 @@ [] ], "bold.js": [ - "14147e4266c5747efbd7e715015982b75ff7d865", + "0d7587de313b3f7f1481b13c1e162d1fe3d100d1", [] ], "createlink.js": [ @@ -332271,7 +332351,7 @@ [] ], "hilitecolor.js": [ - "25706196321864de392d24a10a26dc173886ddbc", + "7f9f4949dc1ebd7899a8d08c9ba83a7b70ba9937", [] ], "indent.js": [ @@ -332307,7 +332387,7 @@ [] ], "inserttext.js": [ - "ca90b9ae9cadcb46a41c5546ca31a30a832f4918", + "b6b08d5cbc19d2ceaa1c7e32723be0b227b13420", [] ], "insertunorderedlist.js": [ @@ -332351,7 +332431,7 @@ [] ], "strikethrough.js": [ - "83cc7edf7ac71f932f2e4f14d7f21b2c9d068761", + "86d2668447f98bd9f82bf70563d05f11e919e43f", [] ], "subscript.js": [ @@ -332363,7 +332443,7 @@ [] ], "underline.js": [ - "4092e5a808f6d939d58664c208d574dcb6fcb2f6", + "812798a8e7f2da51386abd5a2cdcd6681e8a1f82", [] ], "unlink.js": [ @@ -333178,6 +333258,10 @@ "9c4ac28390f0a9007360e09720e64a1c6bd5ed68", [] ], + "legacy-edit-command.html.ini": [ + "482d456afd48a9ef9c29021b0b507c8ec855d014", + [] + ], "link-boundaries-insertion-expected.txt": [ "8f1664dddb31d10b8eff253a2304f280d023b668", [] @@ -333269,11 +333353,11 @@ [] ], "bold.html.ini": [ - "e1a4a1d4cde0f523c02ce0d1c7beeb2a17cbcc30", + "2b5276bdf416d2a3e87ed5f577210c88f5a756e6", [] ], "bold_3001-last-expected.txt": [ - "96c92fe04b381f40392d7ea47c04ab25b79b9baf", + "ad5607c1ffd722076520482651f10d91a0822512", [] ], "createlink-expected.txt": [ @@ -333389,7 +333473,7 @@ [] ], "formatblock.html.ini": [ - "8b0be3db77b7b2f5510aca20be07b6bd65667b4c", + "cf2a6f46cc2706010a1b8f94a9ce7e9176ca2784", [] ], "formatblock_1-1000-expected.txt": [ @@ -333449,11 +333533,11 @@ [] ], "hilitecolor-expected.txt": [ - "a9fd73257a6117f8dab6bc012e34a766e5f6c16e", + "60784cdbac66f6030f0aae6fca20a3cc97668fa6", [] ], "hilitecolor.html.ini": [ - "01333ac63c773070d3549b2625eac4e1594a7f07", + "bb69a2c2b71154e9718a16e70166713babfcd9d6", [] ], "indent-expected.txt": [ @@ -333553,7 +333637,7 @@ [] ], "inserttext.html.ini": [ - "a46ae1712a78d8a28a3cacfa29cd772ac5af2d81", + "2cb2cf4665ed1c270e189feeb1bedf9c549c8633", [] ], "inserttext_1-1000-expected.txt": [ @@ -333737,7 +333821,7 @@ [] ], "strikethrough_1-1000-expected.txt": [ - "5604cb4785cb60fa5e7581eb44c170a938edf6c8", + "a49dac8f00d285d1fa81992d06a999260fc20e00", [] ], "subscript.html.ini": [ @@ -333753,7 +333837,7 @@ [] ], "underline_1-1000-expected.txt": [ - "2b0dbd99a55a12a0bb614f01320d4a21ad5c64a9", + "33ae855b8a62c76e756e5c91dfa56467bc298b54", [] ], "undo-redo-after-mutation-expected.txt": [ @@ -333787,10 +333871,6 @@ "9e3a2546556a896943d73233cb647edca73d9dd4", [] ], - "buffer-before-onload.html.ini": [ - "640488b181383bcd48e08a84a024e414146810c4", - [] - ], "image-carousel.html.ini": [ "3b89847db19cc319b93c16a11a963c206c26b5eb", [] @@ -333804,7 +333884,7 @@ [] ], "observe-multiple-images.html.ini": [ - "ee951be2cd5d2be8ff2b4e9da945b5d0e8855e97", + "80d5783de96a54b5fca6ccb403e360d8d5870012", [] ], "resources": { @@ -334048,7 +334128,7 @@ [] ], "iso2022jp-decode.html.ini": [ - "bd2c1386383bc158d6b9273a58d403a860ddddcd", + "0331e86432bdb00819ec812cbe22885c2e905215", [] ], "iso2022jp-decoder.js": [ @@ -334060,7 +334140,7 @@ [] ], "iso2022jp-encode-form-csiso2022jp.html.ini": [ - "5ecec735f5b4b069ac1aa52009eb15048df8d722", + "492734c1b0b61b188e5a15b25f26c08554e900f1", [] ], "iso2022jp-encode-form-errors-han.html.headers": [ @@ -334800,7 +334880,7 @@ [] ], "unsupported-labels.window.js.ini": [ - "2298d463d4450dc3eced2459765f80c62b054d2e", + "f83eccbfdd56daa3c2e9d212cb672d5665327929", [] ] }, @@ -334865,6 +334945,10 @@ "4f59ba189c40dd1e1683c9ba8633271b869e2b16", [] ], + "he-windows-1255-late.tentative.html.ini": [ + "ab8528d62478da7c157595d92af57caa959c61ec", + [] + ], "is-windows-1252-late.tentative.html.ini": [ "4f0d8912720c1ccbbfe24402a6a1a1911c7df4b4", [] @@ -334913,6 +334997,10 @@ "2b4bf72adca4969f1cc3ed506b766a62c63880b5", [] ], + "pl-windows-1250-late.tentative.html.ini": [ + "7aa703754640ce089ccb37fd6c700e55ce752847", + [] + ], "ru-IBM866-late.tentative.html.ini": [ "ff1a710fd9634ecbecb94c533f7aac772b876362", [] @@ -336484,7 +336572,7 @@ [] ], "general.any.js.ini": [ - "45c16bd2f943ec12ead154fc0cbe545db8eeeb49", + "446c04212e1cdce1e767ced7499812c2f6bf0d1a", [] ], "general.any.serviceworker-expected.txt": [ @@ -338011,6 +338099,10 @@ "686364eb61cdefa16dc669fef7e6a2b3742561b4", [] ], + "element-iframe.sub.html.ini": [ + "96b1dbd1f4dd749b14c3bf115ba193d92c7fa8bd", + [] + ], "element-img-environment-change.https.sub.html.ini": [ "2aa218ca89336f33e89054ba8509489bd68cb95d", [] @@ -338096,7 +338188,7 @@ [] ], "window-history.https.sub.html.ini": [ - "f5c7bcb5085f594f1955aa5b81e83cec35910fbc", + "157b4da56d17849081074725fb4a67d8add76208", [] ], "window-location.https.sub-expected.txt": [ @@ -338547,7 +338639,7 @@ [] ], "iframe.tentative.https.window.js.ini": [ - "2c364a8d40fd9d09030f26d3c960404aca4d1549", + "fbffedfae293d809a8c5905c9a7ec40608f565b8", [] ], "iframe.tentative.window-expected.txt": [ @@ -338657,11 +338749,11 @@ ] }, "service-worker-background-fetch.https.window.js.ini": [ - "d2b92041b809f31419c6f5e929dfa5dd4b03bb50", + "4ee70f07540807030aa36717031fc5ad86f9cc1c", [] ], "service-worker-fetch.https.window.js.ini": [ - "21e60215aad4134e72cc6815e3babaca2ff85de5", + "3ba1c9996f9d8f793a3bec1736357fc3850553de", [] ], "shared-worker.window.js.ini": [ @@ -338986,7 +339078,7 @@ [] ], "focus-already-focused-iframe-same-site.html.ini": [ - "c8cb0f97f7b02f70990a80ee9fe25f1d9b8db7a2", + "4f0bb0ce512506e160d3de8c8bdf6bbc231d11df", [] ], "focus-event-after-focusing-iframes-expected.txt": [ @@ -339018,7 +339110,7 @@ [] ], "focus-restoration-in-different-site-iframes.html.ini": [ - "ad6f99995d1cdeedf5550c03e45987d9d6929f10", + "928c1bad572ec774719fd425bd8d64f96550d96b", [] ], "focus-restoration-in-same-site-iframes-window-expected.txt": [ @@ -339070,7 +339162,7 @@ [] ], "iframe-focus-with-different-site-intermediate-frame.html.ini": [ - "a4e9ffefd3d4c43282dea6fd72191db23d6006cb", + "3dbc2c45845203ba4bbcc1a31bb3bcb9455c35b9", [] ], "iframe-focus-with-same-as-top-intermediate-frame-expected.txt": [ @@ -339081,10 +339173,6 @@ "5cf136cdb6c526e680dae57742a2458443e1b047", [] ], - "iframe-focuses-parent-different-site.html.ini": [ - "78cd2ffec5c7616ee73b280db8fb14f6b0e9a0df", - [] - ], "support": { "activeelement-after-calling-window-focus-inner.html": [ "1fa14d4b8a24de267e2ffa0b37bdeefc78c00562", @@ -340514,7 +340602,7 @@ [] ], "FileSystemFileHandle-create-sync-access-handle.https.tentative.window.js.ini": [ - "39820553fc78bc948c560200d108a9afbdd1ba42", + "e8803eb9b46ec613081dd0c56dfe95e170b302a5", [] ], "META.yml": [ @@ -341332,11 +341420,7 @@ [] ], "clamped-time-origin-isolated.https.html.ini": [ - "32cc95bf1f113488f6a7de2543089039b8ded400", - [] - ], - "clamped-time-origin.html.ini": [ - "9082a0b2944b33844a9d5a28ccfbb3a43f1f8f1e", + "eb785208b3a2a6eacb8060a26a68ef2171d1643a", [] ], "cross-origin-isolated-timing-attack.https.html.headers": [ @@ -341405,7 +341489,7 @@ [] ], "embedding.tentative.https.window.js.ini": [ - "6144e3b4620319f5516ea6295da68f1d3a8e13c0", + "654defca1863432b8734725026a9f5b7cd5a5ffb", [] ], "fenced-frame-bypass.tentative.https.window-expected.txt": [ @@ -341460,7 +341544,7 @@ [] ], "broadcast-channel.html.ini": [ - "e423a5b6f007f26e10dfaafc559ea50fecce3834", + "7d0aa08442264ad61566942919c71c0e2a4c7fed", [] ], "dedicated-worker.html.ini": [ @@ -341513,7 +341597,7 @@ [] ], "focus.html.ini": [ - "1b6bf885401b18d427b26270a186a60b8440d6e3", + "8bb63c5be2f3a7d721e8560df0dd503d49bd3931", [] ], "pushstate.https.html.ini": [ @@ -341637,7 +341721,7 @@ [] ], "browsing_context_name.html.ini": [ - "5e7f087425b02052b1d50d796fa443ca6ecbd60d", + "6bee75bfee80e218a89fdbfe330d5d5b82024f77", [] ], "browsing_context_name_cross_origin-0.html": [ @@ -341850,6 +341934,10 @@ "957d5e6a03578d42e81e3b427aaef527aa3779f7", [] ], + "cross-origin-top-navigation-without-user-activation.window.js.ini": [ + "104198179404ffc8e6538b7e614c330ec9cc4002", + [] + ], "empty_fragment_iframe.html": [ "26b28a0d7dcb912dc1f1131b98993bb29d3a18c1", [] @@ -342233,7 +342321,7 @@ [] ], "cross-document-traversal-same-document-traversal.html.ini": [ - "c50c6e9a55ac0d674b2ca11a9681476f9634f58e", + "1a88cf94321dea797ba707b406b0d50f77613973", [] ], "nav-cancelation-1-expected.txt": [ @@ -342275,7 +342363,7 @@ [] ], "same-document-traversal-cross-document-traversal.html.ini": [ - "dfb85789086b335a472830d405460b0e959e4527", + "5a5b5992f0088a3064799e671153091a9063d272", [] ], "same-document-traversal-same-document-traversal-hashchange.html.ini": [ @@ -342377,7 +342465,7 @@ [] ], "001.html.ini": [ - "c3ca624488f649d47737f5b66741818bcdaf31be", + "67e0c3a144cf77ac4b27ad1055952bad68aacdcc", [] ], "002-expected.txt": [ @@ -342712,6 +342800,10 @@ "2a8989f27252570aa49ada5a1e6eefbddfd9b207", [] ], + "combination_history_006.html.ini": [ + "a339e37fb2dee62a70403a338ee10df1a684f356", + [] + ], "history-state-after-bfcache.window.js.ini": [ "3ff7eb10abd8ea6e78075c57bb4326858481877d", [] @@ -342887,7 +342979,7 @@ [] ], "traverse_the_history_write_onload_2.html.ini": [ - "3b3b8d430bdf51ad5e04a25eb3b113cb6434788b", + "c3363eed1df8f85fe4cea0bf76bde475fc11ee93", [] ] }, @@ -342957,7 +343049,7 @@ [] ], "location-protocol-setter-non-broken.html.ini": [ - "632185032488bd9c61c919ce57eaa94c73c7b79c", + "6bbc69c23a2e8ee26e67fdf4e77823f3acf73366", [] ], "location-prototype-setting-cross-origin-domain.sub-expected.txt": [ @@ -343179,7 +343271,7 @@ [] ], "cross-origin-objects-function-name.html.ini": [ - "ab20f7d67ec27b63a5eeba7fc9bd2357fab36d05", + "f90fa4aa376b21361a53c2a349bbec2969143fc3", [] ], "cross-origin-objects-on-new-window.html.ini": [ @@ -343237,16 +343329,12 @@ "470b5e72ad2865cbd3ec3af9a1a84a685d964be4", [] ], - "parent-no-child-yes-subdomain.sub.https.html.ini": [ - "25b59d55b3ff51436b120a4cfef4fdcd600385c8", - [] - ], "parent-yes-child-no-port.sub.https.html.headers": [ "79a20f30fc0f486014c8b93edef7483605101504", [] ], "parent-yes-child-no-port.sub.https.html.ini": [ - "5383b4d6c44128b9efe8d2a58b3d4660d59f1198", + "31ea3f0d71be42c5f6cbd26cbab139bc91a23464", [] ], "parent-yes-child-no-same.sub.https.html.headers": [ @@ -343262,7 +343350,7 @@ [] ], "parent-yes-child-no-subdomain.sub.https.html.ini": [ - "9759a2896fb41ba60d224030864328515fc12c8c", + "454879f5a784e24fc8e1067aad463ce1a351772c", [] ], "parent-yes-child-yes-port.sub.https.html.headers": [ @@ -343270,7 +343358,7 @@ [] ], "parent-yes-child-yes-port.sub.https.html.ini": [ - "5f428d85c58be189cc011c3e8b44b6892f5b6083", + "1fe764980cdb004b33f17ae5ae9329436157fe58", [] ], "parent-yes-child-yes-same.sub.https.html.headers": [ @@ -343278,7 +343366,7 @@ [] ], "parent-yes-child-yes-same.sub.https.html.ini": [ - "2b7fa4f27546ce75c088fb484df17a380bfb685f", + "21a226635de11b863215c756aee7b0791a7e43bb", [] ], "parent-yes-child-yes-subdomain.sub.https.html.headers": [ @@ -343286,29 +343374,25 @@ [] ], "parent-yes-child-yes-subdomain.sub.https.html.ini": [ - "3f5747495968065884bca877d8122b834b90e911", + "960ac9a0f1e915ff37738b17f1fcd9a503ca4a57", [] ] }, "2-iframes": { "parent-no-child1-no-subdomain-child2-yes-subdomain.sub.https.html.ini": [ - "bd99113e184f4b958eb2c35963486e4ad1ae05d4", + "0b11108e3b610dcf56ed050dc5a3d2c92b84d5b0", [] ], "parent-no-child1-no-subdomain-child2-yes-subdomainport.sub.https.html.ini": [ - "62eb7b1fd7c9de1c098dbb30ff2fd81a18e18c4a", + "183bd1bfd832c72d0f26546495e042891f3a062c", [] ], "parent-no-child1-no-subdomain1-child2-yes-subdomain2.sub.https.html.ini": [ - "8c7947f871ecdd9be679d1eb6e8e7bf3213f2e80", + "ff06302c1d7e9e24e4913d2105fff02c1c570c2b", [] ], "parent-no-child1-yes-subdomain-child2-no-port.sub.https.html.ini": [ - "25a890756c222591fc6d2b2e08a360f6d69a9347", - [] - ], - "parent-no-child1-yes-subdomain-child2-no-subdomain.sub.https.html.ini": [ - "2ae4867c1c4fc9e6b1049177e5f6c0476956640b", + "0ea4a6a2d542142c15f4e88510106d7a9ea83f11", [] ], "parent-yes-child1-no-subdomain-child2-no-subdomain.sub.https.html.headers": [ @@ -343316,7 +343400,7 @@ [] ], "parent-yes-child1-no-subdomain-child2-no-subdomain.sub.https.html.ini": [ - "cab93f6bf86938db656efb5719ca85199e00a98d", + "c6fbd89df5b44a3a8ecefc65e4c694ceff947001", [] ], "parent-yes-child1-no-subdomain-child2-no-subdomain2.sub.https.html.headers": [ @@ -343324,7 +343408,7 @@ [] ], "parent-yes-child1-no-subdomain-child2-no-subdomain2.sub.https.html.ini": [ - "404db309da3ac1a095aacac8eb9e0ece8fea79f1", + "ab0d90194cd9eb41e2af87d4c2bc95901083263c", [] ], "parent-yes-child1-no-subdomain-child2-yes-subdomain.sub.https.html.headers": [ @@ -343332,7 +343416,7 @@ [] ], "parent-yes-child1-no-subdomain-child2-yes-subdomain.sub.https.html.ini": [ - "e77ac91c4531d403826da7b9bb6c47c2ef63b7b1", + "55c9507947dd54f89a1ba668d8a092793a789cc8", [] ], "parent-yes-child1-no-subdomain-child2-yes-subdomain2.sub.https.html.headers": [ @@ -343340,7 +343424,7 @@ [] ], "parent-yes-child1-no-subdomain-child2-yes-subdomain2.sub.https.html.ini": [ - "19a2ab11036732fa306e5bada04e07d746555b20", + "ca5ad44b3ba02c6f7daad5cd97bb2761f37d492b", [] ], "parent-yes-child1-no-subdomain-child2-yes-subdomainport.sub.https.html.headers": [ @@ -343348,7 +343432,7 @@ [] ], "parent-yes-child1-no-subdomain-child2-yes-subdomainport.sub.https.html.ini": [ - "ce259823becd55217b53ed2a8347f27771d28166", + "7ba4e734b61e2c82f12f4dbf60462f5c2ae1ad9d", [] ], "parent-yes-child1-yes-subdomain-child2-no-port.sub.https.html.headers": [ @@ -343356,7 +343440,7 @@ [] ], "parent-yes-child1-yes-subdomain-child2-no-port.sub.https.html.ini": [ - "75721a1a71089bcf30ba1c2ec755e7fc810f6a8c", + "408f0aa439a2ee21c915cc339cc643166a547c6a", [] ], "parent-yes-child1-yes-subdomain-child2-no-subdomain.sub.https.html.headers": [ @@ -343364,7 +343448,7 @@ [] ], "parent-yes-child1-yes-subdomain-child2-no-subdomain.sub.https.html.ini": [ - "6e0693527992a576cfad006f536fec04161c98ee", + "bb8a3cbbad45f294edb5ba2e60bdee1f32acd5ea", [] ], "parent-yes-child1-yes-subdomain-child2-yes-subdomain.sub.https.html.headers": [ @@ -343372,7 +343456,7 @@ [] ], "parent-yes-child1-yes-subdomain-child2-yes-subdomain.sub.https.html.ini": [ - "c0dbbaa6c51fa2e5a13ee00664a92a81e96d0d66", + "d8355a6547fa75ae946bd840c6a1032045f8da06", [] ], "parent-yes-child1-yes-subdomain-child2-yes-subdomain2.sub.https.html.headers": [ @@ -343384,7 +343468,7 @@ [] ], "parent-yes-child1-yes-subdomain-child2-yes-subdomainport.sub.https.html.ini": [ - "656603b2452188fe045392edf1b27be19e4e1d46", + "9fafc5f99defb2cf8ba5f83f381449ac758c86c1", [] ] }, @@ -343413,7 +343497,7 @@ [] ], "document-domain.sub.https.html.ini": [ - "2d8b59bf800382d76e35784ad001c217d2ce24fc", + "9d2572e3155881103e86594c5715389a636be6ba", [] ], "getter-special-cases": { @@ -343425,6 +343509,10 @@ "4705ce9dedeeabf8208bf602176511c0cbe2cb76", [] ], + "csp-sandbox-no.https.html.ini": [ + "0c3339d57696257f7c21ddb88c28ec7d5979e7dd", + [] + ], "csp-sandbox-yes.https.html.headers": [ "a52bf509006a3b9a5518f4f0679b05d7cff12b42", [] @@ -343484,7 +343572,7 @@ [] ], "sandboxed-same-origin-iframe-no.https.html.ini": [ - "6739f44f945f58f283bd3cc722bbf29c0bec78c7", + "e890d00d3b419bdec5486783adba60620b86972b", [] ], "sandboxed-same-origin-iframe-yes.https.html.headers": [ @@ -343492,7 +343580,7 @@ [] ], "sandboxed-same-origin-iframe-yes.https.html.ini": [ - "14cb1e6c42653c1e9878b1b91c0d340f355c96a9", + "7ab81268e359acb01f8d7c7c8c581b2bc5705c47", [] ] }, @@ -343501,32 +343589,28 @@ [] ], "going-back.sub.https.html.ini": [ - "a320db9c683c5e4f710f92c8b3be875ddc54a843", + "9f1f582920d6579cb959b2e532f081cb5c381068", [] ], "iframe-navigation": { "parent-no-1-no-same-2-yes-port.sub.https.html.ini": [ - "980b537c139f2e1565f2d161312b9330977fa81f", + "8b077d161ac55b3b8d8a90fb9a7b3df9d532c61c", [] ], "parent-no-1-no-same-2-yes-subdomain.sub.https.html.ini": [ - "f19ae35152e9bc98cf61feeeb82e82b2fd9f5f50", + "0370372bae6fb12b6e2eb3b0770bf50835a922d2", [] ], "parent-no-1-no-subdomain-2-yes-subdomain.sub.https.html.ini": [ - "a4e2a704d5436ee7f921a8a32c0f005f6bc3de58", + "112b3cd46fdac94fdb261eaaa9feec1ffeec60ec", [] ], "parent-no-1-no-subdomain-2-yes-subdomain2.sub.https.html.ini": [ - "ea522458742cd738c23f9c72817d8bab6c65d062", + "10a484bb04ac63e9bf7deaa45b6b45d19697df25", [] ], "parent-no-1-subdomain-yes-2-subdomain2-no.sub.https.html.ini": [ - "632bbf12b45e00dad9ef087d703b3fd74386ce9a", - [] - ], - "parent-no-1-yes-subdomain-2-no-subdomain.sub.https.html.ini": [ - "b81877e01553834aeed387e5abd16848afb1dfd2", + "b8180d08756da79e35c85e118704e52edfca0cdd", [] ], "parent-yes-1-no-same-2-no-port.sub.https.html.headers": [ @@ -343534,7 +343618,7 @@ [] ], "parent-yes-1-no-same-2-no-port.sub.https.html.ini": [ - "b88a9015459c1e08089c2a8be42ede0d3e6785be", + "efbfed4ce3650ee56e9017a04b38f8c5513eea43", [] ], "parent-yes-1-no-same-2-no-subdomain.sub.https.html.headers": [ @@ -343542,7 +343626,7 @@ [] ], "parent-yes-1-no-same-2-no-subdomain.sub.https.html.ini": [ - "27d56f52c011c7ac9d5bae002f9783fc922fdc34", + "c4f1fc2d65f62f8fc6d6e22f56aa8e4a155b53e0", [] ] }, @@ -343555,12 +343639,16 @@ [] ], "popups": { + "opener-no-openee-yes-port.sub.https.html.ini": [ + "c74f36ebda0f675ad69d8be4d43586cd94e1cab9", + [] + ], "opener-no-openee-yes-same.sub.https.html.ini": [ - "3383d84434c1aeab74ee35e2a3d2ad8d6886d385", + "ed1e963e34deb05378ecf88cb3fcda6cec01e2aa", [] ], "opener-no-openee-yes-subdomain.sub.https.html.ini": [ - "876cac39b65c1b17283f3955ea29515dee800a97", + "b05431d92347d692a60971ec8f55aca46efc6b04", [] ], "opener-yes-openee-no-port.sub.https.html.headers": [ @@ -343568,7 +343656,7 @@ [] ], "opener-yes-openee-no-port.sub.https.html.ini": [ - "e9f5ea0bf4887e8a6c733607dec15003516ceac6", + "734ce469099f190eba3ede1ad4c09cf3cdeeabe1", [] ], "opener-yes-openee-no-same.sub.https.html.headers": [ @@ -343576,7 +343664,7 @@ [] ], "opener-yes-openee-no-same.sub.https.html.ini": [ - "e9d47544e1891065b15f7bc4375950b119c16a34", + "053a0b74c9f0692fea76477f8f8ad74481baa651", [] ], "opener-yes-openee-no-subdomain.sub.https.html.headers": [ @@ -343584,7 +343672,7 @@ [] ], "opener-yes-openee-no-subdomain.sub.https.html.ini": [ - "83fcc1fe1ce693d1b36c9ca3daef9ab38cb52aa6", + "061e3f18656cfe8c5d730ac570d4e5483124f418", [] ], "opener-yes-openee-yes-port.sub.https.html.headers": [ @@ -343600,16 +343688,12 @@ [] ], "opener-yes-openee-yes-same.sub.https.html.ini": [ - "e665755d8727095a3208b6cfbc7ee83d72bd17be", + "b6a98657923c945fa98d6cb43ce69180ac9beee1", [] ], "opener-yes-openee-yes-subdomain.sub.https.html.headers": [ "79a20f30fc0f486014c8b93edef7483605101504", [] - ], - "opener-yes-openee-yes-subdomain.sub.https.html.ini": [ - "37cb728002347d5f191f4e817cfb7cc7c531574c", - [] ] }, "removing-iframes.sub.https.html.headers": [ @@ -343617,7 +343701,7 @@ [] ], "removing-iframes.sub.https.html.ini": [ - "3a11a3e4ff383d6250a5de06673c56abcd338d57", + "2a45522547ccdc13161f55079c9ece0bd65a5bd1", [] ], "resources": { @@ -343861,7 +343945,7 @@ [] ], "discard_iframe_history_4.html.ini": [ - "96502bacb88f6d41cc0ec992c44f2092d7777af0", + "6c43d1e8629cab3ce87de27ae6784bc5c5276683", [] ] }, @@ -343891,6 +343975,10 @@ [] ] }, + "noopener-noreferrer-BarProp.window.js.ini": [ + "8e27e3b6177b42f374a333f285a09cf1323ada9a", + [] + ], "noopener-noreferrer-sizing.window.js.ini": [ "f6e28c6f57bb017c51a2a88ac0fe08c9f45ef813", [] @@ -343959,7 +344047,7 @@ ] }, "open-features-is-popup-condition.html.ini": [ - "040bc7d4f02115f073720d3bb71aee196dd149dd", + "4761df5a67170e8d036b9a1c9c0ce0bc4ced5a4a", [] ], "open-features-negative-innerwidth-innerheight.html.ini": [ @@ -343986,6 +344074,10 @@ "fd9e95fc68d91e1ab0ff21fa185882009e1a106b", [] ], + "open-features-non-integer-innerwidth.html.ini": [ + "2d2d132189e47be24e0c6691e187731f16379ebb", + [] + ], "open-features-non-integer-left-expected.txt": [ "62b1506da1c9b363345ccfdd989590ac6ec30d5c", [] @@ -344119,12 +344211,16 @@ "ba9df39fbb40986537c7a4688da7dd7ea82e32f2", [] ], + "window-open-noopener.html.ini": [ + "302a2ca4821684a55814759e9a069bc48feb465d", + [] + ], "window-open-noreferrer.html.ini": [ "8279047ce6df44c2ad11907145d79379a810bb5d", [] ], "window-open-windowfeatures-values.html.ini": [ - "c7f00b14c71320896d8d02c8cbd5a2e248e2017d", + "d9e0e4f30172d211e80db333678752d7aedbe94b", [] ], "window-properties.https-expected.txt": [ @@ -344135,6 +344231,10 @@ "b47ac456f2800fc409dc9d9b52e559a2e5281014", [] ], + "window-prototype-chain.html.ini": [ + "f73af5a5b0df8039d5c46579524d0bac085426ad", + [] + ], "window-reuse-in-nested-browsing-contexts.tentative-expected.txt": [ "b65aafde7b1e4b48f88e3bee6265b32dce546e99", [] @@ -344208,6 +344308,10 @@ } }, "browsing-context-names": { + "choose-_blank-002.html.ini": [ + "400da2518830c802f9a3e3663c88cb76f485ffa4", + [] + ], "choose-_blank-003.html.ini": [ "dc91542cb352a223d074ef2883e40bd40cbe73df", [] @@ -345385,7 +345489,7 @@ [] ], "canvas-filter-object-turbulence.html.ini": [ - "64be7110e67eac2c7834a43514d9090fecd9343a", + "5c2442ffdbea3688cce3cd562b1933a1feb239bf", [] ], "idl-conversions": { @@ -345638,7 +345742,7 @@ [] ], "canvas-display-p3-drawImage-video.html.ini": [ - "ec5726f24a6973d7e811deb1bdbdb473710dc394", + "3936c485709b97a605286ea9e9372efdd151d974", [] ], "canvas-display-p3-drawImage.https-expected.txt": [ @@ -346203,7 +346307,7 @@ [] ], "2d.pattern.paint.repeat.outside.html.ini": [ - "d00299aa5af90312b69abcf49b22d35c6fd34e2b", + "484ae22423ab051bc94d1a8181d093eb48ffafb4", [] ] }, @@ -346224,7 +346328,7 @@ [] ], "offscreencanvas.resize.html.ini": [ - "e7a1f1479a33095b7c14979b49600eb43d5c42ef", + "ba451b2763fbc3affc613c152e271ad96cf7825f", [] ], "offscreencanvas.transferrable-expected.txt": [ @@ -346749,6 +346853,10 @@ "cfb3376feff4285356d70408c109d44938f656c1", [] ], + "cache.window.js.ini": [ + "6b68ee23f15da05506ca195079153119f70ea3e6", + [] + ], "dedicated-worker.https.window-expected.txt": [ "7ecbf9ce7d5e1358c846788eb555627ca00c4833", [] @@ -346778,7 +346886,7 @@ [] ], "reporting-subresource-corp.https.window.js.ini": [ - "218de4ffadc491107f63bbd5e83002b37e9dc18e", + "48ccb528f49c661772bd19d4ccafbbc262bd0e54", [] ], "resources": { @@ -346791,8 +346899,12 @@ [] ] }, + "service-worker-coep-credentialless-proxy.https.window.js.ini": [ + "48241f2b35c9c7dd601964c7687e762dc55f9c0a", + [] + ], "shared-worker.https.window.js.ini": [ - "084fc28bf7a046f1d69fda19acd25b62c5b2abde", + "c37d7bc7cc1bc0b6450fe7beb3b20cdb8de4f003", [] ], "video.https.window.js.headers": [ @@ -346813,7 +346925,7 @@ [] ], "cross-origin-isolated-permission-worker.https.window.js.ini": [ - "1ed2310587c0905534e7e6c4c9f12f0866ffc80f", + "1cda697821f262d6ecbc160bfecc3bb8adceeec1", [] ], "data.https.html.headers": [ @@ -346833,7 +346945,7 @@ [] ], "dedicated-worker.https.html.ini": [ - "12a8a0cd8e554825c8fa1a9381d5facae6b327e5", + "d92ca6a545858f27ac3b4363177a4a9dd87e2d58", [] ], "javascript.https.html.headers": [ @@ -346882,7 +346994,7 @@ [] ], "workers-coep-report.https.html.ini": [ - "5d583996fab8bccff6d08bcdd982ce31757d5c46", + "4fe2cad9fc7d8cc7ab4ce29537814dc1c6bd36cd", [] ] }, @@ -346935,7 +347047,7 @@ [] ], "reporting-navigation.https.html.ini": [ - "360865ceec1c5218f7bd40e25db3317e21c229e0", + "4b4b9515630229ecaddd58a729ff36b2a9eb96fb", [] ], "reporting-subresource-corp.https-expected.txt": [ @@ -346943,7 +347055,7 @@ [] ], "reporting-subresource-corp.https.html.ini": [ - "3daad9953139277b8ed4e81d045e7fec1742853d", + "9560d8d6541b56b4f89b1c765fd870b6832d5131", [] ], "reporting-to-document-reporting-endpoint.https.window.js.ini": [ @@ -347177,7 +347289,7 @@ [] ], "shared-workers.https.html.ini": [ - "4d3947e866168641fc0be0f1e2727bfca4c5fb46", + "8bbb0560bb973a75fe41c34da29061f4f04972f9", [] ], "srcdoc.https.html.headers": [ @@ -347230,10 +347342,6 @@ "63b60e490f47f4db77d33d7a4ca2f5b9a4181de8", [] ], - "coep-with-same-origin.https.html.ini": [ - "5fca842b65726394857743f6e764a85ccf6eedd3", - [] - ], "coep-with-same-site.https.html.headers": [ "63b60e490f47f4db77d33d7a4ca2f5b9a4181de8", [] @@ -347270,6 +347378,14 @@ "46ad58d83bf6e98913ca4c564b7acb8f19fa0093", [] ], + "coop-sandbox-cuts-opener.https.html.ini": [ + "35a670a58bebe11617e3620afb8d12862c9d9161", + [] + ], + "coop-sandbox-redirects-cuts-opener.https.html.ini": [ + "86969da965c77a36fc64356186d8a8fbf9f8b63e", + [] + ], "coop-sandbox.https.html.headers": [ "46ad58d83bf6e98913ca4c564b7acb8f19fa0093", [] @@ -347286,6 +347402,10 @@ "85c58be8a1c60ed64b2efaed8a155fc5e087537e", [] ], + "header-parsing-successes.https.html.ini": [ + "f545d7b1ba24a55f980a8cfdee522fd7d71f230d", + [] + ], "historical": { "popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html.headers": [ "a19f4400cea33a60c99807330704a23ee363b146", @@ -347303,30 +347423,26 @@ "a19f4400cea33a60c99807330704a23ee363b146", [] ], - "popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html.ini": [ - "8eb49f5a212bff324d3cda1f2fdce6305ecef148", - [] - ], "popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html.headers": [ "ab7b28948150ff64101ef080b0d9c7cc9a6a34d2", [] ], - "popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html.ini": [ - "03a158072d2ec612a7032d61bc5543c63ba7577c", - [] - ], "popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html.headers": [ "ab7b28948150ff64101ef080b0d9c7cc9a6a34d2", [] ], "popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html.ini": [ - "eb3fd0485663ee6cfb5d98810486043aa6a2e766", + "0ece312708b561da25f350af89dc0abe0c211465", [] ], "popup-same-site-unsafe-allow-outgoing-with-same-site.https.html.headers": [ "ab7b28948150ff64101ef080b0d9c7cc9a6a34d2", [] ], + "popup-same-site-unsafe-allow-outgoing-with-same-site.https.html.ini": [ + "8d718f6b6ce27cf4718657f1f6228bc0e16210fd", + [] + ], "popup-same-site-with-cross-origin.https.html.headers": [ "34bd099a302f893f92586241ea38aac812bf28d0", [] @@ -347339,6 +347455,10 @@ "34bd099a302f893f92586241ea38aac812bf28d0", [] ], + "popup-same-site-with-same-origin.https.html.ini": [ + "71fe175cf71dcb57025122ae5251bb2abfbcfbaa", + [] + ], "popup-same-site-with-same-site.https.html.headers": [ "34bd099a302f893f92586241ea38aac812bf28d0", [] @@ -347357,7 +347477,7 @@ [] ], "iframe-popup-same-origin-allow-popups-to-same-origin.https.html.ini": [ - "108522d64182da1943e6c4933075380ac3f4e9a2", + "fbb8b7ea360ac444a02016d6e916050745585372", [] ], "iframe-popup-same-origin-allow-popups-to-unsafe-none.https.html.headers": [ @@ -347365,7 +347485,7 @@ [] ], "iframe-popup-same-origin-allow-popups-to-unsafe-none.https.html.ini": [ - "a82ac75288fa958187916d7adbd091663311be06", + "fb0dd854c405aee6b56089ef333d9fa54320b648", [] ], "iframe-popup-same-origin-to-same-origin.https.html.headers": [ @@ -347373,7 +347493,7 @@ [] ], "iframe-popup-same-origin-to-same-origin.https.html.ini": [ - "79b696010a173e30f79a6e092a7495b49b067323", + "223c26b5d730d933a5f58b18a1597c67a0aac633", [] ], "iframe-popup-same-origin-to-unsafe-none.https.html.headers": [ @@ -347381,7 +347501,7 @@ [] ], "iframe-popup-same-origin-to-unsafe-none.https.html.ini": [ - "63d4fcef0aecb761125152e1318b64ce28f7ef31", + "872be04701bdb2dcc3fb9da108f1f23edaa18c0b", [] ], "iframe-popup-unsafe-none-to-same-origin.https.html.headers": [ @@ -347401,7 +347521,7 @@ [] ], "javascript-url.https.html.ini": [ - "9f98201ed396e3277833c50583b5b0909512d27f", + "43051fc74b614e4c110a845a0a7a55d4ccb69187", [] ], "navigate-to-aboutblank.https.html.ini": [ @@ -347409,7 +347529,7 @@ [] ], "navigate-top-to-aboutblank.https.html.ini": [ - "9a870f326761ec39f19400ba17730a2b1b0e0d3f", + "1aeca853cfa3c55b386ca9cb36493b699d321c2b", [] ], "no-https.html.headers": [ @@ -347420,8 +347540,8 @@ "46ad58d83bf6e98913ca4c564b7acb8f19fa0093", [] ], - "popup-redirect-same-origin-allow-popups.https.html.ini": [ - "0756fe5b2f9816e2348e2320550f3c4231b313f4", + "popup-redirect-cache.https.html.ini": [ + "4497bcab0a882639dedc6b7935d02ae49aa75781", [] ], "popup-same-origin-allow-popups-with-cross-origin.https.html.headers": [ @@ -347432,10 +347552,6 @@ "d83ed86fb9b5d159b9f380424887402edc96cb75", [] ], - "popup-same-origin-allow-popups-with-same-origin.https.html.ini": [ - "b3e0ea1fad38500a0a2b30a6481ee6e87daead9b", - [] - ], "popup-same-origin-allow-popups-with-same-site.https.html.headers": [ "d83ed86fb9b5d159b9f380424887402edc96cb75", [] @@ -347457,7 +347573,7 @@ [] ], "popup-same-origin-with-same-origin.https.html.ini": [ - "f1d91d7c42c54ce00e774821719b575fe381a891", + "817cd70b3ddfb062864c8a571da9f0020743a05b", [] ], "popup-same-origin-with-same-site.https.html.headers": [ @@ -347484,6 +347600,10 @@ "073ce7adfbd81cb7c0b2f91f96c8349b6677f26c", [] ], + "popup-unsafe-none-with-same-site.https.html.ini": [ + "604de218d0bb79bd663522c70ec31d106a271e02", + [] + ], "popup-unspecified-with-cross-origin.https.html.ini": [ "856b722020bffd785541783f9f67d5fbede0ece7", [] @@ -347507,11 +347627,11 @@ ], "access-reporting": { "access-from-coop-page-to-openee_coop-ro.https.html.ini": [ - "59258e97f4655d24edc749db900a792e73a39960", + "4ce7bb588067000923184657324c1353b1a9ed83", [] ], "access-from-coop-page-to-openee_coop-ro_cross-origin.https.html.ini": [ - "c525d52f14f5dc4556b20fd1965377e84ca1469b", + "4ae0b27567920752e0a513c6dd5d8877cb84e3af", [] ], "access-from-coop-page-to-opener_coop-ro.https.html.ini": [ @@ -347519,7 +347639,7 @@ [] ], "access-from-coop-page-to-opener_coop-ro_cross-origin.https.html.ini": [ - "3acaa4addae88dcbed09c7d2c5b11320f11da85a", + "2e08cc6fb302236910a440c6d3c2fce3116e2f79", [] ], "access-from-coop-page-to-other_coop-ro.https.html.ini": [ @@ -347531,7 +347651,7 @@ [] ], "access-to-coop-page-from-openee_coop-ro.https.html.ini": [ - "9945127a1697b0e64a2a230f6b577bda3408e732", + "45761bcac8beb541cddf6110a9432b612089da0b", [] ], "access-to-coop-page-from-openee_coop-ro_cross-origin.https.html.ini": [ @@ -347539,11 +347659,11 @@ [] ], "access-to-coop-page-from-opener_coop-ro.https.html.ini": [ - "cde27b4c14b78933da042eb61dbdf389002521c5", + "3d56df994ca842124b71630dc76978a2952d56e1", [] ], "access-to-coop-page-from-opener_coop-ro_cross-origin.https.html.ini": [ - "9e0d21c428dd877d354da9a9f4064a357e3f95dc", + "098e5d0f5b837238225a9a09095f23d4a1dfcee6", [] ], "access-to-coop-page-from-other_coop-ro.https.html.ini": [ @@ -347551,7 +347671,7 @@ [] ], "access-to-coop-page-from-other_coop-ro_cross-origin.https.html.ini": [ - "987140811a565d21b6c4340dff8edb655ddbdfc8", + "9d900f4ef49f137c4a203c800383fa3e42adb161", [] ], "property-blur.https.html.ini": [ @@ -347559,11 +347679,11 @@ [] ], "property-close.https.html.ini": [ - "d060d8a9a82f184a955fafb94ee2e1d4c9cd3835", + "1b5d319744cd58eee3f9c5098b12f5c392a9f844", [] ], "property-closed.https.html.ini": [ - "3ee2c65727bbe62139956bca2812b7f5ca1986eb", + "ad0e9b09c8038704d41611c2b79cea264d3166a5", [] ], "property-focus.https.html.ini": [ @@ -347571,15 +347691,19 @@ [] ], "property-frames.https.html.ini": [ - "01f4fcd2960d85861b72c469942031529268ec2f", + "f6d2d333bad5ce93e388b23469807f3f04336d18", [] ], "property-indexed-getter.https.html.headers": [ "64f4d5fedffd208b7174c7d8e0bce4e99ce1ac0f", [] ], + "property-indexed-getter.https.html.ini": [ + "4186abaa2b3e6224e09a8c01ede807a9f1651fa8", + [] + ], "property-length.https.html.ini": [ - "20d6b2365f8b4923966dc04baee0b70e9f004ed3", + "3435757a0b1006729ce145e2a044df8233d8f4da", [] ], "property-location-get.https.html.ini": [ @@ -347587,27 +347711,27 @@ [] ], "property-location-set.https.html.ini": [ - "175abd50466fb400cd12a2037fe8c45562610689", + "1ee952d5aa7319c3919b0f9ccbe3df106c9bd3e5", [] ], "property-named-getter.https.html.headers": [ "64f4d5fedffd208b7174c7d8e0bce4e99ce1ac0f", [] ], - "property-named-getter.https.html.ini": [ - "d654a715676c6c157522e5b0621143e8faa66bc4", + "property-opener-get.https.html.ini": [ + "7eb4dc078196329e3db68324a5db3190d7b485ae", [] ], - "property-opener-get.https.html.ini": [ - "76173f058e7af335f35213295dd3b1a188840c64", + "property-opener-set.https.html.ini": [ + "1a776437fa70268c1a45d608ce843e31098af1a9", [] ], "property-postmessage-1.https.html.ini": [ - "09ccef31f32cf818f3442c5a456bea04f5a7b4e9", + "4777f897d8f12c72ef8c526bae2da1707e430c12", [] ], "property-postmessage-2.https.html.ini": [ - "586bba13313b39313f8fbebcc6071a2c38596100", + "e687c5decb44b40144ab709723f062d2dfca22bf", [] ], "property-self.https.html.ini": [ @@ -347615,11 +347739,11 @@ [] ], "property-top.https.html.ini": [ - "e3a7586a247307c588eb7e9c9a3cdb75dbe2b04c", + "86f71d5893d8e032d15760e6ac85681db9a1350a", [] ], "property-window.https.html.ini": [ - "799db67cf15e60af5be3156b0c11c7bb738c4426", + "78ab09d6a8d589bf1883847508b9769c9cd037dc", [] ], "report-to-both_coop-ro.https.html.ini": [ @@ -347641,15 +347765,15 @@ [] ], "report-to-both_coop-ro.https.html.ini": [ - "46d3e2453d8b141994297fa9ca23abea51bbb623", + "3533c77b1462c6bc0e3dc3c640117c164f1fdd91", [] ], "reporting-redirect-with-same-origin-allow-popups.https.html.ini": [ - "6f1d038e5dd4f3474f52cf8d1ad4d3191d8fda2c", + "80bec0a81f7a9d7d09671ee611d5694ba88b57c3", [] ], "reporting-redirect-with-unsafe-none.https.html.ini": [ - "7b11492b982a5f967e17720d55c7e546173d1e25", + "68909ceb79e01f8e36067b597f04f87f0168fefb", [] ] }, @@ -347766,10 +347890,6 @@ ] } }, - "resource-popup.https.html.ini": [ - "950ed5a35712e468a2528cbffb9fe22d1c6cce11", - [] - ], "resources": { "call-functionCalledByOpenee.html": [ "d0ff0b723e0f31c6ed635db95851769a598ce2a1", @@ -347839,7 +347959,7 @@ [] ], "coop-rp-in-navigation-chain.https.html.ini": [ - "4aedaff68be3a950db6f8dfb9dbb4b706d48c331", + "3d17e08265eaf25ee2f017177dbf3400bd4e1af9", [] ], "iframe-popup-to-so.https.html.headers": [ @@ -347847,7 +347967,7 @@ [] ], "iframe-popup-to-so.https.html.ini": [ - "2451a4e76d7be93cdd583e20dac264d5707d4b4a", + "f8a499bad12ec011584e053acd36ac42680e7d1c", [] ], "iframe-popup-to-soap.https.html.headers": [ @@ -347863,7 +347983,7 @@ [] ], "iframe-popup-to-un.https.html.ini": [ - "275706e4b4b566e979c0822359ded85f476fde89", + "38689930ff30ec9fc75ac11218a24ba84659e93b", [] ], "iframe-popup-to-un.https_1-2-expected.txt": [ @@ -347891,7 +348011,7 @@ [] ], "iframe-popup.https.html.ini": [ - "f3681f22e7aaacd0c447883a6d4c2e4b530cfde0", + "da3ba00157b35a40f3d18c58cdd9c21cd80c39cd", [] ], "iframe-popup.https_1-2-expected.txt": [ @@ -347959,7 +348079,7 @@ [] ], "popup-un.https.html.ini": [ - "245d44f04bd04c497a587d0b1f23c067a3808476", + "1fa6809af65f62531cd6f9859c421595da663651", [] ], "popup-with-cross-origin.https-expected.txt": [ @@ -347971,7 +348091,7 @@ [] ], "popup-with-cross-origin.https.html.ini": [ - "f97561bf0fff98b15162863581a99dfd0dc6bbc5", + "fca3b7c3e8f677f571d091f75a427352539790f5", [] ], "popup-with-same-origin.https-expected.txt": [ @@ -347995,7 +348115,7 @@ [] ], "popup-with-same-site.https.html.ini": [ - "38b2f93760f06bd187430b8f5f7bbf6bf5844c2b", + "3a041615f7f308fb0c8f2869d86440d2ef622f63", [] ] } @@ -348564,7 +348684,7 @@ [] ], "script-inserted-script.html.ini": [ - "e11044cfb6253752396bd957d05295fc1d8c2c07", + "ead65bc24dceaea549524c8c86703d2914535e42", [] ], "support": { @@ -353307,7 +353427,7 @@ [] ], "pixel-length-attributes.html.ini": [ - "dcfec0f81cb4905f154e587b02dfc65e8c2853fa", + "7843cbb4b9f21ac982fb5a2fb475b26fefea7f5e", [] ], "replaced-elements": { @@ -353563,6 +353683,10 @@ "3240e9d69d3de161dc70a06fabfc3e8ed06741e3", [] ], + "details-revert-ref.html": [ + "dc46b159012fd80c39b66e94935c210a11826487", + [] + ], "details-two-pages-print-ref.html": [ "309a138696e27f97f8ffe25ac15b79e33b468192", [] @@ -354224,11 +354348,11 @@ [] ], "resource-selection-invoke-insert-source-not-in-document.html.ini": [ - "4c2227107064a2827a605f866889fda50a67624e", + "0d35b24d35d3d91e2c9a565df4d85199db7fab3b", [] ], "resource-selection-invoke-insert-source.html.ini": [ - "cf5642f39045b5e660832b6b212f9c2171b6ee79", + "5e49a00b82fc89743dcc0069127766610ae786fa", [] ], "resource-selection-invoke-load.html.ini": [ @@ -354252,7 +354376,7 @@ [] ], "resource-selection-invoke-remove-src.html.ini": [ - "b11e0fc02e6b89469cdfa808639f29d7b0eac3fe", + "dcae1f194149e74335548fe1cafeb7f2e727e550", [] ], "resource-selection-invoke-set-src-not-in-document.html.ini": [ @@ -354260,7 +354384,7 @@ [] ], "resource-selection-invoke-set-src.html.ini": [ - "c0581652ef344bf42e125cffdd9d6761b9b91d4b", + "694c3cc02b53d95a88d8bfddd843a3b2f2816018", [] ], "resource-selection-pointer-control-expected.txt": [ @@ -354739,7 +354863,7 @@ [] ], "track-cue-rendering-after-controls-removed.html.ini": [ - "d6f3a371a4fb8a8a959d811d665e9cd5d8d1d449", + "071be32a2696a7b29d6ea9b311c313907189166a", [] ], "track-cue-rendering-line-doesnt-fit-ref.html": [ @@ -355008,10 +355132,6 @@ "eeedd0ff05889ffd4468bf19a2e8e9e0a094201c", [] ], - "toBlob-cross-realm-callback-report-exception.html.ini": [ - "e403f2e729e56b46d2114639428f8568f9f9cb39", - [] - ], "toDataURL.jpeg.alpha.png": [ "551871295c80bd977f17f112bd9b8fd6354ed53c", [] @@ -355205,19 +355325,19 @@ [] ], "sandbox-top-navigation-child-special-cases.tentative.sub.window.js.ini": [ - "cdc5476b630095a546300e302ccd3a21402b6e15", + "9867bffaef13f1010b6efc40b816dc1c08ca2194", [] ], "sandbox-top-navigation-child.tentative.sub.window.js.ini": [ - "4d916ea98cfcaa51a6b60d1bddcd140e3d53fb5e", + "7679aec3af020250da42f339eac97e92763a59ab", [] ], "sandbox-top-navigation-escalate-privileges.tentative.sub.window.js.ini": [ - "ae3370f78198955144375363786e6be34e977508", + "4d6ee23c7ec435e95dc2d0a9d162d473e8f92e85", [] ], "sandbox-top-navigation-grandchild.tentative.sub.window.js.ini": [ - "ddb32689d41aad47b811d892ac5f263f1d06fd94", + "f6d097fe095955bb078b69bde166b123ba27c40a", [] ], "sandbox_026.htm.ini": [ @@ -355445,7 +355565,7 @@ [] ], "available-images.html.ini": [ - "c863967164bc81fa430b6b48c1c1f2341e0de600", + "df23c0bb0f75c159820db6153b17ad2e9081d490", [] ], "brokenimg.jpg": [ @@ -355831,7 +355951,7 @@ [] ], "resize-during-playback.html.ini": [ - "e1b1417312bf0f57a81e2b8117b3e474b4a1dcf0", + "ec7d98f7afe7c8d8007a6bac2c5fb7c52450c427", [] ], "video-poster-shown-preload-auto-ref.html": [ @@ -355901,7 +356021,7 @@ [] ], "multipart-formdata.window.js.ini": [ - "ed9a8215f37c96e2b03c2e2037d531a1924930e6", + "962ba8b4a30babab93c02409e9ab144e64daae1f", [] ], "resources": { @@ -355939,7 +356059,7 @@ [] ], "urlencoded2.window.js.ini": [ - "d66b56e19d3af18745f284c6624621b8cffd4a0a", + "3c32f2cedda8952526790d0d4fec1f88ba88984d", [] ] }, @@ -355952,10 +356072,6 @@ "bbc3b71e9423b6a17b07c065e20b8435e4c492f4", [] ], - "rel-form-target.html.ini": [ - "eae93147204be11623d1f15212d71d5b6430bd23", - [] - ], "resources": { "endpoint.html": [ "be9e7942927dabeea32bf9e17b88d6643bc4ea91", @@ -356281,7 +356397,7 @@ [] ], "selectmenu-form-state-restore.tentative.html.ini": [ - "69f2b9a6ce7cb3e02a54be671acc6f65c5b7ac9a", + "a6ec91bee3ed0583df1dbab54658b0ae5fd958c7", [] ], "selectmenu-keyboard.tentative.html.ini": [ @@ -356689,7 +356805,7 @@ [] ], "activation-behavior.window.js.ini": [ - "b02e6bff1e09e278ce309cbba67bc9726e807f9d", + "9dd31d1618d586086f2905c86d763d3fddd4ccf2", [] ] }, @@ -356839,10 +356955,6 @@ "7ceca94559b8d425c10243f61b038d6c8422a02b", [] ], - "popover-attribute-basic.tentative.html.ini": [ - "29ea4873d0e243d6b85d9d7b253b7af4e5ae84f0", - [] - ], "popover-backdrop-appearance-ref.tentative.html": [ "bf2b16c3f5de4777808d92e436a97609a9fbc16b", [] @@ -358611,7 +358723,7 @@ [] ], "span-limits.html.ini": [ - "77f4ff42ab68a699e474f12e3f15ed4071e4d224", + "db1b042f4ade33132fbc774373a413a6ffbabcb6", [] ] } @@ -360691,10 +360803,6 @@ [] ], "integration-with-the-javascript-job-queue": { - "promise-job-entry-different-function-realm.html.ini": [ - "e2f5d1c7b399cb822111ad0ebcb20d0cf8b10e6e", - [] - ], "promise-job-entry.html.ini": [ "b7889a6b7b76419e7532fabed84ecc1dc853db6b", [] @@ -360898,7 +361006,7 @@ }, "timers": { "negative-settimeout.any.js.ini": [ - "cac620ae34217b76f1c6e2070f003083e1734594", + "80e633e8f58e4fe51beac4a4ef046c40019eab2f", [] ] }, @@ -361008,7 +361116,7 @@ [] ], "idle-detection-allowed-by-permissions-policy.https.sub.html.ini": [ - "f6cc69da3ffc659493cd3096afde6da2c36f5844", + "6f363c189c39ce8e2921eb7be18b2a9a306423f7", [] ], "idle-detection-default-permissions-policy.https.sub.html.ini": [ @@ -361659,7 +361767,7 @@ [] ], "unhandled-rejection-following-subtest.html.ini": [ - "231515ad13a8be36f2bb67ab05ae376c7136ada2", + "c2b68fbce4b4d249740cb125f02eb19f4bc8ace7", [] ], "unhandled-rejection-single-test-expected.txt": [ @@ -362099,7 +362207,11 @@ [] ], "webtransport-h3.https.sub.any.js.ini": [ - "d9db14c27d5e199c2f8d11c639ddfc618bb94c0c", + "cfa38654ebf6b1a5a8100ef7ec7dbe5ba79a25e9", + [] + ], + "wpt-server-wpt-flags.sub.html.ini": [ + "7783075b1499080b13d461986d8f5c2ab6a7830d", [] ] }, @@ -363486,11 +363598,11 @@ [] ], "callback-cross-realm-report-exception.html.ini": [ - "ca0f3c432be3f235ffa0a10fdc5d168d309692a0", + "1af631378928fbdc322cb55e62f5cdba3a00496f", [] ], "cross-origin-iframe.sub.html.ini": [ - "9d4270f7ccfcb42be7d6e78f011dafc66a139391", + "ea54f0f594049ff61f38453322edd5f50d7e8a8c", [] ], "idlharness.window-expected.txt": [ @@ -363778,7 +363890,7 @@ ] }, "first-paint-equals-lcp-text.html.ini": [ - "88987019ca6d803177a045f9f23a3ee6e0124dbe", + "29f3d289d19edf32ce57b5c59d36ae6437c786d1", [] ], "image-upscaling-expected.txt": [ @@ -363967,11 +364079,11 @@ [] ], "csp-early-hints-absent-final-disallowed.h2.window.js.ini": [ - "54ac630c1be4eddeca2c4278ad66be467217b7d4", + "36b4ee888dbe88496726126fd54e7f1448a07f6d", [] ], "csp-early-hints-allowed-final-absent.h2.window.js.ini": [ - "c53530f115a0d4227a9930724a7caf5cc7ed0e35", + "e5500a13a51e7ebbb6348084753f7ba9c6f3d5ad", [] ], "csp-early-hints-allowed-final-allowed.h2.window.js.ini": [ @@ -363979,7 +364091,7 @@ [] ], "csp-early-hints-allowed-final-disallowed.h2.window.js.ini": [ - "1c5498035a8995c9f6d6e7afa4a47c8c8eeb2b3d", + "62644a2c445aa56948207280c7f199e67eaad7b8", [] ], "csp-early-hints-disallowed-final-absent.h2.window.js.ini": [ @@ -363987,7 +364099,7 @@ [] ], "csp-early-hints-disallowed-final-allowed.h2.window.js.ini": [ - "26f2affea5e292e93c0853ee887200868042221a", + "e935dbe26b09071d110aba686e56187fe3131622", [] ], "csp-early-hints-disallowed-final-disallowed.h2.window.js.ini": [ @@ -364003,7 +364115,7 @@ [] ], "multiple-early-hints-responses.h2.window.js.ini": [ - "885ec2864703a24fe6fed80db7a2ac7b3be97482", + "eb2fb4e28813b57690141dee24f2ce0e6d1bdea4", [] ], "preconnect-in-early-hints.h2.window.js.ini": [ @@ -364011,15 +364123,15 @@ [] ], "preload-finished-before-final-response.h2.window.js.ini": [ - "34b01efcd89d43454532849895c4772328356f12", + "a7688341bb408cd71b5eab2d4a9e126bd0e4142d", [] ], "preload-finished-while-receiving-final-response-body.h2.window.js.ini": [ - "4e0b8871c094ca6b78ad2a8a79dc3c3279204189", + "77d6e57def5554ba0670c2d4cc78b7a575121f2a", [] ], "preload-in-flight-when-consumed.h2.window.js.ini": [ - "426ffabfb947d4c1f5760a11da7de52090eecc8d", + "34414adcd731ec4938977b572049059342d666a4", [] ], "preload-initiator-type.h2.window.js.ini": [ @@ -364035,11 +364147,11 @@ [] ], "preload-without-as.h2.window.js.ini": [ - "7cc9418f8362621fc6a8b04b8ce884e5c5088017", + "6ac50adc38d97bcaca9743e9e8069256b7db0bc4", [] ], "preload-without-csp-document-disallow.h2.window.js.ini": [ - "2124955eb8ca58d3f7e0d5c7098c7a3e48a2452c", + "49c25eb1c38dc4887a88a37d1e098ffbb7439730", [] ], "redirect-cross-origin-between-early-hints.h2.window.js.ini": [ @@ -364055,7 +364167,7 @@ [] ], "redirect-same-origin.h2.window.js.ini": [ - "9985515d05587a039598b635a3669a524cecbfcc", + "0c8859cdd64336d88a95a83188ee908f0bd9e6c9", [] ], "referrer-policy-no-referrer.h2.window.js.ini": [ @@ -364071,7 +364183,7 @@ [] ], "referrer-policy-same-origin.h2.window.js.ini": [ - "cc4aae74893e26d44c5c1257abb789d305e23b3d", + "c87d9d932d697b2bc9d7d875954889d53d95e1c4", [] ], "referrer-policy-unsafe-url.h2.window.js.ini": [ @@ -364314,7 +364426,7 @@ [] ], "longtask-in-sibling-iframe-crossorigin.html.ini": [ - "e392bba6fcf371e2e59a54eceea79935f7ad1ce2", + "ac50b0dad0f655575ee99a75cc919631f5c0ef55", [] ], "resources": { @@ -364809,10 +364921,6 @@ "146b36012bc0bbe3f5385bcc412e10b72be18730", [] ], - "operator-dictionary-largeop-003.html.ini": [ - "9d853344e287641fd3bac87bf9ddcd0cd5ebe7d0", - [] - ], "support": { "operator-dictionary-tests.css": [ "4f80ad7f8dd0e28a40900b0c11ee9adaa800bd97", @@ -365024,7 +365132,7 @@ ] }, "ignored-properties-001.html.ini": [ - "7e0c8f48c3c1d38e81f25764e49e02348e387b89", + "7941919561316fab213d4f863cb30e4b6d40d71f", [] ], "legacy-scriptminsize-attribute-ref.html": [ @@ -366035,7 +366143,7 @@ [] ], "mediasource-worker-play-terminate-worker.html.ini": [ - "c324d20a5c2bff9728b0c7a6ec8dc713045ac188", + "59e2dceab3b3d82b81286018654b9325b9151001", [] ], "mediasource-worker-play-terminate-worker.js": [ @@ -366084,11 +366192,11 @@ [] ], "mediasource-appendbuffer-quota-exceeded.html.ini": [ - "44b783c6d23afc89b9791c8a9db8dba35c07a708", + "74fb2d1ea48fa8beb3dda8533caa471752a623e4", [] ], "mediasource-avtracks.html.ini": [ - "790aede9bbfc9dc5d39879305238508b5d566dc6", + "395d921ffa795d66aed85c8d87f795dce25396db", [] ], "mediasource-buffered-expected.txt": [ @@ -366160,7 +366268,7 @@ [] ], "mediasource-duration.html.ini": [ - "62814da4b59917cee265d59c9bd54ecfdfc2f6d4", + "d83b828f4d8bc65d206d8c75585462f31756ade3", [] ], "mediasource-endofstream-expected.txt": [ @@ -367452,7 +367560,7 @@ ] }, "detach_iframe_during_open.https.window.js.ini": [ - "93efa3b4431eefb66c68cb04e8b1d25c981865ac", + "1f3251675043c9cf26f7cb81286b9b9ab306725a", [] ], "resources": { @@ -367797,10 +367905,6 @@ "580dc21c19e71cbc51833c5d458ee34bc5e66717", [] ], - "navigate-initial-about-blank.html.ini": [ - "464f171f9e1eda8c56019dbcdd5c94ed41d698c4", - [] - ], "navigate-intercept-interrupted.html.ini": [ "5df966b3082d4dd15b10bad9ef94202e51794b84", [] @@ -368068,7 +368172,11 @@ "afe09530d75866dbfd84ad4c346b0d8d6f27e5d3", [] ] - } + }, + "test-performance-attributes.sub.html.ini": [ + "4eaddd8b26028cfe6002cb78ffb962101574bf0e", + [] + ] }, "netinfo": { "DIR_METADATA": [ @@ -368838,15 +368946,15 @@ [] ], "pending_beacon-sendnow.tentative.https.window.js.ini": [ - "96481bee855509bea5486e5a2b7fe7ead4f57f90", + "77d12e5bdcf64c382e83996ac7fd14e008fef7be", [] ], "pending_beacon-sendondiscard.tentative.https.window.js.ini": [ - "3bf616fc5bc0e6296791ea3c40fa7b5071aeafe2", + "6517a5acba0e0a87f867d48453016e2f9e5fd8cb", [] ], "pending_beacon-sendonhidden.tentative.https.window.js.ini": [ - "9728382d8ef28a59f9021ff827f3ac4acefd5181", + "039188a72568e41f7c5c8754acba6528aaddca89", [] ], "pending_post_beacon-sendwithdata.tentative.https.window.js.ini": [ @@ -368902,7 +369010,7 @@ [] ], "navigation-id-reset.tentative.html.ini": [ - "a5e9a1f714ce6360af8ee3d9cd9eb1339f5aa6b7", + "ec4c72460bd6ab7c371d79171c65c642525550bf", [] ], "navigation-id-resource-timing.tentative.html.ini": [ @@ -368931,7 +369039,7 @@ [] ], "performance-navigation-timing-same-origin-bfcache.tentative.window.js.ini": [ - "a5c5bbd1b06d89e0d6d282bcf9e4980b7a1d3f70", + "e27e3f44d2203a89fcbd9c19deec4ccbf5bea540", [] ], "performance-navigation-timing-same-origin-replace.tentative.window.js.ini": [ @@ -369377,7 +369485,7 @@ [] ], "geolocation-report-only.https.html.ini": [ - "eb3d0b73a243e54d9d6ae5fb524a86df5ddaf7ee", + "74bda712526fc1da48f9887893a46a42eb6c3d1b", [] ], "geolocation-reporting.https.html.headers": [ @@ -369721,6 +369829,10 @@ "0cc01909796fcce22401ef0ed2ffda3582f56634", [] ], + "capturing_boundary_event_handler_at_ua_shadowdom.html.ini": [ + "bbcb899d9c96ddd61e5629995ef545171edbce94", + [] + ], "compat": { "pointerevent_mouseevent_key_pressed-expected.txt": [ "2b436297a1573cbe990226c289fa5f6aeb7a58b3", @@ -372574,11 +372686,11 @@ [] ], "deadline-max-rAF-dynamic.html.ini": [ - "3dbee2d405f07199581fab3a2352b0f24261e47b", + "68b966f6594cd24a4a0337d41b0a39fde7a0e294", [] ], "deadline-max-rAF.html.ini": [ - "c2a9bbc2d2bfc59f1c6b4b8823275c23b7419994", + "534eef01ed2f4344f0bc47c3c684f5ce4a600cbd", [] ], "deadline-max-timeout-dynamic.html.ini": [ @@ -372690,7 +372802,7 @@ [] ], "content-type-parsing.html.ini": [ - "3da3db687ab314af5a8977cb367113d57db30b2c", + "4df4c94ae1a9bab5065220efe934e363fd01affb", [] ], "frameset-timing.html": [ @@ -372729,6 +372841,10 @@ "33006cf002b9b9c3f4fb4c4757916052ae12fe92", [] ], + "nested-context-navigations-iframe.html.ini": [ + "1c863b1c874497b9d7e062e1f223c1855f77a256", + [] + ], "nextHopProtocol-is-tao-protected.https.html.ini": [ "1073d65b02642b0bdac93f3b3d33f0111e369515", [] @@ -372738,11 +372854,15 @@ [] ], "no-entries-for-cross-origin-css-fetched-memory-cache.sub.html.ini": [ - "1d9ea2f91acb2183c63eb009a13beab9d0f0d4fb", + "ff8840b1c4670c311ffe8732818d81842e38a5aa", + [] + ], + "object-not-found-adds-entry.html.ini": [ + "af9142d315b3f96d39528493380ed0a855a7f6f0", [] ], "object-not-found-after-cross-origin-redirect.html.ini": [ - "e13c217beef679f734ed68c67f70e471be95a3e4", + "caf7a33a05b9126941c0204e91f3720f9728f394", [] ], "ping-rt-entries-expected.txt": [ @@ -373140,7 +373260,7 @@ ] }, "response-status-code.html.ini": [ - "8f75a2f806f4e5f4bf15ee138864be8693b37ea0", + "0359fd1bd04eccf3a7dc0ff82c6ec82d58143c90", [] ], "sleep.py": [ @@ -373808,7 +373928,7 @@ [] ], "find-range-from-text-directive.html.ini": [ - "6507c291bab9b31df92bae4066963b796e662759", + "f58d32741154e92b8f0c7bfbcf65e3f69034feea", [] ], "force-load-at-top-target.html": [ @@ -375073,7 +375193,7 @@ [] ], "cache-add.https.any.js.ini": [ - "5c330353f749e2e3e4c30fa33c65387fc48f73fc", + "4fcea8d5b1ffbd72d8d75cb707ad795a976676f3", [] ], "cache-add.https.any.serviceworker-expected.txt": [ @@ -375343,7 +375463,7 @@ [] ], "client-navigate.https.html.ini": [ - "ed96e18bfc432651cc62c5b31786bd7fbde3f820", + "a8461b4ee03ceec4debc39d832812c38d41052c6", [] ], "client-url-of-blob-url-worker.https-expected.txt": [ @@ -375467,7 +375587,7 @@ [] ], "getregistrations.https.html.ini": [ - "6bdecd60e025a20afa889c7a0b5e6af87b88417b", + "8d78459a28726b16c07e91253a0a17ab8f8a4561", [] ], "idlharness-sw.https-expected.txt": [ @@ -377267,7 +377387,7 @@ [] ], "unregister-immediately-during-extendable-events.https.html.ini": [ - "3ac727896428dc5cd13c3db87292ac8ba1556d0b", + "4507f109d4a7c9681a8acaa819e15213d5906200", [] ], "unregister-then-register-new-script.https-expected.txt": [ @@ -378065,7 +378185,7 @@ ] }, "out-of-document-rule-set.https.html.ini": [ - "0ae4bf4b18b59b4d492e43ac972073633a111352", + "c7316ee2137b8fe2df91704110433e00acb70970", [] ], "prefetch-single.https.html.ini": [ @@ -378085,7 +378205,7 @@ [] ], "referrer-policy-not-accepted.https.html.ini": [ - "b18abbe94b4647ae9b623e272c1015e0cf0a2850", + "0de0fe95a222e8ca15338441434d0fc47a7c6ca6", [] ], "referrer-policy.https.html.ini": [ @@ -378161,7 +378281,7 @@ [] ], "cross-origin-iframe.html.ini": [ - "1023c050e9ff1e988d3bec06e40ef47c6304c57f", + "1cda8fac1349b9f2d2e29f7cb4bd47f30a7991ec", [] ], "cross-origin-isolated.https.html.ini": [ @@ -378176,10 +378296,18 @@ "2fb25afc51749284072dec2960e091e2b2c57436", [] ], + "csp-script-src-elem-inline-speculation-rules.tentative.html.ini": [ + "b73464e0cf01d5dfa0b3b7203a824ceb3351a9fe", + [] + ], "csp-script-src-inline-speculation-rules.tentative.html.ini": [ "e70cc294faed0447d22014aae1616ac8b1fa9001", [] ], + "csp-script-src-self.html.ini": [ + "4329c7f453cfedde06d58c1115bd7471807406b3", + [] + ], "csp-script-src-unsafe-inline.html.ini": [ "99aa905218b1ac58e5d378c5ce769cbba74113af", [] @@ -378193,11 +378321,11 @@ [] ], "iframe-added-post-activation.html.ini": [ - "639ddc1b8df708a9655f77e69e9ca9fe83c28ed6", + "4c72df7d4b76f031e55dea9962c4ae6f57ba15fd", [] ], "indexeddb.html.ini": [ - "e16ee6be70082c5413fcb5624aed940a342e2447", + "3dd4ff19b55d1fb59cc6a5c63cbde535ba936cd9", [] ], "local-storage.html.ini": [ @@ -378217,7 +378345,7 @@ [] ], "navigator-plugins.tentative.html.ini": [ - "6d40224b5f63c0761e26dcc880f5c97c2302d641", + "a9fa26cb4b1628423ea781bd5ae1792dd1da06ba", [] ], "navigator-subapp.https.tentative.html.ini": [ @@ -378225,7 +378353,7 @@ [] ], "referrer-policy-from-rules.html.ini": [ - "c96a9be02b0806a01546d4b2c341b10d0ac3dc43", + "9df55d5d766468998afc12861450ec76a8d0a3ac", [] ], "referrer-policy-mismatch.html.ini": [ @@ -378233,7 +378361,7 @@ [] ], "referrer-policy-no-referrer.html.ini": [ - "76132cd0681cf55ee750ed7b3503eb2dc77b5e30", + "9c2d1085fbbd59397e4aa1bd782ed2d8edf8d454", [] ], "referrer-policy-origin.html.ini": [ @@ -378333,6 +378461,10 @@ "7be73c8c6f2e856b49b9127e959e3e23796e749a", [] ], + "csp-script-src-elem-inline-speculation-rules.html": [ + "19aff92206f06ec19b6351398b2b351064eedbf5", + [] + ], "csp-script-src-inline-speculation-rules.html": [ "febfbd01ba125c1deef934b1ff4d78e3f2b0e164", [] @@ -378659,11 +378791,11 @@ ] }, "response-code-non-successful.html.ini": [ - "30fcd9b73f4ad8947d14b490ad68531e7362112d", + "6b924a9610593cb297ab67b4332cdfe3d027a3de", [] ], "response-code-successful.html.ini": [ - "78c2c35926c568a8ecfdb7ef33f3f433c5538066", + "6d11eeea1fb3e2200f4e8bbc6c7934ba97c30d52", [] ], "restriction-audio-setSinkId-with-invalid-sinkId.https.tentative.html.ini": [ @@ -378695,11 +378827,11 @@ [] ], "restriction-dedicated-worker.https.html.ini": [ - "4c890c0c2d50ca4fb5a4d1c20937fd13019d14f9", + "4aeadc53fb826a843e3a9ceedf09e3d68e77daa4", [] ], "restriction-encrypted-media-unsupported-config.https.html.ini": [ - "ba53aa9f8f5796948c6ae068e81a4e2627481d47", + "ac509131109042c158274df161ba214b7d1b8d4e", [] ], "restriction-encrypted-media.https.html.ini": [ @@ -378715,7 +378847,7 @@ [] ], "restriction-local-file-system-access.https.html.ini": [ - "0e13ca067d9a4efde27e28b31e7cd1f940b1f689", + "d7eeb8846ed6e7406f1c2c2cc3a5f4f4fae33751", [] ], "restriction-media-auto-play-attribute.html.ini": [ @@ -378731,15 +378863,15 @@ [] ], "restriction-media-microphone.https.html.ini": [ - "9cafd156134b1a9ba6f34d472d34e8b8e6af6035", + "3191a4d4c722c047b1c3b58b024314a07dae7913", [] ], "restriction-media-play.html.ini": [ - "f3cd2a6ed719fd44ddf2f706d3cdd06f06ea2b68", + "f1e8bd65d9920ca7b24afca76a3afba0a466a81c", [] ], "restriction-message-boxes.html.ini": [ - "a19061396a8e8780f34563f70ec2627d23d9f65a", + "8bd97880f870a2162a3f55e3fd75921935149f95", [] ], "restriction-midi-sysex.https.html.ini": [ @@ -378799,7 +378931,7 @@ [] ], "restriction-service-worker-postmessage.https.html.ini": [ - "3cb7332888cd824bca0b46e9f2aa661e57c49dcc", + "7b07883516ff22329c9128a6aabf12ccc501c50f", [] ], "restriction-service-worker-unregister.https.html.ini": [ @@ -378807,11 +378939,11 @@ [] ], "restriction-service-worker-update.https.html.ini": [ - "fb6c6b0ed6665fbfd6a343a00bbd1bb2c0bc17ac", + "f0afa05263b0f0e6cf6d67fa8dc79e0298784281", [] ], "restriction-speech-synthesis.html.ini": [ - "c8b329d54aa3a58e3d46a6bcf37e2690d62df42e", + "ad1ad4c2b02022f3bdfe9a9b47eb552ff4a2e77f", [] ], "restriction-storage-persist.https.html.ini": [ @@ -378827,11 +378959,11 @@ [] ], "restriction-web-locks.https.html.ini": [ - "eb9f2ef76f3bb3a5a3e5124c258c2ba9d0bb3076", + "fee948408ed9489a5b2ce822478e4fe45c917103", [] ], "restriction-web-nfc.https.html.ini": [ - "e02269b0f6d1f4176a88af6cc6027b31e03d8fdd", + "2a03aca3d9be39ee1474a927a68ebe915eccdab6", [] ], "restriction-web-serial.tentative.https.html.ini": [ @@ -378903,7 +379035,7 @@ [] ], "state-and-event.html.ini": [ - "1024f525bd89563ef01ad1c2f508ec36b8f28b41", + "3bc2c9bd4c5dcb1da4cb8e6110c94ca1d14fab82", [] ], "storage-foundation.https-expected.txt": [ @@ -378911,7 +379043,7 @@ [] ], "storage-foundation.https.html.ini": [ - "895af8b4d1202cfb0ae7985c7b8c7e2c70763f0a", + "a2e584a5ba4ee75cb1f182211699ba662a268d4d", [] ], "visibility-state.html.ini": [ @@ -378931,11 +379063,11 @@ [] ], "windowclient-navigate.https.html.ini": [ - "39d9146646fb22716fb2eea79651558ad542443c", + "1ea18b66ef38498d1a9a053e0d365cdabc7308d3", [] ], "workers.html.ini": [ - "3ed7eaa9d7a0ebdf08697f3d1bf81a8412a5614b", + "a986d42ada540991b539b92e5597b2487a0aafc3", [] ] } @@ -379050,7 +379182,7 @@ [] ], "partitioned-estimate-usage-details-caches.tentative.https.sub.html.ini": [ - "0690a75c3ca0c8a15152ca6a0aa1cccac8a12098", + "4e84a278083098435780c5c54a0fc7c8507cfadb", [] ], "partitioned-estimate-usage-details-indexeddb.tentative.https.sub-expected.txt": [ @@ -382842,7 +382974,7 @@ [] ], "url-setters-stripping.any.js.ini": [ - "5c23a98a6205bc1eeba0e0623b80063b03a8d6f1", + "ad2f860fc3677f34b0f5d29d7f7248d15cd4099b", [] ], "url-setters-stripping.any.worker-expected.txt": [ @@ -382853,8 +382985,12 @@ "e6bf441461c9671218e795f30fc3cb493a488da6", [] ], + "urlsearchparams-get.any.js.ini": [ + "8bfbd43d89478c93415c389a7d769c65e9fd0dc3", + [] + ], "urlsearchparams-stringifier.any.js.ini": [ - "300c68e6d26bc214cea1efe653cd37d06f3fbd38", + "5874c971b74d0e95b67f80b43d297b8de921010c", [] ] }, @@ -382892,7 +383028,7 @@ [] ], "case-sensitivity.any.js.ini": [ - "8fdad249f4790b322f5a7d317695539b5ab5ffd3", + "235f972c4f08607795ba48f542223dfc7dd38f6d", [] ], "idlharness-shadowrealm.window-expected.txt": [ @@ -382934,6 +383070,10 @@ "META.yml": [ "411450e0b142931544fbaac5669352201ee37328", [] + ], + "api-is-present.html.ini": [ + "acd332bbbc39992e078bfd501716683adba52a26", + [] ] }, "video-rvfc": { @@ -382997,6 +383137,10 @@ "934674a51a6a68dd80f6faebb34b2b969ccf6925", [] ], + "viewport-unscaled-scroll.html.ini": [ + "2d42feda37bed7a41230da6527117d3c11df7cf5", + [] + ], "viewport_support.js": [ "a82bd2b028010e053199e55bd7bb357361581e6f", [] @@ -383036,12 +383180,6 @@ "786fc650e326b61f548ea09b0d5d389bf7a0f489", [] ], - "constructor": { - "compile.any.js.ini": [ - "c77440f44a9601106d070f63b52002ae50425e5c", - [] - ] - }, "error-interfaces-no-symbol-tostringtag.js": [ "572db0c01b620dd317f2079df6d0ea7cff6333fe", [] @@ -383828,7 +383966,7 @@ }, "Animation": { "finished.html.ini": [ - "ff75ca89fb4b161e527d5906d3f6a287235837fa", + "70c2d215fd881826cae6c806b6501fee688f67ce", [] ] }, @@ -383841,10 +383979,6 @@ "fd109580df55b17271654e178f8b397c6553da83", [] ], - "getKeyframes.html.ini": [ - "d644a16367642c67dc1c62758179427b4f4ff5be", - [] - ], "iterationComposite-expected.txt": [ "5319aefca8ebc4b276a13c936b91f71f2a3a9322", [] @@ -383906,12 +384040,52 @@ ] }, "responsive": { + "columnGap-expected.txt": [ + "940e19f0cf2b73736257db17f07e39ef0ffa3d35", + [] + ], + "columnGap.html.ini": [ + "ee901b011bdd26c51c0709584b2db19e2fd731f8", + [] + ], + "lineHeight-expected.txt": [ + "53aec5407d9b92526f108d6d5f354b747c388951", + [] + ], + "lineHeight.html.ini": [ + "16cd31319f265a63a7c66ddc61fa8d883ecd5115", + [] + ], + "minHeight-expected.txt": [ + "824a22debb58b7550f15a1c27ec686d10fe2993c", + [] + ], + "minHeight.html.ini": [ + "c10d0530a60979743ef4af3a92ed4ccde2f6da5a", + [] + ], + "perspective-expected.txt": [ + "6d1920a8cdc8ca5eee34d8f07c7de69be6ba76a1", + [] + ], + "perspective.html.ini": [ + "26dfb2f2d458a60e5d159bd942553b9d49aa08b2", + [] + ], "resources": { "block.html": [ "82840559690b3bb18bec0588db9d9eeb95e098e5", [] ] }, + "rowGap-expected.txt": [ + "ebe4ed040bb97cfa205fccabddd83d2e8f3ae810", + [] + ], + "rowGap.html.ini": [ + "fd84d8d395f700ef9c7521d6ea799faf2ad9738e", + [] + ], "textIndent.html.ini": [ "661bb02c267b4d8380bbf275d3d865e587b378ca", [] @@ -383977,6 +384151,10 @@ ] }, "timelines": { + "document-timelines.html.ini": [ + "08dcd48709615c9a9b1a969e392a50990c32d801", + [] + ], "resources": { "target-frame.html": [ "18ee4fd8a23e6a9b4f95068b418d4da1bdef1679", @@ -383992,7 +384170,7 @@ [] ], "sibling-iframe-timeline.html.ini": [ - "7fd03e0d0fcc9ae9f4becee012d02a49d57551fe", + "262b1a1a3d06ff9bbc14f63785ddfeacfc4a0251", [] ], "timelines.html.ini": [ @@ -384417,7 +384595,7 @@ ] }, "reuse-web-bundle-resource.https.tentative.html.ini": [ - "8d4bbc6222997e1b25830bf504e9681ae5ca7f6d", + "ef413eb3a8604c19189e065adb17b10ce5730145", [] ] }, @@ -384454,10 +384632,6 @@ "7997f982a8f748281c21e1be05c9c74407600fe2", [] ], - "release-across-thread.tentative.https.html.ini": [ - "abcdb1a246806820f53fd3962fe1692b40f50ce5", - [] - ], "release.tentative.https-expected.txt": [ "975ea8332cf457aa6607a6ebac7b8192c86a4939", [] @@ -384465,6 +384639,10 @@ "release.tentative.https.html.ini": [ "f580f5e14398488bb0ca0d1b7db19639af60315f", [] + ], + "sharedworker-multiple.tentative.https.html.ini": [ + "169cb7017e6155b39330d75a57e12438d22bcd2f", + [] ] }, "clientids.tentative.https.html.ini": [ @@ -384810,7 +384988,7 @@ }, "the-analysernode-interface": { "test-analyser-output.html.ini": [ - "b7504944f46ff3addedc8f0d0a109304d0f14f7b", + "c339ed3aa8b1f6586c99e6736cd41b1453799b6c", [] ] }, @@ -384840,7 +385018,7 @@ ] }, "sub-sample-buffer-stitching.html.ini": [ - "2567da0b2424e400d58c2d16c6bca9700c59b27f", + "5249d5bd8d71ea4af9c87d26eee7410f0585ae1e", [] ] }, @@ -384892,7 +385070,7 @@ ] }, "suspend-with-navigation.html.ini": [ - "652f921b58208a55ae0c677fae9d6c009d6c5240", + "1fbda7c28a3f05508b90f74f76cf85b69fd57f09", [] ] }, @@ -384915,10 +385093,6 @@ "63b60e490f47f4db77d33d7a4ca2f5b9a4181de8", [] ], - "audioworkletnode-output-channel-count.https.html.ini": [ - "97f1aa6933157db4fc4564d7095f4c274919d1ec", - [] - ], "audioworkletprocessor-promises.https-expected.txt": [ "ecc24fe05e8a87fcd79a9de92e21f7e38207ca0f", [] @@ -385084,7 +385258,7 @@ [] ], "active-processing.https.html.ini": [ - "c45c45fe5e591f0dc58cabb2654573f2813efe78", + "d569653cf132912bd491c5d8deccfb0ff08a53e2", [] ] }, @@ -385100,7 +385274,7 @@ }, "the-mediaelementaudiosourcenode-interface": { "mediaElementAudioSourceToScriptProcessorTest.html.ini": [ - "a30e93bec60672e5c3ef628de095c7d7f052633b", + "981f6ff00af6d1c34ab6090472f7e809d5507772", [] ] }, @@ -385253,6 +385427,10 @@ "f7dd40bee9a6d4bbfcb3712c5524b264713dfba4", [] ], + "full-cycle-test.https.any.js.ini": [ + "d492159aa2910cbabd9261568e522797a609b7f8", + [] + ], "h264.annexb": [ "60c3b8cdec43b3c7038a98705abb8cb763b79342", [] @@ -385289,6 +385467,26 @@ "85676f29ff5806a32ac6713e601fdcb71dd03777", [] ], + "reconfiguring-encoder.https.any.js.ini": [ + "9c568679f3f02cabf64925807e77369ee95aba73", + [] + ], + "reconfiguring-encoder.https.any.worker_h264_annexb-expected.txt": [ + "e39bac00305d71521162b08d7fdff60d7cf398ff", + [] + ], + "reconfiguring-encoder.https.any.worker_h264_avc-expected.txt": [ + "85865e4660bb0ba027b982a774f1c7d693dd77a0", + [] + ], + "reconfiguring-encoder.https.any_h264_annexb-expected.txt": [ + "e39bac00305d71521162b08d7fdff60d7cf398ff", + [] + ], + "reconfiguring-encoder.https.any_h264_avc-expected.txt": [ + "85865e4660bb0ba027b982a774f1c7d693dd77a0", + [] + ], "sfx-aac.mp4": [ "c7b3417d9c805c978ec863107dd87b879aa465ef", [] @@ -385313,6 +385511,10 @@ "d2600174469a203b229444919378c138b3cf6680", [] ], + "temporal-svc-encoding.https.any.js.ini": [ + "d42d43cda7b7bc884b780f5f2e9ae4a7720c2145", + [] + ], "utils.js": [ "aea658d3f2c9b4643bdaeac03b3983aa2acc06f1", [] @@ -385330,7 +385532,7 @@ [] ], "video-encoder-utils.js": [ - "fad6b909505feddbf32d9bb26392de5649e8e9c5", + "7201e054d81b54a17f2343727a2708c7d5f89722", [] ], "videoDecoder-codec-specific.https.any.js.ini": [ @@ -386195,7 +386397,11 @@ "ee2d51a254256761626e9d3e7743dad89caf0233", [] ] - } + }, + "workers.html.ini": [ + "fd51247a007880b73ef8775e6641bb619b299ba4", + [] + ] }, "message-channels": { "close-expected.txt": [ @@ -386233,7 +386439,7 @@ [] ], "worker-post-after-close.any.js.ini": [ - "38e85428689067832d346340f862f98b5478bf08", + "be207b65f5e4c4892a8ea9cd2348035548674423", [] ] }, @@ -386251,7 +386457,7 @@ [] ], "broadcastchannel-incumbent.sub.html.ini": [ - "b15baab7faf137cd6228e0ad84e836adfd76dd0e", + "b7ed439511b5a8337fc4d9c8cf7de759e0ea3891", [] ], "support": { @@ -386273,6 +386479,10 @@ ] } }, + "postMessage_ArrayBuffer.sub.htm.ini": [ + "244903d102f3d42f89d8f13b7518e76e829775c1", + [] + ], "resources": { "post-cryptokey-to-opener.html": [ "91c70165f03ec63615ac286dc9ae3555706f49ad", @@ -386326,8 +386536,8 @@ "225bd7a41e38280bdb0891ecbf8cd4c39a4c3029", [] ], - "020.html.ini": [ - "c4b9b177264504699d07ee6e359fc41942bde1cf", + "021.html.ini": [ + "fd4aad14082878fb8cd021b5a6791e1d0e4ec620", [] ], "025-1.js": [ @@ -386364,7 +386574,7 @@ [] ], "idlharness.https.any.js.ini": [ - "1f6ede487cd60ddc1b822834cce6468c8d0f268a", + "c65621626f54bc87e5a8163e5e71c701475c099a", [] ], "idlharness.https.any.worker-expected.txt": [ @@ -386559,10 +386769,6 @@ "2b74099c461ccb3cb19b2e01881df2b32e6b0d16", [] ], - "RTCPeerConnection-onicecandidateerror.https.html.ini": [ - "494d968bf2d8cda654b49dd1c5f719663930282f", - [] - ], "RTCPeerConnection-operations.https.html.ini": [ "34ec5683d9e2c1156a693cb2b5c27cdf3cbd5580", [] @@ -387814,7 +388020,7 @@ [] ], "close.any.js.ini": [ - "a72ddf51a2478f8b875fbddb29eab7ee195d9762", + "65ce656778c82f09baa1536acd8bda04f3d79379", [] ], "constructor.any.serviceworker_wpt_flags=h2-expected.txt": [ @@ -387946,7 +388152,7 @@ [] ], "localstorage-basic-partitioned.tentative.sub.html.ini": [ - "60e8f28313d21c40f5e2b8ec292e63e4862b5fdf", + "8c073029582dab28afc96b5ea2de7a49849bd9b6", [] ], "resources": { @@ -391353,7 +391559,7 @@ [] ], "ar_dom_overlay.https.html.ini": [ - "bd83b2cab991199e084fc6c7b5be72fbeb4e72f0", + "05b1e4a58fba98e3fe73fcdacc4548f4684cedb9", [] ], "ar_dom_overlay_hit_test.https.html.ini": [ @@ -391378,7 +391584,7 @@ [] ], "events_referenceSpace_reset_inline.https.html.ini": [ - "00c1d56bf0b835c4ab75baee491703b102791134", + "6967e14d865538da7e9912d4c2dbdf8d63b34fe4", [] ], "events_session_select.https.html.ini": [ @@ -391618,7 +391824,7 @@ [] ], "xrDevice_requestSession_optionalFeatures.https.html.ini": [ - "f62357fd8e56cd84ee0aba99c7080eb38694cab8", + "e0a82b3b79b4914aadc834abc809f71f9c168db5", [] ], "xrDevice_requestSession_requiredFeatures_unknown.https.html.ini": [ @@ -391766,7 +391972,7 @@ [] ], "xrStationaryReferenceSpace_floorlevel_updates.https.html.ini": [ - "5011c0dba50647a08d3ef0786348647351abe8aa", + "e1ee82787ad57edfb21702fae6b0081275c3e943", [] ], "xrView_eyes.https.html.ini": [ @@ -391830,7 +392036,7 @@ [] ], "xr_viewport_scale.https.html.ini": [ - "b0115bbcae8f910a1da692b59694ad19f4adf10c", + "42d482229d5da4353bdbf7fa2d5ba233bd43e7a0", [] ] }, @@ -392240,10 +392446,6 @@ "acf89ca6f678bf0b1d7b9d92605ee8554bf65674", [] ], - "setting.html.ini": [ - "2244b2520510040380164b5f6493cd398b797de9", - [] - ], "setting.js": [ "c705e9c40a6dd6d4e733bf60c017e91b07d56e6e", [] @@ -392305,13 +392507,13 @@ "setting-members.js": [ "4c5c8a35ae88ce2d65b1426fdf37230fa261039c", [] - ], - "worker-separate-file.html.ini": [ - "8bae78878cac77bcf069e4c3344787261f209941", - [] ] }, "onerror": { + "exception-in-onerror.html.ini": [ + "17e256848e0ec3017bdaaed10d2db031e1b84eb6", + [] + ], "handled.js": [ "e58fa4a51521ba19ff9ab87bc185984c99018833", [] @@ -392344,11 +392546,7 @@ "704098a6d868549316256c0f92718dd1b0a4d765", [] ] - }, - "self.any.js.ini": [ - "33a7441fc4df465949c5344e5122921e9eed9b12", - [] - ] + } }, "WorkerUtils": { "WindowTimers": { @@ -392356,6 +392554,10 @@ "bd5b7c4071c2a118117073630fcbf888a1464b1b", [] ], + "002.html.ini": [ + "e0db37d5372da9af5e5897b101497227dc43a092", + [] + ], "002.js": [ "a96c08844202e430201d9b9e32f6fef6b36f46ac", [] @@ -392737,6 +392939,10 @@ [] ] }, + "nested_worker_importScripts.worker.js.ini": [ + "cdc8217b6fc48d433bc4b63e8cf23077600c106f", + [] + ], "non-automated": { "infinite-nested.html": [ "3ff3edb35348937ad85a7f4fc8f3cbe9f76ef669", @@ -392852,7 +393058,7 @@ [] ], "003.any.js.ini": [ - "d5372c4caecc9f3bc8cd86e7968b82c118dee5ee", + "d6e9fa7b6f0162c82ad4f65af1c80ae2dcbef85f", [] ], "003.any.sharedworker-expected.txt": [ @@ -393010,7 +393216,7 @@ [] ], "shared-worker-in-data-url-context.window.js.ini": [ - "3e4f61084545096b4a963112b43089ceba427332", + "e0d2ea3da3267420c2716d5c8b4fc826e331f0c1", [] ], "shared-worker-parse-error-failure.html.ini": [ @@ -393490,7 +393696,7 @@ [] ], "abort-after-send.any.js.ini": [ - "e3c68023891b3a82acfde20d5fb3dc438a9d4a7a", + "81d696c38545a00308fd4514f18c5d34f331a77b", [] ], "abort-after-send.any.worker-expected.txt": [ @@ -428066,7 +428272,7 @@ }, "css-animations": { "AnimationEffect-getComputedTiming.tentative.html": [ - "fd2197fcace453760d8ef7613139a978ab8ba0e6", + "46c26fcb99be0f1ad99464c4b18cada09ae63a21", [ null, {} @@ -441604,6 +441810,13 @@ {} ] ], + "scrollable-overflow-zero-one-axis.html": [ + "1986a8d48b98fde17fda826c5bbf9d75d870f45e", + [ + null, + {} + ] + ], "scrollbar-gutter-001.html": [ "4486471cde560c24058fb168f43629f8da833654", [ @@ -450175,7 +450388,7 @@ }, "css-transitions": { "AnimationEffect-getComputedTiming.tentative.html": [ - "32c15f07a96a2a1cf99068e303f17296aa71e96e", + "3be69e8ee1206f6ce0f01eb74e43df7e69f24c5d", [ null, {} @@ -450977,7 +451190,7 @@ ] ], "cssTransformValue.tentative.html": [ - "e313647fa569121c1326217635979f275aab87b7", + "856b9314d852b7134dae6ad52ff391a61d6a0345", [ null, {} @@ -455635,7 +455848,7 @@ ] ], "CSSFontFeatureValuesRule.html": [ - "a267675cbaddab2324f818cd3138d8d52a5b20b1", + "a0ea64a5038a2197713fcb101a5ec077fed33845", [ null, {} @@ -462652,7 +462865,7 @@ ] ], "scrollend-event-for-user-scroll.html": [ - "e203482d57907f65c7a3f8484dd8ad0717b74094", + "5146c5f719a1e4728a2c9aa0bdd54516ac1fe5c1", [ null, { @@ -540070,6 +540283,15 @@ } }, "popovers": { + "light-dismiss-event-ordering.tentative.html": [ + "4bfcecc4b059315c9fd79269f1ce73b3bdb0f2ae", + [ + null, + { + "testdriver": true + } + ] + ], "popover-anchor-display-none.tentative.html": [ "a4285607fd30360545e1364b450443af1cca1fbe", [ @@ -540117,11 +540339,12 @@ ] ], "popover-attribute-basic.tentative.html": [ - "2250d6fabd84bc5e22baae6b5d5533b555f42513", + "1bc32dbace31840ddb7d9f7bf3aedc9169067df2", [ null, { - "testdriver": true + "testdriver": true, + "timeout": "long" } ] ], @@ -554576,7 +554799,7 @@ ] ], "mrow-fallback.html": [ - "6fad205a9e03fcd5bf9630a62befe7f843e5952d", + "3f9d466148c66877e9fe4104f00d2963cbec0380", [ null, {} @@ -568536,6 +568759,27 @@ ] }, "pointerevents": { + "capturing_boundary_event_handler_at_ua_shadowdom.html": [ + "7500277f2251fa300f9af99d52e1f73a943f237c", + [ + "pointerevents/capturing_boundary_event_handler_at_ua_shadowdom.html?mouse", + { + "testdriver": true + } + ], + [ + "pointerevents/capturing_boundary_event_handler_at_ua_shadowdom.html?pen", + { + "testdriver": true + } + ], + [ + "pointerevents/capturing_boundary_event_handler_at_ua_shadowdom.html?touch", + { + "testdriver": true + } + ] + ], "compat": { "pointerevent_compat-mouse-events-when-removing-nodes.html": [ "6d13b0de354a140e472d42bd8b81b408fad52495", @@ -594954,6 +595198,15 @@ } ] ], + "csp-script-src-elem-inline-speculation-rules.tentative.html": [ + "0a3b3b8a70ad1a5416b1014658c949f4d24c3bcf", + [ + null, + { + "timeout": "long" + } + ] + ], "csp-script-src-inline-speculation-rules.tentative.html": [ "923598bd2735623782905e8f9484e357cf16524c", [ @@ -612521,7 +612774,7 @@ ] ], "columnGap.html": [ - "fa85272d49df7932f2a91708b5c54b6a9b15f766", + "43d44152cb510e647c4ab6e11f48785c7e4c0eac", [ null, {} @@ -612556,14 +612809,14 @@ ] ], "lineHeight.html": [ - "16c12a7456a0e0c56015144b7c9331a6b004f195", + "03d45e54c168e5d9b2e6bf39a8d0b40793b73a3d", [ null, {} ] ], "minHeight.html": [ - "7055b53f147a67163180046c42d2b18231d4099d", + "07474bc3f44e067b7c5097a3c30f96fd39842e45", [ null, {} @@ -612598,7 +612851,7 @@ ] ], "perspective.html": [ - "2c2852639aa3fee6422be930195022ce50a8123d", + "f32b4dbad326e780355b1530ac41496cd8602b27", [ null, {} @@ -612612,7 +612865,7 @@ ] ], "rowGap.html": [ - "ad184610ce2a28ffe25dea962cf915c85e0f349b", + "b7dae62f238fb39d886c71bb8df616bcbdb30d8b", [ null, {}
diff --git a/third_party/blink/web_tests/external/wpt/IndexedDB/bindings-inject-values-bypass-chain.html.ini b/third_party/blink/web_tests/external/wpt/IndexedDB/bindings-inject-values-bypass-chain.html.ini new file mode 100644 index 0000000..ab75b1b --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/IndexedDB/bindings-inject-values-bypass-chain.html.ini
@@ -0,0 +1,3 @@ +[bindings-inject-values-bypass-chain.html] + expected: + if product == "chrome": [OK, ERROR]
diff --git a/third_party/blink/web_tests/external/wpt/IndexedDB/idbobjectstore_batchGetAll_largeValue.tentative.any.js.ini b/third_party/blink/web_tests/external/wpt/IndexedDB/idbobjectstore_batchGetAll_largeValue.tentative.any.js.ini index c7c1807..85e7da2f 100644 --- a/third_party/blink/web_tests/external/wpt/IndexedDB/idbobjectstore_batchGetAll_largeValue.tentative.any.js.ini +++ b/third_party/blink/web_tests/external/wpt/IndexedDB/idbobjectstore_batchGetAll_largeValue.tentative.any.js.ini
@@ -1,7 +1,7 @@ [idbobjectstore_batchGetAll_largeValue.tentative.any.html] expected: - if (product == "content_shell") and (os == "win"): [OK, TIMEOUT] - if product == "chrome": OK + if (flag_specific == "") and (os == "linux") and (product == "chrome"): OK + if (flag_specific == "") and (os == "win"): OK TIMEOUT [Get upper/lower excluded] expected: [PASS, TIMEOUT] @@ -17,10 +17,6 @@ [Get bound range] expected: [PASS, TIMEOUT] - [Get bound range with maxCount] - expected: - if product == "chrome": TIMEOUT - [zero maxCount] expected: [TIMEOUT, PASS]
diff --git a/third_party/blink/web_tests/external/wpt/IndexedDB/structured-clone.any.js.ini b/third_party/blink/web_tests/external/wpt/IndexedDB/structured-clone.any.js.ini index 244c916..26dea5c 100644 --- a/third_party/blink/web_tests/external/wpt/IndexedDB/structured-clone.any.js.ini +++ b/third_party/blink/web_tests/external/wpt/IndexedDB/structured-clone.any.js.ini
@@ -26,7 +26,7 @@ [structured-clone.any.html?101-last] expected: - if flag_specific == "disable-layout-ng": [OK, TIMEOUT] + if (flag_specific == "") and (os == "win"): [OK, TIMEOUT] [structured-clone.any.html?21-40]
diff --git a/third_party/blink/web_tests/external/wpt/content-security-policy/embedded-enforcement/subsumption_algorithm-source_list-wildcards.html.ini b/third_party/blink/web_tests/external/wpt/content-security-policy/embedded-enforcement/subsumption_algorithm-source_list-wildcards.html.ini new file mode 100644 index 0000000..bea0cc93 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/content-security-policy/embedded-enforcement/subsumption_algorithm-source_list-wildcards.html.ini
@@ -0,0 +1,3 @@ +[subsumption_algorithm-source_list-wildcards.html] + expected: + if os == "win": [OK, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/content-security-policy/prefetch-src/prefetch-header-allowed.html.ini b/third_party/blink/web_tests/external/wpt/content-security-policy/prefetch-src/prefetch-header-allowed.html.ini deleted file mode 100644 index 126f7265..0000000 --- a/third_party/blink/web_tests/external/wpt/content-security-policy/prefetch-src/prefetch-header-allowed.html.ini +++ /dev/null
@@ -1,3 +0,0 @@ -[prefetch-header-allowed.html] - expected: - if flag_specific == "disable-layout-ng": [OK, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/cookie-store/cookieListItem_attributes.https.any.js.ini b/third_party/blink/web_tests/external/wpt/cookie-store/cookieListItem_attributes.https.any.js.ini index 5f4f70a..4d1e9197 100644 --- a/third_party/blink/web_tests/external/wpt/cookie-store/cookieListItem_attributes.https.any.js.ini +++ b/third_party/blink/web_tests/external/wpt/cookie-store/cookieListItem_attributes.https.any.js.ini
@@ -1,14 +1,11 @@ [cookieListItem_attributes.https.any.serviceworker.html] - [CookieListItem - cookieStore.set with expires set to a timestamp 10 years in the future] - expected: - if os == "win": FAIL - [CookieListItem - cookieStore.set with expires set to a Date 10 years in the future] expected: - if os == "win": FAIL + if os == "win": [PASS, FAIL] - -[cookieListItem_attributes.https.any.html] [CookieListItem - cookieStore.set with expires set to a timestamp 10 years in the future] expected: if os == "win": [PASS, FAIL] + + +[cookieListItem_attributes.https.any.html]
diff --git a/third_party/blink/web_tests/external/wpt/cookie-store/cookieStore_subscribe_arguments.https.any.js.ini b/third_party/blink/web_tests/external/wpt/cookie-store/cookieStore_subscribe_arguments.https.any.js.ini deleted file mode 100644 index e1cf95d..0000000 --- a/third_party/blink/web_tests/external/wpt/cookie-store/cookieStore_subscribe_arguments.https.any.js.ini +++ /dev/null
@@ -1,17 +0,0 @@ -[cookieStore_subscribe_arguments.https.any.html] - expected: - if (flag_specific == "") and (os == "win"): [OK, ERROR] - [CookieStore.unsubscribe is idempotent] - expected: - if (flag_specific == "") and (os == "win"): [PASS, NOTRUN] - - [cookieStore.subscribe with invalid url path in option] - expected: - if (flag_specific == "") and (os == "win"): [PASS, NOTRUN] - - [cookieStore.subscribe is idempotent] - expected: - if (flag_specific == "") and (os == "win"): [PASS, NOTRUN] - - -[cookieStore_subscribe_arguments.https.any.serviceworker.html]
diff --git a/third_party/blink/web_tests/external/wpt/cookies/attributes/domain.sub.html.ini b/third_party/blink/web_tests/external/wpt/cookies/attributes/domain.sub.html.ini index 256efe788..0843509 100644 --- a/third_party/blink/web_tests/external/wpt/cookies/attributes/domain.sub.html.ini +++ b/third_party/blink/web_tests/external/wpt/cookies/attributes/domain.sub.html.ini
@@ -1,7 +1,7 @@ [domain.sub.html] expected: [OK, TIMEOUT] [No cookie returned for domain mismatch (first attribute is a different subdomain and second is bare)] - expected: [PASS, TIMEOUT] + expected: [PASS, NOTRUN] [Cookies with same name, path, and domain (differing only in leading '.') overwrite each other ('.' second)] expected: [PASS, NOTRUN] @@ -31,4 +31,10 @@ expected: [PASS, NOTRUN] [No host cookies returned for host cookies after non-host redirect 3] + expected: [PASS, NOTRUN] + + [Return cookie for domain match (with first domain attribute as suffix of host name and second a bare attribute)] expected: [PASS, TIMEOUT] + + [Cookie returned for bare domain attribute following mismatched domain attribute (after redirect to same-origin page).] + expected: [PASS, NOTRUN]
diff --git a/third_party/blink/web_tests/external/wpt/cookies/samesite/about-blank-subresource.https.html.ini b/third_party/blink/web_tests/external/wpt/cookies/samesite/about-blank-subresource.https.html.ini deleted file mode 100644 index 2e65780..0000000 --- a/third_party/blink/web_tests/external/wpt/cookies/samesite/about-blank-subresource.https.html.ini +++ /dev/null
@@ -1,3 +0,0 @@ -[about-blank-subresource.https.html] - expected: - if os == "win": [OK, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/cookies/samesite/form-post-blank-reload.https.html.ini b/third_party/blink/web_tests/external/wpt/cookies/samesite/form-post-blank-reload.https.html.ini index cff3fc4..474bdcb9 100644 --- a/third_party/blink/web_tests/external/wpt/cookies/samesite/form-post-blank-reload.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/cookies/samesite/form-post-blank-reload.https.html.ini
@@ -1,5 +1,3 @@ [form-post-blank-reload.https.html] - expected: - if product == "chrome": [OK, ERROR] [Reloaded cross-site top-level form POSTs are strictly same-site] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/credential-management/fedcm-cross-origin-policy.https.html.ini b/third_party/blink/web_tests/external/wpt/credential-management/fedcm-cross-origin-policy.https.html.ini index 2fd6329..1fedefe 100644 --- a/third_party/blink/web_tests/external/wpt/credential-management/fedcm-cross-origin-policy.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/credential-management/fedcm-cross-origin-policy.https.html.ini
@@ -1,3 +1,6 @@ [fedcm-cross-origin-policy.https.html] expected: - if product == "chrome": CRASH + if product == "chrome": TIMEOUT + [Test that COEP policy do not apply to FedCM requests] + expected: + if product == "chrome": TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/credential-management/fedcm-iframe.https.html.ini b/third_party/blink/web_tests/external/wpt/credential-management/fedcm-iframe.https.html.ini index 3a40718..2f27a9b 100644 --- a/third_party/blink/web_tests/external/wpt/credential-management/fedcm-iframe.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/credential-management/fedcm-iframe.https.html.ini
@@ -1,3 +1,14 @@ [fedcm-iframe.https.html] expected: - if product == "chrome": CRASH + if product == "chrome": TIMEOUT + [FedCM disabled in 2 level deep nested iframe where middle iframe does not have permission policy] + expected: + if product == "chrome": NOTRUN + + [FedCM disabled in 2 level deep nested iframe where innermost iframe does not have permission policy] + expected: + if product == "chrome": NOTRUN + + [FedCM enabled in 2 level deep nested iframe. FedCM should be enabled regardless of iframe nesting depth] + expected: + if product == "chrome": TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/credential-management/fedcm-network-requests.https.html.ini b/third_party/blink/web_tests/external/wpt/credential-management/fedcm-network-requests.https.html.ini index 2407bd6..14f5926 100644 --- a/third_party/blink/web_tests/external/wpt/credential-management/fedcm-network-requests.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/credential-management/fedcm-network-requests.https.html.ini
@@ -1,5 +1,63 @@ [fedcm-network-requests.https.html] expected: - if (flag_specific == "") and (product == "content_shell") and (os == "linux"): [OK, TIMEOUT] - if (flag_specific == "") and (product == "content_shell") and (os == "win"): TIMEOUT - if (flag_specific == "") and (product == "chrome"): CRASH + if (product == "content_shell") and (os == "win"): [OK, TIMEOUT] + if product == "chrome": TIMEOUT + [nonce is not required in FederatedIdentityProvider.] + expected: + if product == "chrome": NOTRUN + + [Test client_metadata request] + expected: + if product == "chrome": NOTRUN + + [Test that promise is rejected if accounts endpoint redirects] + expected: + if product == "chrome": NOTRUN + + [Get after abort should work] + expected: + if product == "chrome": NOTRUN + + [Reject when clientId is missing] + expected: + if product == "chrome": NOTRUN + + [Reject when clientId is empty] + expected: + if product == "chrome": NOTRUN + + [When there's a pending request, a second `get` call should be rejected. ] + expected: + if product == "chrome": NOTRUN + + [Successfully obtaining token should resolve the promise.] + expected: + if product == "chrome": TIMEOUT + + [Reject when configURL is invalid] + expected: + if product == "chrome": NOTRUN + + [Test that the promise is rejected if the manifest is not in the manifest list] + expected: + if product == "chrome": NOTRUN + + [Test that token endpoint does not follow redirects] + expected: + if product == "chrome": NOTRUN + + [Reject when provider list is empty] + expected: + if product == "chrome": NOTRUN + + [Test the abort signal] + expected: + if product == "chrome": NOTRUN + + [Test that service worker cannot observe fetches performed by FedCM API] + expected: + if product == "chrome": NOTRUN + + [Reject when configURL is missing] + expected: + if product == "chrome": NOTRUN
diff --git a/third_party/blink/web_tests/external/wpt/css/css-anchor-position/anchor-name-inline-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-anchor-position/anchor-name-inline-001.html.ini deleted file mode 100644 index 35bea808..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-anchor-position/anchor-name-inline-001.html.ini +++ /dev/null
@@ -1,12 +0,0 @@ -[anchor-name-inline-001.html] - [.target 1] - expected: - if product == "chrome": [PASS, FAIL] - - [.target 2] - expected: - if product == "chrome": [PASS, FAIL] - - [.target 3] - expected: - if product == "chrome": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/css/css-animations/Element-getAnimations-dynamic-changes.tentative.html.ini b/third_party/blink/web_tests/external/wpt/css/css-animations/Element-getAnimations-dynamic-changes.tentative.html.ini index 0269492..9037285 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-animations/Element-getAnimations-dynamic-changes.tentative.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-animations/Element-getAnimations-dynamic-changes.tentative.html.ini
@@ -10,4 +10,4 @@ [Animations preserve their startTime when changed] expected: - if product == "chrome": FAIL + if product == "chrome": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/image-as-flexitem-size-007v.html.ini b/third_party/blink/web_tests/external/wpt/css/css-flexbox/image-as-flexitem-size-007v.html.ini index c8aa4b5..04842e5 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/image-as-flexitem-size-007v.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/image-as-flexitem-size-007v.html.ini
@@ -7,34 +7,34 @@ expected: if flag_specific == "disable-layout-ng": FAIL - [.flexbox > img 10] - expected: - if flag_specific == "disable-layout-ng": FAIL - - [.flexbox > img 7] - expected: - if flag_specific == "disable-layout-ng": FAIL - [.flexbox > img 1] expected: - if flag_specific == "disable-layout-ng": FAIL + if flag_specific == "disable-layout-ng": [PASS, FAIL] - [.flexbox > img 14] + [.flexbox > img 10] expected: - if flag_specific == "disable-layout-ng": FAIL - - [.flexbox > img 12] - expected: - if flag_specific == "disable-layout-ng": FAIL - - [.flexbox > img 6] - expected: - if flag_specific == "disable-layout-ng": FAIL + if flag_specific == "disable-layout-ng": [PASS, FAIL] [.flexbox > img 9] expected: - if flag_specific == "disable-layout-ng": FAIL + if flag_specific == "disable-layout-ng": [PASS, FAIL] [.flexbox > img 11] expected: - if flag_specific == "disable-layout-ng": FAIL + if flag_specific == "disable-layout-ng": [PASS, FAIL] + + [.flexbox > img 12] + expected: + if flag_specific == "disable-layout-ng": [PASS, FAIL] + + [.flexbox > img 6] + expected: + if flag_specific == "disable-layout-ng": [PASS, FAIL] + + [.flexbox > img 14] + expected: + if flag_specific == "disable-layout-ng": [PASS, FAIL] + + [.flexbox > img 7] + expected: + if flag_specific == "disable-layout-ng": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/css/css-fonts/font-variant-alternates-19-ref.html b/third_party/blink/web_tests/external/wpt/css/css-fonts/font-variant-alternates-19-ref.html new file mode 100644 index 0000000..22c178c6 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-fonts/font-variant-alternates-19-ref.html
@@ -0,0 +1,25 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-variant-alternates: multiple @font-feature-values rules</title> +<link rel="author" title="Dominik Röttsches" href="drott@chromium.org"> +<style> + @font-face { + font-family: fwf; + src: url(support/fonts/FontWithFancyFeatures.otf); + } + .test { + font-family: fwf; + font-size: 2em; + line-height: 1.1; + } +</style> +<body> + +<p>Test passes if the three lines below are identical, with 4 crosses (✗), then +three check marks (✓), then 11 crosses (✗), then 1 checkmark (✓).</p> +<section class="test"> + <p class="ref">BBBBAAABBBBBBBBBBBAB</p> + <p class="ref">BBBBAAABBBBBBBBBBBAB</p> + <p class="ref">BBBBAAABBBBBBBBBBBAB</p> +</section>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-fonts/font-variant-alternates-19.html b/third_party/blink/web_tests/external/wpt/css/css-fonts/font-variant-alternates-19.html new file mode 100644 index 0000000..6e9caf2 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-fonts/font-variant-alternates-19.html
@@ -0,0 +1,57 @@ +<!DOCTYPE html> +<html lang="en"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> +<title>CSS Test: font-variant-alternates: multiple @font-feature-values rules</title> +<link rel="author" title="Dominik Röttsches" href="drott@chromium.org"> +<link rel="match" href="font-variant-alternates-19-ref.html"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-4/#font-variant-alternates-prop"> +<link rel="help" href="https://www.w3.org/TR/css-fonts-4/#font-feature-settings-prop"> +<link rel="help" href="https://drafts.csswg.org/css-fonts/#font-feature-values"> +<meta name="assert" content="If multiple @font-feature-values rules are defined for a given family, the +resulting values definitions are the union of the definitions contained within these rules."> +<style> + @font-face { + font-family: fwf; + src: url(support/fonts/FontWithFancyFeatures.otf); + } + @font-feature-values fwf { + @styleset { + foo: 4; + bar: 2; + } + } + @font-feature-values fwf { + @styleset { + baz: 3; + } + } + @font-feature-values fwf { + @styleset { + foo: 1; /* Overrides foo from first rule. */ + } + @ornaments { + baz: 3; + } + } + .test { + font-family: fwf; + font-size: 2em; + line-height: 1.1; + } + .high { + font-variant-alternates: styleset(foo,bar,baz) ornaments(baz); + } + .low { + font-feature-settings: "hist" off, "salt" 00, "ss01" on, "ss02" on, "ss03" on, + "cv01" off, "cv02" off, "cv03" off, "swsh" 00, "cswh" 00, "ornm" 03, "nalt" 00; + } +</style> +<body> + +<p>Test passes if the three lines below are identical, with 4 crosses (✗), then +three check marks (✓), then 11 crosses (✗), then 1 checkmark (✓).</p> +<section class="test"> + <p class="high">Xnophijklmqrstuvwxyz</p> + <p class="low">Xnophijklmqrstuvwxyz</p> + <p class="ref">BBBBAAABBBBBBBBBBBAB</p> +</section>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-block-position-drop-under-ruby.html.ini b/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-block-position-drop-under-ruby.html.ini index c638dc79..4890148 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-block-position-drop-under-ruby.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-block-position-drop-under-ruby.html.ini
@@ -1,4 +1,4 @@ [initial-letter-block-position-drop-under-ruby.html] expected: - if (product == "content_shell") and (flag_specific == "disable-layout-ng"): FAIL - if product == "chrome": FAIL + if (flag_specific == "") and (product == "chrome"): [PASS, FAIL] + if flag_specific == "disable-layout-ng": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-block-position-margins-rtl.html.ini b/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-block-position-margins-rtl.html.ini index 7dd454cc..a084bdb3 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-block-position-margins-rtl.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-block-position-margins-rtl.html.ini
@@ -1,4 +1,4 @@ [initial-letter-block-position-margins-rtl.html] expected: - if (flag_specific == "") and (product == "chrome"): [PASS, FAIL] - if flag_specific == "disable-layout-ng": FAIL + if (product == "content_shell") and (flag_specific == "disable-layout-ng"): FAIL + if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-block-position-raise-under-ruby-tall.html.ini b/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-block-position-raise-under-ruby-tall.html.ini index 23cf7f0..b9fce01 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-block-position-raise-under-ruby-tall.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-block-position-raise-under-ruby-tall.html.ini
@@ -1,4 +1,4 @@ [initial-letter-block-position-raise-under-ruby-tall.html] expected: - if (product == "content_shell") and (flag_specific == "disable-layout-ng"): FAIL - if product == "chrome": FAIL + if (flag_specific == "") and (product == "chrome"): [PASS, FAIL] + if flag_specific == "disable-layout-ng": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-drop-initial-rtl.html.ini b/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-drop-initial-rtl.html.ini index d6e8699..04516eb 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-drop-initial-rtl.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-drop-initial-rtl.html.ini
@@ -1,4 +1,4 @@ [initial-letter-drop-initial-rtl.html] expected: - if (flag_specific == "") and (product == "chrome"): [PASS, FAIL] - if flag_specific == "disable-layout-ng": FAIL + if (product == "content_shell") and (flag_specific == "disable-layout-ng"): FAIL + if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-float-001-vlr.html.ini b/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-float-001-vlr.html.ini index c90a4c2..815486cd8 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-float-001-vlr.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-float-001-vlr.html.ini
@@ -1,4 +1,4 @@ [initial-letter-float-001-vlr.html] expected: - if (flag_specific == "") and (product == "chrome"): [PASS, FAIL] - if flag_specific == "disable-layout-ng": FAIL + if (product == "content_shell") and (flag_specific == "disable-layout-ng"): FAIL + if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-float-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-float-001.html.ini index 263a421..3d20a75e 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-float-001.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-float-001.html.ini
@@ -1,4 +1,4 @@ [initial-letter-float-001.html] expected: - if (flag_specific == "") and (product == "chrome"): [PASS, FAIL] - if flag_specific == "disable-layout-ng": FAIL + if (product == "content_shell") and (flag_specific == "disable-layout-ng"): FAIL + if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-float-002.html.ini b/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-float-002.html.ini index eeb0e18..2e8b17a 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-float-002.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-float-002.html.ini
@@ -1,4 +1,4 @@ [initial-letter-float-002.html] expected: - if (flag_specific == "") and (product == "chrome"): [PASS, FAIL] - if flag_specific == "disable-layout-ng": FAIL + if (product == "content_shell") and (flag_specific == "disable-layout-ng"): FAIL + if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-float-003.html.ini b/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-float-003.html.ini index f6a18f2..d2c4685 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-float-003.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-float-003.html.ini
@@ -1,3 +1,4 @@ [initial-letter-float-003.html] expected: - if flag_specific == "disable-layout-ng": FAIL + if (os == "linux") and (product == "content_shell") and (flag_specific == "disable-layout-ng"): FAIL + if (os == "linux") and (product == "chrome"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-indentation-rtl.html.ini b/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-indentation-rtl.html.ini index 776a6e96..94f8322 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-indentation-rtl.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-indentation-rtl.html.ini
@@ -1,4 +1,4 @@ [initial-letter-indentation-rtl.html] expected: - if (product == "content_shell") and (flag_specific == "disable-layout-ng"): FAIL - if product == "chrome": FAIL + if (flag_specific == "") and (product == "chrome"): [PASS, FAIL] + if flag_specific == "disable-layout-ng": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-short-para-initial-letter-clears.html.ini b/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-short-para-initial-letter-clears.html.ini index 2634a62..cbde01eb 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-short-para-initial-letter-clears.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-short-para-initial-letter-clears.html.ini
@@ -1,4 +1,4 @@ [initial-letter-short-para-initial-letter-clears.html] expected: - if (product == "content_shell") and (flag_specific == "disable-layout-ng"): FAIL - if product == "chrome": [PASS, FAIL] + if (flag_specific == "") and (product == "chrome"): [PASS, FAIL] + if flag_specific == "disable-layout-ng": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-short-para-initial-letter-wraps.html.ini b/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-short-para-initial-letter-wraps.html.ini index d49d2e5..09a887f3 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-short-para-initial-letter-wraps.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-inline/initial-letter/initial-letter-short-para-initial-letter-wraps.html.ini
@@ -1,4 +1,4 @@ [initial-letter-short-para-initial-letter-wraps.html] expected: - if (product == "content_shell") and (flag_specific == "disable-layout-ng"): FAIL - if product == "chrome": FAIL + if (flag_specific == "") and (product == "chrome"): [PASS, FAIL] + if flag_specific == "disable-layout-ng": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-layout-api/fallback-intrinsic-sizes/constructor-error.https.html.ini b/third_party/blink/web_tests/external/wpt/css/css-layout-api/fallback-intrinsic-sizes/constructor-error.https.html.ini deleted file mode 100644 index 3ab53016..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-layout-api/fallback-intrinsic-sizes/constructor-error.https.html.ini +++ /dev/null
@@ -1,3 +0,0 @@ -[constructor-error.https.html] - expected: - if product == "chrome": ERROR
diff --git a/third_party/blink/web_tests/external/wpt/css/css-layout-api/fallback-layout/constructor-error.https.html.ini b/third_party/blink/web_tests/external/wpt/css/css-layout-api/fallback-layout/constructor-error.https.html.ini index ec85dd0..3ab53016 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-layout-api/fallback-layout/constructor-error.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-layout-api/fallback-layout/constructor-error.https.html.ini
@@ -1,3 +1,3 @@ [constructor-error.https.html] expected: - if product == "chrome": [PASS, ERROR] + if product == "chrome": ERROR
diff --git a/third_party/blink/web_tests/external/wpt/css/css-masking/clip-path/clip-path-inline-002.html.ini b/third_party/blink/web_tests/external/wpt/css/css-masking/clip-path/clip-path-inline-002.html.ini index a2eabbf2..84724ce 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-masking/clip-path/clip-path-inline-002.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-masking/clip-path/clip-path-inline-002.html.ini
@@ -1,3 +1,3 @@ [clip-path-inline-002.html] expected: - if product == "chrome": [PASS, FAIL] + if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/parsing/columns-valid-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-multicol/parsing/columns-valid-expected.txt deleted file mode 100644 index 6afe2f9..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-multicol/parsing/columns-valid-expected.txt +++ /dev/null
@@ -1,18 +0,0 @@ -This is a testharness.js-based test. -PASS e.style['columns'] = "auto 3" should set the property value -PASS e.style['columns'] = "auto 10em" should set the property value -PASS e.style['columns'] = "3 auto" should set the property value -PASS e.style['columns'] = "10em auto" should set the property value -PASS e.style['columns'] = "2 10px" should set the property value -PASS e.style['columns'] = "10px 2" should set the property value -PASS e.style['columns'] = "auto" should set the property value -PASS e.style['columns'] = "auto auto" should set the property value -PASS e.style['columns'] = "7" should set the property value -PASS e.style['columns'] = "7em" should set the property value -PASS e.style['columns'] = "0 1" should set the property value -PASS e.style['columns'] = "1 0" should set the property value -PASS e.style['columns'] = "0px 1" should set the property value -PASS e.style['columns'] = "initial" should set the property value -PASS e.style['columns'] = "inherit" should set the property value -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/external/wpt/css/css-overflow/scrollable-overflow-zero-one-axis.html b/third_party/blink/web_tests/external/wpt/css/css-overflow/scrollable-overflow-zero-one-axis.html new file mode 100644 index 0000000..1986a8d --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-overflow/scrollable-overflow-zero-one-axis.html
@@ -0,0 +1,59 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>CSS Overflow: Scroll Length Calculated Correctly When One Axis Has Zero Length</title> +<link rel="author" title="David Shin" href="mailto:dshin@mozilla.com"> +<link rel="author" title="Mozilla" href="http://www.mozilla.org/"> +<link rel="help" href="https://drafts.csswg.org/css-overflow-3/#scrollable"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1800907"> +<style> +.scroll { + overflow: scroll; +} + +.zero-h { + width: 100px; + height: 0px; +} + +.zero-w { + width: 0; + height: 100px; +} + +.flex-row { + display: flex; +} + +.flex-col { + display: flex; + flex-direction: column; +} + +.grid { + display: grid; +} +</style> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/check-layout-th.js"></script> +<body onload="checkLayout('.scroll')"> +<div class="scroll zero-h" data-expected-scroll-height="100"> + <div class="zero-w"></div> +</div> +<div class="scroll zero-w" data-expected-scroll-width="100"> + <div class="zero-h"></div> +</div> + +<div class="scroll zero-h flex-row" data-expected-scroll-height="100"> + <div class="zero-w"></div> +</div> +<div class="scroll zero-w flex-col" data-expected-scroll-width="100"> + <div class="zero-h"></div> +</div> + +<div class="scroll zero-h grid" data-expected-scroll-height="100"> + <div class="zero-w"></div> +</div> +<div class="scroll zero-w grid" data-expected-scroll-width="100"> + <div class="zero-h"></div> +</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-overflow/scrollable-overflow-zero-one-axis.html.ini b/third_party/blink/web_tests/external/wpt/css/css-overflow/scrollable-overflow-zero-one-axis.html.ini new file mode 100644 index 0000000..9ee49f2 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-overflow/scrollable-overflow-zero-one-axis.html.ini
@@ -0,0 +1,16 @@ +[scrollable-overflow-zero-one-axis.html] + [.scroll 2] + expected: + if flag_specific == "disable-layout-ng": FAIL + + [.scroll 4] + expected: + if flag_specific == "disable-layout-ng": FAIL + + [.scroll 5] + expected: + if flag_specific == "disable-layout-ng": FAIL + + [.scroll 6] + expected: + if flag_specific == "disable-layout-ng": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-paint-api/parse-input-arguments-008.https.html.ini b/third_party/blink/web_tests/external/wpt/css/css-paint-api/parse-input-arguments-008.https.html.ini deleted file mode 100644 index aadef1e..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-paint-api/parse-input-arguments-008.https.html.ini +++ /dev/null
@@ -1,3 +0,0 @@ -[parse-input-arguments-008.https.html] - expected: - if os == "win": TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/css/css-paint-api/parse-input-arguments-022.https.html.ini b/third_party/blink/web_tests/external/wpt/css/css-paint-api/parse-input-arguments-022.https.html.ini new file mode 100644 index 0000000..6ba66bd --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-paint-api/parse-input-arguments-022.https.html.ini
@@ -0,0 +1,3 @@ +[parse-input-arguments-022.https.html] + expected: + if os == "win": [PASS, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ruby/ruby-text-combine-upright-001b.html.ini b/third_party/blink/web_tests/external/wpt/css/css-ruby/ruby-text-combine-upright-001b.html.ini index 654ce46..a46dccb 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-ruby/ruby-text-combine-upright-001b.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-ruby/ruby-text-combine-upright-001b.html.ini
@@ -1,3 +1,3 @@ [ruby-text-combine-upright-001b.html] expected: - if product == "chrome": FAIL + if product == "chrome": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/shape-image/shape-image-004.html.ini b/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/shape-image/shape-image-004.html.ini new file mode 100644 index 0000000..6c9a22f --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-shapes/shape-outside/shape-image/shape-image-004.html.ini
@@ -0,0 +1,3 @@ +[shape-image-004.html] + expected: + if os == "win": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text/text-transform/text-transform-capitalize-007.html.ini b/third_party/blink/web_tests/external/wpt/css/css-text/text-transform/text-transform-capitalize-007.html.ini index dd72f428..4dd4f07 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-text/text-transform/text-transform-capitalize-007.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-text/text-transform/text-transform-capitalize-007.html.ini
@@ -1,3 +1,3 @@ [text-transform-capitalize-007.html] expected: - if product == "chrome": [PASS, FAIL] + if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-transitions/transitionevent-interface.html.ini b/third_party/blink/web_tests/external/wpt/css/css-transitions/transitionevent-interface.html.ini new file mode 100644 index 0000000..b2fa44c3c --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-transitions/transitionevent-interface.html.ini
@@ -0,0 +1,3 @@ +[transitionevent-interface.html] + expected: + if os == "win": [OK, CRASH]
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative-expected.txt new file mode 100644 index 0000000..5828ede --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative-expected.txt
@@ -0,0 +1,25 @@ +This is a testharness.js-based test. +PASS CSSTranslate with 2 arguments serializes correctly +PASS CSSTranslate with 3 arguments serializes correctly +PASS CSSScale with 2 arguments serializes correctly +PASS CSSScale with 3 arguments serializes correctly +PASS CSSRotate with 1 argument serializes correctly +PASS CSSRotate with 4 arguments serializes correctly +PASS CSSSkew serializes correctly +PASS CSSSkew with Y which is 0 value serializes correctly +PASS CSSSkewX serializes correctly +PASS CSSSkewY serializes correctly +PASS CSSPerspective serializes correctly +PASS CSSPerspective with negative length serializes correctly +PASS CSSPerspective with none as string serializes correctly +PASS CSSPerspective with none as CSSKeyword serializes correctly +PASS CSSTransformValue with a single transform serializes correctly +PASS CSSTransformValue with multiple transforms serializes correctly +PASS CSSTransformValue containing CSSMathValues serializes correctly +PASS CSSMathInvert with 0 parameter serializes correctly +FAIL CSSMathInvert with 0 parameter and nested serializes correctly assert_equals: expected "rotate3d(0, 0, 0, calc(1deg / 0))" but got "rotate3d(0, 0, 0, calc(1deg * (1 / 0)))" +PASS CSSMatrixComponent with 6 elements serializes correctly +PASS CSSMatrixComponent with 16 elements serializes correctly +PASS CSSTransformValue with updated is2D serializes as 2D transforms +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html index e313647..856b931 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html
@@ -129,7 +129,7 @@ new CSSUnitValue(0, 'number'))) ) ]), - cssText:'rotate3d(0, 0, 0, calc(1deg * (1 / 0)))', + cssText:'rotate3d(0, 0, 0, calc(1deg / 0))', desc: 'CSSMathInvert with 0 parameter and nested' }, {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html.ini new file mode 100644 index 0000000..91d72b71 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html.ini
@@ -0,0 +1,3 @@ +[cssTransformValue.tentative.html] + [CSSMathInvert with 0 parameter and nested serializes correctly] + expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/accent-color-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/accent-color-expected.txt index 08f9287..f46a4cc 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/accent-color-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/accent-color-expected.txt
@@ -1,8 +1,11 @@ This is a testharness.js-based test. -PASS Can set 'accent-color' to CSS-wide keywords -PASS Can set 'accent-color' to var() references -PASS Can set 'accent-color' to the 'currentcolor' keyword -FAIL Can set 'accent-color' to the 'auto' keyword assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSKeywordValue]" +PASS Can set 'accent-color' to CSS-wide keywords: initial +PASS Can set 'accent-color' to CSS-wide keywords: inherit +PASS Can set 'accent-color' to CSS-wide keywords: unset +PASS Can set 'accent-color' to CSS-wide keywords: revert +PASS Can set 'accent-color' to var() references: var(--A) +PASS Can set 'accent-color' to the 'currentcolor' keyword: currentcolor +FAIL Can set 'accent-color' to the 'auto' keyword: auto assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSKeywordValue]" PASS Setting 'accent-color' to a length throws TypeError PASS Setting 'accent-color' to a percent throws TypeError PASS Setting 'accent-color' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/accent-color.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/accent-color.html.ini index c44420d..86a93303 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/accent-color.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/accent-color.html.ini
@@ -1,3 +1,3 @@ [accent-color.html] - [Can set 'accent-color' to the 'auto' keyword] + [Can set 'accent-color' to the 'auto' keyword: auto] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/alignment-baseline-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/alignment-baseline-expected.txt index a30a92f..2613769a 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/alignment-baseline-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/alignment-baseline-expected.txt
@@ -1,17 +1,20 @@ This is a testharness.js-based test. -PASS Can set 'alignment-baseline' to CSS-wide keywords -PASS Can set 'alignment-baseline' to var() references -PASS Can set 'alignment-baseline' to the 'baseline' keyword -FAIL Can set 'alignment-baseline' to the 'text-bottom' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -PASS Can set 'alignment-baseline' to the 'alphabetic' keyword -PASS Can set 'alignment-baseline' to the 'ideographic' keyword -PASS Can set 'alignment-baseline' to the 'middle' keyword -PASS Can set 'alignment-baseline' to the 'central' keyword -PASS Can set 'alignment-baseline' to the 'mathematical' keyword -FAIL Can set 'alignment-baseline' to the 'text-top' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'alignment-baseline' to the 'bottom' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'alignment-baseline' to the 'center' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'alignment-baseline' to the 'top' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'alignment-baseline' to CSS-wide keywords: initial +PASS Can set 'alignment-baseline' to CSS-wide keywords: inherit +PASS Can set 'alignment-baseline' to CSS-wide keywords: unset +PASS Can set 'alignment-baseline' to CSS-wide keywords: revert +PASS Can set 'alignment-baseline' to var() references: var(--A) +PASS Can set 'alignment-baseline' to the 'baseline' keyword: baseline +FAIL Can set 'alignment-baseline' to the 'text-bottom' keyword: text-bottom Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'alignment-baseline' to the 'alphabetic' keyword: alphabetic +PASS Can set 'alignment-baseline' to the 'ideographic' keyword: ideographic +PASS Can set 'alignment-baseline' to the 'middle' keyword: middle +PASS Can set 'alignment-baseline' to the 'central' keyword: central +PASS Can set 'alignment-baseline' to the 'mathematical' keyword: mathematical +FAIL Can set 'alignment-baseline' to the 'text-top' keyword: text-top Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'alignment-baseline' to the 'bottom' keyword: bottom Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'alignment-baseline' to the 'center' keyword: center Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'alignment-baseline' to the 'top' keyword: top Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'alignment-baseline' to a length throws TypeError PASS Setting 'alignment-baseline' to a percent throws TypeError PASS Setting 'alignment-baseline' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/alignment-baseline.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/alignment-baseline.html.ini index 80987e6..a221448 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/alignment-baseline.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/alignment-baseline.html.ini
@@ -1,15 +1,15 @@ [alignment-baseline.html] - [Can set 'alignment-baseline' to the 'text-bottom' keyword] + [Can set 'alignment-baseline' to the 'center' keyword: center] expected: FAIL - [Can set 'alignment-baseline' to the 'text-top' keyword] + [Can set 'alignment-baseline' to the 'top' keyword: top] expected: FAIL - [Can set 'alignment-baseline' to the 'bottom' keyword] + [Can set 'alignment-baseline' to the 'text-bottom' keyword: text-bottom] expected: FAIL - [Can set 'alignment-baseline' to the 'center' keyword] + [Can set 'alignment-baseline' to the 'bottom' keyword: bottom] expected: FAIL - [Can set 'alignment-baseline' to the 'top' keyword] + [Can set 'alignment-baseline' to the 'text-top' keyword: text-top] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/all-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/all-expected.txt index 6c675b7..3e210eb 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/all-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/all-expected.txt
@@ -1,6 +1,9 @@ This is a testharness.js-based test. -FAIL Can set 'all' to CSS-wide keywords assert_not_equals: Computed value must not be null got disallowed value null -FAIL Can set 'all' to var() references assert_not_equals: Computed value must not be null got disallowed value null +FAIL Can set 'all' to CSS-wide keywords: initial assert_not_equals: Computed value must not be null got disallowed value null +FAIL Can set 'all' to CSS-wide keywords: inherit assert_not_equals: Computed value must not be null got disallowed value null +FAIL Can set 'all' to CSS-wide keywords: unset assert_not_equals: Computed value must not be null got disallowed value null +FAIL Can set 'all' to CSS-wide keywords: revert assert_not_equals: Computed value must not be null got disallowed value null +FAIL Can set 'all' to var() references: var(--A) assert_not_equals: Computed value must not be null got disallowed value null PASS Setting 'all' to a length throws TypeError PASS Setting 'all' to a percent throws TypeError PASS Setting 'all' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/all.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/all.html.ini index 71a129a..0fa6917 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/all.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/all.html.ini
@@ -1,6 +1,15 @@ [all.html] - [Can set 'all' to CSS-wide keywords] + [Can set 'all' to CSS-wide keywords: unset] expected: FAIL - [Can set 'all' to var() references] + [Can set 'all' to var() references: var(--A)] + expected: FAIL + + [Can set 'all' to CSS-wide keywords: revert] + expected: FAIL + + [Can set 'all' to CSS-wide keywords: initial] + expected: FAIL + + [Can set 'all' to CSS-wide keywords: inherit] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/animation-delay-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/animation-delay-expected.txt index cc7dbff..de1a138b 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/animation-delay-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/animation-delay-expected.txt
@@ -1,7 +1,13 @@ This is a testharness.js-based test. -FAIL Can set 'animation-delay' to CSS-wide keywords assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" -FAIL Can set 'animation-delay' to var() references assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" -FAIL Can set 'animation-delay' to a time Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'animation-delay' to CSS-wide keywords: initial assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'animation-delay' to CSS-wide keywords: inherit assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'animation-delay' to CSS-wide keywords: unset assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'animation-delay' to CSS-wide keywords: revert assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'animation-delay' to var() references: var(--A) assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" +FAIL Can set 'animation-delay' to a time: 0s Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'animation-delay' to a time: -3.14ms Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'animation-delay' to a time: 3.14s Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'animation-delay' to a time: calc(0s + 0ms) Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'animation-delay' to a length throws TypeError PASS Setting 'animation-delay' to a percent throws TypeError PASS Setting 'animation-delay' to an angle throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/animation-delay.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/animation-delay.html.ini index cfa7cd26..2a90a92 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/animation-delay.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/animation-delay.html.ini
@@ -1,9 +1,27 @@ [animation-delay.html] - [Can set 'animation-delay' to CSS-wide keywords] + [Can set 'animation-delay' to CSS-wide keywords: inherit] expected: FAIL - [Can set 'animation-delay' to var() references] + [Can set 'animation-delay' to a time: 0s] expected: FAIL - [Can set 'animation-delay' to a time] + [Can set 'animation-delay' to var() references: var(--A)] + expected: FAIL + + [Can set 'animation-delay' to CSS-wide keywords: initial] + expected: FAIL + + [Can set 'animation-delay' to a time: 3.14s] + expected: FAIL + + [Can set 'animation-delay' to CSS-wide keywords: unset] + expected: FAIL + + [Can set 'animation-delay' to CSS-wide keywords: revert] + expected: FAIL + + [Can set 'animation-delay' to a time: calc(0s + 0ms)] + expected: FAIL + + [Can set 'animation-delay' to a time: -3.14ms] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/animation-name-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/animation-name-expected.txt index 2982aec..1f2029d 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/animation-name-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/animation-name-expected.txt
@@ -1,8 +1,11 @@ This is a testharness.js-based test. -PASS Can set 'animation-name' to CSS-wide keywords -PASS Can set 'animation-name' to var() references -PASS Can set 'animation-name' to the 'none' keyword -FAIL Can set 'animation-name' to the 'custom-ident' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'animation-name' to CSS-wide keywords: initial +PASS Can set 'animation-name' to CSS-wide keywords: inherit +PASS Can set 'animation-name' to CSS-wide keywords: unset +PASS Can set 'animation-name' to CSS-wide keywords: revert +PASS Can set 'animation-name' to var() references: var(--A) +PASS Can set 'animation-name' to the 'none' keyword: none +FAIL Can set 'animation-name' to the 'custom-ident' keyword: custom-ident Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'animation-name' to a length throws TypeError PASS Setting 'animation-name' to a percent throws TypeError PASS Setting 'animation-name' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/animation-name.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/animation-name.html.ini index 349fb06f..30eef910 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/animation-name.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/animation-name.html.ini
@@ -1,6 +1,6 @@ [animation-name.html] - [Can set 'animation-name' to the 'custom-ident' keyword] + ['animation-name' does not supported '"foo"'] expected: FAIL - ['animation-name' does not supported '"foo"'] + [Can set 'animation-name' to the 'custom-ident' keyword: custom-ident] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/background-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/background-expected.txt index fdf2474..e3d235f 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/background-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/background-expected.txt
@@ -1,6 +1,9 @@ This is a testharness.js-based test. -FAIL Can set 'background' to CSS-wide keywords assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" -FAIL Can set 'background' to var() references assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" +FAIL Can set 'background' to CSS-wide keywords: initial assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'background' to CSS-wide keywords: inherit assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'background' to CSS-wide keywords: unset assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'background' to CSS-wide keywords: revert assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'background' to var() references: var(--A) assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" PASS Setting 'background' to a length throws TypeError PASS Setting 'background' to a percent throws TypeError PASS Setting 'background' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/background-position-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/background-position-expected.txt index ce6027b..56c3c648 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/background-position-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/background-position-expected.txt
@@ -1,6 +1,9 @@ This is a testharness.js-based test. Harness Error. harness_status.status = 1 , harness_status.message = Uncaught Error: '<position>' is not a valid CSS component -FAIL Can set 'background-position' to CSS-wide keywords assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" -FAIL Can set 'background-position' to var() references assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" +FAIL Can set 'background-position' to CSS-wide keywords: initial assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'background-position' to CSS-wide keywords: inherit assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'background-position' to CSS-wide keywords: unset assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'background-position' to CSS-wide keywords: revert assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'background-position' to var() references: var(--A) assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/background-position.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/background-position.html.ini index 33832ac7..e7e4a4c 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/background-position.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/background-position.html.ini
@@ -1,7 +1,16 @@ [background-position.html] expected: ERROR - [Can set 'background-position' to CSS-wide keywords] + [Can set 'background-position' to var() references: var(--A)] expected: FAIL - [Can set 'background-position' to var() references] + [Can set 'background-position' to CSS-wide keywords: initial] + expected: FAIL + + [Can set 'background-position' to CSS-wide keywords: inherit] + expected: FAIL + + [Can set 'background-position' to CSS-wide keywords: unset] + expected: FAIL + + [Can set 'background-position' to CSS-wide keywords: revert] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/background-repeat-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/background-repeat-expected.txt index 2ac07b7..a2153be 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/background-repeat-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/background-repeat-expected.txt
@@ -1,12 +1,15 @@ This is a testharness.js-based test. -FAIL Can set 'background-position' to CSS-wide keywords assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" -FAIL Can set 'background-position' to var() references assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" -FAIL Can set 'background-position' to the 'repeat-x' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'background-position' to the 'repeat-y' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'background-position' to the 'repeat' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'background-position' to the 'space' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'background-position' to the 'round' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'background-position' to the 'no-repeat' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'background-position' to CSS-wide keywords: initial assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'background-position' to CSS-wide keywords: inherit assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'background-position' to CSS-wide keywords: unset assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'background-position' to CSS-wide keywords: revert assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'background-position' to var() references: var(--A) assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" +FAIL Can set 'background-position' to the 'repeat-x' keyword: repeat-x Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'background-position' to the 'repeat-y' keyword: repeat-y Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'background-position' to the 'repeat' keyword: repeat Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'background-position' to the 'space' keyword: space Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'background-position' to the 'round' keyword: round Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'background-position' to the 'no-repeat' keyword: no-repeat Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'background-position' to a length throws TypeError PASS Setting 'background-position' to a percent throws TypeError PASS Setting 'background-position' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/background-repeat.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/background-repeat.html.ini index 9b3fd0c4..f74b029 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/background-repeat.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/background-repeat.html.ini
@@ -1,27 +1,36 @@ [background-repeat.html] - [Can set 'background-position' to CSS-wide keywords] - expected: FAIL - - [Can set 'background-position' to var() references] - expected: FAIL - - [Can set 'background-position' to the 'repeat-x' keyword] - expected: FAIL - - [Can set 'background-position' to the 'repeat-y' keyword] - expected: FAIL - - [Can set 'background-position' to the 'repeat' keyword] - expected: FAIL - - [Can set 'background-position' to the 'space' keyword] - expected: FAIL - - [Can set 'background-position' to the 'round' keyword] - expected: FAIL - - [Can set 'background-position' to the 'no-repeat' keyword] - expected: FAIL - ['background-position' does not supported 'space repeat'] expected: FAIL + + [Can set 'background-position' to var() references: var(--A)] + expected: FAIL + + [Can set 'background-position' to CSS-wide keywords: revert] + expected: FAIL + + [Can set 'background-position' to the 'repeat-y' keyword: repeat-y] + expected: FAIL + + [Can set 'background-position' to the 'no-repeat' keyword: no-repeat] + expected: FAIL + + [Can set 'background-position' to the 'round' keyword: round] + expected: FAIL + + [Can set 'background-position' to the 'repeat' keyword: repeat] + expected: FAIL + + [Can set 'background-position' to CSS-wide keywords: inherit] + expected: FAIL + + [Can set 'background-position' to CSS-wide keywords: unset] + expected: FAIL + + [Can set 'background-position' to the 'space' keyword: space] + expected: FAIL + + [Can set 'background-position' to CSS-wide keywords: initial] + expected: FAIL + + [Can set 'background-position' to the 'repeat-x' keyword: repeat-x] + expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/background.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/background.html.ini index 94dd7703..fa11815c 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/background.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/background.html.ini
@@ -1,6 +1,15 @@ [background.html] - [Can set 'background' to CSS-wide keywords] + [Can set 'background' to CSS-wide keywords: initial] expected: FAIL - [Can set 'background' to var() references] + [Can set 'background' to CSS-wide keywords: inherit] + expected: FAIL + + [Can set 'background' to CSS-wide keywords: revert] + expected: FAIL + + [Can set 'background' to var() references: var(--A)] + expected: FAIL + + [Can set 'background' to CSS-wide keywords: unset] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/border-radius-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/border-radius-expected.txt index 7c95035..bf04688 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/border-radius-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/border-radius-expected.txt
@@ -1,38 +1,75 @@ This is a testharness.js-based test. -PASS Can set 'border-top-left-radius' to CSS-wide keywords -PASS Can set 'border-top-left-radius' to var() references -FAIL Can set 'border-top-left-radius' to a length assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" -FAIL Can set 'border-top-left-radius' to a percent assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +Found 80 tests; 48 PASS, 32 FAIL, 0 TIMEOUT, 0 NOTRUN. +PASS Can set 'border-top-left-radius' to CSS-wide keywords: initial +PASS Can set 'border-top-left-radius' to CSS-wide keywords: inherit +PASS Can set 'border-top-left-radius' to CSS-wide keywords: unset +PASS Can set 'border-top-left-radius' to CSS-wide keywords: revert +PASS Can set 'border-top-left-radius' to var() references: var(--A) +FAIL Can set 'border-top-left-radius' to a length: 0px assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +FAIL Can set 'border-top-left-radius' to a length: -3.14em assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +FAIL Can set 'border-top-left-radius' to a length: 3.14cm assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +FAIL Can set 'border-top-left-radius' to a length: calc(0px + 0em) assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +FAIL Can set 'border-top-left-radius' to a percent: 0% assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +FAIL Can set 'border-top-left-radius' to a percent: -3.14% assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +FAIL Can set 'border-top-left-radius' to a percent: 3.14% assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +FAIL Can set 'border-top-left-radius' to a percent: calc(0% + 0%) assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" PASS Setting 'border-top-left-radius' to a time throws TypeError PASS Setting 'border-top-left-radius' to an angle throws TypeError PASS Setting 'border-top-left-radius' to a flexible length throws TypeError PASS Setting 'border-top-left-radius' to a number throws TypeError PASS Setting 'border-top-left-radius' to a URL throws TypeError PASS Setting 'border-top-left-radius' to a transform throws TypeError -PASS Can set 'border-top-right-radius' to CSS-wide keywords -PASS Can set 'border-top-right-radius' to var() references -FAIL Can set 'border-top-right-radius' to a length assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" -FAIL Can set 'border-top-right-radius' to a percent assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +PASS Can set 'border-top-right-radius' to CSS-wide keywords: initial +PASS Can set 'border-top-right-radius' to CSS-wide keywords: inherit +PASS Can set 'border-top-right-radius' to CSS-wide keywords: unset +PASS Can set 'border-top-right-radius' to CSS-wide keywords: revert +PASS Can set 'border-top-right-radius' to var() references: var(--A) +FAIL Can set 'border-top-right-radius' to a length: 0px assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +FAIL Can set 'border-top-right-radius' to a length: -3.14em assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +FAIL Can set 'border-top-right-radius' to a length: 3.14cm assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +FAIL Can set 'border-top-right-radius' to a length: calc(0px + 0em) assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +FAIL Can set 'border-top-right-radius' to a percent: 0% assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +FAIL Can set 'border-top-right-radius' to a percent: -3.14% assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +FAIL Can set 'border-top-right-radius' to a percent: 3.14% assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +FAIL Can set 'border-top-right-radius' to a percent: calc(0% + 0%) assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" PASS Setting 'border-top-right-radius' to a time throws TypeError PASS Setting 'border-top-right-radius' to an angle throws TypeError PASS Setting 'border-top-right-radius' to a flexible length throws TypeError PASS Setting 'border-top-right-radius' to a number throws TypeError PASS Setting 'border-top-right-radius' to a URL throws TypeError PASS Setting 'border-top-right-radius' to a transform throws TypeError -PASS Can set 'border-bottom-left-radius' to CSS-wide keywords -PASS Can set 'border-bottom-left-radius' to var() references -FAIL Can set 'border-bottom-left-radius' to a length assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" -FAIL Can set 'border-bottom-left-radius' to a percent assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +PASS Can set 'border-bottom-left-radius' to CSS-wide keywords: initial +PASS Can set 'border-bottom-left-radius' to CSS-wide keywords: inherit +PASS Can set 'border-bottom-left-radius' to CSS-wide keywords: unset +PASS Can set 'border-bottom-left-radius' to CSS-wide keywords: revert +PASS Can set 'border-bottom-left-radius' to var() references: var(--A) +FAIL Can set 'border-bottom-left-radius' to a length: 0px assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +FAIL Can set 'border-bottom-left-radius' to a length: -3.14em assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +FAIL Can set 'border-bottom-left-radius' to a length: 3.14cm assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +FAIL Can set 'border-bottom-left-radius' to a length: calc(0px + 0em) assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +FAIL Can set 'border-bottom-left-radius' to a percent: 0% assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +FAIL Can set 'border-bottom-left-radius' to a percent: -3.14% assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +FAIL Can set 'border-bottom-left-radius' to a percent: 3.14% assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +FAIL Can set 'border-bottom-left-radius' to a percent: calc(0% + 0%) assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" PASS Setting 'border-bottom-left-radius' to a time throws TypeError PASS Setting 'border-bottom-left-radius' to an angle throws TypeError PASS Setting 'border-bottom-left-radius' to a flexible length throws TypeError PASS Setting 'border-bottom-left-radius' to a number throws TypeError PASS Setting 'border-bottom-left-radius' to a URL throws TypeError PASS Setting 'border-bottom-left-radius' to a transform throws TypeError -PASS Can set 'border-bottom-right-radius' to CSS-wide keywords -PASS Can set 'border-bottom-right-radius' to var() references -FAIL Can set 'border-bottom-right-radius' to a length assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" -FAIL Can set 'border-bottom-right-radius' to a percent assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +PASS Can set 'border-bottom-right-radius' to CSS-wide keywords: initial +PASS Can set 'border-bottom-right-radius' to CSS-wide keywords: inherit +PASS Can set 'border-bottom-right-radius' to CSS-wide keywords: unset +PASS Can set 'border-bottom-right-radius' to CSS-wide keywords: revert +PASS Can set 'border-bottom-right-radius' to var() references: var(--A) +FAIL Can set 'border-bottom-right-radius' to a length: 0px assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +FAIL Can set 'border-bottom-right-radius' to a length: -3.14em assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +FAIL Can set 'border-bottom-right-radius' to a length: 3.14cm assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +FAIL Can set 'border-bottom-right-radius' to a length: calc(0px + 0em) assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +FAIL Can set 'border-bottom-right-radius' to a percent: 0% assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +FAIL Can set 'border-bottom-right-radius' to a percent: -3.14% assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +FAIL Can set 'border-bottom-right-radius' to a percent: 3.14% assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" +FAIL Can set 'border-bottom-right-radius' to a percent: calc(0% + 0%) assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSUnitValue]" PASS Setting 'border-bottom-right-radius' to a time throws TypeError PASS Setting 'border-bottom-right-radius' to an angle throws TypeError PASS Setting 'border-bottom-right-radius' to a flexible length throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/border-radius.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/border-radius.html.ini index 1faa41c0..7475d20 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/border-radius.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/border-radius.html.ini
@@ -1,24 +1,96 @@ [border-radius.html] - [Can set 'border-top-left-radius' to a length] + [Can set 'border-top-left-radius' to a length: -3.14em] expected: FAIL - [Can set 'border-top-left-radius' to a percent] + [Can set 'border-top-left-radius' to a percent: 3.14%] expected: FAIL - [Can set 'border-top-right-radius' to a length] + [Can set 'border-top-right-radius' to a percent: calc(0% + 0%)] expected: FAIL - [Can set 'border-top-right-radius' to a percent] + [Can set 'border-top-right-radius' to a length: 3.14cm] expected: FAIL - [Can set 'border-bottom-left-radius' to a length] + [Can set 'border-bottom-left-radius' to a percent: 0%] expected: FAIL - [Can set 'border-bottom-left-radius' to a percent] + [Can set 'border-top-left-radius' to a percent: calc(0% + 0%)] expected: FAIL - [Can set 'border-bottom-right-radius' to a length] + [Can set 'border-bottom-right-radius' to a length: 3.14cm] expected: FAIL - [Can set 'border-bottom-right-radius' to a percent] + [Can set 'border-bottom-left-radius' to a length: 0px] + expected: FAIL + + [Can set 'border-top-right-radius' to a length: -3.14em] + expected: FAIL + + [Can set 'border-bottom-left-radius' to a length: 3.14cm] + expected: FAIL + + [Can set 'border-bottom-right-radius' to a length: -3.14em] + expected: FAIL + + [Can set 'border-bottom-right-radius' to a percent: 3.14%] + expected: FAIL + + [Can set 'border-top-left-radius' to a percent: -3.14%] + expected: FAIL + + [Can set 'border-top-left-radius' to a percent: 0%] + expected: FAIL + + [Can set 'border-top-left-radius' to a length: calc(0px + 0em)] + expected: FAIL + + [Can set 'border-bottom-right-radius' to a length: calc(0px + 0em)] + expected: FAIL + + [Can set 'border-bottom-right-radius' to a percent: calc(0% + 0%)] + expected: FAIL + + [Can set 'border-top-right-radius' to a length: 0px] + expected: FAIL + + [Can set 'border-top-right-radius' to a length: calc(0px + 0em)] + expected: FAIL + + [Can set 'border-top-right-radius' to a percent: 3.14%] + expected: FAIL + + [Can set 'border-top-right-radius' to a percent: -3.14%] + expected: FAIL + + [Can set 'border-bottom-left-radius' to a percent: 3.14%] + expected: FAIL + + [Can set 'border-bottom-right-radius' to a percent: 0%] + expected: FAIL + + [Can set 'border-bottom-right-radius' to a length: 0px] + expected: FAIL + + [Can set 'border-top-left-radius' to a length: 0px] + expected: FAIL + + [Can set 'border-bottom-left-radius' to a percent: -3.14%] + expected: FAIL + + [Can set 'border-bottom-right-radius' to a percent: -3.14%] + expected: FAIL + + [Can set 'border-bottom-left-radius' to a length: -3.14em] + expected: FAIL + + [Can set 'border-top-left-radius' to a length: 3.14cm] + expected: FAIL + + [Can set 'border-bottom-left-radius' to a length: calc(0px + 0em)] + expected: FAIL + + [Can set 'border-bottom-left-radius' to a percent: calc(0% + 0%)] + expected: FAIL + + [Can set 'border-top-right-radius' to a percent: 0%] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/break-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/break-expected.txt index 043fdee..0bbc6d7 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/break-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/break-expected.txt
@@ -1,19 +1,22 @@ This is a testharness.js-based test. -Found 59 tests; 54 PASS, 5 FAIL, 0 TIMEOUT, 0 NOTRUN. -PASS Can set 'break-after' to CSS-wide keywords -PASS Can set 'break-after' to var() references -PASS Can set 'break-after' to the 'auto' keyword -PASS Can set 'break-after' to the 'avoid' keyword -PASS Can set 'break-after' to the 'avoid-column' keyword -PASS Can set 'break-after' to the 'avoid-page' keyword -FAIL Can set 'break-after' to the 'avoid-region' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -PASS Can set 'break-after' to the 'column' keyword -PASS Can set 'break-after' to the 'left' keyword -PASS Can set 'break-after' to the 'page' keyword -PASS Can set 'break-after' to the 'recto' keyword -FAIL Can set 'break-after' to the 'region' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -PASS Can set 'break-after' to the 'right' keyword -PASS Can set 'break-after' to the 'verso' keyword +Found 68 tests; 63 PASS, 5 FAIL, 0 TIMEOUT, 0 NOTRUN. +PASS Can set 'break-after' to CSS-wide keywords: initial +PASS Can set 'break-after' to CSS-wide keywords: inherit +PASS Can set 'break-after' to CSS-wide keywords: unset +PASS Can set 'break-after' to CSS-wide keywords: revert +PASS Can set 'break-after' to var() references: var(--A) +PASS Can set 'break-after' to the 'auto' keyword: auto +PASS Can set 'break-after' to the 'avoid' keyword: avoid +PASS Can set 'break-after' to the 'avoid-column' keyword: avoid-column +PASS Can set 'break-after' to the 'avoid-page' keyword: avoid-page +FAIL Can set 'break-after' to the 'avoid-region' keyword: avoid-region Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'break-after' to the 'column' keyword: column +PASS Can set 'break-after' to the 'left' keyword: left +PASS Can set 'break-after' to the 'page' keyword: page +PASS Can set 'break-after' to the 'recto' keyword: recto +FAIL Can set 'break-after' to the 'region' keyword: region Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'break-after' to the 'right' keyword: right +PASS Can set 'break-after' to the 'verso' keyword: verso PASS Setting 'break-after' to a length throws TypeError PASS Setting 'break-after' to a percent throws TypeError PASS Setting 'break-after' to a time throws TypeError @@ -22,20 +25,23 @@ PASS Setting 'break-after' to a number throws TypeError PASS Setting 'break-after' to a URL throws TypeError PASS Setting 'break-after' to a transform throws TypeError -PASS Can set 'break-before' to CSS-wide keywords -PASS Can set 'break-before' to var() references -PASS Can set 'break-before' to the 'auto' keyword -PASS Can set 'break-before' to the 'avoid' keyword -PASS Can set 'break-before' to the 'avoid-column' keyword -PASS Can set 'break-before' to the 'avoid-page' keyword -FAIL Can set 'break-before' to the 'avoid-region' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -PASS Can set 'break-before' to the 'column' keyword -PASS Can set 'break-before' to the 'left' keyword -PASS Can set 'break-before' to the 'page' keyword -PASS Can set 'break-before' to the 'recto' keyword -FAIL Can set 'break-before' to the 'region' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -PASS Can set 'break-before' to the 'right' keyword -PASS Can set 'break-before' to the 'verso' keyword +PASS Can set 'break-before' to CSS-wide keywords: initial +PASS Can set 'break-before' to CSS-wide keywords: inherit +PASS Can set 'break-before' to CSS-wide keywords: unset +PASS Can set 'break-before' to CSS-wide keywords: revert +PASS Can set 'break-before' to var() references: var(--A) +PASS Can set 'break-before' to the 'auto' keyword: auto +PASS Can set 'break-before' to the 'avoid' keyword: avoid +PASS Can set 'break-before' to the 'avoid-column' keyword: avoid-column +PASS Can set 'break-before' to the 'avoid-page' keyword: avoid-page +FAIL Can set 'break-before' to the 'avoid-region' keyword: avoid-region Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'break-before' to the 'column' keyword: column +PASS Can set 'break-before' to the 'left' keyword: left +PASS Can set 'break-before' to the 'page' keyword: page +PASS Can set 'break-before' to the 'recto' keyword: recto +FAIL Can set 'break-before' to the 'region' keyword: region Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'break-before' to the 'right' keyword: right +PASS Can set 'break-before' to the 'verso' keyword: verso PASS Setting 'break-before' to a length throws TypeError PASS Setting 'break-before' to a percent throws TypeError PASS Setting 'break-before' to a time throws TypeError @@ -44,13 +50,16 @@ PASS Setting 'break-before' to a number throws TypeError PASS Setting 'break-before' to a URL throws TypeError PASS Setting 'break-before' to a transform throws TypeError -PASS Can set 'break-inside' to CSS-wide keywords -PASS Can set 'break-inside' to var() references -PASS Can set 'break-inside' to the 'auto' keyword -PASS Can set 'break-inside' to the 'avoid' keyword -PASS Can set 'break-inside' to the 'avoid-column' keyword -PASS Can set 'break-inside' to the 'avoid-page' keyword -FAIL Can set 'break-inside' to the 'avoid-region' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'break-inside' to CSS-wide keywords: initial +PASS Can set 'break-inside' to CSS-wide keywords: inherit +PASS Can set 'break-inside' to CSS-wide keywords: unset +PASS Can set 'break-inside' to CSS-wide keywords: revert +PASS Can set 'break-inside' to var() references: var(--A) +PASS Can set 'break-inside' to the 'auto' keyword: auto +PASS Can set 'break-inside' to the 'avoid' keyword: avoid +PASS Can set 'break-inside' to the 'avoid-column' keyword: avoid-column +PASS Can set 'break-inside' to the 'avoid-page' keyword: avoid-page +FAIL Can set 'break-inside' to the 'avoid-region' keyword: avoid-region Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'break-inside' to a length throws TypeError PASS Setting 'break-inside' to a percent throws TypeError PASS Setting 'break-inside' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/break.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/break.html.ini index e43ad9d..3751eb6 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/break.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/break.html.ini
@@ -1,15 +1,15 @@ [break.html] - [Can set 'break-after' to the 'avoid-region' keyword] + [Can set 'break-inside' to the 'avoid-region' keyword: avoid-region] expected: FAIL - [Can set 'break-after' to the 'region' keyword] + [Can set 'break-after' to the 'avoid-region' keyword: avoid-region] expected: FAIL - [Can set 'break-before' to the 'avoid-region' keyword] + [Can set 'break-before' to the 'avoid-region' keyword: avoid-region] expected: FAIL - [Can set 'break-before' to the 'region' keyword] + [Can set 'break-before' to the 'region' keyword: region] expected: FAIL - [Can set 'break-inside' to the 'avoid-region' keyword] + [Can set 'break-after' to the 'region' keyword: region] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/clip-path-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/clip-path-expected.txt index a1ea808..6d8560e 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/clip-path-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/clip-path-expected.txt
@@ -1,15 +1,17 @@ This is a testharness.js-based test. -PASS Can set 'clip-path' to CSS-wide keywords -PASS Can set 'clip-path' to var() references -PASS Can set 'clip-path' to the 'none' keyword -FAIL Can set 'clip-path' to the 'fill-box' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'clip-path' to the 'stroke-box' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'clip-path' to the 'view-box' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'clip-path' to the 'margin-box' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'clip-path' to the 'border-box' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'clip-path' to the 'padding-box' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'clip-path' to the 'content-box' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -PASS Can set 'clip-path' to a URL +PASS Can set 'clip-path' to CSS-wide keywords: initial +PASS Can set 'clip-path' to CSS-wide keywords: inherit +PASS Can set 'clip-path' to CSS-wide keywords: unset +PASS Can set 'clip-path' to CSS-wide keywords: revert +PASS Can set 'clip-path' to var() references: var(--A) +PASS Can set 'clip-path' to the 'none' keyword: none +FAIL Can set 'clip-path' to the 'fill-box' keyword: fill-box Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'clip-path' to the 'stroke-box' keyword: stroke-box Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'clip-path' to the 'view-box' keyword: view-box Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'clip-path' to the 'margin-box' keyword: margin-box Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'clip-path' to the 'border-box' keyword: border-box Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'clip-path' to the 'padding-box' keyword: padding-box Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'clip-path' to the 'content-box' keyword: content-box Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'clip-path' to a length throws TypeError PASS Setting 'clip-path' to a percent throws TypeError PASS Setting 'clip-path' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/clip-path.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/clip-path.html.ini index 7a4cd11..7ab59006 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/clip-path.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/clip-path.html.ini
@@ -1,24 +1,24 @@ [clip-path.html] - [Can set 'clip-path' to the 'fill-box' keyword] - expected: FAIL - - [Can set 'clip-path' to the 'stroke-box' keyword] - expected: FAIL - - [Can set 'clip-path' to the 'view-box' keyword] - expected: FAIL - - [Can set 'clip-path' to the 'margin-box' keyword] - expected: FAIL - - [Can set 'clip-path' to the 'border-box' keyword] - expected: FAIL - - [Can set 'clip-path' to the 'padding-box' keyword] - expected: FAIL - - [Can set 'clip-path' to the 'content-box' keyword] - expected: FAIL - ['clip' does not supported 'inset(22% 12% 15px 35px)'] expected: FAIL + + [Can set 'clip-path' to the 'margin-box' keyword: margin-box] + expected: FAIL + + [Can set 'clip-path' to the 'stroke-box' keyword: stroke-box] + expected: FAIL + + [Can set 'clip-path' to the 'view-box' keyword: view-box] + expected: FAIL + + [Can set 'clip-path' to the 'padding-box' keyword: padding-box] + expected: FAIL + + [Can set 'clip-path' to the 'border-box' keyword: border-box] + expected: FAIL + + [Can set 'clip-path' to the 'fill-box' keyword: fill-box] + expected: FAIL + + [Can set 'clip-path' to the 'content-box' keyword: content-box] + expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/container-name-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/container-name-expected.txt index 55177c5..65e19cb 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/container-name-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/container-name-expected.txt
@@ -1,8 +1,11 @@ This is a testharness.js-based test. -PASS Can set 'container-name' to CSS-wide keywords -PASS Can set 'container-name' to var() references -PASS Can set 'container-name' to the 'none' keyword -FAIL Can set 'container-name' to the 'my-container' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'container-name' to CSS-wide keywords: initial +PASS Can set 'container-name' to CSS-wide keywords: inherit +PASS Can set 'container-name' to CSS-wide keywords: unset +PASS Can set 'container-name' to CSS-wide keywords: revert +PASS Can set 'container-name' to var() references: var(--A) +PASS Can set 'container-name' to the 'none' keyword: none +FAIL Can set 'container-name' to the 'my-container' keyword: my-container Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'container-name' to a length throws TypeError PASS Setting 'container-name' to a percent throws TypeError PASS Setting 'container-name' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/container-name.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/container-name.html.ini index 6e820a9c..bbe66d77 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/container-name.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/container-name.html.ini
@@ -1,6 +1,6 @@ [container-name.html] - [Can set 'container-name' to the 'my-container' keyword] + ['container-type' does not supported 'name1 name2'] expected: FAIL - ['container-type' does not supported 'name1 name2'] + [Can set 'container-name' to the 'my-container' keyword: my-container] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/dominant-baseline-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/dominant-baseline-expected.txt index ad29e04ff..ff40f878 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/dominant-baseline-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/dominant-baseline-expected.txt
@@ -1,15 +1,18 @@ This is a testharness.js-based test. -PASS Can set 'dominant-baseline' to CSS-wide keywords -PASS Can set 'dominant-baseline' to var() references -PASS Can set 'dominant-baseline' to the 'auto' keyword -FAIL Can set 'dominant-baseline' to the 'text-bottom' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -PASS Can set 'dominant-baseline' to the 'alphabetic' keyword -PASS Can set 'dominant-baseline' to the 'ideographic' keyword -PASS Can set 'dominant-baseline' to the 'middle' keyword -PASS Can set 'dominant-baseline' to the 'central' keyword -PASS Can set 'dominant-baseline' to the 'mathematical' keyword -PASS Can set 'dominant-baseline' to the 'hanging' keyword -FAIL Can set 'dominant-baseline' to the 'text-top' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'dominant-baseline' to CSS-wide keywords: initial +PASS Can set 'dominant-baseline' to CSS-wide keywords: inherit +PASS Can set 'dominant-baseline' to CSS-wide keywords: unset +PASS Can set 'dominant-baseline' to CSS-wide keywords: revert +PASS Can set 'dominant-baseline' to var() references: var(--A) +PASS Can set 'dominant-baseline' to the 'auto' keyword: auto +FAIL Can set 'dominant-baseline' to the 'text-bottom' keyword: text-bottom Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'dominant-baseline' to the 'alphabetic' keyword: alphabetic +PASS Can set 'dominant-baseline' to the 'ideographic' keyword: ideographic +PASS Can set 'dominant-baseline' to the 'middle' keyword: middle +PASS Can set 'dominant-baseline' to the 'central' keyword: central +PASS Can set 'dominant-baseline' to the 'mathematical' keyword: mathematical +PASS Can set 'dominant-baseline' to the 'hanging' keyword: hanging +FAIL Can set 'dominant-baseline' to the 'text-top' keyword: text-top Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'dominant-baseline' to a length throws TypeError PASS Setting 'dominant-baseline' to a percent throws TypeError PASS Setting 'dominant-baseline' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/dominant-baseline.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/dominant-baseline.html.ini index 873b7c8..2e69ec2d 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/dominant-baseline.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/dominant-baseline.html.ini
@@ -1,6 +1,6 @@ [dominant-baseline.html] - [Can set 'dominant-baseline' to the 'text-bottom' keyword] + [Can set 'dominant-baseline' to the 'text-bottom' keyword: text-bottom] expected: FAIL - [Can set 'dominant-baseline' to the 'text-top' keyword] + [Can set 'dominant-baseline' to the 'text-top' keyword: text-top] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/fill-color-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/fill-color-expected.txt index 9e543372..ce96f52 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/fill-color-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/fill-color-expected.txt
@@ -1,7 +1,10 @@ This is a testharness.js-based test. -FAIL Can set 'fill-color' to CSS-wide keywords Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: fill-color -FAIL Can set 'fill-color' to var() references Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: fill-color -FAIL Can set 'fill-color' to the 'currentcolor' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: fill-color +FAIL Can set 'fill-color' to CSS-wide keywords: initial Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: fill-color +FAIL Can set 'fill-color' to CSS-wide keywords: inherit Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: fill-color +FAIL Can set 'fill-color' to CSS-wide keywords: unset Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: fill-color +FAIL Can set 'fill-color' to CSS-wide keywords: revert Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: fill-color +FAIL Can set 'fill-color' to var() references: var(--A) Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: fill-color +FAIL Can set 'fill-color' to the 'currentcolor' keyword: currentcolor Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: fill-color PASS Setting 'fill-color' to a length throws TypeError PASS Setting 'fill-color' to a percent throws TypeError PASS Setting 'fill-color' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/fill-color.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/fill-color.html.ini index 1b31c03..2908a67c 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/fill-color.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/fill-color.html.ini
@@ -1,13 +1,4 @@ [fill-color.html] - [Can set 'fill-color' to CSS-wide keywords] - expected: FAIL - - [Can set 'fill-color' to var() references] - expected: FAIL - - [Can set 'fill-color' to the 'currentcolor' keyword] - expected: FAIL - ['fill-color' does not supported 'red'] expected: FAIL @@ -22,3 +13,21 @@ ['fill-color' does not supported 'transparent'] expected: FAIL + + [Can set 'fill-color' to CSS-wide keywords: revert] + expected: FAIL + + [Can set 'fill-color' to var() references: var(--A)] + expected: FAIL + + [Can set 'fill-color' to CSS-wide keywords: inherit] + expected: FAIL + + [Can set 'fill-color' to CSS-wide keywords: unset] + expected: FAIL + + [Can set 'fill-color' to CSS-wide keywords: initial] + expected: FAIL + + [Can set 'fill-color' to the 'currentcolor' keyword: currentcolor] + expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-language-override-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-language-override-expected.txt index 07387f6..2a7c48d 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-language-override-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-language-override-expected.txt
@@ -1,7 +1,10 @@ This is a testharness.js-based test. -FAIL Can set 'font-language-override' to CSS-wide keywords Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-language-override -FAIL Can set 'font-language-override' to var() references Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-language-override -FAIL Can set 'font-language-override' to the 'normal' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-language-override +FAIL Can set 'font-language-override' to CSS-wide keywords: initial Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-language-override +FAIL Can set 'font-language-override' to CSS-wide keywords: inherit Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-language-override +FAIL Can set 'font-language-override' to CSS-wide keywords: unset Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-language-override +FAIL Can set 'font-language-override' to CSS-wide keywords: revert Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-language-override +FAIL Can set 'font-language-override' to var() references: var(--A) Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-language-override +FAIL Can set 'font-language-override' to the 'normal' keyword: normal Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-language-override PASS Setting 'font-language-override' to a length throws TypeError PASS Setting 'font-language-override' to a percent throws TypeError PASS Setting 'font-language-override' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-language-override.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-language-override.html.ini index eb12a46..f9ba074 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-language-override.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-language-override.html.ini
@@ -1,12 +1,21 @@ [font-language-override.html] - [Can set 'font-language-override' to CSS-wide keywords] - expected: FAIL - - [Can set 'font-language-override' to var() references] - expected: FAIL - - [Can set 'font-language-override' to the 'normal' keyword] - expected: FAIL - ['font-language-override' does not supported '"SRB"'] expected: FAIL + + [Can set 'font-language-override' to var() references: var(--A)] + expected: FAIL + + [Can set 'font-language-override' to CSS-wide keywords: inherit] + expected: FAIL + + [Can set 'font-language-override' to CSS-wide keywords: initial] + expected: FAIL + + [Can set 'font-language-override' to the 'normal' keyword: normal] + expected: FAIL + + [Can set 'font-language-override' to CSS-wide keywords: unset] + expected: FAIL + + [Can set 'font-language-override' to CSS-wide keywords: revert] + expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-palette-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-palette-expected.txt index c3a442f..03ac1027 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-palette-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-palette-expected.txt
@@ -1,9 +1,12 @@ This is a testharness.js-based test. -PASS Can set 'font-palette' to CSS-wide keywords -PASS Can set 'font-palette' to var() references -PASS Can set 'font-palette' to the 'normal' keyword -PASS Can set 'font-palette' to the 'light' keyword -PASS Can set 'font-palette' to the 'dark' keyword +PASS Can set 'font-palette' to CSS-wide keywords: initial +PASS Can set 'font-palette' to CSS-wide keywords: inherit +PASS Can set 'font-palette' to CSS-wide keywords: unset +PASS Can set 'font-palette' to CSS-wide keywords: revert +PASS Can set 'font-palette' to var() references: var(--A) +PASS Can set 'font-palette' to the 'normal' keyword: normal +PASS Can set 'font-palette' to the 'light' keyword: light +PASS Can set 'font-palette' to the 'dark' keyword: dark PASS Setting 'font-palette' to a length throws TypeError PASS Setting 'font-palette' to a percent throws TypeError PASS Setting 'font-palette' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-presentation-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-presentation-expected.txt index 1ca793c0..21262d52 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-presentation-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-presentation-expected.txt
@@ -1,9 +1,12 @@ This is a testharness.js-based test. -FAIL Can set 'font-presentation' to CSS-wide keywords Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-presentation -FAIL Can set 'font-presentation' to var() references Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-presentation -FAIL Can set 'font-presentation' to the 'auto' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-presentation -FAIL Can set 'font-presentation' to the 'text' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-presentation -FAIL Can set 'font-presentation' to the 'emoji' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-presentation +FAIL Can set 'font-presentation' to CSS-wide keywords: initial Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-presentation +FAIL Can set 'font-presentation' to CSS-wide keywords: inherit Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-presentation +FAIL Can set 'font-presentation' to CSS-wide keywords: unset Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-presentation +FAIL Can set 'font-presentation' to CSS-wide keywords: revert Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-presentation +FAIL Can set 'font-presentation' to var() references: var(--A) Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-presentation +FAIL Can set 'font-presentation' to the 'auto' keyword: auto Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-presentation +FAIL Can set 'font-presentation' to the 'text' keyword: text Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-presentation +FAIL Can set 'font-presentation' to the 'emoji' keyword: emoji Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-presentation PASS Setting 'font-presentation' to a length throws TypeError PASS Setting 'font-presentation' to a percent throws TypeError PASS Setting 'font-presentation' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-presentation.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-presentation.html.ini index 975dd03..f7ae775 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-presentation.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-presentation.html.ini
@@ -1,15 +1,24 @@ [font-presentation.html] - [Can set 'font-presentation' to CSS-wide keywords] + [Can set 'font-presentation' to CSS-wide keywords: unset] expected: FAIL - [Can set 'font-presentation' to var() references] + [Can set 'font-presentation' to CSS-wide keywords: revert] expected: FAIL - [Can set 'font-presentation' to the 'auto' keyword] + [Can set 'font-presentation' to the 'auto' keyword: auto] expected: FAIL - [Can set 'font-presentation' to the 'text' keyword] + [Can set 'font-presentation' to the 'text' keyword: text] expected: FAIL - [Can set 'font-presentation' to the 'emoji' keyword] + [Can set 'font-presentation' to the 'emoji' keyword: emoji] + expected: FAIL + + [Can set 'font-presentation' to CSS-wide keywords: initial] + expected: FAIL + + [Can set 'font-presentation' to CSS-wide keywords: inherit] + expected: FAIL + + [Can set 'font-presentation' to var() references: var(--A)] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-size-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-size-expected.txt index d5c4f10..f0b58f1 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-size-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-size-expected.txt
@@ -1,57 +1,84 @@ This is a testharness.js-based test. -Found 58 tests; 31 PASS, 27 FAIL, 0 TIMEOUT, 0 NOTRUN. -PASS Can set 'font-size' to CSS-wide keywords -PASS Can set 'font-size' to var() references -PASS Can set 'font-size' to the 'xx-small' keyword -PASS Can set 'font-size' to the 'x-small' keyword -PASS Can set 'font-size' to the 'small' keyword -PASS Can set 'font-size' to the 'medium' keyword -PASS Can set 'font-size' to the 'large' keyword -PASS Can set 'font-size' to the 'x-large' keyword -PASS Can set 'font-size' to the 'xx-large' keyword -PASS Can set 'font-size' to the 'larger' keyword -PASS Can set 'font-size' to the 'smaller' keyword -PASS Can set 'font-size' to a length -PASS Can set 'font-size' to a percent +Found 85 tests; 40 PASS, 45 FAIL, 0 TIMEOUT, 0 NOTRUN. +PASS Can set 'font-size' to CSS-wide keywords: initial +PASS Can set 'font-size' to CSS-wide keywords: inherit +PASS Can set 'font-size' to CSS-wide keywords: unset +PASS Can set 'font-size' to CSS-wide keywords: revert +PASS Can set 'font-size' to var() references: var(--A) +PASS Can set 'font-size' to the 'xx-small' keyword: xx-small +PASS Can set 'font-size' to the 'x-small' keyword: x-small +PASS Can set 'font-size' to the 'small' keyword: small +PASS Can set 'font-size' to the 'medium' keyword: medium +PASS Can set 'font-size' to the 'large' keyword: large +PASS Can set 'font-size' to the 'x-large' keyword: x-large +PASS Can set 'font-size' to the 'xx-large' keyword: xx-large +PASS Can set 'font-size' to the 'larger' keyword: larger +PASS Can set 'font-size' to the 'smaller' keyword: smaller +PASS Can set 'font-size' to a length: 0px +PASS Can set 'font-size' to a length: -3.14em +PASS Can set 'font-size' to a length: 3.14cm +PASS Can set 'font-size' to a length: calc(0px + 0em) +PASS Can set 'font-size' to a percent: 0% +PASS Can set 'font-size' to a percent: -3.14% +PASS Can set 'font-size' to a percent: 3.14% +PASS Can set 'font-size' to a percent: calc(0% + 0%) PASS Setting 'font-size' to a time throws TypeError PASS Setting 'font-size' to an angle throws TypeError PASS Setting 'font-size' to a flexible length throws TypeError PASS Setting 'font-size' to a number throws TypeError PASS Setting 'font-size' to a URL throws TypeError PASS Setting 'font-size' to a transform throws TypeError -FAIL Can set 'font-min-size' to CSS-wide keywords Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size -FAIL Can set 'font-min-size' to var() references Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size -FAIL Can set 'font-min-size' to the 'xx-small' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size -FAIL Can set 'font-min-size' to the 'x-small' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size -FAIL Can set 'font-min-size' to the 'small' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size -FAIL Can set 'font-min-size' to the 'medium' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size -FAIL Can set 'font-min-size' to the 'large' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size -FAIL Can set 'font-min-size' to the 'x-large' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size -FAIL Can set 'font-min-size' to the 'xx-large' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size -FAIL Can set 'font-min-size' to the 'larger' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size -FAIL Can set 'font-min-size' to the 'smaller' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size -FAIL Can set 'font-min-size' to a length Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size -FAIL Can set 'font-min-size' to a percent Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size +FAIL Can set 'font-min-size' to CSS-wide keywords: initial Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size +FAIL Can set 'font-min-size' to CSS-wide keywords: inherit Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size +FAIL Can set 'font-min-size' to CSS-wide keywords: unset Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size +FAIL Can set 'font-min-size' to CSS-wide keywords: revert Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size +FAIL Can set 'font-min-size' to var() references: var(--A) Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size +FAIL Can set 'font-min-size' to the 'xx-small' keyword: xx-small Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size +FAIL Can set 'font-min-size' to the 'x-small' keyword: x-small Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size +FAIL Can set 'font-min-size' to the 'small' keyword: small Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size +FAIL Can set 'font-min-size' to the 'medium' keyword: medium Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size +FAIL Can set 'font-min-size' to the 'large' keyword: large Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size +FAIL Can set 'font-min-size' to the 'x-large' keyword: x-large Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size +FAIL Can set 'font-min-size' to the 'xx-large' keyword: xx-large Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size +FAIL Can set 'font-min-size' to the 'larger' keyword: larger Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size +FAIL Can set 'font-min-size' to the 'smaller' keyword: smaller Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size +FAIL Can set 'font-min-size' to a length: 0px Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size +FAIL Can set 'font-min-size' to a length: -3.14em Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size +FAIL Can set 'font-min-size' to a length: 3.14cm Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size +FAIL Can set 'font-min-size' to a length: calc(0px + 0em) Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size +FAIL Can set 'font-min-size' to a percent: 0% Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size +FAIL Can set 'font-min-size' to a percent: -3.14% Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size +FAIL Can set 'font-min-size' to a percent: 3.14% Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size +FAIL Can set 'font-min-size' to a percent: calc(0% + 0%) Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-min-size PASS Setting 'font-min-size' to a time throws TypeError PASS Setting 'font-min-size' to an angle throws TypeError PASS Setting 'font-min-size' to a flexible length throws TypeError PASS Setting 'font-min-size' to a number throws TypeError PASS Setting 'font-min-size' to a URL throws TypeError PASS Setting 'font-min-size' to a transform throws TypeError -FAIL Can set 'font-max-size' to CSS-wide keywords Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size -FAIL Can set 'font-max-size' to var() references Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size -FAIL Can set 'font-max-size' to the 'infinity' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size -FAIL Can set 'font-max-size' to the 'xx-small' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size -FAIL Can set 'font-max-size' to the 'x-small' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size -FAIL Can set 'font-max-size' to the 'small' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size -FAIL Can set 'font-max-size' to the 'medium' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size -FAIL Can set 'font-max-size' to the 'large' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size -FAIL Can set 'font-max-size' to the 'x-large' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size -FAIL Can set 'font-max-size' to the 'xx-large' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size -FAIL Can set 'font-max-size' to the 'larger' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size -FAIL Can set 'font-max-size' to the 'smaller' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size -FAIL Can set 'font-max-size' to a length Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size -FAIL Can set 'font-max-size' to a percent Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size +FAIL Can set 'font-max-size' to CSS-wide keywords: initial Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size +FAIL Can set 'font-max-size' to CSS-wide keywords: inherit Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size +FAIL Can set 'font-max-size' to CSS-wide keywords: unset Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size +FAIL Can set 'font-max-size' to CSS-wide keywords: revert Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size +FAIL Can set 'font-max-size' to var() references: var(--A) Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size +FAIL Can set 'font-max-size' to the 'infinity' keyword: infinity Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size +FAIL Can set 'font-max-size' to the 'xx-small' keyword: xx-small Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size +FAIL Can set 'font-max-size' to the 'x-small' keyword: x-small Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size +FAIL Can set 'font-max-size' to the 'small' keyword: small Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size +FAIL Can set 'font-max-size' to the 'medium' keyword: medium Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size +FAIL Can set 'font-max-size' to the 'large' keyword: large Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size +FAIL Can set 'font-max-size' to the 'x-large' keyword: x-large Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size +FAIL Can set 'font-max-size' to the 'xx-large' keyword: xx-large Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size +FAIL Can set 'font-max-size' to the 'larger' keyword: larger Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size +FAIL Can set 'font-max-size' to the 'smaller' keyword: smaller Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size +FAIL Can set 'font-max-size' to a length: 0px Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size +FAIL Can set 'font-max-size' to a length: -3.14em Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size +FAIL Can set 'font-max-size' to a length: 3.14cm Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size +FAIL Can set 'font-max-size' to a length: calc(0px + 0em) Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size +FAIL Can set 'font-max-size' to a percent: 0% Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size +FAIL Can set 'font-max-size' to a percent: -3.14% Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size +FAIL Can set 'font-max-size' to a percent: 3.14% Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size +FAIL Can set 'font-max-size' to a percent: calc(0% + 0%) Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-max-size PASS Setting 'font-max-size' to a time throws TypeError PASS Setting 'font-max-size' to an angle throws TypeError PASS Setting 'font-max-size' to a flexible length throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-size.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-size.html.ini index 4aa2348..def6a661 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-size.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-size.html.ini
@@ -1,81 +1,135 @@ [font-size.html] - [Can set 'font-min-size' to CSS-wide keywords] + [Can set 'font-min-size' to the 'larger' keyword: larger] expected: FAIL - [Can set 'font-min-size' to var() references] + [Can set 'font-max-size' to the 'large' keyword: large] expected: FAIL - [Can set 'font-min-size' to the 'xx-small' keyword] + [Can set 'font-max-size' to the 'medium' keyword: medium] expected: FAIL - [Can set 'font-min-size' to the 'x-small' keyword] + [Can set 'font-min-size' to a length: -3.14em] expected: FAIL - [Can set 'font-min-size' to the 'small' keyword] + [Can set 'font-min-size' to the 'xx-small' keyword: xx-small] expected: FAIL - [Can set 'font-min-size' to the 'medium' keyword] + [Can set 'font-max-size' to CSS-wide keywords: revert] expected: FAIL - [Can set 'font-min-size' to the 'large' keyword] + [Can set 'font-max-size' to CSS-wide keywords: initial] expected: FAIL - [Can set 'font-min-size' to the 'x-large' keyword] + [Can set 'font-max-size' to CSS-wide keywords: unset] expected: FAIL - [Can set 'font-min-size' to the 'xx-large' keyword] + [Can set 'font-min-size' to the 'medium' keyword: medium] expected: FAIL - [Can set 'font-min-size' to the 'larger' keyword] + [Can set 'font-min-size' to a length: calc(0px + 0em)] expected: FAIL - [Can set 'font-min-size' to the 'smaller' keyword] + [Can set 'font-max-size' to the 'xx-small' keyword: xx-small] expected: FAIL - [Can set 'font-min-size' to a length] + [Can set 'font-min-size' to the 'small' keyword: small] expected: FAIL - [Can set 'font-min-size' to a percent] + [Can set 'font-min-size' to a percent: calc(0% + 0%)] expected: FAIL - [Can set 'font-max-size' to CSS-wide keywords] + [Can set 'font-min-size' to the 'xx-large' keyword: xx-large] expected: FAIL - [Can set 'font-max-size' to var() references] + [Can set 'font-max-size' to a percent: calc(0% + 0%)] expected: FAIL - [Can set 'font-max-size' to the 'infinity' keyword] + [Can set 'font-min-size' to CSS-wide keywords: initial] expected: FAIL - [Can set 'font-max-size' to the 'xx-small' keyword] + [Can set 'font-max-size' to a length: -3.14em] expected: FAIL - [Can set 'font-max-size' to the 'x-small' keyword] + [Can set 'font-min-size' to the 'x-small' keyword: x-small] expected: FAIL - [Can set 'font-max-size' to the 'small' keyword] + [Can set 'font-max-size' to the 'larger' keyword: larger] expected: FAIL - [Can set 'font-max-size' to the 'medium' keyword] + [Can set 'font-min-size' to var() references: var(--A)] expected: FAIL - [Can set 'font-max-size' to the 'large' keyword] + [Can set 'font-min-size' to a length: 3.14cm] expected: FAIL - [Can set 'font-max-size' to the 'x-large' keyword] + [Can set 'font-max-size' to a percent: -3.14%] expected: FAIL - [Can set 'font-max-size' to the 'xx-large' keyword] + [Can set 'font-min-size' to CSS-wide keywords: inherit] expected: FAIL - [Can set 'font-max-size' to the 'larger' keyword] + [Can set 'font-max-size' to a length: 0px] expected: FAIL - [Can set 'font-max-size' to the 'smaller' keyword] + [Can set 'font-min-size' to CSS-wide keywords: unset] expected: FAIL - [Can set 'font-max-size' to a length] + [Can set 'font-max-size' to a percent: 3.14%] expected: FAIL - [Can set 'font-max-size' to a percent] + [Can set 'font-min-size' to the 'smaller' keyword: smaller] + expected: FAIL + + [Can set 'font-min-size' to the 'x-large' keyword: x-large] + expected: FAIL + + [Can set 'font-max-size' to the 'x-large' keyword: x-large] + expected: FAIL + + [Can set 'font-min-size' to a length: 0px] + expected: FAIL + + [Can set 'font-min-size' to a percent: 3.14%] + expected: FAIL + + [Can set 'font-max-size' to the 'x-small' keyword: x-small] + expected: FAIL + + [Can set 'font-max-size' to the 'small' keyword: small] + expected: FAIL + + [Can set 'font-max-size' to CSS-wide keywords: inherit] + expected: FAIL + + [Can set 'font-max-size' to the 'smaller' keyword: smaller] + expected: FAIL + + [Can set 'font-max-size' to a length: calc(0px + 0em)] + expected: FAIL + + [Can set 'font-min-size' to the 'large' keyword: large] + expected: FAIL + + [Can set 'font-max-size' to var() references: var(--A)] + expected: FAIL + + [Can set 'font-min-size' to CSS-wide keywords: revert] + expected: FAIL + + [Can set 'font-max-size' to the 'infinity' keyword: infinity] + expected: FAIL + + [Can set 'font-min-size' to a percent: 0%] + expected: FAIL + + [Can set 'font-min-size' to a percent: -3.14%] + expected: FAIL + + [Can set 'font-max-size' to a length: 3.14cm] + expected: FAIL + + [Can set 'font-max-size' to the 'xx-large' keyword: xx-large] + expected: FAIL + + [Can set 'font-max-size' to a percent: 0%] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-stretch-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-stretch-expected.txt index 4ab9d8b..ff60fff 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-stretch-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-stretch-expected.txt
@@ -1,16 +1,22 @@ This is a testharness.js-based test. -PASS Can set 'font-stretch' to CSS-wide keywords -PASS Can set 'font-stretch' to var() references -FAIL Can set 'font-stretch' to the 'normal' keyword assert_equals: expected "CSSKeywordValue" but got "CSSUnitValue" -FAIL Can set 'font-stretch' to the 'ultra-condensed' keyword assert_equals: expected "CSSKeywordValue" but got "CSSUnitValue" -FAIL Can set 'font-stretch' to the 'extra-condensed' keyword assert_equals: expected "CSSKeywordValue" but got "CSSUnitValue" -FAIL Can set 'font-stretch' to the 'condensed' keyword assert_equals: expected "CSSKeywordValue" but got "CSSUnitValue" -FAIL Can set 'font-stretch' to the 'semi-condensed' keyword assert_equals: expected "CSSKeywordValue" but got "CSSUnitValue" -FAIL Can set 'font-stretch' to the 'semi-expanded' keyword assert_equals: expected "CSSKeywordValue" but got "CSSUnitValue" -FAIL Can set 'font-stretch' to the 'expanded' keyword assert_equals: expected "CSSKeywordValue" but got "CSSUnitValue" -FAIL Can set 'font-stretch' to the 'extra-expanded' keyword assert_equals: expected "CSSKeywordValue" but got "CSSUnitValue" -FAIL Can set 'font-stretch' to the 'ultra-expanded' keyword assert_equals: expected "CSSKeywordValue" but got "CSSUnitValue" -FAIL Can set 'font-stretch' to a percent assert_approx_equals: expected -3.14 +/- 0.000001 but got -3 +PASS Can set 'font-stretch' to CSS-wide keywords: initial +PASS Can set 'font-stretch' to CSS-wide keywords: inherit +PASS Can set 'font-stretch' to CSS-wide keywords: unset +PASS Can set 'font-stretch' to CSS-wide keywords: revert +PASS Can set 'font-stretch' to var() references: var(--A) +FAIL Can set 'font-stretch' to the 'normal' keyword: normal assert_equals: expected "CSSKeywordValue" but got "CSSUnitValue" +FAIL Can set 'font-stretch' to the 'ultra-condensed' keyword: ultra-condensed assert_equals: expected "CSSKeywordValue" but got "CSSUnitValue" +FAIL Can set 'font-stretch' to the 'extra-condensed' keyword: extra-condensed assert_equals: expected "CSSKeywordValue" but got "CSSUnitValue" +FAIL Can set 'font-stretch' to the 'condensed' keyword: condensed assert_equals: expected "CSSKeywordValue" but got "CSSUnitValue" +FAIL Can set 'font-stretch' to the 'semi-condensed' keyword: semi-condensed assert_equals: expected "CSSKeywordValue" but got "CSSUnitValue" +FAIL Can set 'font-stretch' to the 'semi-expanded' keyword: semi-expanded assert_equals: expected "CSSKeywordValue" but got "CSSUnitValue" +FAIL Can set 'font-stretch' to the 'expanded' keyword: expanded assert_equals: expected "CSSKeywordValue" but got "CSSUnitValue" +FAIL Can set 'font-stretch' to the 'extra-expanded' keyword: extra-expanded assert_equals: expected "CSSKeywordValue" but got "CSSUnitValue" +FAIL Can set 'font-stretch' to the 'ultra-expanded' keyword: ultra-expanded assert_equals: expected "CSSKeywordValue" but got "CSSUnitValue" +PASS Can set 'font-stretch' to a percent: 0% +FAIL Can set 'font-stretch' to a percent: -3.14% assert_approx_equals: expected -3.14 +/- 0.000001 but got -3 +FAIL Can set 'font-stretch' to a percent: 3.14% assert_approx_equals: expected 3.14 +/- 0.000001 but got 3 +PASS Can set 'font-stretch' to a percent: calc(0% + 0%) PASS Setting 'font-stretch' to a length throws TypeError PASS Setting 'font-stretch' to a time throws TypeError PASS Setting 'font-stretch' to an angle throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-stretch.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-stretch.html.ini index 5f43ab9..41dc1581 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-stretch.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-stretch.html.ini
@@ -1,30 +1,33 @@ [font-stretch.html] - [Can set 'font-stretch' to the 'normal' keyword] + [Can set 'font-stretch' to a percent: -3.14%] expected: FAIL - [Can set 'font-stretch' to the 'ultra-condensed' keyword] + [Can set 'font-stretch' to the 'extra-condensed' keyword: extra-condensed] expected: FAIL - [Can set 'font-stretch' to the 'extra-condensed' keyword] + [Can set 'font-stretch' to the 'semi-condensed' keyword: semi-condensed] expected: FAIL - [Can set 'font-stretch' to the 'condensed' keyword] + [Can set 'font-stretch' to the 'semi-expanded' keyword: semi-expanded] expected: FAIL - [Can set 'font-stretch' to the 'semi-condensed' keyword] + [Can set 'font-stretch' to the 'expanded' keyword: expanded] expected: FAIL - [Can set 'font-stretch' to the 'semi-expanded' keyword] + [Can set 'font-stretch' to the 'ultra-condensed' keyword: ultra-condensed] expected: FAIL - [Can set 'font-stretch' to the 'expanded' keyword] + [Can set 'font-stretch' to a percent: 3.14%] expected: FAIL - [Can set 'font-stretch' to the 'extra-expanded' keyword] + [Can set 'font-stretch' to the 'condensed' keyword: condensed] expected: FAIL - [Can set 'font-stretch' to the 'ultra-expanded' keyword] + [Can set 'font-stretch' to the 'ultra-expanded' keyword: ultra-expanded] expected: FAIL - [Can set 'font-stretch' to a percent] + [Can set 'font-stretch' to the 'extra-expanded' keyword: extra-expanded] + expected: FAIL + + [Can set 'font-stretch' to the 'normal' keyword: normal] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-style-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-style-expected.txt index 865fce5..3c14724 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-style-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-style-expected.txt
@@ -1,9 +1,12 @@ This is a testharness.js-based test. -PASS Can set 'font-style' to CSS-wide keywords -PASS Can set 'font-style' to var() references -PASS Can set 'font-style' to the 'normal' keyword -PASS Can set 'font-style' to the 'italic' keyword -FAIL Can set 'font-style' to the 'oblique' keyword assert_equals: expected "oblique" but got "italic" +PASS Can set 'font-style' to CSS-wide keywords: initial +PASS Can set 'font-style' to CSS-wide keywords: inherit +PASS Can set 'font-style' to CSS-wide keywords: unset +PASS Can set 'font-style' to CSS-wide keywords: revert +PASS Can set 'font-style' to var() references: var(--A) +PASS Can set 'font-style' to the 'normal' keyword: normal +PASS Can set 'font-style' to the 'italic' keyword: italic +FAIL Can set 'font-style' to the 'oblique' keyword: oblique assert_equals: expected "oblique" but got "italic" PASS Setting 'font-style' to a length throws TypeError PASS Setting 'font-style' to a percent throws TypeError PASS Setting 'font-style' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-style.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-style.html.ini index 5f2cc9e..858ae49 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-style.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-style.html.ini
@@ -1,3 +1,3 @@ [font-style.html] - [Can set 'font-style' to the 'oblique' keyword] + [Can set 'font-style' to the 'oblique' keyword: oblique] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-variant-alternates-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-variant-alternates-expected.txt index d68d44a..850a09d 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-variant-alternates-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-variant-alternates-expected.txt
@@ -1,8 +1,11 @@ This is a testharness.js-based test. -PASS Can set 'font-variant-alternates' to CSS-wide keywords -PASS Can set 'font-variant-alternates' to var() references -PASS Can set 'font-variant-alternates' to the 'normal' keyword -FAIL Can set 'font-variant-alternates' to the 'historical-forms' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'font-variant-alternates' to CSS-wide keywords: initial +PASS Can set 'font-variant-alternates' to CSS-wide keywords: inherit +PASS Can set 'font-variant-alternates' to CSS-wide keywords: unset +PASS Can set 'font-variant-alternates' to CSS-wide keywords: revert +PASS Can set 'font-variant-alternates' to var() references: var(--A) +PASS Can set 'font-variant-alternates' to the 'normal' keyword: normal +FAIL Can set 'font-variant-alternates' to the 'historical-forms' keyword: historical-forms Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'font-variant-alternates' to a length throws TypeError PASS Setting 'font-variant-alternates' to a percent throws TypeError PASS Setting 'font-variant-alternates' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-variant-alternates.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-variant-alternates.html.ini index 8584638..b212ba0 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-variant-alternates.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-variant-alternates.html.ini
@@ -1,3 +1,3 @@ [font-variant-alternates.html] - [Can set 'font-variant-alternates' to the 'historical-forms' keyword] + [Can set 'font-variant-alternates' to the 'historical-forms' keyword: historical-forms] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-variant-emoji-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-variant-emoji-expected.txt index eb685a48..951bee83 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-variant-emoji-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-variant-emoji-expected.txt
@@ -1,9 +1,12 @@ This is a testharness.js-based test. -FAIL Can set 'font-variant-emoji' to CSS-wide keywords Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-variant-emoji -FAIL Can set 'font-variant-emoji' to var() references Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-variant-emoji -FAIL Can set 'font-variant-emoji' to the 'auto' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-variant-emoji -FAIL Can set 'font-variant-emoji' to the 'text' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-variant-emoji -FAIL Can set 'font-variant-emoji' to the 'emoji' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-variant-emoji +FAIL Can set 'font-variant-emoji' to CSS-wide keywords: initial Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-variant-emoji +FAIL Can set 'font-variant-emoji' to CSS-wide keywords: inherit Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-variant-emoji +FAIL Can set 'font-variant-emoji' to CSS-wide keywords: unset Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-variant-emoji +FAIL Can set 'font-variant-emoji' to CSS-wide keywords: revert Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-variant-emoji +FAIL Can set 'font-variant-emoji' to var() references: var(--A) Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-variant-emoji +FAIL Can set 'font-variant-emoji' to the 'auto' keyword: auto Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-variant-emoji +FAIL Can set 'font-variant-emoji' to the 'text' keyword: text Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-variant-emoji +FAIL Can set 'font-variant-emoji' to the 'emoji' keyword: emoji Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: font-variant-emoji PASS Setting 'font-variant-emoji' to a length throws TypeError PASS Setting 'font-variant-emoji' to a percent throws TypeError PASS Setting 'font-variant-emoji' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-variant-emoji.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-variant-emoji.html.ini index c3cb329b..fac7fff 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-variant-emoji.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-variant-emoji.html.ini
@@ -1,15 +1,24 @@ [font-variant-emoji.html] - [Can set 'font-variant-emoji' to CSS-wide keywords] + [Can set 'font-variant-emoji' to the 'auto' keyword: auto] expected: FAIL - [Can set 'font-variant-emoji' to var() references] + [Can set 'font-variant-emoji' to the 'emoji' keyword: emoji] expected: FAIL - [Can set 'font-variant-emoji' to the 'auto' keyword] + [Can set 'font-variant-emoji' to CSS-wide keywords: revert] expected: FAIL - [Can set 'font-variant-emoji' to the 'text' keyword] + [Can set 'font-variant-emoji' to CSS-wide keywords: unset] expected: FAIL - [Can set 'font-variant-emoji' to the 'emoji' keyword] + [Can set 'font-variant-emoji' to the 'text' keyword: text] + expected: FAIL + + [Can set 'font-variant-emoji' to CSS-wide keywords: inherit] + expected: FAIL + + [Can set 'font-variant-emoji' to CSS-wide keywords: initial] + expected: FAIL + + [Can set 'font-variant-emoji' to var() references: var(--A)] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-weight-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-weight-expected.txt index 1e36de6..0643832 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-weight-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-weight-expected.txt
@@ -1,11 +1,17 @@ This is a testharness.js-based test. -PASS Can set 'font-weight' to CSS-wide keywords -PASS Can set 'font-weight' to var() references -PASS Can set 'font-weight' to the 'normal' keyword -PASS Can set 'font-weight' to the 'bold' keyword -PASS Can set 'font-weight' to the 'bolder' keyword -PASS Can set 'font-weight' to the 'lighter' keyword -FAIL Can set 'font-weight' to a number assert_approx_equals: expected -3.14 +/- 0.000001 but got -3 +PASS Can set 'font-weight' to CSS-wide keywords: initial +PASS Can set 'font-weight' to CSS-wide keywords: inherit +PASS Can set 'font-weight' to CSS-wide keywords: unset +PASS Can set 'font-weight' to CSS-wide keywords: revert +PASS Can set 'font-weight' to var() references: var(--A) +PASS Can set 'font-weight' to the 'normal' keyword: normal +PASS Can set 'font-weight' to the 'bold' keyword: bold +PASS Can set 'font-weight' to the 'bolder' keyword: bolder +PASS Can set 'font-weight' to the 'lighter' keyword: lighter +PASS Can set 'font-weight' to a number: 0 +FAIL Can set 'font-weight' to a number: -3.14 assert_approx_equals: expected -3.14 +/- 0.000001 but got -3 +FAIL Can set 'font-weight' to a number: 3.14 assert_approx_equals: expected 3.14 +/- 0.000001 but got 3 +PASS Can set 'font-weight' to a number: calc(2 + 3) PASS Setting 'font-weight' to a length throws TypeError PASS Setting 'font-weight' to a percent throws TypeError PASS Setting 'font-weight' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-weight.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-weight.html.ini index 6463de1..49b15fe 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-weight.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/font-weight.html.ini
@@ -1,3 +1,6 @@ [font-weight.html] - [Can set 'font-weight' to a number] + [Can set 'font-weight' to a number: -3.14] + expected: FAIL + + [Can set 'font-weight' to a number: 3.14] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/image-rendering-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/image-rendering-expected.txt index f486895..657e9f1 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/image-rendering-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/image-rendering-expected.txt
@@ -1,11 +1,14 @@ This is a testharness.js-based test. -PASS Can set 'image-rendering' to CSS-wide keywords -PASS Can set 'image-rendering' to var() references -PASS Can set 'image-rendering' to the 'auto' keyword -FAIL Can set 'image-rendering' to the 'smooth' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'image-rendering' to the 'high-quality' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'image-rendering' to the 'crisp-edges' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -PASS Can set 'image-rendering' to the 'pixelated' keyword +PASS Can set 'image-rendering' to CSS-wide keywords: initial +PASS Can set 'image-rendering' to CSS-wide keywords: inherit +PASS Can set 'image-rendering' to CSS-wide keywords: unset +PASS Can set 'image-rendering' to CSS-wide keywords: revert +PASS Can set 'image-rendering' to var() references: var(--A) +PASS Can set 'image-rendering' to the 'auto' keyword: auto +FAIL Can set 'image-rendering' to the 'smooth' keyword: smooth Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'image-rendering' to the 'high-quality' keyword: high-quality Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'image-rendering' to the 'crisp-edges' keyword: crisp-edges Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'image-rendering' to the 'pixelated' keyword: pixelated PASS Setting 'image-rendering' to a length throws TypeError PASS Setting 'image-rendering' to a percent throws TypeError PASS Setting 'image-rendering' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/image-rendering.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/image-rendering.html.ini index 9b24b2c6..bbe0713b 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/image-rendering.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/image-rendering.html.ini
@@ -1,9 +1,9 @@ [image-rendering.html] - [Can set 'image-rendering' to the 'smooth' keyword] + [Can set 'image-rendering' to the 'crisp-edges' keyword: crisp-edges] expected: FAIL - [Can set 'image-rendering' to the 'high-quality' keyword] + [Can set 'image-rendering' to the 'high-quality' keyword: high-quality] expected: FAIL - [Can set 'image-rendering' to the 'crisp-edges' keyword] + [Can set 'image-rendering' to the 'smooth' keyword: smooth] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/letter-spacing-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/letter-spacing-expected.txt index 15cc7d7..bdaa880 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/letter-spacing-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/letter-spacing-expected.txt
@@ -1,8 +1,14 @@ This is a testharness.js-based test. -PASS Can set 'letter-spacing' to CSS-wide keywords -PASS Can set 'letter-spacing' to var() references -PASS Can set 'letter-spacing' to the 'normal' keyword -FAIL Can set 'letter-spacing' to a length assert_equals: expected "CSSUnitValue" but got "CSSKeywordValue" +PASS Can set 'letter-spacing' to CSS-wide keywords: initial +PASS Can set 'letter-spacing' to CSS-wide keywords: inherit +PASS Can set 'letter-spacing' to CSS-wide keywords: unset +PASS Can set 'letter-spacing' to CSS-wide keywords: revert +PASS Can set 'letter-spacing' to var() references: var(--A) +PASS Can set 'letter-spacing' to the 'normal' keyword: normal +FAIL Can set 'letter-spacing' to a length: 0px assert_equals: expected "CSSUnitValue" but got "CSSKeywordValue" +PASS Can set 'letter-spacing' to a length: -3.14em +PASS Can set 'letter-spacing' to a length: 3.14cm +FAIL Can set 'letter-spacing' to a length: calc(0px + 0em) assert_class_string: relative lengths must compute to a CSSUnitValue expected "[object CSSUnitValue]" but got "[object CSSKeywordValue]" PASS Setting 'letter-spacing' to a percent throws TypeError PASS Setting 'letter-spacing' to a time throws TypeError PASS Setting 'letter-spacing' to an angle throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/letter-spacing.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/letter-spacing.html.ini index 03bf8880..3f3e4c7 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/letter-spacing.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/letter-spacing.html.ini
@@ -1,3 +1,6 @@ [letter-spacing.html] - [Can set 'letter-spacing' to a length] + [Can set 'letter-spacing' to a length: 0px] + expected: FAIL + + [Can set 'letter-spacing' to a length: calc(0px + 0em)] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/line-height-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/line-height-expected.txt index 3dc0cdf..730411f 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/line-height-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/line-height-expected.txt
@@ -1,10 +1,22 @@ This is a testharness.js-based test. -PASS Can set 'line-height' to CSS-wide keywords -PASS Can set 'line-height' to var() references -PASS Can set 'line-height' to the 'normal' keyword -FAIL Can set 'line-height' to a length assert_class_string: relative lengths must compute to a CSSUnitValue expected "[object CSSUnitValue]" but got "[object CSSKeywordValue]" -FAIL Can set 'line-height' to a number assert_class_string: relative lengths must compute to a CSSUnitValue expected "[object CSSUnitValue]" but got "[object CSSKeywordValue]" -FAIL Can set 'line-height' to a percent assert_class_string: relative lengths must compute to a CSSUnitValue expected "[object CSSUnitValue]" but got "[object CSSKeywordValue]" +PASS Can set 'line-height' to CSS-wide keywords: initial +PASS Can set 'line-height' to CSS-wide keywords: inherit +PASS Can set 'line-height' to CSS-wide keywords: unset +PASS Can set 'line-height' to CSS-wide keywords: revert +PASS Can set 'line-height' to var() references: var(--A) +PASS Can set 'line-height' to the 'normal' keyword: normal +PASS Can set 'line-height' to a length: 0px +FAIL Can set 'line-height' to a length: -3.14em assert_class_string: relative lengths must compute to a CSSUnitValue expected "[object CSSUnitValue]" but got "[object CSSKeywordValue]" +PASS Can set 'line-height' to a length: 3.14cm +PASS Can set 'line-height' to a length: calc(0px + 0em) +PASS Can set 'line-height' to a number: 0 +FAIL Can set 'line-height' to a number: -3.14 assert_class_string: relative lengths must compute to a CSSUnitValue expected "[object CSSUnitValue]" but got "[object CSSKeywordValue]" +PASS Can set 'line-height' to a number: 3.14 +PASS Can set 'line-height' to a number: calc(2 + 3) +PASS Can set 'line-height' to a percent: 0% +FAIL Can set 'line-height' to a percent: -3.14% assert_class_string: relative lengths must compute to a CSSUnitValue expected "[object CSSUnitValue]" but got "[object CSSKeywordValue]" +PASS Can set 'line-height' to a percent: 3.14% +PASS Can set 'line-height' to a percent: calc(0% + 0%) PASS Setting 'line-height' to a time throws TypeError PASS Setting 'line-height' to an angle throws TypeError PASS Setting 'line-height' to a flexible length throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/line-height.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/line-height.html.ini index b01bfd7..adca732 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/line-height.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/line-height.html.ini
@@ -1,9 +1,9 @@ [line-height.html] - [Can set 'line-height' to a length] + [Can set 'line-height' to a percent: -3.14%] expected: FAIL - [Can set 'line-height' to a number] + [Can set 'line-height' to a length: -3.14em] expected: FAIL - [Can set 'line-height' to a percent] + [Can set 'line-height' to a number: -3.14] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/list-style-type-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/list-style-type-expected.txt index 03465d6..3ad49a72 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/list-style-type-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/list-style-type-expected.txt
@@ -1,8 +1,11 @@ This is a testharness.js-based test. -PASS Can set 'list-style-type' to CSS-wide keywords -PASS Can set 'list-style-type' to var() references -FAIL Can set 'list-style-type' to the 'none' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'list-style-type' to the 'custom-ident' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'list-style-type' to CSS-wide keywords: initial +PASS Can set 'list-style-type' to CSS-wide keywords: inherit +PASS Can set 'list-style-type' to CSS-wide keywords: unset +PASS Can set 'list-style-type' to CSS-wide keywords: revert +PASS Can set 'list-style-type' to var() references: var(--A) +FAIL Can set 'list-style-type' to the 'none' keyword: none Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'list-style-type' to the 'custom-ident' keyword: custom-ident Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'list-style-type' to a length throws TypeError PASS Setting 'list-style-type' to a percent throws TypeError PASS Setting 'list-style-type' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/list-style-type.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/list-style-type.html.ini index 65e6514a..e9cfe58 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/list-style-type.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/list-style-type.html.ini
@@ -1,9 +1,9 @@ [list-style-type.html] - [Can set 'list-style-type' to the 'none' keyword] - expected: FAIL - - [Can set 'list-style-type' to the 'custom-ident' keyword] - expected: FAIL - ['list-style-type' does not supported 'symbols("*" "A" "B" "C")'] expected: FAIL + + [Can set 'list-style-type' to the 'custom-ident' keyword: custom-ident] + expected: FAIL + + [Can set 'list-style-type' to the 'none' keyword: none] + expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/logical-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/logical-expected.txt index f9a30fc..68c2ccf 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/logical-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/logical-expected.txt
@@ -1,188 +1,353 @@ This is a testharness.js-based test. -Found 502 tests; 406 PASS, 96 FAIL, 0 TIMEOUT, 0 NOTRUN. -PASS Can set 'margin-block-start' to CSS-wide keywords -PASS Can set 'margin-block-start' to var() references -PASS Can set 'margin-block-start' to a percent -PASS Can set 'margin-block-start' to a length +Found 790 tests; 586 PASS, 204 FAIL, 0 TIMEOUT, 0 NOTRUN. +PASS Can set 'margin-block-start' to CSS-wide keywords: initial +PASS Can set 'margin-block-start' to CSS-wide keywords: inherit +PASS Can set 'margin-block-start' to CSS-wide keywords: unset +PASS Can set 'margin-block-start' to CSS-wide keywords: revert +PASS Can set 'margin-block-start' to var() references: var(--A) +PASS Can set 'margin-block-start' to a percent: 0% +PASS Can set 'margin-block-start' to a percent: -3.14% +PASS Can set 'margin-block-start' to a percent: 3.14% +PASS Can set 'margin-block-start' to a percent: calc(0% + 0%) +PASS Can set 'margin-block-start' to a length: 0px +PASS Can set 'margin-block-start' to a length: -3.14em +PASS Can set 'margin-block-start' to a length: 3.14cm +PASS Can set 'margin-block-start' to a length: calc(0px + 0em) PASS Setting 'margin-block-start' to a time throws TypeError PASS Setting 'margin-block-start' to an angle throws TypeError PASS Setting 'margin-block-start' to a flexible length throws TypeError PASS Setting 'margin-block-start' to a number throws TypeError PASS Setting 'margin-block-start' to a URL throws TypeError PASS Setting 'margin-block-start' to a transform throws TypeError -PASS Can set 'margin-block-end' to CSS-wide keywords -PASS Can set 'margin-block-end' to var() references -PASS Can set 'margin-block-end' to a percent -PASS Can set 'margin-block-end' to a length +PASS Can set 'margin-block-end' to CSS-wide keywords: initial +PASS Can set 'margin-block-end' to CSS-wide keywords: inherit +PASS Can set 'margin-block-end' to CSS-wide keywords: unset +PASS Can set 'margin-block-end' to CSS-wide keywords: revert +PASS Can set 'margin-block-end' to var() references: var(--A) +PASS Can set 'margin-block-end' to a percent: 0% +PASS Can set 'margin-block-end' to a percent: -3.14% +PASS Can set 'margin-block-end' to a percent: 3.14% +PASS Can set 'margin-block-end' to a percent: calc(0% + 0%) +PASS Can set 'margin-block-end' to a length: 0px +PASS Can set 'margin-block-end' to a length: -3.14em +PASS Can set 'margin-block-end' to a length: 3.14cm +PASS Can set 'margin-block-end' to a length: calc(0px + 0em) PASS Setting 'margin-block-end' to a time throws TypeError PASS Setting 'margin-block-end' to an angle throws TypeError PASS Setting 'margin-block-end' to a flexible length throws TypeError PASS Setting 'margin-block-end' to a number throws TypeError PASS Setting 'margin-block-end' to a URL throws TypeError PASS Setting 'margin-block-end' to a transform throws TypeError -PASS Can set 'margin-inline-start' to CSS-wide keywords -PASS Can set 'margin-inline-start' to var() references -PASS Can set 'margin-inline-start' to a percent -PASS Can set 'margin-inline-start' to a length +PASS Can set 'margin-inline-start' to CSS-wide keywords: initial +PASS Can set 'margin-inline-start' to CSS-wide keywords: inherit +PASS Can set 'margin-inline-start' to CSS-wide keywords: unset +PASS Can set 'margin-inline-start' to CSS-wide keywords: revert +PASS Can set 'margin-inline-start' to var() references: var(--A) +PASS Can set 'margin-inline-start' to a percent: 0% +PASS Can set 'margin-inline-start' to a percent: -3.14% +PASS Can set 'margin-inline-start' to a percent: 3.14% +PASS Can set 'margin-inline-start' to a percent: calc(0% + 0%) +PASS Can set 'margin-inline-start' to a length: 0px +PASS Can set 'margin-inline-start' to a length: -3.14em +PASS Can set 'margin-inline-start' to a length: 3.14cm +PASS Can set 'margin-inline-start' to a length: calc(0px + 0em) PASS Setting 'margin-inline-start' to a time throws TypeError PASS Setting 'margin-inline-start' to an angle throws TypeError PASS Setting 'margin-inline-start' to a flexible length throws TypeError PASS Setting 'margin-inline-start' to a number throws TypeError PASS Setting 'margin-inline-start' to a URL throws TypeError PASS Setting 'margin-inline-start' to a transform throws TypeError -PASS Can set 'margin-inline-end' to CSS-wide keywords -PASS Can set 'margin-inline-end' to var() references -PASS Can set 'margin-inline-end' to a percent -PASS Can set 'margin-inline-end' to a length +PASS Can set 'margin-inline-end' to CSS-wide keywords: initial +PASS Can set 'margin-inline-end' to CSS-wide keywords: inherit +PASS Can set 'margin-inline-end' to CSS-wide keywords: unset +PASS Can set 'margin-inline-end' to CSS-wide keywords: revert +PASS Can set 'margin-inline-end' to var() references: var(--A) +PASS Can set 'margin-inline-end' to a percent: 0% +PASS Can set 'margin-inline-end' to a percent: -3.14% +PASS Can set 'margin-inline-end' to a percent: 3.14% +PASS Can set 'margin-inline-end' to a percent: calc(0% + 0%) +PASS Can set 'margin-inline-end' to a length: 0px +PASS Can set 'margin-inline-end' to a length: -3.14em +PASS Can set 'margin-inline-end' to a length: 3.14cm +PASS Can set 'margin-inline-end' to a length: calc(0px + 0em) PASS Setting 'margin-inline-end' to a time throws TypeError PASS Setting 'margin-inline-end' to an angle throws TypeError PASS Setting 'margin-inline-end' to a flexible length throws TypeError PASS Setting 'margin-inline-end' to a number throws TypeError PASS Setting 'margin-inline-end' to a URL throws TypeError PASS Setting 'margin-inline-end' to a transform throws TypeError -FAIL Can set 'margin-block' to CSS-wide keywords assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" -FAIL Can set 'margin-block' to var() references assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" -FAIL Can set 'margin-block' to a percent Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'margin-block' to a length Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'margin-block' to CSS-wide keywords: initial assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'margin-block' to CSS-wide keywords: inherit assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'margin-block' to CSS-wide keywords: unset assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'margin-block' to CSS-wide keywords: revert assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'margin-block' to var() references: var(--A) assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" +FAIL Can set 'margin-block' to a percent: 0% Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'margin-block' to a percent: -3.14% Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'margin-block' to a percent: 3.14% Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'margin-block' to a percent: calc(0% + 0%) Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'margin-block' to a length: 0px Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'margin-block' to a length: -3.14em Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'margin-block' to a length: 3.14cm Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'margin-block' to a length: calc(0px + 0em) Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'margin-block' to a time throws TypeError PASS Setting 'margin-block' to an angle throws TypeError PASS Setting 'margin-block' to a flexible length throws TypeError PASS Setting 'margin-block' to a number throws TypeError PASS Setting 'margin-block' to a URL throws TypeError PASS Setting 'margin-block' to a transform throws TypeError -FAIL Can set 'margin-inline' to CSS-wide keywords assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" -FAIL Can set 'margin-inline' to var() references assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" -FAIL Can set 'margin-inline' to a percent Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'margin-inline' to a length Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'margin-inline' to CSS-wide keywords: initial assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'margin-inline' to CSS-wide keywords: inherit assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'margin-inline' to CSS-wide keywords: unset assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'margin-inline' to CSS-wide keywords: revert assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'margin-inline' to var() references: var(--A) assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" +FAIL Can set 'margin-inline' to a percent: 0% Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'margin-inline' to a percent: -3.14% Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'margin-inline' to a percent: 3.14% Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'margin-inline' to a percent: calc(0% + 0%) Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'margin-inline' to a length: 0px Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'margin-inline' to a length: -3.14em Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'margin-inline' to a length: 3.14cm Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'margin-inline' to a length: calc(0px + 0em) Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'margin-inline' to a time throws TypeError PASS Setting 'margin-inline' to an angle throws TypeError PASS Setting 'margin-inline' to a flexible length throws TypeError PASS Setting 'margin-inline' to a number throws TypeError PASS Setting 'margin-inline' to a URL throws TypeError PASS Setting 'margin-inline' to a transform throws TypeError -PASS Can set 'inset-block-start' to CSS-wide keywords -PASS Can set 'inset-block-start' to var() references -PASS Can set 'inset-block-start' to a percent -PASS Can set 'inset-block-start' to a length +PASS Can set 'inset-block-start' to CSS-wide keywords: initial +PASS Can set 'inset-block-start' to CSS-wide keywords: inherit +PASS Can set 'inset-block-start' to CSS-wide keywords: unset +PASS Can set 'inset-block-start' to CSS-wide keywords: revert +PASS Can set 'inset-block-start' to var() references: var(--A) +PASS Can set 'inset-block-start' to a percent: 0% +PASS Can set 'inset-block-start' to a percent: -3.14% +PASS Can set 'inset-block-start' to a percent: 3.14% +PASS Can set 'inset-block-start' to a percent: calc(0% + 0%) +PASS Can set 'inset-block-start' to a length: 0px +PASS Can set 'inset-block-start' to a length: -3.14em +PASS Can set 'inset-block-start' to a length: 3.14cm +PASS Can set 'inset-block-start' to a length: calc(0px + 0em) PASS Setting 'inset-block-start' to a time throws TypeError PASS Setting 'inset-block-start' to an angle throws TypeError PASS Setting 'inset-block-start' to a flexible length throws TypeError PASS Setting 'inset-block-start' to a number throws TypeError PASS Setting 'inset-block-start' to a URL throws TypeError PASS Setting 'inset-block-start' to a transform throws TypeError -PASS Can set 'inset-block-end' to CSS-wide keywords -PASS Can set 'inset-block-end' to var() references -PASS Can set 'inset-block-end' to a percent -PASS Can set 'inset-block-end' to a length +PASS Can set 'inset-block-end' to CSS-wide keywords: initial +PASS Can set 'inset-block-end' to CSS-wide keywords: inherit +PASS Can set 'inset-block-end' to CSS-wide keywords: unset +PASS Can set 'inset-block-end' to CSS-wide keywords: revert +PASS Can set 'inset-block-end' to var() references: var(--A) +PASS Can set 'inset-block-end' to a percent: 0% +PASS Can set 'inset-block-end' to a percent: -3.14% +PASS Can set 'inset-block-end' to a percent: 3.14% +PASS Can set 'inset-block-end' to a percent: calc(0% + 0%) +PASS Can set 'inset-block-end' to a length: 0px +PASS Can set 'inset-block-end' to a length: -3.14em +PASS Can set 'inset-block-end' to a length: 3.14cm +PASS Can set 'inset-block-end' to a length: calc(0px + 0em) PASS Setting 'inset-block-end' to a time throws TypeError PASS Setting 'inset-block-end' to an angle throws TypeError PASS Setting 'inset-block-end' to a flexible length throws TypeError PASS Setting 'inset-block-end' to a number throws TypeError PASS Setting 'inset-block-end' to a URL throws TypeError PASS Setting 'inset-block-end' to a transform throws TypeError -PASS Can set 'inset-inline-start' to CSS-wide keywords -PASS Can set 'inset-inline-start' to var() references -PASS Can set 'inset-inline-start' to a percent -PASS Can set 'inset-inline-start' to a length +PASS Can set 'inset-inline-start' to CSS-wide keywords: initial +PASS Can set 'inset-inline-start' to CSS-wide keywords: inherit +PASS Can set 'inset-inline-start' to CSS-wide keywords: unset +PASS Can set 'inset-inline-start' to CSS-wide keywords: revert +PASS Can set 'inset-inline-start' to var() references: var(--A) +PASS Can set 'inset-inline-start' to a percent: 0% +PASS Can set 'inset-inline-start' to a percent: -3.14% +PASS Can set 'inset-inline-start' to a percent: 3.14% +PASS Can set 'inset-inline-start' to a percent: calc(0% + 0%) +PASS Can set 'inset-inline-start' to a length: 0px +PASS Can set 'inset-inline-start' to a length: -3.14em +PASS Can set 'inset-inline-start' to a length: 3.14cm +PASS Can set 'inset-inline-start' to a length: calc(0px + 0em) PASS Setting 'inset-inline-start' to a time throws TypeError PASS Setting 'inset-inline-start' to an angle throws TypeError PASS Setting 'inset-inline-start' to a flexible length throws TypeError PASS Setting 'inset-inline-start' to a number throws TypeError PASS Setting 'inset-inline-start' to a URL throws TypeError PASS Setting 'inset-inline-start' to a transform throws TypeError -PASS Can set 'inset-inline-end' to CSS-wide keywords -PASS Can set 'inset-inline-end' to var() references -PASS Can set 'inset-inline-end' to a percent -PASS Can set 'inset-inline-end' to a length +PASS Can set 'inset-inline-end' to CSS-wide keywords: initial +PASS Can set 'inset-inline-end' to CSS-wide keywords: inherit +PASS Can set 'inset-inline-end' to CSS-wide keywords: unset +PASS Can set 'inset-inline-end' to CSS-wide keywords: revert +PASS Can set 'inset-inline-end' to var() references: var(--A) +PASS Can set 'inset-inline-end' to a percent: 0% +PASS Can set 'inset-inline-end' to a percent: -3.14% +PASS Can set 'inset-inline-end' to a percent: 3.14% +PASS Can set 'inset-inline-end' to a percent: calc(0% + 0%) +PASS Can set 'inset-inline-end' to a length: 0px +PASS Can set 'inset-inline-end' to a length: -3.14em +PASS Can set 'inset-inline-end' to a length: 3.14cm +PASS Can set 'inset-inline-end' to a length: calc(0px + 0em) PASS Setting 'inset-inline-end' to a time throws TypeError PASS Setting 'inset-inline-end' to an angle throws TypeError PASS Setting 'inset-inline-end' to a flexible length throws TypeError PASS Setting 'inset-inline-end' to a number throws TypeError PASS Setting 'inset-inline-end' to a URL throws TypeError PASS Setting 'inset-inline-end' to a transform throws TypeError -FAIL Can set 'inset-block' to CSS-wide keywords assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" -FAIL Can set 'inset-block' to var() references assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" -FAIL Can set 'inset-block' to a percent Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'inset-block' to a length Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'inset-block' to CSS-wide keywords: initial assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'inset-block' to CSS-wide keywords: inherit assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'inset-block' to CSS-wide keywords: unset assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'inset-block' to CSS-wide keywords: revert assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'inset-block' to var() references: var(--A) assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" +FAIL Can set 'inset-block' to a percent: 0% Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'inset-block' to a percent: -3.14% Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'inset-block' to a percent: 3.14% Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'inset-block' to a percent: calc(0% + 0%) Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'inset-block' to a length: 0px Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'inset-block' to a length: -3.14em Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'inset-block' to a length: 3.14cm Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'inset-block' to a length: calc(0px + 0em) Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'inset-block' to a time throws TypeError PASS Setting 'inset-block' to an angle throws TypeError PASS Setting 'inset-block' to a flexible length throws TypeError PASS Setting 'inset-block' to a number throws TypeError PASS Setting 'inset-block' to a URL throws TypeError PASS Setting 'inset-block' to a transform throws TypeError -FAIL Can set 'inset-inline' to CSS-wide keywords assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" -FAIL Can set 'inset-inline' to var() references assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" -FAIL Can set 'inset-inline' to a percent Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'inset-inline' to a length Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'inset-inline' to CSS-wide keywords: initial assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'inset-inline' to CSS-wide keywords: inherit assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'inset-inline' to CSS-wide keywords: unset assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'inset-inline' to CSS-wide keywords: revert assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'inset-inline' to var() references: var(--A) assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" +FAIL Can set 'inset-inline' to a percent: 0% Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'inset-inline' to a percent: -3.14% Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'inset-inline' to a percent: 3.14% Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'inset-inline' to a percent: calc(0% + 0%) Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'inset-inline' to a length: 0px Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'inset-inline' to a length: -3.14em Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'inset-inline' to a length: 3.14cm Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'inset-inline' to a length: calc(0px + 0em) Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'inset-inline' to a time throws TypeError PASS Setting 'inset-inline' to an angle throws TypeError PASS Setting 'inset-inline' to a flexible length throws TypeError PASS Setting 'inset-inline' to a number throws TypeError PASS Setting 'inset-inline' to a URL throws TypeError PASS Setting 'inset-inline' to a transform throws TypeError -PASS Can set 'padding-block-start' to CSS-wide keywords -PASS Can set 'padding-block-start' to var() references -PASS Can set 'padding-block-start' to a percent -PASS Can set 'padding-block-start' to a length +PASS Can set 'padding-block-start' to CSS-wide keywords: initial +PASS Can set 'padding-block-start' to CSS-wide keywords: inherit +PASS Can set 'padding-block-start' to CSS-wide keywords: unset +PASS Can set 'padding-block-start' to CSS-wide keywords: revert +PASS Can set 'padding-block-start' to var() references: var(--A) +PASS Can set 'padding-block-start' to a percent: 0% +PASS Can set 'padding-block-start' to a percent: -3.14% +PASS Can set 'padding-block-start' to a percent: 3.14% +PASS Can set 'padding-block-start' to a percent: calc(0% + 0%) +PASS Can set 'padding-block-start' to a length: 0px +PASS Can set 'padding-block-start' to a length: -3.14em +PASS Can set 'padding-block-start' to a length: 3.14cm +PASS Can set 'padding-block-start' to a length: calc(0px + 0em) PASS Setting 'padding-block-start' to a time throws TypeError PASS Setting 'padding-block-start' to an angle throws TypeError PASS Setting 'padding-block-start' to a flexible length throws TypeError PASS Setting 'padding-block-start' to a number throws TypeError PASS Setting 'padding-block-start' to a URL throws TypeError PASS Setting 'padding-block-start' to a transform throws TypeError -PASS Can set 'padding-block-end' to CSS-wide keywords -PASS Can set 'padding-block-end' to var() references -PASS Can set 'padding-block-end' to a percent -PASS Can set 'padding-block-end' to a length +PASS Can set 'padding-block-end' to CSS-wide keywords: initial +PASS Can set 'padding-block-end' to CSS-wide keywords: inherit +PASS Can set 'padding-block-end' to CSS-wide keywords: unset +PASS Can set 'padding-block-end' to CSS-wide keywords: revert +PASS Can set 'padding-block-end' to var() references: var(--A) +PASS Can set 'padding-block-end' to a percent: 0% +PASS Can set 'padding-block-end' to a percent: -3.14% +PASS Can set 'padding-block-end' to a percent: 3.14% +PASS Can set 'padding-block-end' to a percent: calc(0% + 0%) +PASS Can set 'padding-block-end' to a length: 0px +PASS Can set 'padding-block-end' to a length: -3.14em +PASS Can set 'padding-block-end' to a length: 3.14cm +PASS Can set 'padding-block-end' to a length: calc(0px + 0em) PASS Setting 'padding-block-end' to a time throws TypeError PASS Setting 'padding-block-end' to an angle throws TypeError PASS Setting 'padding-block-end' to a flexible length throws TypeError PASS Setting 'padding-block-end' to a number throws TypeError PASS Setting 'padding-block-end' to a URL throws TypeError PASS Setting 'padding-block-end' to a transform throws TypeError -PASS Can set 'padding-inline-start' to CSS-wide keywords -PASS Can set 'padding-inline-start' to var() references -PASS Can set 'padding-inline-start' to a percent -PASS Can set 'padding-inline-start' to a length +PASS Can set 'padding-inline-start' to CSS-wide keywords: initial +PASS Can set 'padding-inline-start' to CSS-wide keywords: inherit +PASS Can set 'padding-inline-start' to CSS-wide keywords: unset +PASS Can set 'padding-inline-start' to CSS-wide keywords: revert +PASS Can set 'padding-inline-start' to var() references: var(--A) +PASS Can set 'padding-inline-start' to a percent: 0% +PASS Can set 'padding-inline-start' to a percent: -3.14% +PASS Can set 'padding-inline-start' to a percent: 3.14% +PASS Can set 'padding-inline-start' to a percent: calc(0% + 0%) +PASS Can set 'padding-inline-start' to a length: 0px +PASS Can set 'padding-inline-start' to a length: -3.14em +PASS Can set 'padding-inline-start' to a length: 3.14cm +PASS Can set 'padding-inline-start' to a length: calc(0px + 0em) PASS Setting 'padding-inline-start' to a time throws TypeError PASS Setting 'padding-inline-start' to an angle throws TypeError PASS Setting 'padding-inline-start' to a flexible length throws TypeError PASS Setting 'padding-inline-start' to a number throws TypeError PASS Setting 'padding-inline-start' to a URL throws TypeError PASS Setting 'padding-inline-start' to a transform throws TypeError -PASS Can set 'padding-inline-end' to CSS-wide keywords -PASS Can set 'padding-inline-end' to var() references -PASS Can set 'padding-inline-end' to a percent -PASS Can set 'padding-inline-end' to a length +PASS Can set 'padding-inline-end' to CSS-wide keywords: initial +PASS Can set 'padding-inline-end' to CSS-wide keywords: inherit +PASS Can set 'padding-inline-end' to CSS-wide keywords: unset +PASS Can set 'padding-inline-end' to CSS-wide keywords: revert +PASS Can set 'padding-inline-end' to var() references: var(--A) +PASS Can set 'padding-inline-end' to a percent: 0% +PASS Can set 'padding-inline-end' to a percent: -3.14% +PASS Can set 'padding-inline-end' to a percent: 3.14% +PASS Can set 'padding-inline-end' to a percent: calc(0% + 0%) +PASS Can set 'padding-inline-end' to a length: 0px +PASS Can set 'padding-inline-end' to a length: -3.14em +PASS Can set 'padding-inline-end' to a length: 3.14cm +PASS Can set 'padding-inline-end' to a length: calc(0px + 0em) PASS Setting 'padding-inline-end' to a time throws TypeError PASS Setting 'padding-inline-end' to an angle throws TypeError PASS Setting 'padding-inline-end' to a flexible length throws TypeError PASS Setting 'padding-inline-end' to a number throws TypeError PASS Setting 'padding-inline-end' to a URL throws TypeError PASS Setting 'padding-inline-end' to a transform throws TypeError -FAIL Can set 'padding-block' to CSS-wide keywords assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" -FAIL Can set 'padding-block' to var() references assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" -FAIL Can set 'padding-block' to a percent Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'padding-block' to a length Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'padding-block' to CSS-wide keywords: initial assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'padding-block' to CSS-wide keywords: inherit assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'padding-block' to CSS-wide keywords: unset assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'padding-block' to CSS-wide keywords: revert assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'padding-block' to var() references: var(--A) assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" +FAIL Can set 'padding-block' to a percent: 0% Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'padding-block' to a percent: -3.14% Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'padding-block' to a percent: 3.14% Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'padding-block' to a percent: calc(0% + 0%) Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'padding-block' to a length: 0px Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'padding-block' to a length: -3.14em Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'padding-block' to a length: 3.14cm Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'padding-block' to a length: calc(0px + 0em) Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'padding-block' to a time throws TypeError PASS Setting 'padding-block' to an angle throws TypeError PASS Setting 'padding-block' to a flexible length throws TypeError PASS Setting 'padding-block' to a number throws TypeError PASS Setting 'padding-block' to a URL throws TypeError PASS Setting 'padding-block' to a transform throws TypeError -FAIL Can set 'padding-inline' to CSS-wide keywords assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" -FAIL Can set 'padding-inline' to var() references assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" -FAIL Can set 'padding-inline' to a percent Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'padding-inline' to a length Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'padding-inline' to CSS-wide keywords: initial assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'padding-inline' to CSS-wide keywords: inherit assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'padding-inline' to CSS-wide keywords: unset assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'padding-inline' to CSS-wide keywords: revert assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'padding-inline' to var() references: var(--A) assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" +FAIL Can set 'padding-inline' to a percent: 0% Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'padding-inline' to a percent: -3.14% Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'padding-inline' to a percent: 3.14% Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'padding-inline' to a percent: calc(0% + 0%) Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'padding-inline' to a length: 0px Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'padding-inline' to a length: -3.14em Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'padding-inline' to a length: 3.14cm Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'padding-inline' to a length: calc(0px + 0em) Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'padding-inline' to a time throws TypeError PASS Setting 'padding-inline' to an angle throws TypeError PASS Setting 'padding-inline' to a flexible length throws TypeError PASS Setting 'padding-inline' to a number throws TypeError PASS Setting 'padding-inline' to a URL throws TypeError PASS Setting 'padding-inline' to a transform throws TypeError -FAIL Can set 'border-block-start' to CSS-wide keywords assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" -FAIL Can set 'border-block-start' to var() references assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" -FAIL Can set 'border-block-start' to the 'none' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-block-start' to CSS-wide keywords: initial assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-block-start' to CSS-wide keywords: inherit assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-block-start' to CSS-wide keywords: unset assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-block-start' to CSS-wide keywords: revert assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-block-start' to var() references: var(--A) assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" +FAIL Can set 'border-block-start' to the 'none' keyword: none Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'border-block-start' to a length throws TypeError PASS Setting 'border-block-start' to a percent throws TypeError PASS Setting 'border-block-start' to a time throws TypeError @@ -191,12 +356,18 @@ PASS Setting 'border-block-start' to a number throws TypeError PASS Setting 'border-block-start' to a URL throws TypeError PASS Setting 'border-block-start' to a transform throws TypeError -PASS Can set 'border-block-start-width' to CSS-wide keywords -PASS Can set 'border-block-start-width' to var() references -FAIL Can set 'border-block-start-width' to the 'thin' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'border-block-start-width' to the 'medium' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'border-block-start-width' to the 'thick' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'border-block-start-width' to a length Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'border-block-start-width' to CSS-wide keywords: initial +PASS Can set 'border-block-start-width' to CSS-wide keywords: inherit +PASS Can set 'border-block-start-width' to CSS-wide keywords: unset +PASS Can set 'border-block-start-width' to CSS-wide keywords: revert +PASS Can set 'border-block-start-width' to var() references: var(--A) +FAIL Can set 'border-block-start-width' to the 'thin' keyword: thin Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-block-start-width' to the 'medium' keyword: medium Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-block-start-width' to the 'thick' keyword: thick Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-block-start-width' to a length: 0px Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-block-start-width' to a length: -3.14em Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-block-start-width' to a length: 3.14cm Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-block-start-width' to a length: calc(0px + 0em) Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'border-block-start-width' to a percent throws TypeError PASS Setting 'border-block-start-width' to a time throws TypeError PASS Setting 'border-block-start-width' to an angle throws TypeError @@ -204,9 +375,12 @@ PASS Setting 'border-block-start-width' to a number throws TypeError PASS Setting 'border-block-start-width' to a URL throws TypeError PASS Setting 'border-block-start-width' to a transform throws TypeError -PASS Can set 'border-block-start-color' to CSS-wide keywords -PASS Can set 'border-block-start-color' to var() references -FAIL Can set 'border-block-start-color' to the 'currentcolor' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'border-block-start-color' to CSS-wide keywords: initial +PASS Can set 'border-block-start-color' to CSS-wide keywords: inherit +PASS Can set 'border-block-start-color' to CSS-wide keywords: unset +PASS Can set 'border-block-start-color' to CSS-wide keywords: revert +PASS Can set 'border-block-start-color' to var() references: var(--A) +FAIL Can set 'border-block-start-color' to the 'currentcolor' keyword: currentcolor Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'border-block-start-color' to a length throws TypeError PASS Setting 'border-block-start-color' to a percent throws TypeError PASS Setting 'border-block-start-color' to a time throws TypeError @@ -215,10 +389,13 @@ PASS Setting 'border-block-start-color' to a number throws TypeError PASS Setting 'border-block-start-color' to a URL throws TypeError PASS Setting 'border-block-start-color' to a transform throws TypeError -PASS Can set 'border-block-start-style' to CSS-wide keywords -PASS Can set 'border-block-start-style' to var() references -FAIL Can set 'border-block-start-style' to the 'none' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'border-block-start-style' to the 'solid' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'border-block-start-style' to CSS-wide keywords: initial +PASS Can set 'border-block-start-style' to CSS-wide keywords: inherit +PASS Can set 'border-block-start-style' to CSS-wide keywords: unset +PASS Can set 'border-block-start-style' to CSS-wide keywords: revert +PASS Can set 'border-block-start-style' to var() references: var(--A) +FAIL Can set 'border-block-start-style' to the 'none' keyword: none Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-block-start-style' to the 'solid' keyword: solid Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'border-block-start-style' to a length throws TypeError PASS Setting 'border-block-start-style' to a percent throws TypeError PASS Setting 'border-block-start-style' to a time throws TypeError @@ -227,9 +404,12 @@ PASS Setting 'border-block-start-style' to a number throws TypeError PASS Setting 'border-block-start-style' to a URL throws TypeError PASS Setting 'border-block-start-style' to a transform throws TypeError -FAIL Can set 'border-block-end' to CSS-wide keywords assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" -FAIL Can set 'border-block-end' to var() references assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" -FAIL Can set 'border-block-end' to the 'none' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-block-end' to CSS-wide keywords: initial assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-block-end' to CSS-wide keywords: inherit assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-block-end' to CSS-wide keywords: unset assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-block-end' to CSS-wide keywords: revert assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-block-end' to var() references: var(--A) assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" +FAIL Can set 'border-block-end' to the 'none' keyword: none Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'border-block-end' to a length throws TypeError PASS Setting 'border-block-end' to a percent throws TypeError PASS Setting 'border-block-end' to a time throws TypeError @@ -238,12 +418,18 @@ PASS Setting 'border-block-end' to a number throws TypeError PASS Setting 'border-block-end' to a URL throws TypeError PASS Setting 'border-block-end' to a transform throws TypeError -PASS Can set 'border-block-end-width' to CSS-wide keywords -PASS Can set 'border-block-end-width' to var() references -FAIL Can set 'border-block-end-width' to the 'thin' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'border-block-end-width' to the 'medium' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'border-block-end-width' to the 'thick' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'border-block-end-width' to a length Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'border-block-end-width' to CSS-wide keywords: initial +PASS Can set 'border-block-end-width' to CSS-wide keywords: inherit +PASS Can set 'border-block-end-width' to CSS-wide keywords: unset +PASS Can set 'border-block-end-width' to CSS-wide keywords: revert +PASS Can set 'border-block-end-width' to var() references: var(--A) +FAIL Can set 'border-block-end-width' to the 'thin' keyword: thin Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-block-end-width' to the 'medium' keyword: medium Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-block-end-width' to the 'thick' keyword: thick Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-block-end-width' to a length: 0px Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-block-end-width' to a length: -3.14em Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-block-end-width' to a length: 3.14cm Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-block-end-width' to a length: calc(0px + 0em) Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'border-block-end-width' to a percent throws TypeError PASS Setting 'border-block-end-width' to a time throws TypeError PASS Setting 'border-block-end-width' to an angle throws TypeError @@ -251,9 +437,12 @@ PASS Setting 'border-block-end-width' to a number throws TypeError PASS Setting 'border-block-end-width' to a URL throws TypeError PASS Setting 'border-block-end-width' to a transform throws TypeError -PASS Can set 'border-block-end-color' to CSS-wide keywords -PASS Can set 'border-block-end-color' to var() references -FAIL Can set 'border-block-end-color' to the 'currentcolor' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'border-block-end-color' to CSS-wide keywords: initial +PASS Can set 'border-block-end-color' to CSS-wide keywords: inherit +PASS Can set 'border-block-end-color' to CSS-wide keywords: unset +PASS Can set 'border-block-end-color' to CSS-wide keywords: revert +PASS Can set 'border-block-end-color' to var() references: var(--A) +FAIL Can set 'border-block-end-color' to the 'currentcolor' keyword: currentcolor Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'border-block-end-color' to a length throws TypeError PASS Setting 'border-block-end-color' to a percent throws TypeError PASS Setting 'border-block-end-color' to a time throws TypeError @@ -262,10 +451,13 @@ PASS Setting 'border-block-end-color' to a number throws TypeError PASS Setting 'border-block-end-color' to a URL throws TypeError PASS Setting 'border-block-end-color' to a transform throws TypeError -PASS Can set 'border-block-end-style' to CSS-wide keywords -PASS Can set 'border-block-end-style' to var() references -FAIL Can set 'border-block-end-style' to the 'none' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'border-block-end-style' to the 'solid' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'border-block-end-style' to CSS-wide keywords: initial +PASS Can set 'border-block-end-style' to CSS-wide keywords: inherit +PASS Can set 'border-block-end-style' to CSS-wide keywords: unset +PASS Can set 'border-block-end-style' to CSS-wide keywords: revert +PASS Can set 'border-block-end-style' to var() references: var(--A) +FAIL Can set 'border-block-end-style' to the 'none' keyword: none Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-block-end-style' to the 'solid' keyword: solid Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'border-block-end-style' to a length throws TypeError PASS Setting 'border-block-end-style' to a percent throws TypeError PASS Setting 'border-block-end-style' to a time throws TypeError @@ -274,9 +466,12 @@ PASS Setting 'border-block-end-style' to a number throws TypeError PASS Setting 'border-block-end-style' to a URL throws TypeError PASS Setting 'border-block-end-style' to a transform throws TypeError -FAIL Can set 'border-inline-start' to CSS-wide keywords assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" -FAIL Can set 'border-inline-start' to var() references assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" -FAIL Can set 'border-inline-start' to the 'none' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-inline-start' to CSS-wide keywords: initial assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-inline-start' to CSS-wide keywords: inherit assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-inline-start' to CSS-wide keywords: unset assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-inline-start' to CSS-wide keywords: revert assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-inline-start' to var() references: var(--A) assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" +FAIL Can set 'border-inline-start' to the 'none' keyword: none Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'border-inline-start' to a length throws TypeError PASS Setting 'border-inline-start' to a percent throws TypeError PASS Setting 'border-inline-start' to a time throws TypeError @@ -285,12 +480,18 @@ PASS Setting 'border-inline-start' to a number throws TypeError PASS Setting 'border-inline-start' to a URL throws TypeError PASS Setting 'border-inline-start' to a transform throws TypeError -PASS Can set 'border-inline-start-width' to CSS-wide keywords -PASS Can set 'border-inline-start-width' to var() references -FAIL Can set 'border-inline-start-width' to the 'thin' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'border-inline-start-width' to the 'medium' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'border-inline-start-width' to the 'thick' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'border-inline-start-width' to a length Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'border-inline-start-width' to CSS-wide keywords: initial +PASS Can set 'border-inline-start-width' to CSS-wide keywords: inherit +PASS Can set 'border-inline-start-width' to CSS-wide keywords: unset +PASS Can set 'border-inline-start-width' to CSS-wide keywords: revert +PASS Can set 'border-inline-start-width' to var() references: var(--A) +FAIL Can set 'border-inline-start-width' to the 'thin' keyword: thin Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-inline-start-width' to the 'medium' keyword: medium Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-inline-start-width' to the 'thick' keyword: thick Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-inline-start-width' to a length: 0px Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-inline-start-width' to a length: -3.14em Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-inline-start-width' to a length: 3.14cm Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-inline-start-width' to a length: calc(0px + 0em) Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'border-inline-start-width' to a percent throws TypeError PASS Setting 'border-inline-start-width' to a time throws TypeError PASS Setting 'border-inline-start-width' to an angle throws TypeError @@ -298,9 +499,12 @@ PASS Setting 'border-inline-start-width' to a number throws TypeError PASS Setting 'border-inline-start-width' to a URL throws TypeError PASS Setting 'border-inline-start-width' to a transform throws TypeError -PASS Can set 'border-inline-start-color' to CSS-wide keywords -PASS Can set 'border-inline-start-color' to var() references -FAIL Can set 'border-inline-start-color' to the 'currentcolor' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'border-inline-start-color' to CSS-wide keywords: initial +PASS Can set 'border-inline-start-color' to CSS-wide keywords: inherit +PASS Can set 'border-inline-start-color' to CSS-wide keywords: unset +PASS Can set 'border-inline-start-color' to CSS-wide keywords: revert +PASS Can set 'border-inline-start-color' to var() references: var(--A) +FAIL Can set 'border-inline-start-color' to the 'currentcolor' keyword: currentcolor Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'border-inline-start-color' to a length throws TypeError PASS Setting 'border-inline-start-color' to a percent throws TypeError PASS Setting 'border-inline-start-color' to a time throws TypeError @@ -309,10 +513,13 @@ PASS Setting 'border-inline-start-color' to a number throws TypeError PASS Setting 'border-inline-start-color' to a URL throws TypeError PASS Setting 'border-inline-start-color' to a transform throws TypeError -PASS Can set 'border-inline-start-style' to CSS-wide keywords -PASS Can set 'border-inline-start-style' to var() references -FAIL Can set 'border-inline-start-style' to the 'none' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'border-inline-start-style' to the 'solid' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'border-inline-start-style' to CSS-wide keywords: initial +PASS Can set 'border-inline-start-style' to CSS-wide keywords: inherit +PASS Can set 'border-inline-start-style' to CSS-wide keywords: unset +PASS Can set 'border-inline-start-style' to CSS-wide keywords: revert +PASS Can set 'border-inline-start-style' to var() references: var(--A) +FAIL Can set 'border-inline-start-style' to the 'none' keyword: none Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-inline-start-style' to the 'solid' keyword: solid Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'border-inline-start-style' to a length throws TypeError PASS Setting 'border-inline-start-style' to a percent throws TypeError PASS Setting 'border-inline-start-style' to a time throws TypeError @@ -321,9 +528,12 @@ PASS Setting 'border-inline-start-style' to a number throws TypeError PASS Setting 'border-inline-start-style' to a URL throws TypeError PASS Setting 'border-inline-start-style' to a transform throws TypeError -FAIL Can set 'border-inline-end' to CSS-wide keywords assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" -FAIL Can set 'border-inline-end' to var() references assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" -FAIL Can set 'border-inline-end' to the 'none' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-inline-end' to CSS-wide keywords: initial assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-inline-end' to CSS-wide keywords: inherit assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-inline-end' to CSS-wide keywords: unset assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-inline-end' to CSS-wide keywords: revert assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-inline-end' to var() references: var(--A) assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" +FAIL Can set 'border-inline-end' to the 'none' keyword: none Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'border-inline-end' to a length throws TypeError PASS Setting 'border-inline-end' to a percent throws TypeError PASS Setting 'border-inline-end' to a time throws TypeError @@ -332,12 +542,18 @@ PASS Setting 'border-inline-end' to a number throws TypeError PASS Setting 'border-inline-end' to a URL throws TypeError PASS Setting 'border-inline-end' to a transform throws TypeError -PASS Can set 'border-inline-end-width' to CSS-wide keywords -PASS Can set 'border-inline-end-width' to var() references -FAIL Can set 'border-inline-end-width' to the 'thin' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'border-inline-end-width' to the 'medium' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'border-inline-end-width' to the 'thick' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'border-inline-end-width' to a length Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'border-inline-end-width' to CSS-wide keywords: initial +PASS Can set 'border-inline-end-width' to CSS-wide keywords: inherit +PASS Can set 'border-inline-end-width' to CSS-wide keywords: unset +PASS Can set 'border-inline-end-width' to CSS-wide keywords: revert +PASS Can set 'border-inline-end-width' to var() references: var(--A) +FAIL Can set 'border-inline-end-width' to the 'thin' keyword: thin Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-inline-end-width' to the 'medium' keyword: medium Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-inline-end-width' to the 'thick' keyword: thick Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-inline-end-width' to a length: 0px Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-inline-end-width' to a length: -3.14em Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-inline-end-width' to a length: 3.14cm Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-inline-end-width' to a length: calc(0px + 0em) Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'border-inline-end-width' to a percent throws TypeError PASS Setting 'border-inline-end-width' to a time throws TypeError PASS Setting 'border-inline-end-width' to an angle throws TypeError @@ -345,9 +561,12 @@ PASS Setting 'border-inline-end-width' to a number throws TypeError PASS Setting 'border-inline-end-width' to a URL throws TypeError PASS Setting 'border-inline-end-width' to a transform throws TypeError -PASS Can set 'border-inline-end-color' to CSS-wide keywords -PASS Can set 'border-inline-end-color' to var() references -FAIL Can set 'border-inline-end-color' to the 'currentcolor' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'border-inline-end-color' to CSS-wide keywords: initial +PASS Can set 'border-inline-end-color' to CSS-wide keywords: inherit +PASS Can set 'border-inline-end-color' to CSS-wide keywords: unset +PASS Can set 'border-inline-end-color' to CSS-wide keywords: revert +PASS Can set 'border-inline-end-color' to var() references: var(--A) +FAIL Can set 'border-inline-end-color' to the 'currentcolor' keyword: currentcolor Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'border-inline-end-color' to a length throws TypeError PASS Setting 'border-inline-end-color' to a percent throws TypeError PASS Setting 'border-inline-end-color' to a time throws TypeError @@ -356,10 +575,13 @@ PASS Setting 'border-inline-end-color' to a number throws TypeError PASS Setting 'border-inline-end-color' to a URL throws TypeError PASS Setting 'border-inline-end-color' to a transform throws TypeError -PASS Can set 'border-inline-end-style' to CSS-wide keywords -PASS Can set 'border-inline-end-style' to var() references -FAIL Can set 'border-inline-end-style' to the 'none' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'border-inline-end-style' to the 'solid' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'border-inline-end-style' to CSS-wide keywords: initial +PASS Can set 'border-inline-end-style' to CSS-wide keywords: inherit +PASS Can set 'border-inline-end-style' to CSS-wide keywords: unset +PASS Can set 'border-inline-end-style' to CSS-wide keywords: revert +PASS Can set 'border-inline-end-style' to var() references: var(--A) +FAIL Can set 'border-inline-end-style' to the 'none' keyword: none Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-inline-end-style' to the 'solid' keyword: solid Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'border-inline-end-style' to a length throws TypeError PASS Setting 'border-inline-end-style' to a percent throws TypeError PASS Setting 'border-inline-end-style' to a time throws TypeError @@ -368,9 +590,12 @@ PASS Setting 'border-inline-end-style' to a number throws TypeError PASS Setting 'border-inline-end-style' to a URL throws TypeError PASS Setting 'border-inline-end-style' to a transform throws TypeError -FAIL Can set 'border-block' to CSS-wide keywords assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" -FAIL Can set 'border-block' to var() references assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" -FAIL Can set 'border-block' to the 'none' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-block' to CSS-wide keywords: initial assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-block' to CSS-wide keywords: inherit assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-block' to CSS-wide keywords: unset assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-block' to CSS-wide keywords: revert assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-block' to var() references: var(--A) assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" +FAIL Can set 'border-block' to the 'none' keyword: none Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'border-block' to a length throws TypeError PASS Setting 'border-block' to a percent throws TypeError PASS Setting 'border-block' to a time throws TypeError @@ -379,12 +604,18 @@ PASS Setting 'border-block' to a number throws TypeError PASS Setting 'border-block' to a URL throws TypeError PASS Setting 'border-block' to a transform throws TypeError -FAIL Can set 'border-block-width' to CSS-wide keywords assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" -FAIL Can set 'border-block-width' to var() references assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" -FAIL Can set 'border-block-width' to the 'thin' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'border-block-width' to the 'medium' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'border-block-width' to the 'thick' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'border-block-width' to a length Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-block-width' to CSS-wide keywords: initial assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-block-width' to CSS-wide keywords: inherit assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-block-width' to CSS-wide keywords: unset assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-block-width' to CSS-wide keywords: revert assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-block-width' to var() references: var(--A) assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" +FAIL Can set 'border-block-width' to the 'thin' keyword: thin Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-block-width' to the 'medium' keyword: medium Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-block-width' to the 'thick' keyword: thick Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-block-width' to a length: 0px Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-block-width' to a length: -3.14em Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-block-width' to a length: 3.14cm Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-block-width' to a length: calc(0px + 0em) Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'border-block-width' to a percent throws TypeError PASS Setting 'border-block-width' to a time throws TypeError PASS Setting 'border-block-width' to an angle throws TypeError @@ -392,9 +623,12 @@ PASS Setting 'border-block-width' to a number throws TypeError PASS Setting 'border-block-width' to a URL throws TypeError PASS Setting 'border-block-width' to a transform throws TypeError -FAIL Can set 'border-block-color' to CSS-wide keywords assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" -FAIL Can set 'border-block-color' to var() references assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" -FAIL Can set 'border-block-color' to the 'currentcolor' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-block-color' to CSS-wide keywords: initial assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-block-color' to CSS-wide keywords: inherit assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-block-color' to CSS-wide keywords: unset assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-block-color' to CSS-wide keywords: revert assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-block-color' to var() references: var(--A) assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" +FAIL Can set 'border-block-color' to the 'currentcolor' keyword: currentcolor Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'border-block-color' to a length throws TypeError PASS Setting 'border-block-color' to a percent throws TypeError PASS Setting 'border-block-color' to a time throws TypeError @@ -403,10 +637,13 @@ PASS Setting 'border-block-color' to a number throws TypeError PASS Setting 'border-block-color' to a URL throws TypeError PASS Setting 'border-block-color' to a transform throws TypeError -FAIL Can set 'border-block-style' to CSS-wide keywords assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" -FAIL Can set 'border-block-style' to var() references assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" -FAIL Can set 'border-block-style' to the 'none' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'border-block-style' to the 'solid' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-block-style' to CSS-wide keywords: initial assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-block-style' to CSS-wide keywords: inherit assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-block-style' to CSS-wide keywords: unset assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-block-style' to CSS-wide keywords: revert assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-block-style' to var() references: var(--A) assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" +FAIL Can set 'border-block-style' to the 'none' keyword: none Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-block-style' to the 'solid' keyword: solid Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'border-block-style' to a length throws TypeError PASS Setting 'border-block-style' to a percent throws TypeError PASS Setting 'border-block-style' to a time throws TypeError @@ -415,9 +652,12 @@ PASS Setting 'border-block-style' to a number throws TypeError PASS Setting 'border-block-style' to a URL throws TypeError PASS Setting 'border-block-style' to a transform throws TypeError -FAIL Can set 'border-inline' to CSS-wide keywords assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" -FAIL Can set 'border-inline' to var() references assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" -FAIL Can set 'border-inline' to the 'none' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-inline' to CSS-wide keywords: initial assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-inline' to CSS-wide keywords: inherit assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-inline' to CSS-wide keywords: unset assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-inline' to CSS-wide keywords: revert assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-inline' to var() references: var(--A) assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" +FAIL Can set 'border-inline' to the 'none' keyword: none Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'border-inline' to a length throws TypeError PASS Setting 'border-inline' to a percent throws TypeError PASS Setting 'border-inline' to a time throws TypeError @@ -426,12 +666,18 @@ PASS Setting 'border-inline' to a number throws TypeError PASS Setting 'border-inline' to a URL throws TypeError PASS Setting 'border-inline' to a transform throws TypeError -FAIL Can set 'border-inline-width' to CSS-wide keywords assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" -FAIL Can set 'border-inline-width' to var() references assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" -FAIL Can set 'border-inline-width' to the 'thin' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'border-inline-width' to the 'medium' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'border-inline-width' to the 'thick' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'border-inline-width' to a length Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-inline-width' to CSS-wide keywords: initial assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-inline-width' to CSS-wide keywords: inherit assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-inline-width' to CSS-wide keywords: unset assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-inline-width' to CSS-wide keywords: revert assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-inline-width' to var() references: var(--A) assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" +FAIL Can set 'border-inline-width' to the 'thin' keyword: thin Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-inline-width' to the 'medium' keyword: medium Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-inline-width' to the 'thick' keyword: thick Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-inline-width' to a length: 0px Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-inline-width' to a length: -3.14em Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-inline-width' to a length: 3.14cm Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-inline-width' to a length: calc(0px + 0em) Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'border-inline-width' to a percent throws TypeError PASS Setting 'border-inline-width' to a time throws TypeError PASS Setting 'border-inline-width' to an angle throws TypeError @@ -439,9 +685,12 @@ PASS Setting 'border-inline-width' to a number throws TypeError PASS Setting 'border-inline-width' to a URL throws TypeError PASS Setting 'border-inline-width' to a transform throws TypeError -FAIL Can set 'border-inline-color' to CSS-wide keywords assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" -FAIL Can set 'border-inline-color' to var() references assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" -FAIL Can set 'border-inline-color' to the 'currentcolor' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-inline-color' to CSS-wide keywords: initial assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-inline-color' to CSS-wide keywords: inherit assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-inline-color' to CSS-wide keywords: unset assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-inline-color' to CSS-wide keywords: revert assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-inline-color' to var() references: var(--A) assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" +FAIL Can set 'border-inline-color' to the 'currentcolor' keyword: currentcolor Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'border-inline-color' to a length throws TypeError PASS Setting 'border-inline-color' to a percent throws TypeError PASS Setting 'border-inline-color' to a time throws TypeError @@ -450,10 +699,13 @@ PASS Setting 'border-inline-color' to a number throws TypeError PASS Setting 'border-inline-color' to a URL throws TypeError PASS Setting 'border-inline-color' to a transform throws TypeError -FAIL Can set 'border-inline-style' to CSS-wide keywords assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" -FAIL Can set 'border-inline-style' to var() references assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" -FAIL Can set 'border-inline-style' to the 'none' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'border-inline-style' to the 'solid' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-inline-style' to CSS-wide keywords: initial assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-inline-style' to CSS-wide keywords: inherit assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-inline-style' to CSS-wide keywords: unset assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-inline-style' to CSS-wide keywords: revert assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'border-inline-style' to var() references: var(--A) assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" +FAIL Can set 'border-inline-style' to the 'none' keyword: none Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'border-inline-style' to the 'solid' keyword: solid Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'border-inline-style' to a length throws TypeError PASS Setting 'border-inline-style' to a percent throws TypeError PASS Setting 'border-inline-style' to a time throws TypeError @@ -462,40 +714,76 @@ PASS Setting 'border-inline-style' to a number throws TypeError PASS Setting 'border-inline-style' to a URL throws TypeError PASS Setting 'border-inline-style' to a transform throws TypeError -PASS Can set 'border-start-start-radius' to CSS-wide keywords -PASS Can set 'border-start-start-radius' to var() references -PASS Can set 'border-start-start-radius' to a percent -PASS Can set 'border-start-start-radius' to a length +PASS Can set 'border-start-start-radius' to CSS-wide keywords: initial +PASS Can set 'border-start-start-radius' to CSS-wide keywords: inherit +PASS Can set 'border-start-start-radius' to CSS-wide keywords: unset +PASS Can set 'border-start-start-radius' to CSS-wide keywords: revert +PASS Can set 'border-start-start-radius' to var() references: var(--A) +PASS Can set 'border-start-start-radius' to a percent: 0% +PASS Can set 'border-start-start-radius' to a percent: -3.14% +PASS Can set 'border-start-start-radius' to a percent: 3.14% +PASS Can set 'border-start-start-radius' to a percent: calc(0% + 0%) +PASS Can set 'border-start-start-radius' to a length: 0px +PASS Can set 'border-start-start-radius' to a length: -3.14em +PASS Can set 'border-start-start-radius' to a length: 3.14cm +PASS Can set 'border-start-start-radius' to a length: calc(0px + 0em) PASS Setting 'border-start-start-radius' to a time throws TypeError PASS Setting 'border-start-start-radius' to an angle throws TypeError PASS Setting 'border-start-start-radius' to a flexible length throws TypeError PASS Setting 'border-start-start-radius' to a number throws TypeError PASS Setting 'border-start-start-radius' to a URL throws TypeError PASS Setting 'border-start-start-radius' to a transform throws TypeError -PASS Can set 'border-start-end-radius' to CSS-wide keywords -PASS Can set 'border-start-end-radius' to var() references -PASS Can set 'border-start-end-radius' to a percent -PASS Can set 'border-start-end-radius' to a length +PASS Can set 'border-start-end-radius' to CSS-wide keywords: initial +PASS Can set 'border-start-end-radius' to CSS-wide keywords: inherit +PASS Can set 'border-start-end-radius' to CSS-wide keywords: unset +PASS Can set 'border-start-end-radius' to CSS-wide keywords: revert +PASS Can set 'border-start-end-radius' to var() references: var(--A) +PASS Can set 'border-start-end-radius' to a percent: 0% +PASS Can set 'border-start-end-radius' to a percent: -3.14% +PASS Can set 'border-start-end-radius' to a percent: 3.14% +PASS Can set 'border-start-end-radius' to a percent: calc(0% + 0%) +PASS Can set 'border-start-end-radius' to a length: 0px +PASS Can set 'border-start-end-radius' to a length: -3.14em +PASS Can set 'border-start-end-radius' to a length: 3.14cm +PASS Can set 'border-start-end-radius' to a length: calc(0px + 0em) PASS Setting 'border-start-end-radius' to a time throws TypeError PASS Setting 'border-start-end-radius' to an angle throws TypeError PASS Setting 'border-start-end-radius' to a flexible length throws TypeError PASS Setting 'border-start-end-radius' to a number throws TypeError PASS Setting 'border-start-end-radius' to a URL throws TypeError PASS Setting 'border-start-end-radius' to a transform throws TypeError -PASS Can set 'border-end-start-radius' to CSS-wide keywords -PASS Can set 'border-end-start-radius' to var() references -PASS Can set 'border-end-start-radius' to a percent -PASS Can set 'border-end-start-radius' to a length +PASS Can set 'border-end-start-radius' to CSS-wide keywords: initial +PASS Can set 'border-end-start-radius' to CSS-wide keywords: inherit +PASS Can set 'border-end-start-radius' to CSS-wide keywords: unset +PASS Can set 'border-end-start-radius' to CSS-wide keywords: revert +PASS Can set 'border-end-start-radius' to var() references: var(--A) +PASS Can set 'border-end-start-radius' to a percent: 0% +PASS Can set 'border-end-start-radius' to a percent: -3.14% +PASS Can set 'border-end-start-radius' to a percent: 3.14% +PASS Can set 'border-end-start-radius' to a percent: calc(0% + 0%) +PASS Can set 'border-end-start-radius' to a length: 0px +PASS Can set 'border-end-start-radius' to a length: -3.14em +PASS Can set 'border-end-start-radius' to a length: 3.14cm +PASS Can set 'border-end-start-radius' to a length: calc(0px + 0em) PASS Setting 'border-end-start-radius' to a time throws TypeError PASS Setting 'border-end-start-radius' to an angle throws TypeError PASS Setting 'border-end-start-radius' to a flexible length throws TypeError PASS Setting 'border-end-start-radius' to a number throws TypeError PASS Setting 'border-end-start-radius' to a URL throws TypeError PASS Setting 'border-end-start-radius' to a transform throws TypeError -PASS Can set 'border-end-end-radius' to CSS-wide keywords -PASS Can set 'border-end-end-radius' to var() references -PASS Can set 'border-end-end-radius' to a percent -PASS Can set 'border-end-end-radius' to a length +PASS Can set 'border-end-end-radius' to CSS-wide keywords: initial +PASS Can set 'border-end-end-radius' to CSS-wide keywords: inherit +PASS Can set 'border-end-end-radius' to CSS-wide keywords: unset +PASS Can set 'border-end-end-radius' to CSS-wide keywords: revert +PASS Can set 'border-end-end-radius' to var() references: var(--A) +PASS Can set 'border-end-end-radius' to a percent: 0% +PASS Can set 'border-end-end-radius' to a percent: -3.14% +PASS Can set 'border-end-end-radius' to a percent: 3.14% +PASS Can set 'border-end-end-radius' to a percent: calc(0% + 0%) +PASS Can set 'border-end-end-radius' to a length: 0px +PASS Can set 'border-end-end-radius' to a length: -3.14em +PASS Can set 'border-end-end-radius' to a length: 3.14cm +PASS Can set 'border-end-end-radius' to a length: calc(0px + 0em) PASS Setting 'border-end-end-radius' to a time throws TypeError PASS Setting 'border-end-end-radius' to an angle throws TypeError PASS Setting 'border-end-end-radius' to a flexible length throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/logical.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/logical.html.ini index 5678235..0faf47c 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/logical.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/logical.html.ini
@@ -1,288 +1,612 @@ [logical.html] - [Can set 'margin-block' to CSS-wide keywords] + [Can set 'border-inline-end' to the 'none' keyword: none] + expected: FAIL + + [Can set 'border-inline' to CSS-wide keywords: revert] + expected: FAIL + + [Can set 'inset-inline' to CSS-wide keywords: inherit] + expected: FAIL + + [Can set 'padding-block' to a percent: 0%] + expected: FAIL + + [Can set 'border-block-start-width' to the 'thin' keyword: thin] + expected: FAIL + + [Can set 'border-block-end-style' to the 'solid' keyword: solid] + expected: FAIL + + [Can set 'border-block-width' to the 'medium' keyword: medium] + expected: FAIL + + [Can set 'margin-block' to a length: 3.14cm] + expected: FAIL + + [Can set 'border-block-style' to CSS-wide keywords: initial] + expected: FAIL + + [Can set 'inset-inline' to a length: -3.14em] + expected: FAIL + + [Can set 'margin-inline' to CSS-wide keywords: initial] + expected: FAIL + + [Can set 'border-inline-end-width' to the 'thin' keyword: thin] + expected: FAIL + + [Can set 'margin-inline' to var() references: var(--A)] + expected: FAIL + + [Can set 'border-inline-start' to CSS-wide keywords: revert] + expected: FAIL + + [Can set 'border-block' to CSS-wide keywords: unset] + expected: FAIL + + [Can set 'border-inline-end' to CSS-wide keywords: inherit] + expected: FAIL + + [Can set 'border-inline-end-color' to the 'currentcolor' keyword: currentcolor] + expected: FAIL + + [Can set 'border-block-start' to CSS-wide keywords: revert] + expected: FAIL + + [Can set 'border-block' to CSS-wide keywords: revert] + expected: FAIL + + [Can set 'margin-block' to a length: calc(0px + 0em)] + expected: FAIL + + [Can set 'border-inline-start-width' to the 'thick' keyword: thick] + expected: FAIL + + [Can set 'border-inline' to CSS-wide keywords: initial] + expected: FAIL + + [Can set 'border-block-style' to the 'solid' keyword: solid] + expected: FAIL + + [Can set 'border-block-style' to CSS-wide keywords: revert] + expected: FAIL + + [Can set 'border-inline-end' to CSS-wide keywords: initial] + expected: FAIL + + [Can set 'border-inline-end-width' to a length: calc(0px + 0em)] + expected: FAIL + + [Can set 'border-inline-end' to var() references: var(--A)] + expected: FAIL + + [Can set 'border-inline-width' to CSS-wide keywords: initial] + expected: FAIL + + [Can set 'border-inline-end-style' to the 'solid' keyword: solid] + expected: FAIL + + [Can set 'padding-block' to a length: calc(0px + 0em)] + expected: FAIL + + [Can set 'border-inline-start-style' to the 'none' keyword: none] + expected: FAIL + + [Can set 'border-inline-color' to the 'currentcolor' keyword: currentcolor] + expected: FAIL + + [Can set 'padding-block' to a percent: 3.14%] + expected: FAIL + + [Can set 'padding-block' to var() references: var(--A)] + expected: FAIL + + [Can set 'border-inline-width' to a length: calc(0px + 0em)] + expected: FAIL + + [Can set 'inset-inline' to CSS-wide keywords: revert] + expected: FAIL + + [Can set 'border-block' to the 'none' keyword: none] + expected: FAIL + + [Can set 'margin-block' to CSS-wide keywords: initial] + expected: FAIL + + [Can set 'inset-inline' to a percent: -3.14%] + expected: FAIL + + [Can set 'margin-block' to var() references: var(--A)] + expected: FAIL + + [Can set 'border-block-end-width' to a length: -3.14em] + expected: FAIL + + [Can set 'inset-inline' to a length: calc(0px + 0em)] + expected: FAIL + + [Can set 'border-inline-color' to CSS-wide keywords: unset] + expected: FAIL + + [Can set 'border-block' to CSS-wide keywords: initial] + expected: FAIL + + [Can set 'margin-inline' to CSS-wide keywords: revert] + expected: FAIL + + [Can set 'border-block-width' to a length: 0px] + expected: FAIL + + [Can set 'border-block-color' to CSS-wide keywords: unset] + expected: FAIL + + [Can set 'padding-block' to a length: 3.14cm] + expected: FAIL + + [Can set 'margin-block' to CSS-wide keywords: inherit] + expected: FAIL + + [Can set 'border-inline-end-width' to the 'medium' keyword: medium] + expected: FAIL + + [Can set 'padding-inline' to var() references: var(--A)] + expected: FAIL + + [Can set 'border-inline-start-width' to a length: calc(0px + 0em)] + expected: FAIL + + [Can set 'margin-block' to a percent: calc(0% + 0%)] + expected: FAIL + + [Can set 'margin-inline' to a length: -3.14em] + expected: FAIL + + [Can set 'border-block-end-color' to the 'currentcolor' keyword: currentcolor] + expected: FAIL + + [Can set 'padding-inline' to a length: 0px] + expected: FAIL + + [Can set 'border-block-end' to CSS-wide keywords: initial] + expected: FAIL + + [Can set 'inset-block' to a percent: -3.14%] + expected: FAIL + + [Can set 'border-inline-width' to a length: 0px] + expected: FAIL + + [Can set 'border-block-start-style' to the 'solid' keyword: solid] + expected: FAIL + + [Can set 'border-block-end-width' to a length: 3.14cm] + expected: FAIL + + [Can set 'border-inline-end-width' to the 'thick' keyword: thick] + expected: FAIL + + [Can set 'border-block-start' to CSS-wide keywords: inherit] + expected: FAIL + + [Can set 'border-inline-end' to CSS-wide keywords: unset] + expected: FAIL + + [Can set 'border-inline-start' to the 'none' keyword: none] + expected: FAIL + + [Can set 'border-block' to var() references: var(--A)] + expected: FAIL + + [Can set 'inset-block' to CSS-wide keywords: revert] + expected: FAIL + + [Can set 'border-inline-color' to var() references: var(--A)] + expected: FAIL + + [Can set 'padding-inline' to CSS-wide keywords: initial] + expected: FAIL + + [Can set 'padding-block' to a length: 0px] + expected: FAIL + + [Can set 'border-block-width' to CSS-wide keywords: revert] + expected: FAIL + + [Can set 'border-block-start-width' to a length: 3.14cm] + expected: FAIL + + [Can set 'border-inline-style' to the 'none' keyword: none] + expected: FAIL + + [Can set 'border-block-width' to the 'thick' keyword: thick] + expected: FAIL + + [Can set 'border-block-color' to CSS-wide keywords: inherit] + expected: FAIL + + [Can set 'border-inline-width' to the 'thick' keyword: thick] + expected: FAIL + + [Can set 'padding-block' to a length: -3.14em] + expected: FAIL + + [Can set 'padding-inline' to CSS-wide keywords: unset] + expected: FAIL + + [Can set 'margin-block' to a percent: -3.14%] + expected: FAIL + + [Can set 'border-block-color' to CSS-wide keywords: revert] + expected: FAIL + + [Can set 'border-inline-color' to CSS-wide keywords: revert] + expected: FAIL + + [Can set 'margin-inline' to a percent: 0%] + expected: FAIL + + [Can set 'border-inline-end-width' to a length: 3.14cm] + expected: FAIL + + [Can set 'border-inline-color' to CSS-wide keywords: inherit] + expected: FAIL + + [Can set 'border-inline' to the 'none' keyword: none] + expected: FAIL + + [Can set 'padding-block' to CSS-wide keywords: unset] + expected: FAIL + + [Can set 'border-block-width' to CSS-wide keywords: unset] + expected: FAIL + + [Can set 'inset-inline' to a length: 3.14cm] + expected: FAIL + + [Can set 'inset-inline' to CSS-wide keywords: unset] + expected: FAIL + + [Can set 'border-inline-start-width' to a length: -3.14em] + expected: FAIL + + [Can set 'padding-block' to CSS-wide keywords: inherit] + expected: FAIL + + [Can set 'padding-inline' to a percent: calc(0% + 0%)] + expected: FAIL + + [Can set 'padding-inline' to a percent: 0%] + expected: FAIL + + [Can set 'border-block-start-width' to the 'medium' keyword: medium] + expected: FAIL + + [Can set 'border-inline-end-style' to the 'none' keyword: none] + expected: FAIL + + [Can set 'inset-block' to CSS-wide keywords: inherit] + expected: FAIL + + [Can set 'border-block-start-width' to a length: -3.14em] + expected: FAIL + + [Can set 'border-inline-style' to the 'solid' keyword: solid] + expected: FAIL + + [Can set 'margin-block' to a length: 0px] + expected: FAIL + + [Can set 'inset-inline' to a percent: 0%] + expected: FAIL + + [Can set 'border-inline-start-width' to the 'thin' keyword: thin] + expected: FAIL + + [Can set 'border-block-style' to CSS-wide keywords: inherit] + expected: FAIL + + [Can set 'border-block-end-width' to a length: calc(0px + 0em)] + expected: FAIL + + [Can set 'border-inline-width' to the 'medium' keyword: medium] + expected: FAIL + + [Can set 'padding-inline' to a length: 3.14cm] + expected: FAIL + + [Can set 'border-block-style' to the 'none' keyword: none] + expected: FAIL + + [Can set 'padding-inline' to CSS-wide keywords: inherit] + expected: FAIL + + [Can set 'border-block-width' to a length: 3.14cm] + expected: FAIL + + [Can set 'inset-block' to a length: -3.14em] expected: FAIL - [Can set 'margin-block' to var() references] + [Can set 'inset-inline' to a length: 0px] expected: FAIL - [Can set 'margin-block' to a percent] + [Can set 'inset-block' to a percent: calc(0% + 0%)] expected: FAIL - [Can set 'margin-block' to a length] + [Can set 'border-block-start-style' to the 'none' keyword: none] expected: FAIL - [Can set 'margin-inline' to CSS-wide keywords] + [Can set 'border-block-end' to CSS-wide keywords: revert] expected: FAIL - [Can set 'margin-inline' to var() references] + [Can set 'border-block-start-width' to a length: 0px] expected: FAIL - [Can set 'margin-inline' to a percent] + [Can set 'border-inline-style' to CSS-wide keywords: initial] expected: FAIL - [Can set 'margin-inline' to a length] + [Can set 'margin-block' to a percent: 0%] expected: FAIL - [Can set 'inset-block' to CSS-wide keywords] + [Can set 'margin-inline' to a percent: calc(0% + 0%)] expected: FAIL - [Can set 'inset-block' to var() references] + [Can set 'border-block-width' to CSS-wide keywords: initial] expected: FAIL - [Can set 'inset-block' to a percent] + [Can set 'border-inline-width' to var() references: var(--A)] expected: FAIL - [Can set 'inset-block' to a length] + [Can set 'border-block-end' to var() references: var(--A)] expected: FAIL - [Can set 'inset-inline' to CSS-wide keywords] + [Can set 'border-block' to CSS-wide keywords: inherit] expected: FAIL - [Can set 'inset-inline' to var() references] + [Can set 'border-inline-start' to CSS-wide keywords: unset] expected: FAIL - [Can set 'inset-inline' to a percent] + [Can set 'border-inline-start-color' to the 'currentcolor' keyword: currentcolor] expected: FAIL - [Can set 'inset-inline' to a length] + [Can set 'border-block-width' to CSS-wide keywords: inherit] expected: FAIL - [Can set 'padding-block' to CSS-wide keywords] + [Can set 'border-inline-style' to CSS-wide keywords: revert] expected: FAIL - [Can set 'padding-block' to var() references] + [Can set 'border-block-start' to CSS-wide keywords: initial] expected: FAIL - [Can set 'padding-block' to a percent] + [Can set 'border-inline-style' to var() references: var(--A)] expected: FAIL - [Can set 'padding-block' to a length] + [Can set 'padding-block' to CSS-wide keywords: initial] expected: FAIL - [Can set 'padding-inline' to CSS-wide keywords] + [Can set 'border-inline' to CSS-wide keywords: inherit] expected: FAIL - [Can set 'padding-inline' to var() references] + [Can set 'inset-block' to CSS-wide keywords: initial] expected: FAIL - [Can set 'padding-inline' to a percent] + [Can set 'border-inline-style' to CSS-wide keywords: inherit] expected: FAIL - [Can set 'padding-inline' to a length] + [Can set 'padding-inline' to CSS-wide keywords: revert] expected: FAIL - [Can set 'border-block-start' to CSS-wide keywords] + [Can set 'border-block-color' to CSS-wide keywords: initial] expected: FAIL - [Can set 'border-block-start' to var() references] + [Can set 'border-inline-start' to var() references: var(--A)] expected: FAIL - [Can set 'border-block-start' to the 'none' keyword] + [Can set 'margin-inline' to a length: 3.14cm] expected: FAIL - [Can set 'border-block-start-width' to the 'thin' keyword] + [Can set 'border-block-start' to var() references: var(--A)] expected: FAIL - [Can set 'border-block-start-width' to the 'medium' keyword] + [Can set 'inset-block' to a length: calc(0px + 0em)] expected: FAIL - [Can set 'border-block-start-width' to the 'thick' keyword] + [Can set 'padding-block' to a percent: calc(0% + 0%)] expected: FAIL - [Can set 'border-block-start-width' to a length] + [Can set 'border-inline-start-width' to a length: 0px] expected: FAIL - [Can set 'border-block-start-color' to the 'currentcolor' keyword] + [Can set 'border-inline-end' to CSS-wide keywords: revert] expected: FAIL - [Can set 'border-block-start-style' to the 'none' keyword] + [Can set 'border-inline-start' to CSS-wide keywords: inherit] expected: FAIL - [Can set 'border-block-start-style' to the 'solid' keyword] + [Can set 'border-block-end' to CSS-wide keywords: inherit] expected: FAIL - [Can set 'border-block-end' to CSS-wide keywords] + [Can set 'border-block-width' to the 'thin' keyword: thin] expected: FAIL - [Can set 'border-block-end' to var() references] + [Can set 'border-inline-start-width' to the 'medium' keyword: medium] expected: FAIL - [Can set 'border-block-end' to the 'none' keyword] + [Can set 'border-inline-end-width' to a length: -3.14em] expected: FAIL - [Can set 'border-block-end-width' to the 'thin' keyword] + [Can set 'margin-block' to CSS-wide keywords: revert] expected: FAIL - [Can set 'border-block-end-width' to the 'medium' keyword] + [Can set 'margin-inline' to a length: calc(0px + 0em)] expected: FAIL - [Can set 'border-block-end-width' to the 'thick' keyword] + [Can set 'padding-inline' to a percent: -3.14%] expected: FAIL - [Can set 'border-block-end-width' to a length] + [Can set 'border-inline-width' to a length: 3.14cm] expected: FAIL - [Can set 'border-block-end-color' to the 'currentcolor' keyword] + [Can set 'border-inline-color' to CSS-wide keywords: initial] expected: FAIL - [Can set 'border-block-end-style' to the 'none' keyword] + [Can set 'border-block-end-style' to the 'none' keyword: none] expected: FAIL - [Can set 'border-block-end-style' to the 'solid' keyword] + [Can set 'border-block-color' to var() references: var(--A)] expected: FAIL - [Can set 'border-inline-start' to CSS-wide keywords] + [Can set 'border-inline-start' to CSS-wide keywords: initial] expected: FAIL - [Can set 'border-inline-start' to var() references] + [Can set 'margin-block' to CSS-wide keywords: unset] expected: FAIL - [Can set 'border-inline-start' to the 'none' keyword] + [Can set 'border-inline-width' to a length: -3.14em] expected: FAIL - [Can set 'border-inline-start-width' to the 'thin' keyword] + [Can set 'inset-inline' to var() references: var(--A)] expected: FAIL - [Can set 'border-inline-start-width' to the 'medium' keyword] + [Can set 'border-block-start' to the 'none' keyword: none] expected: FAIL - [Can set 'border-inline-start-width' to the 'thick' keyword] + [Can set 'margin-inline' to a length: 0px] expected: FAIL - [Can set 'border-inline-start-width' to a length] + [Can set 'padding-inline' to a length: -3.14em] expected: FAIL - [Can set 'border-inline-start-color' to the 'currentcolor' keyword] + [Can set 'border-block-end-width' to the 'thick' keyword: thick] expected: FAIL - [Can set 'border-inline-start-style' to the 'none' keyword] + [Can set 'border-block-start-color' to the 'currentcolor' keyword: currentcolor] expected: FAIL - [Can set 'border-inline-start-style' to the 'solid' keyword] + [Can set 'border-inline-end-width' to a length: 0px] expected: FAIL - [Can set 'border-inline-end' to CSS-wide keywords] + [Can set 'border-inline-style' to CSS-wide keywords: unset] expected: FAIL - [Can set 'border-inline-end' to var() references] + [Can set 'border-block-end' to CSS-wide keywords: unset] expected: FAIL - [Can set 'border-inline-end' to the 'none' keyword] + [Can set 'padding-block' to CSS-wide keywords: revert] expected: FAIL - [Can set 'border-inline-end-width' to the 'thin' keyword] + [Can set 'inset-block' to a percent: 0%] expected: FAIL - [Can set 'border-inline-end-width' to the 'medium' keyword] + [Can set 'margin-inline' to CSS-wide keywords: inherit] expected: FAIL - [Can set 'border-inline-end-width' to the 'thick' keyword] + [Can set 'inset-block' to a length: 3.14cm] expected: FAIL - [Can set 'border-inline-end-width' to a length] + [Can set 'border-block-end-width' to the 'thin' keyword: thin] expected: FAIL - [Can set 'border-inline-end-color' to the 'currentcolor' keyword] + [Can set 'inset-block' to a percent: 3.14%] expected: FAIL - [Can set 'border-inline-end-style' to the 'none' keyword] + [Can set 'border-block-width' to a length: -3.14em] expected: FAIL - [Can set 'border-inline-end-style' to the 'solid' keyword] + [Can set 'border-block-start-width' to the 'thick' keyword: thick] expected: FAIL - [Can set 'border-block' to CSS-wide keywords] + [Can set 'border-block-color' to the 'currentcolor' keyword: currentcolor] expected: FAIL - [Can set 'border-block' to var() references] + [Can set 'border-inline-start-width' to a length: 3.14cm] expected: FAIL - [Can set 'border-block' to the 'none' keyword] + [Can set 'border-inline-width' to CSS-wide keywords: inherit] expected: FAIL - [Can set 'border-block-width' to CSS-wide keywords] + [Can set 'margin-inline' to a percent: 3.14%] expected: FAIL - [Can set 'border-block-width' to var() references] + [Can set 'inset-inline' to a percent: calc(0% + 0%)] expected: FAIL - [Can set 'border-block-width' to the 'thin' keyword] + [Can set 'border-block-start' to CSS-wide keywords: unset] expected: FAIL - [Can set 'border-block-width' to the 'medium' keyword] + [Can set 'border-inline-width' to CSS-wide keywords: revert] expected: FAIL - [Can set 'border-block-width' to the 'thick' keyword] + [Can set 'border-block-width' to a length: calc(0px + 0em)] expected: FAIL - [Can set 'border-block-width' to a length] + [Can set 'border-block-end-width' to a length: 0px] expected: FAIL - [Can set 'border-block-color' to CSS-wide keywords] + [Can set 'border-block-end-width' to the 'medium' keyword: medium] expected: FAIL - [Can set 'border-block-color' to var() references] + [Can set 'border-inline' to CSS-wide keywords: unset] expected: FAIL - [Can set 'border-block-color' to the 'currentcolor' keyword] + [Can set 'inset-inline' to a percent: 3.14%] expected: FAIL - [Can set 'border-block-style' to CSS-wide keywords] + [Can set 'inset-block' to CSS-wide keywords: unset] expected: FAIL - [Can set 'border-block-style' to var() references] + [Can set 'margin-inline' to CSS-wide keywords: unset] expected: FAIL - [Can set 'border-block-style' to the 'none' keyword] + [Can set 'border-block-start-width' to a length: calc(0px + 0em)] expected: FAIL - [Can set 'border-block-style' to the 'solid' keyword] + [Can set 'border-block-style' to var() references: var(--A)] expected: FAIL - [Can set 'border-inline' to CSS-wide keywords] + [Can set 'inset-block' to var() references: var(--A)] expected: FAIL - [Can set 'border-inline' to var() references] + [Can set 'border-inline-start-style' to the 'solid' keyword: solid] expected: FAIL - [Can set 'border-inline' to the 'none' keyword] + [Can set 'inset-inline' to CSS-wide keywords: initial] expected: FAIL - [Can set 'border-inline-width' to CSS-wide keywords] + [Can set 'margin-block' to a length: -3.14em] expected: FAIL - [Can set 'border-inline-width' to var() references] + [Can set 'border-inline-width' to CSS-wide keywords: unset] expected: FAIL - [Can set 'border-inline-width' to the 'thin' keyword] + [Can set 'padding-block' to a percent: -3.14%] expected: FAIL - [Can set 'border-inline-width' to the 'medium' keyword] + [Can set 'border-inline-width' to the 'thin' keyword: thin] expected: FAIL - [Can set 'border-inline-width' to the 'thick' keyword] + [Can set 'inset-block' to a length: 0px] expected: FAIL - [Can set 'border-inline-width' to a length] + [Can set 'padding-inline' to a length: calc(0px + 0em)] expected: FAIL - [Can set 'border-inline-color' to CSS-wide keywords] + [Can set 'border-inline' to var() references: var(--A)] expected: FAIL - [Can set 'border-inline-color' to var() references] + [Can set 'border-block-width' to var() references: var(--A)] expected: FAIL - [Can set 'border-inline-color' to the 'currentcolor' keyword] + [Can set 'margin-inline' to a percent: -3.14%] expected: FAIL - [Can set 'border-inline-style' to CSS-wide keywords] + [Can set 'margin-block' to a percent: 3.14%] expected: FAIL - [Can set 'border-inline-style' to var() references] + [Can set 'border-block-style' to CSS-wide keywords: unset] expected: FAIL - [Can set 'border-inline-style' to the 'none' keyword] + [Can set 'padding-inline' to a percent: 3.14%] expected: FAIL - [Can set 'border-inline-style' to the 'solid' keyword] + [Can set 'border-block-end' to the 'none' keyword: none] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/margin-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/margin-expected.txt index 2d19bda..c9ec899 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/margin-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/margin-expected.txt
@@ -1,51 +1,90 @@ This is a testharness.js-based test. -Found 56 tests; 54 PASS, 2 FAIL, 0 TIMEOUT, 0 NOTRUN. -PASS Can set 'margin-top' to CSS-wide keywords -PASS Can set 'margin-top' to var() references -PASS Can set 'margin-top' to the 'auto' keyword -PASS Can set 'margin-top' to a percent -PASS Can set 'margin-top' to a length +Found 95 tests; 90 PASS, 5 FAIL, 0 TIMEOUT, 0 NOTRUN. +PASS Can set 'margin-top' to CSS-wide keywords: initial +PASS Can set 'margin-top' to CSS-wide keywords: inherit +PASS Can set 'margin-top' to CSS-wide keywords: unset +PASS Can set 'margin-top' to CSS-wide keywords: revert +PASS Can set 'margin-top' to var() references: var(--A) +PASS Can set 'margin-top' to the 'auto' keyword: auto +PASS Can set 'margin-top' to a percent: 0% +PASS Can set 'margin-top' to a percent: -3.14% +PASS Can set 'margin-top' to a percent: 3.14% +PASS Can set 'margin-top' to a percent: calc(0% + 0%) +PASS Can set 'margin-top' to a length: 0px +PASS Can set 'margin-top' to a length: -3.14em +PASS Can set 'margin-top' to a length: 3.14cm +PASS Can set 'margin-top' to a length: calc(0px + 0em) PASS Setting 'margin-top' to a time throws TypeError PASS Setting 'margin-top' to an angle throws TypeError PASS Setting 'margin-top' to a flexible length throws TypeError PASS Setting 'margin-top' to a number throws TypeError PASS Setting 'margin-top' to a URL throws TypeError PASS Setting 'margin-top' to a transform throws TypeError -PASS Can set 'margin-left' to CSS-wide keywords -PASS Can set 'margin-left' to var() references -PASS Can set 'margin-left' to the 'auto' keyword -PASS Can set 'margin-left' to a percent -PASS Can set 'margin-left' to a length +PASS Can set 'margin-left' to CSS-wide keywords: initial +PASS Can set 'margin-left' to CSS-wide keywords: inherit +PASS Can set 'margin-left' to CSS-wide keywords: unset +PASS Can set 'margin-left' to CSS-wide keywords: revert +PASS Can set 'margin-left' to var() references: var(--A) +PASS Can set 'margin-left' to the 'auto' keyword: auto +PASS Can set 'margin-left' to a percent: 0% +PASS Can set 'margin-left' to a percent: -3.14% +PASS Can set 'margin-left' to a percent: 3.14% +PASS Can set 'margin-left' to a percent: calc(0% + 0%) +PASS Can set 'margin-left' to a length: 0px +PASS Can set 'margin-left' to a length: -3.14em +PASS Can set 'margin-left' to a length: 3.14cm +PASS Can set 'margin-left' to a length: calc(0px + 0em) PASS Setting 'margin-left' to a time throws TypeError PASS Setting 'margin-left' to an angle throws TypeError PASS Setting 'margin-left' to a flexible length throws TypeError PASS Setting 'margin-left' to a number throws TypeError PASS Setting 'margin-left' to a URL throws TypeError PASS Setting 'margin-left' to a transform throws TypeError -PASS Can set 'margin-right' to CSS-wide keywords -PASS Can set 'margin-right' to var() references -PASS Can set 'margin-right' to the 'auto' keyword -PASS Can set 'margin-right' to a percent -PASS Can set 'margin-right' to a length +PASS Can set 'margin-right' to CSS-wide keywords: initial +PASS Can set 'margin-right' to CSS-wide keywords: inherit +PASS Can set 'margin-right' to CSS-wide keywords: unset +PASS Can set 'margin-right' to CSS-wide keywords: revert +PASS Can set 'margin-right' to var() references: var(--A) +PASS Can set 'margin-right' to the 'auto' keyword: auto +PASS Can set 'margin-right' to a percent: 0% +PASS Can set 'margin-right' to a percent: -3.14% +PASS Can set 'margin-right' to a percent: 3.14% +PASS Can set 'margin-right' to a percent: calc(0% + 0%) +PASS Can set 'margin-right' to a length: 0px +PASS Can set 'margin-right' to a length: -3.14em +PASS Can set 'margin-right' to a length: 3.14cm +PASS Can set 'margin-right' to a length: calc(0px + 0em) PASS Setting 'margin-right' to a time throws TypeError PASS Setting 'margin-right' to an angle throws TypeError PASS Setting 'margin-right' to a flexible length throws TypeError PASS Setting 'margin-right' to a number throws TypeError PASS Setting 'margin-right' to a URL throws TypeError PASS Setting 'margin-right' to a transform throws TypeError -PASS Can set 'margin-bottom' to CSS-wide keywords -PASS Can set 'margin-bottom' to var() references -PASS Can set 'margin-bottom' to the 'auto' keyword -PASS Can set 'margin-bottom' to a percent -PASS Can set 'margin-bottom' to a length +PASS Can set 'margin-bottom' to CSS-wide keywords: initial +PASS Can set 'margin-bottom' to CSS-wide keywords: inherit +PASS Can set 'margin-bottom' to CSS-wide keywords: unset +PASS Can set 'margin-bottom' to CSS-wide keywords: revert +PASS Can set 'margin-bottom' to var() references: var(--A) +PASS Can set 'margin-bottom' to the 'auto' keyword: auto +PASS Can set 'margin-bottom' to a percent: 0% +PASS Can set 'margin-bottom' to a percent: -3.14% +PASS Can set 'margin-bottom' to a percent: 3.14% +PASS Can set 'margin-bottom' to a percent: calc(0% + 0%) +PASS Can set 'margin-bottom' to a length: 0px +PASS Can set 'margin-bottom' to a length: -3.14em +PASS Can set 'margin-bottom' to a length: 3.14cm +PASS Can set 'margin-bottom' to a length: calc(0px + 0em) PASS Setting 'margin-bottom' to a time throws TypeError PASS Setting 'margin-bottom' to an angle throws TypeError PASS Setting 'margin-bottom' to a flexible length throws TypeError PASS Setting 'margin-bottom' to a number throws TypeError PASS Setting 'margin-bottom' to a URL throws TypeError PASS Setting 'margin-bottom' to a transform throws TypeError -FAIL Can set 'margin' to CSS-wide keywords assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" -FAIL Can set 'margin' to var() references assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" +FAIL Can set 'margin' to CSS-wide keywords: initial assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'margin' to CSS-wide keywords: inherit assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'margin' to CSS-wide keywords: unset assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'margin' to CSS-wide keywords: revert assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'margin' to var() references: var(--A) assert_equals: expected "CSSUnparsedValue" but got "CSSStyleValue" PASS Setting 'margin' to a length throws TypeError PASS Setting 'margin' to a percent throws TypeError PASS Setting 'margin' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/margin.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/margin.html.ini index bdc986a..2ba94d75 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/margin.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/margin.html.ini
@@ -1,6 +1,15 @@ [margin.html] - [Can set 'margin' to CSS-wide keywords] + [Can set 'margin' to CSS-wide keywords: unset] expected: FAIL - [Can set 'margin' to var() references] + [Can set 'margin' to CSS-wide keywords: inherit] + expected: FAIL + + [Can set 'margin' to var() references: var(--A)] + expected: FAIL + + [Can set 'margin' to CSS-wide keywords: revert] + expected: FAIL + + [Can set 'margin' to CSS-wide keywords: initial] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/mask-image-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/mask-image-expected.txt index fc9e038f..d092d71 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/mask-image-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/mask-image-expected.txt
@@ -1,7 +1,10 @@ This is a testharness.js-based test. -FAIL Can set 'mask-image' to CSS-wide keywords Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: mask-image -FAIL Can set 'mask-image' to var() references Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: mask-image -FAIL Can set 'mask-image' to the 'none' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: mask-image +FAIL Can set 'mask-image' to CSS-wide keywords: initial Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: mask-image +FAIL Can set 'mask-image' to CSS-wide keywords: inherit Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: mask-image +FAIL Can set 'mask-image' to CSS-wide keywords: unset Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: mask-image +FAIL Can set 'mask-image' to CSS-wide keywords: revert Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: mask-image +FAIL Can set 'mask-image' to var() references: var(--A) Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: mask-image +FAIL Can set 'mask-image' to the 'none' keyword: none Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: mask-image FAIL Can set 'mask-image' to an image Failed to execute 'get' on 'StylePropertyMapReadOnly': Invalid propertyName: mask-image PASS Setting 'mask-image' to a length throws TypeError PASS Setting 'mask-image' to a percent throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/mask-image.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/mask-image.html.ini index f8a283e..cecd4b6 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/mask-image.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/mask-image.html.ini
@@ -1,12 +1,21 @@ [mask-image.html] - [Can set 'mask-image' to CSS-wide keywords] - expected: FAIL - - [Can set 'mask-image' to var() references] - expected: FAIL - - [Can set 'mask-image' to the 'none' keyword] - expected: FAIL - [Can set 'mask-image' to an image] expected: FAIL + + [Can set 'mask-image' to CSS-wide keywords: inherit] + expected: FAIL + + [Can set 'mask-image' to CSS-wide keywords: revert] + expected: FAIL + + [Can set 'mask-image' to the 'none' keyword: none] + expected: FAIL + + [Can set 'mask-image' to CSS-wide keywords: initial] + expected: FAIL + + [Can set 'mask-image' to var() references: var(--A)] + expected: FAIL + + [Can set 'mask-image' to CSS-wide keywords: unset] + expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/object-position-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/object-position-expected.txt index 63f0d72b..dbb972a 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/object-position-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/object-position-expected.txt
@@ -1,6 +1,9 @@ This is a testharness.js-based test. Harness Error. harness_status.status = 1 , harness_status.message = Uncaught Error: '<position>' is not a valid CSS component -PASS Can set 'object-position' to CSS-wide keywords -PASS Can set 'object-position' to var() references +PASS Can set 'object-position' to CSS-wide keywords: initial +PASS Can set 'object-position' to CSS-wide keywords: inherit +PASS Can set 'object-position' to CSS-wide keywords: unset +PASS Can set 'object-position' to CSS-wide keywords: revert +PASS Can set 'object-position' to var() references: var(--A) Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/offset-anchor-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/offset-anchor-expected.txt index 9d29923..a3f5659 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/offset-anchor-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/offset-anchor-expected.txt
@@ -1,7 +1,10 @@ This is a testharness.js-based test. Harness Error. harness_status.status = 1 , harness_status.message = Uncaught Error: '<position>' is not a valid CSS component -PASS Can set 'offset-anchor' to CSS-wide keywords -PASS Can set 'offset-anchor' to var() references -PASS Can set 'offset-anchor' to the 'auto' keyword +PASS Can set 'offset-anchor' to CSS-wide keywords: initial +PASS Can set 'offset-anchor' to CSS-wide keywords: inherit +PASS Can set 'offset-anchor' to CSS-wide keywords: unset +PASS Can set 'offset-anchor' to CSS-wide keywords: revert +PASS Can set 'offset-anchor' to var() references: var(--A) +PASS Can set 'offset-anchor' to the 'auto' keyword: auto Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/offset-position-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/offset-position-expected.txt index 3a89566..bbcb4c0e 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/offset-position-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/offset-position-expected.txt
@@ -1,7 +1,10 @@ This is a testharness.js-based test. Harness Error. harness_status.status = 1 , harness_status.message = Uncaught Error: '<position>' is not a valid CSS component -PASS Can set 'offset-position' to CSS-wide keywords -PASS Can set 'offset-position' to var() references -PASS Can set 'offset-position' to the 'auto' keyword +PASS Can set 'offset-position' to CSS-wide keywords: initial +PASS Can set 'offset-position' to CSS-wide keywords: inherit +PASS Can set 'offset-position' to CSS-wide keywords: unset +PASS Can set 'offset-position' to CSS-wide keywords: revert +PASS Can set 'offset-position' to var() references: var(--A) +PASS Can set 'offset-position' to the 'auto' keyword: auto Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/offset-rotate-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/offset-rotate-expected.txt index 1252eba6..c3f05ba 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/offset-rotate-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/offset-rotate-expected.txt
@@ -1,9 +1,15 @@ This is a testharness.js-based test. -PASS Can set 'offset-rotate' to CSS-wide keywords -PASS Can set 'offset-rotate' to var() references -FAIL Can set 'offset-rotate' to the 'auto' keyword assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" -FAIL Can set 'offset-rotate' to the 'reverse' keyword assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" -PASS Can set 'offset-rotate' to an angle +PASS Can set 'offset-rotate' to CSS-wide keywords: initial +PASS Can set 'offset-rotate' to CSS-wide keywords: inherit +PASS Can set 'offset-rotate' to CSS-wide keywords: unset +PASS Can set 'offset-rotate' to CSS-wide keywords: revert +PASS Can set 'offset-rotate' to var() references: var(--A) +FAIL Can set 'offset-rotate' to the 'auto' keyword: auto assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'offset-rotate' to the 'reverse' keyword: reverse assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +PASS Can set 'offset-rotate' to an angle: 0deg +PASS Can set 'offset-rotate' to an angle: 3.14rad +PASS Can set 'offset-rotate' to an angle: -3.14deg +PASS Can set 'offset-rotate' to an angle: calc(0rad + 0deg) PASS Setting 'offset-rotate' to a length throws TypeError PASS Setting 'offset-rotate' to a percent throws TypeError PASS Setting 'offset-rotate' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/offset-rotate.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/offset-rotate.html.ini index a892173..2574273 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/offset-rotate.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/offset-rotate.html.ini
@@ -1,6 +1,6 @@ [offset-rotate.html] - [Can set 'offset-rotate' to the 'auto' keyword] + [Can set 'offset-rotate' to the 'auto' keyword: auto] expected: FAIL - [Can set 'offset-rotate' to the 'reverse' keyword] + [Can set 'offset-rotate' to the 'reverse' keyword: reverse] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/outline-style-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/outline-style-expected.txt index 03c29c1..505671f 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/outline-style-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/outline-style-expected.txt
@@ -1,16 +1,19 @@ This is a testharness.js-based test. -PASS Can set 'outline-style' to CSS-wide keywords -PASS Can set 'outline-style' to var() references -FAIL Can set 'outline-style' to the 'auto' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -PASS Can set 'outline-style' to the 'none' keyword -PASS Can set 'outline-style' to the 'dotted' keyword -PASS Can set 'outline-style' to the 'dashed' keyword -PASS Can set 'outline-style' to the 'solid' keyword -PASS Can set 'outline-style' to the 'double' keyword -PASS Can set 'outline-style' to the 'groove' keyword -PASS Can set 'outline-style' to the 'ridge' keyword -PASS Can set 'outline-style' to the 'inset' keyword -PASS Can set 'outline-style' to the 'outset' keyword +PASS Can set 'outline-style' to CSS-wide keywords: initial +PASS Can set 'outline-style' to CSS-wide keywords: inherit +PASS Can set 'outline-style' to CSS-wide keywords: unset +PASS Can set 'outline-style' to CSS-wide keywords: revert +PASS Can set 'outline-style' to var() references: var(--A) +FAIL Can set 'outline-style' to the 'auto' keyword: auto Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'outline-style' to the 'none' keyword: none +PASS Can set 'outline-style' to the 'dotted' keyword: dotted +PASS Can set 'outline-style' to the 'dashed' keyword: dashed +PASS Can set 'outline-style' to the 'solid' keyword: solid +PASS Can set 'outline-style' to the 'double' keyword: double +PASS Can set 'outline-style' to the 'groove' keyword: groove +PASS Can set 'outline-style' to the 'ridge' keyword: ridge +PASS Can set 'outline-style' to the 'inset' keyword: inset +PASS Can set 'outline-style' to the 'outset' keyword: outset PASS Setting 'outline-style' to a length throws TypeError PASS Setting 'outline-style' to a percent throws TypeError PASS Setting 'outline-style' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/outline-style.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/outline-style.html.ini index b998600..623705a3 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/outline-style.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/outline-style.html.ini
@@ -1,3 +1,3 @@ [outline-style.html] - [Can set 'outline-style' to the 'auto' keyword] + [Can set 'outline-style' to the 'auto' keyword: auto] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/overflow-wrap-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/overflow-wrap-expected.txt index d60ce863..24622bf 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/overflow-wrap-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/overflow-wrap-expected.txt
@@ -1,9 +1,12 @@ This is a testharness.js-based test. -PASS Can set 'overflow-wrap' to CSS-wide keywords -PASS Can set 'overflow-wrap' to var() references -PASS Can set 'overflow-wrap' to the 'normal' keyword -PASS Can set 'overflow-wrap' to the 'break-word' keyword -FAIL Can set 'overflow-wrap' to the 'break-spaces' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'overflow-wrap' to CSS-wide keywords: initial +PASS Can set 'overflow-wrap' to CSS-wide keywords: inherit +PASS Can set 'overflow-wrap' to CSS-wide keywords: unset +PASS Can set 'overflow-wrap' to CSS-wide keywords: revert +PASS Can set 'overflow-wrap' to var() references: var(--A) +PASS Can set 'overflow-wrap' to the 'normal' keyword: normal +PASS Can set 'overflow-wrap' to the 'break-word' keyword: break-word +FAIL Can set 'overflow-wrap' to the 'break-spaces' keyword: break-spaces Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'overflow-wrap' to a length throws TypeError PASS Setting 'overflow-wrap' to a percent throws TypeError PASS Setting 'overflow-wrap' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/overflow-wrap.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/overflow-wrap.html.ini index cee7caf..6210d25 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/overflow-wrap.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/overflow-wrap.html.ini
@@ -1,6 +1,6 @@ [overflow-wrap.html] - [Can set 'overflow-wrap' to the 'break-spaces' keyword] + ['overflow-wrap' does not supported 'break-overflow break-spaces'] expected: FAIL - ['overflow-wrap' does not supported 'break-overflow break-spaces'] + [Can set 'overflow-wrap' to the 'break-spaces' keyword: break-spaces] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/page-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/page-expected.txt index 1394a995..cd60ff6f 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/page-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/page-expected.txt
@@ -1,8 +1,11 @@ This is a testharness.js-based test. -PASS Can set 'page' to CSS-wide keywords -PASS Can set 'page' to var() references -PASS Can set 'page' to the 'auto' keyword -FAIL Can set 'page' to the 'custom-ident' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'page' to CSS-wide keywords: initial +PASS Can set 'page' to CSS-wide keywords: inherit +PASS Can set 'page' to CSS-wide keywords: unset +PASS Can set 'page' to CSS-wide keywords: revert +PASS Can set 'page' to var() references: var(--A) +PASS Can set 'page' to the 'auto' keyword: auto +FAIL Can set 'page' to the 'custom-ident' keyword: custom-ident Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'page' to a length throws TypeError PASS Setting 'page' to a percent throws TypeError PASS Setting 'page' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/page.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/page.html.ini index 77f758f..865cecc 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/page.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/page.html.ini
@@ -1,3 +1,3 @@ [page.html] - [Can set 'page' to the 'custom-ident' keyword] + [Can set 'page' to the 'custom-ident' keyword: custom-ident] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/paint-order-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/paint-order-expected.txt index 495cb6ec..3261f2c 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/paint-order-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/paint-order-expected.txt
@@ -1,10 +1,13 @@ This is a testharness.js-based test. -PASS Can set 'paint-order' to CSS-wide keywords -PASS Can set 'paint-order' to var() references -PASS Can set 'paint-order' to the 'normal' keyword -FAIL Can set 'paint-order' to the 'fill' keyword assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" -FAIL Can set 'paint-order' to the 'stroke' keyword assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" -FAIL Can set 'paint-order' to the 'markers' keyword assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +PASS Can set 'paint-order' to CSS-wide keywords: initial +PASS Can set 'paint-order' to CSS-wide keywords: inherit +PASS Can set 'paint-order' to CSS-wide keywords: unset +PASS Can set 'paint-order' to CSS-wide keywords: revert +PASS Can set 'paint-order' to var() references: var(--A) +PASS Can set 'paint-order' to the 'normal' keyword: normal +FAIL Can set 'paint-order' to the 'fill' keyword: fill assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'paint-order' to the 'stroke' keyword: stroke assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" +FAIL Can set 'paint-order' to the 'markers' keyword: markers assert_equals: expected "CSSKeywordValue" but got "CSSStyleValue" PASS Setting 'paint-order' to a length throws TypeError PASS Setting 'paint-order' to a percent throws TypeError PASS Setting 'paint-order' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/paint-order.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/paint-order.html.ini index 65db27ca..3137957 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/paint-order.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/paint-order.html.ini
@@ -1,9 +1,9 @@ [paint-order.html] - [Can set 'paint-order' to the 'fill' keyword] + [Can set 'paint-order' to the 'fill' keyword: fill] expected: FAIL - [Can set 'paint-order' to the 'stroke' keyword] + [Can set 'paint-order' to the 'markers' keyword: markers] expected: FAIL - [Can set 'paint-order' to the 'markers' keyword] + [Can set 'paint-order' to the 'stroke' keyword: stroke] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/perspective-origin-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/perspective-origin-expected.txt index 54436149..083464a2 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/perspective-origin-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/perspective-origin-expected.txt
@@ -1,7 +1,10 @@ This is a testharness.js-based test. Harness Error. harness_status.status = 1 , harness_status.message = Uncaught Error: '<position>' is not a valid CSS component -PASS Can set 'perspective-origin' to CSS-wide keywords -PASS Can set 'perspective-origin' to var() references -FAIL Can set 'perspective-origin' to the 'none' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'perspective-origin' to CSS-wide keywords: initial +PASS Can set 'perspective-origin' to CSS-wide keywords: inherit +PASS Can set 'perspective-origin' to CSS-wide keywords: unset +PASS Can set 'perspective-origin' to CSS-wide keywords: revert +PASS Can set 'perspective-origin' to var() references: var(--A) +FAIL Can set 'perspective-origin' to the 'none' keyword: none Failed to execute 'set' on 'StylePropertyMap': Invalid type for property Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/perspective-origin.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/perspective-origin.html.ini index 4ac00c2..50e8145e 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/perspective-origin.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/perspective-origin.html.ini
@@ -1,4 +1,4 @@ [perspective-origin.html] expected: ERROR - [Can set 'perspective-origin' to the 'none' keyword] + [Can set 'perspective-origin' to the 'none' keyword: none] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js index 1f41953..a365f001 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js
@@ -27,11 +27,11 @@ }, { description: 'inherit keyword', - input: new CSSKeywordValue('initial') + input: new CSSKeywordValue('inherit') }, { description: 'unset keyword', - input: new CSSKeywordValue('initial') + input: new CSSKeywordValue('unset') }, { description: 'revert keyword', @@ -191,7 +191,7 @@ }, { description: "one fraction", - input: new CSSUnitValue(0, 'fr') + input: new CSSUnitValue(1, 'fr') }, { description: "negative fraction", @@ -292,10 +292,10 @@ // Test setting a value in a style map and then getting it from the inline and // computed styles. function testPropertyValid(propertyName, examples, specified, computed, description) { - test(t => { - let element = createDivWithStyle(t); + for (const example of examples) { + test(t => { + let element = createDivWithStyle(t); - for (const example of examples) { element.attributeStyleMap.set(propertyName, example.input); // specified style @@ -325,8 +325,8 @@ assert_style_value_equals(computedResult, example.input, `Setting ${example.description} and getting its computed value`); } - } - }, `Can set '${propertyName}' to ${description}`); + }, `Can set '${propertyName}' to ${description}: ${example.input}`); + } } // We have to special case CSSImageValue as they cannot be created with a
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/scroll-snap-align-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/scroll-snap-align-expected.txt index 34bbe3f5..b2fe52a 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/scroll-snap-align-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/scroll-snap-align-expected.txt
@@ -1,10 +1,13 @@ This is a testharness.js-based test. -PASS Can set 'scroll-snap-align' to CSS-wide keywords -PASS Can set 'scroll-snap-align' to var() references -FAIL Can set 'scroll-snap-align' to the 'none' keyword assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSKeywordValue]" -FAIL Can set 'scroll-snap-align' to the 'start' keyword assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSKeywordValue]" -FAIL Can set 'scroll-snap-align' to the 'end' keyword assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSKeywordValue]" -FAIL Can set 'scroll-snap-align' to the 'center' keyword assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSKeywordValue]" +PASS Can set 'scroll-snap-align' to CSS-wide keywords: initial +PASS Can set 'scroll-snap-align' to CSS-wide keywords: inherit +PASS Can set 'scroll-snap-align' to CSS-wide keywords: unset +PASS Can set 'scroll-snap-align' to CSS-wide keywords: revert +PASS Can set 'scroll-snap-align' to var() references: var(--A) +FAIL Can set 'scroll-snap-align' to the 'none' keyword: none assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSKeywordValue]" +FAIL Can set 'scroll-snap-align' to the 'start' keyword: start assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSKeywordValue]" +FAIL Can set 'scroll-snap-align' to the 'end' keyword: end assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSKeywordValue]" +FAIL Can set 'scroll-snap-align' to the 'center' keyword: center assert_class_string: expected "[object CSSStyleValue]" but got "[object CSSKeywordValue]" PASS Setting 'scroll-snap-align' to a length throws TypeError PASS Setting 'scroll-snap-align' to a percent throws TypeError PASS Setting 'scroll-snap-align' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/scroll-snap-align.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/scroll-snap-align.html.ini index 268a8a45..f0656cf 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/scroll-snap-align.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/scroll-snap-align.html.ini
@@ -1,12 +1,12 @@ [scroll-snap-align.html] - [Can set 'scroll-snap-align' to the 'none' keyword] + [Can set 'scroll-snap-align' to the 'end' keyword: end] expected: FAIL - [Can set 'scroll-snap-align' to the 'start' keyword] + [Can set 'scroll-snap-align' to the 'center' keyword: center] expected: FAIL - [Can set 'scroll-snap-align' to the 'end' keyword] + [Can set 'scroll-snap-align' to the 'none' keyword: none] expected: FAIL - [Can set 'scroll-snap-align' to the 'center' keyword] + [Can set 'scroll-snap-align' to the 'start' keyword: start] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/scroll-snap-type-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/scroll-snap-type-expected.txt index 44302c7c..a92e5303 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/scroll-snap-type-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/scroll-snap-type-expected.txt
@@ -1,12 +1,15 @@ This is a testharness.js-based test. -PASS Can set 'scroll-snap-type' to CSS-wide keywords -PASS Can set 'scroll-snap-type' to var() references -PASS Can set 'scroll-snap-type' to the 'none' keyword -PASS Can set 'scroll-snap-type' to the 'x' keyword -PASS Can set 'scroll-snap-type' to the 'y' keyword -PASS Can set 'scroll-snap-type' to the 'block' keyword -PASS Can set 'scroll-snap-type' to the 'inline' keyword -PASS Can set 'scroll-snap-type' to the 'both' keyword +PASS Can set 'scroll-snap-type' to CSS-wide keywords: initial +PASS Can set 'scroll-snap-type' to CSS-wide keywords: inherit +PASS Can set 'scroll-snap-type' to CSS-wide keywords: unset +PASS Can set 'scroll-snap-type' to CSS-wide keywords: revert +PASS Can set 'scroll-snap-type' to var() references: var(--A) +PASS Can set 'scroll-snap-type' to the 'none' keyword: none +PASS Can set 'scroll-snap-type' to the 'x' keyword: x +PASS Can set 'scroll-snap-type' to the 'y' keyword: y +PASS Can set 'scroll-snap-type' to the 'block' keyword: block +PASS Can set 'scroll-snap-type' to the 'inline' keyword: inline +PASS Can set 'scroll-snap-type' to the 'both' keyword: both PASS Setting 'scroll-snap-type' to a length throws TypeError PASS Setting 'scroll-snap-type' to a percent throws TypeError PASS Setting 'scroll-snap-type' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/shape-outside-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/shape-outside-expected.txt index 47ad5375..ff10610 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/shape-outside-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/shape-outside-expected.txt
@@ -1,11 +1,14 @@ This is a testharness.js-based test. -PASS Can set 'shape-outside' to CSS-wide keywords -PASS Can set 'shape-outside' to var() references -PASS Can set 'shape-outside' to the 'none' keyword -FAIL Can set 'shape-outside' to the 'margin-box' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'shape-outside' to the 'border-box' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'shape-outside' to the 'padding-box' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'shape-outside' to the 'content-box' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'shape-outside' to CSS-wide keywords: initial +PASS Can set 'shape-outside' to CSS-wide keywords: inherit +PASS Can set 'shape-outside' to CSS-wide keywords: unset +PASS Can set 'shape-outside' to CSS-wide keywords: revert +PASS Can set 'shape-outside' to var() references: var(--A) +PASS Can set 'shape-outside' to the 'none' keyword: none +FAIL Can set 'shape-outside' to the 'margin-box' keyword: margin-box Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'shape-outside' to the 'border-box' keyword: border-box Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'shape-outside' to the 'padding-box' keyword: padding-box Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'shape-outside' to the 'content-box' keyword: content-box Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Can set 'shape-outside' to an image PASS Setting 'shape-outside' to a length throws TypeError PASS Setting 'shape-outside' to a percent throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/shape-outside.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/shape-outside.html.ini index 8d4cf67..14673cc 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/shape-outside.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/shape-outside.html.ini
@@ -1,12 +1,12 @@ [shape-outside.html] - [Can set 'shape-outside' to the 'margin-box' keyword] + [Can set 'shape-outside' to the 'padding-box' keyword: padding-box] expected: FAIL - [Can set 'shape-outside' to the 'border-box' keyword] + [Can set 'shape-outside' to the 'margin-box' keyword: margin-box] expected: FAIL - [Can set 'shape-outside' to the 'padding-box' keyword] + [Can set 'shape-outside' to the 'border-box' keyword: border-box] expected: FAIL - [Can set 'shape-outside' to the 'content-box' keyword] + [Can set 'shape-outside' to the 'content-box' keyword: content-box] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/speak-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/speak-expected.txt index 11e61fe..f794469 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/speak-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/speak-expected.txt
@@ -1,9 +1,12 @@ This is a testharness.js-based test. -PASS Can set 'speak' to CSS-wide keywords -PASS Can set 'speak' to var() references -FAIL Can set 'speak' to the 'auto' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'speak' to the 'never' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'speak' to the 'always' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'speak' to CSS-wide keywords: initial +PASS Can set 'speak' to CSS-wide keywords: inherit +PASS Can set 'speak' to CSS-wide keywords: unset +PASS Can set 'speak' to CSS-wide keywords: revert +PASS Can set 'speak' to var() references: var(--A) +FAIL Can set 'speak' to the 'auto' keyword: auto Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'speak' to the 'never' keyword: never Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'speak' to the 'always' keyword: always Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'speak' to a length throws TypeError PASS Setting 'speak' to a percent throws TypeError PASS Setting 'speak' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/speak.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/speak.html.ini index a51bf4df..6df0473 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/speak.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/speak.html.ini
@@ -1,9 +1,9 @@ [speak.html] - [Can set 'speak' to the 'auto' keyword] + [Can set 'speak' to the 'never' keyword: never] expected: FAIL - [Can set 'speak' to the 'never' keyword] + [Can set 'speak' to the 'auto' keyword: auto] expected: FAIL - [Can set 'speak' to the 'always' keyword] + [Can set 'speak' to the 'always' keyword: always] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/stroke-linejoin-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/stroke-linejoin-expected.txt index 9933a6f..2892b60 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/stroke-linejoin-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/stroke-linejoin-expected.txt
@@ -1,12 +1,15 @@ This is a testharness.js-based test. -PASS Can set 'stroke-linejoin' to CSS-wide keywords -PASS Can set 'stroke-linejoin' to var() references -FAIL Can set 'stroke-linejoin' to the 'crop' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'stroke-linejoin' to the 'arcs' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -PASS Can set 'stroke-linejoin' to the 'miter' keyword -PASS Can set 'stroke-linejoin' to the 'bevel' keyword -PASS Can set 'stroke-linejoin' to the 'round' keyword -FAIL Can set 'stroke-linejoin' to the 'stupid' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'stroke-linejoin' to CSS-wide keywords: initial +PASS Can set 'stroke-linejoin' to CSS-wide keywords: inherit +PASS Can set 'stroke-linejoin' to CSS-wide keywords: unset +PASS Can set 'stroke-linejoin' to CSS-wide keywords: revert +PASS Can set 'stroke-linejoin' to var() references: var(--A) +FAIL Can set 'stroke-linejoin' to the 'crop' keyword: crop Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'stroke-linejoin' to the 'arcs' keyword: arcs Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'stroke-linejoin' to the 'miter' keyword: miter +PASS Can set 'stroke-linejoin' to the 'bevel' keyword: bevel +PASS Can set 'stroke-linejoin' to the 'round' keyword: round +FAIL Can set 'stroke-linejoin' to the 'stupid' keyword: stupid Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'stroke-linejoin' to a length throws TypeError PASS Setting 'stroke-linejoin' to a percent throws TypeError PASS Setting 'stroke-linejoin' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/stroke-linejoin.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/stroke-linejoin.html.ini index 20aa45d..e5fc47a 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/stroke-linejoin.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/stroke-linejoin.html.ini
@@ -1,15 +1,15 @@ [stroke-linejoin.html] - [Can set 'stroke-linejoin' to the 'crop' keyword] - expected: FAIL - - [Can set 'stroke-linejoin' to the 'arcs' keyword] - expected: FAIL - - [Can set 'stroke-linejoin' to the 'stupid' keyword] - expected: FAIL - ['stroke-linejoin' does not supported 'crop bevel'] expected: FAIL ['stroke-linejoin' does not supported 'round arcs'] expected: FAIL + + [Can set 'stroke-linejoin' to the 'stupid' keyword: stupid] + expected: FAIL + + [Can set 'stroke-linejoin' to the 'crop' keyword: crop] + expected: FAIL + + [Can set 'stroke-linejoin' to the 'arcs' keyword: arcs] + expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-combine-upright-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-combine-upright-expected.txt index 2768a30..5252804 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-combine-upright-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-combine-upright-expected.txt
@@ -1,8 +1,11 @@ This is a testharness.js-based test. -PASS Can set 'text-combine-upright' to CSS-wide keywords -PASS Can set 'text-combine-upright' to var() references -PASS Can set 'text-combine-upright' to the 'none' keyword -PASS Can set 'text-combine-upright' to the 'all' keyword +PASS Can set 'text-combine-upright' to CSS-wide keywords: initial +PASS Can set 'text-combine-upright' to CSS-wide keywords: inherit +PASS Can set 'text-combine-upright' to CSS-wide keywords: unset +PASS Can set 'text-combine-upright' to CSS-wide keywords: revert +PASS Can set 'text-combine-upright' to var() references: var(--A) +PASS Can set 'text-combine-upright' to the 'none' keyword: none +PASS Can set 'text-combine-upright' to the 'all' keyword: all PASS Setting 'text-combine-upright' to a length throws TypeError PASS Setting 'text-combine-upright' to a percent throws TypeError PASS Setting 'text-combine-upright' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-decoration-line-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-decoration-line-expected.txt index 345f6d5c..9e328f14 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-decoration-line-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-decoration-line-expected.txt
@@ -1,13 +1,16 @@ This is a testharness.js-based test. -PASS Can set 'text-decoration-line' to CSS-wide keywords -PASS Can set 'text-decoration-line' to var() references -PASS Can set 'text-decoration-line' to the 'none' keyword -PASS Can set 'text-decoration-line' to the 'underline' keyword -PASS Can set 'text-decoration-line' to the 'overline' keyword -PASS Can set 'text-decoration-line' to the 'line-through' keyword -FAIL Can set 'text-decoration-line' to the 'blink' keyword assert_equals: expected "blink" but got "none" -PASS Can set 'text-decoration-line' to the 'spelling-error' keyword -PASS Can set 'text-decoration-line' to the 'grammar-error' keyword +PASS Can set 'text-decoration-line' to CSS-wide keywords: initial +PASS Can set 'text-decoration-line' to CSS-wide keywords: inherit +PASS Can set 'text-decoration-line' to CSS-wide keywords: unset +PASS Can set 'text-decoration-line' to CSS-wide keywords: revert +PASS Can set 'text-decoration-line' to var() references: var(--A) +PASS Can set 'text-decoration-line' to the 'none' keyword: none +PASS Can set 'text-decoration-line' to the 'underline' keyword: underline +PASS Can set 'text-decoration-line' to the 'overline' keyword: overline +PASS Can set 'text-decoration-line' to the 'line-through' keyword: line-through +FAIL Can set 'text-decoration-line' to the 'blink' keyword: blink assert_equals: expected "blink" but got "none" +PASS Can set 'text-decoration-line' to the 'spelling-error' keyword: spelling-error +PASS Can set 'text-decoration-line' to the 'grammar-error' keyword: grammar-error PASS Setting 'text-decoration-line' to a length throws TypeError PASS Setting 'text-decoration-line' to a percent throws TypeError PASS Setting 'text-decoration-line' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-decoration-line.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-decoration-line.html.ini index 855e8b7..948cb81 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-decoration-line.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-decoration-line.html.ini
@@ -1,3 +1,3 @@ [text-decoration-line.html] - [Can set 'text-decoration-line' to the 'blink' keyword] + [Can set 'text-decoration-line' to the 'blink' keyword: blink] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-decoration-skip-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-decoration-skip-expected.txt index 2a64dcc4..d621867 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-decoration-skip-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-decoration-skip-expected.txt
@@ -1,11 +1,14 @@ This is a testharness.js-based test. -FAIL Can set 'text-decoration-skip' to CSS-wide keywords Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: text-decoration-skip -FAIL Can set 'text-decoration-skip' to var() references Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: text-decoration-skip -FAIL Can set 'text-decoration-skip' to the 'none' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: text-decoration-skip -FAIL Can set 'text-decoration-skip' to the 'objects' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: text-decoration-skip -FAIL Can set 'text-decoration-skip' to the 'edges' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: text-decoration-skip -FAIL Can set 'text-decoration-skip' to the 'box-decoration' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: text-decoration-skip -FAIL Can set 'text-decoration-skip' to the 'spaces' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: text-decoration-skip +FAIL Can set 'text-decoration-skip' to CSS-wide keywords: initial Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: text-decoration-skip +FAIL Can set 'text-decoration-skip' to CSS-wide keywords: inherit Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: text-decoration-skip +FAIL Can set 'text-decoration-skip' to CSS-wide keywords: unset Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: text-decoration-skip +FAIL Can set 'text-decoration-skip' to CSS-wide keywords: revert Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: text-decoration-skip +FAIL Can set 'text-decoration-skip' to var() references: var(--A) Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: text-decoration-skip +FAIL Can set 'text-decoration-skip' to the 'none' keyword: none Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: text-decoration-skip +FAIL Can set 'text-decoration-skip' to the 'objects' keyword: objects Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: text-decoration-skip +FAIL Can set 'text-decoration-skip' to the 'edges' keyword: edges Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: text-decoration-skip +FAIL Can set 'text-decoration-skip' to the 'box-decoration' keyword: box-decoration Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: text-decoration-skip +FAIL Can set 'text-decoration-skip' to the 'spaces' keyword: spaces Failed to execute 'set' on 'StylePropertyMap': Invalid propertyName: text-decoration-skip PASS Setting 'text-decoration-skip' to a length throws TypeError PASS Setting 'text-decoration-skip' to a percent throws TypeError PASS Setting 'text-decoration-skip' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-decoration-skip.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-decoration-skip.html.ini index 95d082e8..62fe6586 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-decoration-skip.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-decoration-skip.html.ini
@@ -1,25 +1,4 @@ [text-decoration-skip.html] - [Can set 'text-decoration-skip' to CSS-wide keywords] - expected: FAIL - - [Can set 'text-decoration-skip' to var() references] - expected: FAIL - - [Can set 'text-decoration-skip' to the 'none' keyword] - expected: FAIL - - [Can set 'text-decoration-skip' to the 'objects' keyword] - expected: FAIL - - [Can set 'text-decoration-skip' to the 'edges' keyword] - expected: FAIL - - [Can set 'text-decoration-skip' to the 'box-decoration' keyword] - expected: FAIL - - [Can set 'text-decoration-skip' to the 'spaces' keyword] - expected: FAIL - ['text-decoration-skip' does not supported 'objects spaces'] expected: FAIL @@ -28,3 +7,33 @@ ['text-decoration-skip' does not supported 'objects edges box-decoration'] expected: FAIL + + [Can set 'text-decoration-skip' to the 'objects' keyword: objects] + expected: FAIL + + [Can set 'text-decoration-skip' to CSS-wide keywords: inherit] + expected: FAIL + + [Can set 'text-decoration-skip' to the 'box-decoration' keyword: box-decoration] + expected: FAIL + + [Can set 'text-decoration-skip' to CSS-wide keywords: unset] + expected: FAIL + + [Can set 'text-decoration-skip' to the 'edges' keyword: edges] + expected: FAIL + + [Can set 'text-decoration-skip' to CSS-wide keywords: revert] + expected: FAIL + + [Can set 'text-decoration-skip' to var() references: var(--A)] + expected: FAIL + + [Can set 'text-decoration-skip' to the 'spaces' keyword: spaces] + expected: FAIL + + [Can set 'text-decoration-skip' to the 'none' keyword: none] + expected: FAIL + + [Can set 'text-decoration-skip' to CSS-wide keywords: initial] + expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-justify.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-justify.html.ini index 178fcf3e..494735a1 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-justify.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-justify.html.ini
@@ -1,18 +1,27 @@ [text-justify.html] - [Can set 'text-justify' to CSS-wide keywords] + [Can set 'text-justify' to CSS-wide keywords: initial] expected: FAIL - [Can set 'text-justify' to var() references] + [Can set 'text-justify' to CSS-wide keywords: unset] expected: FAIL - [Can set 'text-justify' to the 'auto' keyword] + [Can set 'text-justify' to the 'auto' keyword: auto] expected: FAIL - [Can set 'text-justify' to the 'none' keyword] + [Can set 'text-justify' to CSS-wide keywords: inherit] expected: FAIL - [Can set 'text-justify' to the 'inter-word' keyword] + [Can set 'text-justify' to CSS-wide keywords: revert] expected: FAIL - [Can set 'text-justify' to the 'inter-character' keyword] + [Can set 'text-justify' to the 'none' keyword: none] + expected: FAIL + + [Can set 'text-justify' to the 'inter-word' keyword: inter-word] + expected: FAIL + + [Can set 'text-justify' to the 'inter-character' keyword: inter-character] + expected: FAIL + + [Can set 'text-justify' to var() references: var(--A)] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-overflow-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-overflow-expected.txt index 71ce9ef..5c7ca085 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-overflow-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-overflow-expected.txt
@@ -1,9 +1,12 @@ This is a testharness.js-based test. -PASS Can set 'text-overflow' to CSS-wide keywords -PASS Can set 'text-overflow' to var() references -PASS Can set 'text-overflow' to the 'clip' keyword -PASS Can set 'text-overflow' to the 'ellipsis' keyword -FAIL Can set 'text-overflow' to the 'fade' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'text-overflow' to CSS-wide keywords: initial +PASS Can set 'text-overflow' to CSS-wide keywords: inherit +PASS Can set 'text-overflow' to CSS-wide keywords: unset +PASS Can set 'text-overflow' to CSS-wide keywords: revert +PASS Can set 'text-overflow' to var() references: var(--A) +PASS Can set 'text-overflow' to the 'clip' keyword: clip +PASS Can set 'text-overflow' to the 'ellipsis' keyword: ellipsis +FAIL Can set 'text-overflow' to the 'fade' keyword: fade Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'text-overflow' to a length throws TypeError PASS Setting 'text-overflow' to a percent throws TypeError PASS Setting 'text-overflow' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-overflow.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-overflow.html.ini index d7ba989..61a25d23 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-overflow.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-overflow.html.ini
@@ -1,7 +1,4 @@ [text-overflow.html] - [Can set 'text-overflow' to the 'fade' keyword] - expected: FAIL - ['text-overflow' does not supported 'clip ellipsis'] expected: FAIL @@ -10,3 +7,6 @@ ['text-overflow' does not supported 'fade(1px, 50%)'] expected: FAIL + + [Can set 'text-overflow' to the 'fade' keyword: fade] + expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-size-adjust-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-size-adjust-expected.txt index a8d1f57b..a3991da 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-size-adjust-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-size-adjust-expected.txt
@@ -1,9 +1,15 @@ This is a testharness.js-based test. -PASS Can set 'text-size-adjust' to CSS-wide keywords -PASS Can set 'text-size-adjust' to var() references -FAIL Can set 'text-size-adjust' to the 'none' keyword assert_equals: expected "CSSKeywordValue" but got "CSSUnitValue" -PASS Can set 'text-size-adjust' to the 'auto' keyword -FAIL Can set 'text-size-adjust' to a percent assert_equals: expected "CSSUnitValue" but got "CSSKeywordValue" +PASS Can set 'text-size-adjust' to CSS-wide keywords: initial +PASS Can set 'text-size-adjust' to CSS-wide keywords: inherit +PASS Can set 'text-size-adjust' to CSS-wide keywords: unset +PASS Can set 'text-size-adjust' to CSS-wide keywords: revert +PASS Can set 'text-size-adjust' to var() references: var(--A) +FAIL Can set 'text-size-adjust' to the 'none' keyword: none assert_equals: expected "CSSKeywordValue" but got "CSSUnitValue" +PASS Can set 'text-size-adjust' to the 'auto' keyword: auto +PASS Can set 'text-size-adjust' to a percent: 0% +FAIL Can set 'text-size-adjust' to a percent: -3.14% assert_equals: expected "CSSUnitValue" but got "CSSKeywordValue" +PASS Can set 'text-size-adjust' to a percent: 3.14% +PASS Can set 'text-size-adjust' to a percent: calc(0% + 0%) PASS Setting 'text-size-adjust' to a length throws TypeError PASS Setting 'text-size-adjust' to a time throws TypeError PASS Setting 'text-size-adjust' to an angle throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-size-adjust.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-size-adjust.html.ini index 2e253c1..7c8634d 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-size-adjust.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-size-adjust.html.ini
@@ -1,6 +1,6 @@ [text-size-adjust.html] - [Can set 'text-size-adjust' to the 'none' keyword] + [Can set 'text-size-adjust' to a percent: -3.14%] expected: FAIL - [Can set 'text-size-adjust' to a percent] + [Can set 'text-size-adjust' to the 'none' keyword: none] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-transform-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-transform-expected.txt index 937ef19..950bf7e8 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-transform-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-transform-expected.txt
@@ -1,11 +1,14 @@ This is a testharness.js-based test. -PASS Can set 'text-transform' to CSS-wide keywords -PASS Can set 'text-transform' to var() references -PASS Can set 'text-transform' to the 'none' keyword -PASS Can set 'text-transform' to the 'capitalize' keyword -PASS Can set 'text-transform' to the 'uppercase' keyword -PASS Can set 'text-transform' to the 'lowercase' keyword -FAIL Can set 'text-transform' to the 'full-width' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'text-transform' to CSS-wide keywords: initial +PASS Can set 'text-transform' to CSS-wide keywords: inherit +PASS Can set 'text-transform' to CSS-wide keywords: unset +PASS Can set 'text-transform' to CSS-wide keywords: revert +PASS Can set 'text-transform' to var() references: var(--A) +PASS Can set 'text-transform' to the 'none' keyword: none +PASS Can set 'text-transform' to the 'capitalize' keyword: capitalize +PASS Can set 'text-transform' to the 'uppercase' keyword: uppercase +PASS Can set 'text-transform' to the 'lowercase' keyword: lowercase +FAIL Can set 'text-transform' to the 'full-width' keyword: full-width Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'text-transform' to a length throws TypeError PASS Setting 'text-transform' to a percent throws TypeError PASS Setting 'text-transform' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-transform.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-transform.html.ini index 94cdb761..88a579f 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-transform.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-transform.html.ini
@@ -1,3 +1,3 @@ [text-transform.html] - [Can set 'text-transform' to the 'full-width' keyword] + [Can set 'text-transform' to the 'full-width' keyword: full-width] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/transform-box-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/transform-box-expected.txt index a52e46b..59880906 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/transform-box-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/transform-box-expected.txt
@@ -1,9 +1,12 @@ This is a testharness.js-based test. -PASS Can set 'transform-box' to CSS-wide keywords -PASS Can set 'transform-box' to var() references -FAIL Can set 'transform-box' to the 'border-box' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -PASS Can set 'transform-box' to the 'fill-box' keyword -PASS Can set 'transform-box' to the 'view-box' keyword +PASS Can set 'transform-box' to CSS-wide keywords: initial +PASS Can set 'transform-box' to CSS-wide keywords: inherit +PASS Can set 'transform-box' to CSS-wide keywords: unset +PASS Can set 'transform-box' to CSS-wide keywords: revert +PASS Can set 'transform-box' to var() references: var(--A) +FAIL Can set 'transform-box' to the 'border-box' keyword: border-box Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'transform-box' to the 'fill-box' keyword: fill-box +PASS Can set 'transform-box' to the 'view-box' keyword: view-box PASS Setting 'transform-box' to a length throws TypeError PASS Setting 'transform-box' to a percent throws TypeError PASS Setting 'transform-box' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/transform-box.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/transform-box.html.ini index aec291c..229c9a3 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/transform-box.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/transform-box.html.ini
@@ -1,3 +1,3 @@ [transform-box.html] - [Can set 'transform-box' to the 'border-box' keyword] + [Can set 'transform-box' to the 'border-box' keyword: border-box] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/transform-style-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/transform-style-expected.txt index de2e5e1c..5677ca5 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/transform-style-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/transform-style-expected.txt
@@ -1,9 +1,12 @@ This is a testharness.js-based test. -PASS Can set 'transform-style' to CSS-wide keywords -PASS Can set 'transform-style' to var() references -FAIL Can set 'transform-style' to the 'auto' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -PASS Can set 'transform-style' to the 'flat' keyword -PASS Can set 'transform-style' to the 'preserve-3d' keyword +PASS Can set 'transform-style' to CSS-wide keywords: initial +PASS Can set 'transform-style' to CSS-wide keywords: inherit +PASS Can set 'transform-style' to CSS-wide keywords: unset +PASS Can set 'transform-style' to CSS-wide keywords: revert +PASS Can set 'transform-style' to var() references: var(--A) +FAIL Can set 'transform-style' to the 'auto' keyword: auto Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'transform-style' to the 'flat' keyword: flat +PASS Can set 'transform-style' to the 'preserve-3d' keyword: preserve-3d PASS Setting 'transform-style' to a length throws TypeError PASS Setting 'transform-style' to a percent throws TypeError PASS Setting 'transform-style' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/transform-style.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/transform-style.html.ini index 05989cc..357bade 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/transform-style.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/transform-style.html.ini
@@ -1,3 +1,3 @@ [transform-style.html] - [Can set 'transform-style' to the 'auto' keyword] + [Can set 'transform-style' to the 'auto' keyword: auto] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/user-select-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/user-select-expected.txt index 5f63479..949dccd1 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/user-select-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/user-select-expected.txt
@@ -1,11 +1,14 @@ This is a testharness.js-based test. -PASS Can set 'user-select' to CSS-wide keywords -PASS Can set 'user-select' to var() references -PASS Can set 'user-select' to the 'auto' keyword -PASS Can set 'user-select' to the 'text' keyword -PASS Can set 'user-select' to the 'none' keyword -FAIL Can set 'user-select' to the 'contain' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -PASS Can set 'user-select' to the 'all' keyword +PASS Can set 'user-select' to CSS-wide keywords: initial +PASS Can set 'user-select' to CSS-wide keywords: inherit +PASS Can set 'user-select' to CSS-wide keywords: unset +PASS Can set 'user-select' to CSS-wide keywords: revert +PASS Can set 'user-select' to var() references: var(--A) +PASS Can set 'user-select' to the 'auto' keyword: auto +PASS Can set 'user-select' to the 'text' keyword: text +PASS Can set 'user-select' to the 'none' keyword: none +FAIL Can set 'user-select' to the 'contain' keyword: contain Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'user-select' to the 'all' keyword: all PASS Setting 'user-select' to a length throws TypeError PASS Setting 'user-select' to a percent throws TypeError PASS Setting 'user-select' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/user-select.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/user-select.html.ini index 1e5a9d6..5130c07d 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/user-select.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/user-select.html.ini
@@ -1,3 +1,3 @@ [user-select.html] - [Can set 'user-select' to the 'contain' keyword] + [Can set 'user-select' to the 'contain' keyword: contain] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/word-spacing-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/word-spacing-expected.txt index 9be80a7b..93451acd 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/word-spacing-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/word-spacing-expected.txt
@@ -1,9 +1,18 @@ This is a testharness.js-based test. -PASS Can set 'word-spacing' to CSS-wide keywords -PASS Can set 'word-spacing' to var() references -FAIL Can set 'word-spacing' to the 'normal' keyword assert_equals: expected "CSSKeywordValue" but got "CSSUnitValue" -PASS Can set 'word-spacing' to a length -FAIL Can set 'word-spacing' to a percent Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'word-spacing' to CSS-wide keywords: initial +PASS Can set 'word-spacing' to CSS-wide keywords: inherit +PASS Can set 'word-spacing' to CSS-wide keywords: unset +PASS Can set 'word-spacing' to CSS-wide keywords: revert +PASS Can set 'word-spacing' to var() references: var(--A) +FAIL Can set 'word-spacing' to the 'normal' keyword: normal assert_equals: expected "CSSKeywordValue" but got "CSSUnitValue" +PASS Can set 'word-spacing' to a length: 0px +PASS Can set 'word-spacing' to a length: -3.14em +PASS Can set 'word-spacing' to a length: 3.14cm +PASS Can set 'word-spacing' to a length: calc(0px + 0em) +FAIL Can set 'word-spacing' to a percent: 0% Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'word-spacing' to a percent: -3.14% Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'word-spacing' to a percent: 3.14% Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'word-spacing' to a percent: calc(0% + 0%) Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'word-spacing' to a time throws TypeError PASS Setting 'word-spacing' to an angle throws TypeError PASS Setting 'word-spacing' to a flexible length throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/word-spacing.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/word-spacing.html.ini index bc13e02..c1bd9ae5 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/word-spacing.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/word-spacing.html.ini
@@ -1,6 +1,15 @@ [word-spacing.html] - [Can set 'word-spacing' to the 'normal' keyword] + [Can set 'word-spacing' to a percent: 3.14%] expected: FAIL - [Can set 'word-spacing' to a percent] + [Can set 'word-spacing' to a percent: 0%] + expected: FAIL + + [Can set 'word-spacing' to the 'normal' keyword: normal] + expected: FAIL + + [Can set 'word-spacing' to a percent: -3.14%] + expected: FAIL + + [Can set 'word-spacing' to a percent: calc(0% + 0%)] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/word-wrap-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/word-wrap-expected.txt index a19c49bbc..6adefe6a 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/word-wrap-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/word-wrap-expected.txt
@@ -1,9 +1,12 @@ This is a testharness.js-based test. -PASS Can set 'word-wrap' to CSS-wide keywords -PASS Can set 'word-wrap' to var() references -PASS Can set 'word-wrap' to the 'normal' keyword -PASS Can set 'word-wrap' to the 'break-word' keyword -FAIL Can set 'word-wrap' to the 'break-spaces' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'word-wrap' to CSS-wide keywords: initial +PASS Can set 'word-wrap' to CSS-wide keywords: inherit +PASS Can set 'word-wrap' to CSS-wide keywords: unset +PASS Can set 'word-wrap' to CSS-wide keywords: revert +PASS Can set 'word-wrap' to var() references: var(--A) +PASS Can set 'word-wrap' to the 'normal' keyword: normal +PASS Can set 'word-wrap' to the 'break-word' keyword: break-word +FAIL Can set 'word-wrap' to the 'break-spaces' keyword: break-spaces Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'word-wrap' to a length throws TypeError PASS Setting 'word-wrap' to a percent throws TypeError PASS Setting 'word-wrap' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/word-wrap.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/word-wrap.html.ini index b7b679da..f67ff8e 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/word-wrap.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/word-wrap.html.ini
@@ -1,6 +1,6 @@ [word-wrap.html] - [Can set 'word-wrap' to the 'break-spaces' keyword] + ['word-wrap' does not supported 'break-word break-spaces'] expected: FAIL - ['word-wrap' does not supported 'break-word break-spaces'] + [Can set 'word-wrap' to the 'break-spaces' keyword: break-spaces] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/writing-mode-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/writing-mode-expected.txt index 8c5213aa..74387f5 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/writing-mode-expected.txt +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/writing-mode-expected.txt
@@ -1,11 +1,14 @@ This is a testharness.js-based test. -PASS Can set 'writing-mode' to CSS-wide keywords -PASS Can set 'writing-mode' to var() references -PASS Can set 'writing-mode' to the 'horizontal-tb' keyword -PASS Can set 'writing-mode' to the 'vertical-rl' keyword -PASS Can set 'writing-mode' to the 'vertical-lr' keyword -FAIL Can set 'writing-mode' to the 'sideways-rl' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property -FAIL Can set 'writing-mode' to the 'sideways-lr' keyword Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +PASS Can set 'writing-mode' to CSS-wide keywords: initial +PASS Can set 'writing-mode' to CSS-wide keywords: inherit +PASS Can set 'writing-mode' to CSS-wide keywords: unset +PASS Can set 'writing-mode' to CSS-wide keywords: revert +PASS Can set 'writing-mode' to var() references: var(--A) +PASS Can set 'writing-mode' to the 'horizontal-tb' keyword: horizontal-tb +PASS Can set 'writing-mode' to the 'vertical-rl' keyword: vertical-rl +PASS Can set 'writing-mode' to the 'vertical-lr' keyword: vertical-lr +FAIL Can set 'writing-mode' to the 'sideways-rl' keyword: sideways-rl Failed to execute 'set' on 'StylePropertyMap': Invalid type for property +FAIL Can set 'writing-mode' to the 'sideways-lr' keyword: sideways-lr Failed to execute 'set' on 'StylePropertyMap': Invalid type for property PASS Setting 'writing-mode' to a length throws TypeError PASS Setting 'writing-mode' to a percent throws TypeError PASS Setting 'writing-mode' to a time throws TypeError
diff --git a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/writing-mode.html.ini b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/writing-mode.html.ini index c0c46ab..0ba598f 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/writing-mode.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-typed-om/the-stylepropertymap/properties/writing-mode.html.ini
@@ -1,6 +1,6 @@ [writing-mode.html] - [Can set 'writing-mode' to the 'sideways-rl' keyword] + [Can set 'writing-mode' to the 'sideways-lr' keyword: sideways-lr] expected: FAIL - [Can set 'writing-mode' to the 'sideways-lr' keyword] + [Can set 'writing-mode' to the 'sideways-rl' keyword: sideways-rl] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/outline-style-inherit-ref.html b/third_party/blink/web_tests/external/wpt/css/css-ui/outline-style-inherit-ref.html new file mode 100644 index 0000000..e66e037 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-ui/outline-style-inherit-ref.html
@@ -0,0 +1,7 @@ +<!doctype html> +<meta charset="utf-8"> +<title>CSS Test Reference</title> +<style> + div { width: 100px; height: 100px } +</style> +<div style="outline-style: solid; outline-color: green"></div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/outline-style-inherit.html b/third_party/blink/web_tests/external/wpt/css/css-ui/outline-style-inherit.html new file mode 100644 index 0000000..7a82bc7 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-ui/outline-style-inherit.html
@@ -0,0 +1,14 @@ +<!doctype html> +<meta charset="utf-8"> +<title>Inheriting outline-style should compute the right outline-width</title> +<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io"> +<link rel="author" title="Mozilla" href="https://mozilla.org"> +<link rel="help" href="https://drafts.csswg.org/css-ui-4/#outline-width"> +<link rel="help" href="https://drafts.csswg.org/css-ui-4/#outline-style"> +<link rel="match" href="outline-style-inherit-ref.html"> +<style> + div { width: 100px; height: 100px } +</style> +<div style="outline-style: solid; outline-color: transparent"> + <div style="outline-style: inherit; outline-color: green"></div> +</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/cssom/CSSFontFeatureValuesRule.html b/third_party/blink/web_tests/external/wpt/css/cssom/CSSFontFeatureValuesRule.html index a267675..a0ea64a5 100644 --- a/third_party/blink/web_tests/external/wpt/css/cssom/CSSFontFeatureValuesRule.html +++ b/third_party/blink/web_tests/external/wpt/css/cssom/CSSFontFeatureValuesRule.html
@@ -5,34 +5,49 @@ rel="help" href="https://drafts.csswg.org/css-fonts-4/#om-fontfeaturevalues" /> -<link rel="author" title="Dominik Röttsches" href="drott@chromium.org"> -<meta name="assert" content="CSSFontFeatureValuesRule interface is accessible and supports read and write access."> +<link rel="author" title="Dominik Röttsches" href="drott@chromium.org" /> +<meta + name="assert" + content="CSSFontFeatureValuesRule interface is accessible and supports read and write access." +/> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <style></style> +<body></body> <script> let rule_initial = ` -@font-feature-values test_family { - @annotation { - the_first: 6; + @font-feature-values test_family { + @annotation { + the_first: 6; + } + @styleset { + yo: 7; + del: 4; + di: 10 9 4 5; + } } - @styleset { - yo: 7; - del: 4; - di: 10 9 4 5; - } -} -`; + `; let rule_added = ` -@font-feature-values second_family { - @annotation { - yabab: 2; - yogog: 4; - bidib: 5; + @font-feature-values second_family { + @annotation { + yabab: 2; + yogog: 4; + bidib: 5; + } } -} -`; + `; + + let rule_overlap = ` + @font-feature-values test_family { + @annotation { + baric: 17; + } + @ornaments { + fooic: 1; + } + } + `; function resetStateAndTest(testFunction) { var sheet = document.styleSheets[0]; @@ -133,4 +148,45 @@ assert_equals(document.styleSheets[0].cssRules[1].annotation.size, 0); }); }, "Clearing all entries is possible."); + + test(function () { + resetStateAndTest(() => { + assert_equals(document.styleSheets[0].cssRules.length, 1); + document.styleSheets[0].insertRule(rule_overlap, 1); + assert_equals(document.styleSheets[0].cssRules.length, 2); + + // Force updating internal state. + getComputedStyle(document.body).borderTop; + + assert_equals( + document.styleSheets[0].cssRules[0].annotation.size, + 1, + "1 annotation." + ); + assert_equals( + document.styleSheets[0].cssRules[0].styleset.size, + 3, + "3 entries in styleset." + ); + assert_equals( + document.styleSheets[0].cssRules[0].ornaments.size, + 0, + "No ornament entries." + ); + assert_false( + document.styleSheets[0].cssRules[0].annotation.has("baric"), + "Annotation must not contain 'baric'." + ); + assert_false( + document.styleSheets[0].cssRules[0].ornaments.has("fooic"), + "Ornaments must not contain 'fooic'." + ); + + assert_equals(document.styleSheets[0].cssRules[1].annotation.size, 1); + assert_equals(document.styleSheets[0].cssRules[1].ornaments.size, 1); + assert_false( + document.styleSheets[0].cssRules[1].annotation.has("the_first") + ); + }); + }, "Multiple rules for the same family are kept separate in CSSOM."); </script>
diff --git a/third_party/blink/web_tests/external/wpt/custom-elements/form-associated/ElementInternals-setFormValue.html.ini b/third_party/blink/web_tests/external/wpt/custom-elements/form-associated/ElementInternals-setFormValue.html.ini index 546d07e..7c2ce0a 100644 --- a/third_party/blink/web_tests/external/wpt/custom-elements/form-associated/ElementInternals-setFormValue.html.ini +++ b/third_party/blink/web_tests/external/wpt/custom-elements/form-associated/ElementInternals-setFormValue.html.ini
@@ -1,4 +1,6 @@ [ElementInternals-setFormValue.html] + expected: + if flag_specific == "disable-layout-ng": [OK, TIMEOUT] [Newline normalization - \\n in FormData name (formdata)] expected: [PASS, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/custom-elements/form-associated/ElementInternals-target-element-is-held-strongly.html.ini b/third_party/blink/web_tests/external/wpt/custom-elements/form-associated/ElementInternals-target-element-is-held-strongly.html.ini index 64240c7..0e40cdcf 100644 --- a/third_party/blink/web_tests/external/wpt/custom-elements/form-associated/ElementInternals-target-element-is-held-strongly.html.ini +++ b/third_party/blink/web_tests/external/wpt/custom-elements/form-associated/ElementInternals-target-element-is-held-strongly.html.ini
@@ -1,3 +1,3 @@ [ElementInternals-target-element-is-held-strongly.html] expected: - if os == "win": TIMEOUT + if flag_specific == "disable-site-isolation-trials": [OK, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/dom/events/scrolling/scrollend-event-for-user-scroll.html.ini b/third_party/blink/web_tests/external/wpt/dom/events/scrolling/scrollend-event-for-user-scroll.html.ini index dcf646b..ef3da60e 100644 --- a/third_party/blink/web_tests/external/wpt/dom/events/scrolling/scrollend-event-for-user-scroll.html.ini +++ b/third_party/blink/web_tests/external/wpt/dom/events/scrolling/scrollend-event-for-user-scroll.html.ini
@@ -1,13 +1,2 @@ [scrollend-event-for-user-scroll.html] - expected: TIMEOUT - [Tests that the target_div gets scrollend event when dragging scroll on target.] - expected: TIMEOUT - - [Tests that the target_div gets scrollend event when click scrollbar on target.] - expected: NOTRUN - - [Tests that the target_div gets scrollend event when drag the thumb of target.] - expected: NOTRUN - - [Tests that the target_div gets scrollend event when send DOWN key to target.] - expected: NOTRUN + expected: ERROR
diff --git a/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/operators/operator-dictionary-largeop-003.html.ini b/third_party/blink/web_tests/external/wpt/dom/ranges/Range-mutations-deleteData.html.ini similarity index 67% copy from third_party/blink/web_tests/external/wpt/mathml/presentation-markup/operators/operator-dictionary-largeop-003.html.ini copy to third_party/blink/web_tests/external/wpt/dom/ranges/Range-mutations-deleteData.html.ini index 9d853344..8a4d2fe 100644 --- a/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/operators/operator-dictionary-largeop-003.html.ini +++ b/third_party/blink/web_tests/external/wpt/dom/ranges/Range-mutations-deleteData.html.ini
@@ -1,3 +1,3 @@ -[operator-dictionary-largeop-003.html] +[Range-mutations-deleteData.html] expected: if flag_specific == "disable-site-isolation-trials": [OK, CRASH]
diff --git a/third_party/blink/web_tests/external/wpt/dom/ranges/Range-mutations-replaceData.html.ini b/third_party/blink/web_tests/external/wpt/dom/ranges/Range-mutations-replaceData.html.ini deleted file mode 100644 index 51870a6..0000000 --- a/third_party/blink/web_tests/external/wpt/dom/ranges/Range-mutations-replaceData.html.ini +++ /dev/null
@@ -1,3 +0,0 @@ -[Range-mutations-replaceData.html] - expected: - if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [OK, CRASH]
diff --git a/third_party/blink/web_tests/external/wpt/domparsing/innerhtml-01.xhtml.ini b/third_party/blink/web_tests/external/wpt/domparsing/innerhtml-01.xhtml.ini index 708d849..dc54db07 100644 --- a/third_party/blink/web_tests/external/wpt/domparsing/innerhtml-01.xhtml.ini +++ b/third_party/blink/web_tests/external/wpt/domparsing/innerhtml-01.xhtml.ini
@@ -1,4 +1,6 @@ [innerhtml-01.xhtml] + expected: + if os == "win": [OK, CRASH] [innerHTML in XHTML: getting while the document is in an invalid state] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/interfaces/KeyframeEffect/getKeyframes.html.ini b/third_party/blink/web_tests/external/wpt/domxpath/fn-normalize-space.html.ini similarity index 72% rename from third_party/blink/web_tests/external/wpt/web-animations/interfaces/KeyframeEffect/getKeyframes.html.ini rename to third_party/blink/web_tests/external/wpt/domxpath/fn-normalize-space.html.ini index d644a16..31b35e4 100644 --- a/third_party/blink/web_tests/external/wpt/web-animations/interfaces/KeyframeEffect/getKeyframes.html.ini +++ b/third_party/blink/web_tests/external/wpt/domxpath/fn-normalize-space.html.ini
@@ -1,3 +1,3 @@ -[getKeyframes.html] +[fn-normalize-space.html] expected: if flag_specific == "disable-layout-ng": [OK, CRASH]
diff --git a/third_party/blink/web_tests/external/wpt/domxpath/xml_xpath_runner.html.ini b/third_party/blink/web_tests/external/wpt/domxpath/xml_xpath_runner.html.ini index e30b173..b9af709d7 100644 --- a/third_party/blink/web_tests/external/wpt/domxpath/xml_xpath_runner.html.ini +++ b/third_party/blink/web_tests/external/wpt/domxpath/xml_xpath_runner.html.ini
@@ -1,3 +1,3 @@ [xml_xpath_runner.html] expected: - if flag_specific == "disable-site-isolation-trials": [OK, CRASH] + if flag_specific == "disable-layout-ng": [OK, CRASH]
diff --git a/third_party/blink/web_tests/external/wpt/editing/data/bold.js b/third_party/blink/web_tests/external/wpt/editing/data/bold.js index 14147e42..0d7587d 100644 --- a/third_party/blink/web_tests/external/wpt/editing/data/bold.js +++ b/third_party/blink/web_tests/external/wpt/editing/data/bold.js
@@ -1024,5 +1024,18 @@ [["stylewithcss","false"],["bold",""]], "<span style=\"font-weight:100\">fo<b>[o</b></span><span style=\"font-weight:200\"><b>b]</b>ar</span>", [true,true], - {"stylewithcss":[false,true,"",false,false,""],"bold":[false,false,"",false,true,""]}] + {"stylewithcss":[false,true,"",false,false,""],"bold":[false,false,"",false,true,""]}], + +// Don't delete non-editable node. +["abc<b>[d<span contenteditable=\"false\"><b>e</b></span>f]</b>ghi", + [["stylewithcss","false"],["bold",""]], + "abcd<span contenteditable=\"false\"><b>e</b></span>fghi", + [true,true], + {}], +// but delete editable node in non-editable node. +["abc<b>[d<span contenteditable=\"false\"><span contenteditable><b>e</b></span></span>f]</b>ghi", + [["stylewithcss","false"],["bold",""]], + "abcd<span contenteditable=\"false\"><span contenteditable=\"\">e</span></span>fghi", + [true,true], + {}], ]
diff --git a/third_party/blink/web_tests/external/wpt/editing/data/hilitecolor.js b/third_party/blink/web_tests/external/wpt/editing/data/hilitecolor.js index 2570619..7f9f494 100644 --- a/third_party/blink/web_tests/external/wpt/editing/data/hilitecolor.js +++ b/third_party/blink/web_tests/external/wpt/editing/data/hilitecolor.js
@@ -352,22 +352,24 @@ {"stylewithcss":[false,true,"",false,false,""],"hilitecolor":[false,false,"rgb(210, 180, 140)",false,false,"rgb(0, 255, 255)"]}], ["<font size=6>[foo]</font>", [["stylewithcss","true"],["hilitecolor","#00FFFF"]], - "<span style=\"background-color:rgb(0, 255, 255)\"><font size=\"6\">[foo]</font></span>", + ["<font size=\"6\" style=\"background-color:rgb(0, 255, 255)\">foo</font>", + "<font style=\"background-color:rgb(0, 255, 255)\" size=\"6\">foo</font>"], [true,true], {"stylewithcss":[false,false,"",false,true,""],"hilitecolor":[false,false,"rgba(0, 0, 0, 0)",false,false,"rgb(0, 255, 255)"]}], ["<font size=6>[foo]</font>", [["stylewithcss","false"],["hilitecolor","#00FFFF"]], - "<span style=\"background-color:rgb(0, 255, 255)\"><font size=\"6\">[foo]</font></span>", + ["<font size=\"6\" style=\"background-color:rgb(0, 255, 255)\">foo</font>", + "<font style=\"background-color:rgb(0, 255, 255)\" size=\"6\">foo</font>"], [true,true], {"stylewithcss":[false,true,"",false,false,""],"hilitecolor":[false,false,"rgba(0, 0, 0, 0)",false,false,"rgb(0, 255, 255)"]}], ["<span style=font-size:xx-large>[foo]</span>", [["stylewithcss","true"],["hilitecolor","#00FFFF"]], - "<span style=\"background-color:rgb(0, 255, 255)\"><span style=\"font-size:xx-large\">[foo]</span></span>", + "<span style=\"font-size:xx-large; background-color:rgb(0, 255, 255)\">[foo]</span>", [true,true], {"stylewithcss":[false,false,"",false,true,""],"hilitecolor":[false,false,"rgba(0, 0, 0, 0)",false,false,"rgb(0, 255, 255)"]}], ["<span style=font-size:xx-large>[foo]</span>", [["stylewithcss","false"],["hilitecolor","#00FFFF"]], - "<span style=\"background-color:rgb(0, 255, 255)\"><span style=\"font-size:xx-large\">[foo]</span></span>", + "<span style=\"font-size:xx-large; background-color:rgb(0, 255, 255)\">[foo]</span>", [true,true], {"stylewithcss":[false,true,"",false,false,""],"hilitecolor":[false,false,"rgba(0, 0, 0, 0)",false,false,"rgb(0, 255, 255)"]}], ["<font size=6>foo[bar]baz</font>",
diff --git a/third_party/blink/web_tests/external/wpt/editing/data/inserttext.js b/third_party/blink/web_tests/external/wpt/editing/data/inserttext.js index ca90b9ae..b6b08d5c 100644 --- a/third_party/blink/web_tests/external/wpt/editing/data/inserttext.js +++ b/third_party/blink/web_tests/external/wpt/editing/data/inserttext.js
@@ -1107,7 +1107,7 @@ {"inserttext":[false,false,"",false,false,""]}], ["foo<a href=http://www.google.com>[bar</a>baz]", [["inserttext","a"]], - "foo<a href=\"http://www.google.com\">a[]</a>", + "fooa[]", [true], {"inserttext":[false,false,"",false,false,""]}], ["foo<font face=sans-serif>[bar</font>baz]", @@ -1130,39 +1130,40 @@ "foo<span style=\"background-color:rgb(0, 255, 255)\">a[]</span>", [true], {"inserttext":[false,false,"",false,false,""]}], +// <a href> should always be removed if entirely replaced. ["foo<a href=http://www.google.com><font color=blue>[bar</font></a>baz]", [["inserttext","a"]], - "foo<a href=\"http://www.google.com\"><font color=\"blue\">a[]</font></a>", + "foo<font color=\"blue\">a[]</font>", [true], {"inserttext":[false,false,"",false,false,""]}], ["foo<font color=blue><a href=http://www.google.com>[bar</a></font>baz]", [["inserttext","a"]], - "foo<font color=\"blue\"><a href=\"http://www.google.com\">a[]</a></font>", + "foo<font color=\"blue\">a[]</font>", [true], {"inserttext":[false,false,"",false,false,""]}], ["foo<a href=http://www.google.com><font color=brown>[bar</font></a>baz]", [["inserttext","a"]], - "foo<a href=\"http://www.google.com\"><font color=\"brown\">a[]</font></a>", + "foo<font color=\"brown\">a[]</font>", [true], {"inserttext":[false,false,"",false,false,""]}], ["foo<font color=brown><a href=http://www.google.com>[bar</a></font>baz]", [["inserttext","a"]], - "foo<font color=\"brown\"><a href=\"http://www.google.com\">a[]</a></font>", + "foo<font color=\"brown\">a[]</font>", [true], {"inserttext":[false,false,"",false,false,""]}], ["foo<a href=http://www.google.com><font color=black>[bar</font></a>baz]", [["inserttext","a"]], - "foo<a href=\"http://www.google.com\"><font color=\"black\">a[]</font></a>", + "foo<font color=\"black\">a[]</font>", [true], {"inserttext":[false,false,"",false,false,""]}], ["foo<a href=http://www.google.com><u>[bar</u></a>baz]", [["inserttext","a"]], - "foo<a href=\"http://www.google.com\"><u>a[]</u></a>", + "foo<u>a[]</u>", [true], {"inserttext":[false,false,"",false,false,""]}], ["foo<u><a href=http://www.google.com>[bar</a></u>baz]", [["inserttext","a"]], - "foo<u><a href=\"http://www.google.com\">a[]</a></u>", + "foo<u>a[]</u>", [true], {"inserttext":[false,false,"",false,false,""]}], ["foo<sub><font size=2>[bar</font></sub>baz]",
diff --git a/third_party/blink/web_tests/external/wpt/editing/data/strikethrough.js b/third_party/blink/web_tests/external/wpt/editing/data/strikethrough.js index 83cc7edf..86d2668 100644 --- a/third_party/blink/web_tests/external/wpt/editing/data/strikethrough.js +++ b/third_party/blink/web_tests/external/wpt/editing/data/strikethrough.js
@@ -15,9 +15,11 @@ "<p><strike>[foo</strike></p> <p><strike>bar]</strike></p>", [true,true], {"stylewithcss":[false,true,"",false,false,""],"strikethrough":[false,false,"",false,true,""]}], +// The first <span> should be styled with text-decoration, then, it becomes a +// good container for the following text node and the other <span>. ["<span>[foo</span> <span>bar]</span>", [["stylewithcss","true"],["strikethrough",""]], - "<span style=\"text-decoration:line-through\"><span>[foo</span> <span>bar]</span></span>", + "<span style=\"text-decoration:line-through\"><span>foo</span> <span>bar</span></span>", [true,true], {"stylewithcss":[false,false,"",false,true,""],"strikethrough":[false,false,"",false,true,""]}], ["<span>[foo</span> <span>bar]</span>", @@ -25,9 +27,12 @@ "<strike><span>[foo</span> <span>bar]</span></strike>", [true,true], {"stylewithcss":[false,true,"",false,false,""],"strikethrough":[false,false,"",false,true,""]}], +// Entire the content of the first <p> and the last <p> should be wrapped in +// new <span> elements, and in the middle <p>, the <span> element should be +// styled but the invisible text nodes should be ignored. ["<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>", [["stylewithcss","true"],["strikethrough",""]], - "<p><span style=\"text-decoration:line-through\">[foo</span></p><p> <span style=\"text-decoration:line-through\"><span>bar</span></span> </p><p><span style=\"text-decoration:line-through\">baz]</span></p>", + "<p><span style=\"text-decoration:line-through\">[foo</span></p><p> <span style=\"text-decoration:line-through\">bar</span> </p><p><span style=\"text-decoration:line-through\">baz</span></p>", [true,true], {"stylewithcss":[false,false,"",false,true,""],"strikethrough":[false,false,"",false,true,""]}], ["<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>", @@ -588,7 +593,7 @@ {"stylewithcss":[false,true,"",false,false,""],"strikethrough":[false,false,"",false,true,""]}], ["foo<span class=\"underline\">[bar]</span>baz", [["stylewithcss","true"],["strikethrough",""]], - "foo<span style=\"text-decoration:line-through\"><span class=\"underline\">[bar]</span></span>baz", + "foo<span class=\"underline\" style=\"text-decoration:line-through\">bar</span>baz", [true,true], {"stylewithcss":[false,false,"",false,true,""],"strikethrough":[false,false,"",false,true,""]}], ["foo<span class=\"underline\">[bar]</span>baz",
diff --git a/third_party/blink/web_tests/external/wpt/editing/data/underline.js b/third_party/blink/web_tests/external/wpt/editing/data/underline.js index 4092e5a8..812798a8 100644 --- a/third_party/blink/web_tests/external/wpt/editing/data/underline.js +++ b/third_party/blink/web_tests/external/wpt/editing/data/underline.js
@@ -27,7 +27,7 @@ {"stylewithcss":[false,true,"",false,false,""],"underline":[false,false,"",false,true,""]}], ["<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>", [["stylewithcss","true"],["underline",""]], - "<p><span style=\"text-decoration:underline\">[foo</span></p><p> <span style=\"text-decoration:underline\"><span>bar</span></span> </p><p><span style=\"text-decoration:underline\">baz]</span></p>", + "<p><span style=\"text-decoration:underline\">[foo</span></p><p> <span style=\"text-decoration:underline\">bar</span> </p><p><span style=\"text-decoration:underline\">baz</span></p>", [true,true], {"stylewithcss":[false,false,"",false,true,""],"underline":[false,false,"",false,true,""]}], ["<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>", @@ -597,7 +597,7 @@ {"underline":[false,true,"",false,true,""]}], ["foo<span class=\"line-through\">[bar]</span>baz", [["stylewithcss","true"],["underline",""]], - "foo<span style=\"text-decoration:underline\"><span class=\"line-through\">[bar]</span></span>baz", + "foo<span class=\"line-through\" style=\"text-decoration:underline\">[bar]</span>baz", [true,true], {"stylewithcss":[false,false,"",false,true,""],"underline":[false,false,"",false,true,""]}], ["foo<span class=\"line-through\">[bar]</span>baz",
diff --git a/third_party/blink/web_tests/external/wpt/editing/other/legacy-edit-command.html.ini b/third_party/blink/web_tests/external/wpt/editing/other/legacy-edit-command.html.ini new file mode 100644 index 0000000..482d456 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/editing/other/legacy-edit-command.html.ini
@@ -0,0 +1,31 @@ +[legacy-edit-command.html?command=heading¶m=h5] + +[legacy-edit-command.html?command=contentReadOnly¶m=false] + +[legacy-edit-command.html?command=increaseFontSize] + +[legacy-edit-command.html?command=insertBrOrReturn¶m=false] + expected: + if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [OK, CRASH] + +[legacy-edit-command.html?command=getHTML] + +[legacy-edit-command.html?command=heading¶m=h1] + +[legacy-edit-command.html?command=readonly¶m=true] + +[legacy-edit-command.html?command=insertBrOrReturn¶m=true] + +[legacy-edit-command.html?command=contentReadOnly¶m=true] + +[legacy-edit-command.html?command=heading¶m=h4] + +[legacy-edit-command.html?command=decreaseFontSize] + +[legacy-edit-command.html?command=heading¶m=h6] + +[legacy-edit-command.html?command=heading¶m=h2] + +[legacy-edit-command.html?command=heading¶m=h3] + +[legacy-edit-command.html?command=readonly¶m=false]
diff --git a/third_party/blink/web_tests/external/wpt/editing/run/bold.html.ini b/third_party/blink/web_tests/external/wpt/editing/run/bold.html.ini index e1a4a1d..2b5276b 100644 --- a/third_party/blink/web_tests/external/wpt/editing/run/bold.html.ini +++ b/third_party/blink/web_tests/external/wpt/editing/run/bold.html.ini
@@ -505,6 +505,8 @@ [bold.html?1001-2000] + expected: + if flag_specific == "disable-site-isolation-trials": [OK, CRASH] [[["stylewithcss","false"\],["bold",""\]\] "foo[<span style=\\"font-weight: bold\\">bar</span>\]baz" queryCommandState("stylewithcss") after] expected: FAIL @@ -1463,8 +1465,6 @@ [bold.html?3001-last] - expected: - if flag_specific == "disable-layout-ng": [OK, CRASH] [[["stylewithcss","false"\],["bold",""\]\] "<span style=font-weight:100>fo[o</span><span style=font-weight:200>b\]ar</span>" queryCommandState("stylewithcss") after] expected: FAIL @@ -1476,3 +1476,9 @@ [[["stylewithcss","false"\],["bold",""\]\] "<span style=font-weight:100>fo[o</span><span style=font-weight:200>b\]ar</span>" queryCommandValue("bold") after] expected: FAIL + + [[["stylewithcss","false"\],["bold",""\]\] "abc<b>[d<span contenteditable=\\"false\\"><span contenteditable><b>e</b></span></span>f\]</b>ghi" compare innerHTML] + expected: FAIL + + [[["stylewithcss","false"\],["bold",""\]\] "abc<b>[d<span contenteditable=\\"false\\"><b>e</b></span>f\]</b>ghi" compare innerHTML] + expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/editing/run/bold_3001-last-expected.txt b/third_party/blink/web_tests/external/wpt/editing/run/bold_3001-last-expected.txt index 96c92fe..ad5607c 100644 --- a/third_party/blink/web_tests/external/wpt/editing/run/bold_3001-last-expected.txt +++ b/third_party/blink/web_tests/external/wpt/editing/run/bold_3001-last-expected.txt
@@ -11,5 +11,13 @@ PASS [["stylewithcss","false"],["bold",""]] "<span style=font-weight:100>fo[o</span><span style=font-weight:200>b]ar</span>" queryCommandIndeterm("bold") after FAIL [["stylewithcss","false"],["bold",""]] "<span style=font-weight:100>fo[o</span><span style=font-weight:200>b]ar</span>" queryCommandState("bold") after assert_equals: Wrong result returned expected true but got false FAIL [["stylewithcss","false"],["bold",""]] "<span style=font-weight:100>fo[o</span><span style=font-weight:200>b]ar</span>" queryCommandValue("bold") after assert_equals: Wrong result returned expected "" but got "false" +PASS [["stylewithcss","false"],["bold",""]] "abc<b>[d<span contenteditable=\"false\"><b>e</b></span>f]</b>ghi": execCommand("stylewithcss", false, "false") return value +PASS [["stylewithcss","false"],["bold",""]] "abc<b>[d<span contenteditable=\"false\"><b>e</b></span>f]</b>ghi": execCommand("bold", false, "") return value +PASS [["stylewithcss","false"],["bold",""]] "abc<b>[d<span contenteditable=\"false\"><b>e</b></span>f]</b>ghi" checks for modifications to non-editable content +FAIL [["stylewithcss","false"],["bold",""]] "abc<b>[d<span contenteditable=\"false\"><b>e</b></span>f]</b>ghi" compare innerHTML assert_equals: Unexpected innerHTML (after normalizing inline style) expected "abcd<span contenteditable=\"false\"><b>e</b></span>fghi" but got "abcd<span contenteditable=\"false\" style=\"\"><b>e</b></span>fghi" +PASS [["stylewithcss","false"],["bold",""]] "abc<b>[d<span contenteditable=\"false\"><span contenteditable><b>e</b></span></span>f]</b>ghi": execCommand("stylewithcss", false, "false") return value +PASS [["stylewithcss","false"],["bold",""]] "abc<b>[d<span contenteditable=\"false\"><span contenteditable><b>e</b></span></span>f]</b>ghi": execCommand("bold", false, "") return value +PASS [["stylewithcss","false"],["bold",""]] "abc<b>[d<span contenteditable=\"false\"><span contenteditable><b>e</b></span></span>f]</b>ghi" checks for modifications to non-editable content +FAIL [["stylewithcss","false"],["bold",""]] "abc<b>[d<span contenteditable=\"false\"><span contenteditable><b>e</b></span></span>f]</b>ghi" compare innerHTML assert_equals: Unexpected innerHTML (after normalizing inline style) expected "abcd<span contenteditable=\"false\"><span contenteditable=\"\">e</span></span>fghi" but got "abcd<span contenteditable=\"false\" style=\"\"><span contenteditable=\"\">e</span></span>fghi" Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/external/wpt/editing/run/formatblock.html.ini b/third_party/blink/web_tests/external/wpt/editing/run/formatblock.html.ini index 8b0be3d..cf2a6f46 100644 --- a/third_party/blink/web_tests/external/wpt/editing/run/formatblock.html.ini +++ b/third_party/blink/web_tests/external/wpt/editing/run/formatblock.html.ini
@@ -1,6 +1,4 @@ [formatblock.html?1-1000] - expected: - if os == "win": [OK, CRASH] [[["defaultparagraphseparator","div"\],["formatblock","<div>"\]\] "{<p><p> <p>foo</p>}" compare innerHTML] expected: FAIL @@ -99,6 +97,8 @@ [formatblock.html?1001-2000] + expected: + if os == "win": [OK, CRASH] [[["defaultparagraphseparator","p"\],["formatblock","<div>"\]\] "<del>[foobar\]</del>" queryCommandValue("formatblock") after] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/editing/run/hilitecolor-expected.txt b/third_party/blink/web_tests/external/wpt/editing/run/hilitecolor-expected.txt index a9fd7325..60784cd 100644 --- a/third_party/blink/web_tests/external/wpt/editing/run/hilitecolor-expected.txt +++ b/third_party/blink/web_tests/external/wpt/editing/run/hilitecolor-expected.txt
@@ -1,5 +1,5 @@ This is a testharness.js-based test. -Found 1214 tests; 1007 PASS, 207 FAIL, 0 TIMEOUT, 0 NOTRUN. +Found 1214 tests; 1011 PASS, 203 FAIL, 0 TIMEOUT, 0 NOTRUN. PASS [["hilitecolor","#00FFFF"]] "foo[]bar": execCommand("hilitecolor", false, "#00FFFF") return value PASS [["hilitecolor","#00FFFF"]] "foo[]bar" checks for modifications to non-editable content PASS [["hilitecolor","#00FFFF"]] "foo[]bar" compare innerHTML @@ -1025,7 +1025,7 @@ PASS [["stylewithcss","true"],["hilitecolor","#00FFFF"]] "<font size=6>[foo]</font>": execCommand("stylewithcss", false, "true") return value PASS [["stylewithcss","true"],["hilitecolor","#00FFFF"]] "<font size=6>[foo]</font>": execCommand("hilitecolor", false, "#00FFFF") return value PASS [["stylewithcss","true"],["hilitecolor","#00FFFF"]] "<font size=6>[foo]</font>" checks for modifications to non-editable content -FAIL [["stylewithcss","true"],["hilitecolor","#00FFFF"]] "<font size=6>[foo]</font>" compare innerHTML assert_equals: Unexpected innerHTML (after normalizing inline style) expected "<span style=\"background-color:rgb(0, 255, 255)\"><font size=\"6\">foo</font></span>" but got "<font size=\"6\" style=\"background-color:rgb(0, 255, 255)\">foo</font>" +PASS [["stylewithcss","true"],["hilitecolor","#00FFFF"]] "<font size=6>[foo]</font>" compare innerHTML PASS [["stylewithcss","true"],["hilitecolor","#00FFFF"]] "<font size=6>[foo]</font>" queryCommandIndeterm("stylewithcss") before PASS [["stylewithcss","true"],["hilitecolor","#00FFFF"]] "<font size=6>[foo]</font>" queryCommandState("stylewithcss") before PASS [["stylewithcss","true"],["hilitecolor","#00FFFF"]] "<font size=6>[foo]</font>" queryCommandValue("stylewithcss") before @@ -1041,7 +1041,7 @@ PASS [["stylewithcss","false"],["hilitecolor","#00FFFF"]] "<font size=6>[foo]</font>": execCommand("stylewithcss", false, "false") return value PASS [["stylewithcss","false"],["hilitecolor","#00FFFF"]] "<font size=6>[foo]</font>": execCommand("hilitecolor", false, "#00FFFF") return value PASS [["stylewithcss","false"],["hilitecolor","#00FFFF"]] "<font size=6>[foo]</font>" checks for modifications to non-editable content -FAIL [["stylewithcss","false"],["hilitecolor","#00FFFF"]] "<font size=6>[foo]</font>" compare innerHTML assert_equals: Unexpected innerHTML (after normalizing inline style) expected "<span style=\"background-color:rgb(0, 255, 255)\"><font size=\"6\">foo</font></span>" but got "<font size=\"6\" style=\"background-color:rgb(0, 255, 255)\">foo</font>" +PASS [["stylewithcss","false"],["hilitecolor","#00FFFF"]] "<font size=6>[foo]</font>" compare innerHTML PASS [["stylewithcss","false"],["hilitecolor","#00FFFF"]] "<font size=6>[foo]</font>" queryCommandIndeterm("stylewithcss") before PASS [["stylewithcss","false"],["hilitecolor","#00FFFF"]] "<font size=6>[foo]</font>" queryCommandState("stylewithcss") before PASS [["stylewithcss","false"],["hilitecolor","#00FFFF"]] "<font size=6>[foo]</font>" queryCommandValue("stylewithcss") before @@ -1057,7 +1057,7 @@ PASS [["stylewithcss","true"],["hilitecolor","#00FFFF"]] "<span style=font-size:xx-large>[foo]</span>": execCommand("stylewithcss", false, "true") return value PASS [["stylewithcss","true"],["hilitecolor","#00FFFF"]] "<span style=font-size:xx-large>[foo]</span>": execCommand("hilitecolor", false, "#00FFFF") return value PASS [["stylewithcss","true"],["hilitecolor","#00FFFF"]] "<span style=font-size:xx-large>[foo]</span>" checks for modifications to non-editable content -FAIL [["stylewithcss","true"],["hilitecolor","#00FFFF"]] "<span style=font-size:xx-large>[foo]</span>" compare innerHTML assert_equals: Unexpected innerHTML (after normalizing inline style) expected "<span style=\"background-color:rgb(0, 255, 255)\"><span style=\"font-size:xx-large\">foo</span></span>" but got "<span style=\"font-size:xx-large; background-color:rgb(0, 255, 255)\">foo</span>" +PASS [["stylewithcss","true"],["hilitecolor","#00FFFF"]] "<span style=font-size:xx-large>[foo]</span>" compare innerHTML PASS [["stylewithcss","true"],["hilitecolor","#00FFFF"]] "<span style=font-size:xx-large>[foo]</span>" queryCommandIndeterm("stylewithcss") before PASS [["stylewithcss","true"],["hilitecolor","#00FFFF"]] "<span style=font-size:xx-large>[foo]</span>" queryCommandState("stylewithcss") before PASS [["stylewithcss","true"],["hilitecolor","#00FFFF"]] "<span style=font-size:xx-large>[foo]</span>" queryCommandValue("stylewithcss") before @@ -1073,7 +1073,7 @@ PASS [["stylewithcss","false"],["hilitecolor","#00FFFF"]] "<span style=font-size:xx-large>[foo]</span>": execCommand("stylewithcss", false, "false") return value PASS [["stylewithcss","false"],["hilitecolor","#00FFFF"]] "<span style=font-size:xx-large>[foo]</span>": execCommand("hilitecolor", false, "#00FFFF") return value PASS [["stylewithcss","false"],["hilitecolor","#00FFFF"]] "<span style=font-size:xx-large>[foo]</span>" checks for modifications to non-editable content -FAIL [["stylewithcss","false"],["hilitecolor","#00FFFF"]] "<span style=font-size:xx-large>[foo]</span>" compare innerHTML assert_equals: Unexpected innerHTML (after normalizing inline style) expected "<span style=\"background-color:rgb(0, 255, 255)\"><span style=\"font-size:xx-large\">foo</span></span>" but got "<span style=\"font-size:xx-large; background-color:rgb(0, 255, 255)\">foo</span>" +PASS [["stylewithcss","false"],["hilitecolor","#00FFFF"]] "<span style=font-size:xx-large>[foo]</span>" compare innerHTML PASS [["stylewithcss","false"],["hilitecolor","#00FFFF"]] "<span style=font-size:xx-large>[foo]</span>" queryCommandIndeterm("stylewithcss") before PASS [["stylewithcss","false"],["hilitecolor","#00FFFF"]] "<span style=font-size:xx-large>[foo]</span>" queryCommandState("stylewithcss") before PASS [["stylewithcss","false"],["hilitecolor","#00FFFF"]] "<span style=font-size:xx-large>[foo]</span>" queryCommandValue("stylewithcss") before
diff --git a/third_party/blink/web_tests/external/wpt/editing/run/hilitecolor.html.ini b/third_party/blink/web_tests/external/wpt/editing/run/hilitecolor.html.ini index 01333ac..bb69a2c2 100644 --- a/third_party/blink/web_tests/external/wpt/editing/run/hilitecolor.html.ini +++ b/third_party/blink/web_tests/external/wpt/editing/run/hilitecolor.html.ini
@@ -536,36 +536,24 @@ [[["stylewithcss","false"\],["hilitecolor","#00FFFF"\]\] "<span style=background-color:tan>fo[o<span style=background-color:transparent>b\]ar</span></span>" queryCommandValue("hilitecolor") after] expected: FAIL - [[["stylewithcss","true"\],["hilitecolor","#00FFFF"\]\] "<font size=6>[foo\]</font>" compare innerHTML] - expected: FAIL - [[["stylewithcss","true"\],["hilitecolor","#00FFFF"\]\] "<font size=6>[foo\]</font>" queryCommandValue("hilitecolor") before] expected: FAIL [[["stylewithcss","true"\],["hilitecolor","#00FFFF"\]\] "<font size=6>[foo\]</font>" queryCommandValue("hilitecolor") after] expected: FAIL - [[["stylewithcss","false"\],["hilitecolor","#00FFFF"\]\] "<font size=6>[foo\]</font>" compare innerHTML] - expected: FAIL - [[["stylewithcss","false"\],["hilitecolor","#00FFFF"\]\] "<font size=6>[foo\]</font>" queryCommandValue("hilitecolor") before] expected: FAIL [[["stylewithcss","false"\],["hilitecolor","#00FFFF"\]\] "<font size=6>[foo\]</font>" queryCommandValue("hilitecolor") after] expected: FAIL - [[["stylewithcss","true"\],["hilitecolor","#00FFFF"\]\] "<span style=font-size:xx-large>[foo\]</span>" compare innerHTML] - expected: FAIL - [[["stylewithcss","true"\],["hilitecolor","#00FFFF"\]\] "<span style=font-size:xx-large>[foo\]</span>" queryCommandValue("hilitecolor") before] expected: FAIL [[["stylewithcss","true"\],["hilitecolor","#00FFFF"\]\] "<span style=font-size:xx-large>[foo\]</span>" queryCommandValue("hilitecolor") after] expected: FAIL - [[["stylewithcss","false"\],["hilitecolor","#00FFFF"\]\] "<span style=font-size:xx-large>[foo\]</span>" compare innerHTML] - expected: FAIL - [[["stylewithcss","false"\],["hilitecolor","#00FFFF"\]\] "<span style=font-size:xx-large>[foo\]</span>" queryCommandValue("hilitecolor") before] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/editing/run/inserttext.html.ini b/third_party/blink/web_tests/external/wpt/editing/run/inserttext.html.ini index a46ae171..2cb2cf46 100644 --- a/third_party/blink/web_tests/external/wpt/editing/run/inserttext.html.ini +++ b/third_party/blink/web_tests/external/wpt/editing/run/inserttext.html.ini
@@ -151,9 +151,6 @@ [[["inserttext","a"\]\] "foo<sup>[bar</sup>baz\]" compare innerHTML] expected: FAIL - [[["inserttext","a"\]\] "foo<a href=http://www.google.com>[bar</a>baz\]" compare innerHTML] - expected: FAIL - [[["inserttext","a"\]\] "foo<font color=#0000FF>[bar</font>baz\]" compare innerHTML] expected: FAIL @@ -175,9 +172,6 @@ [[["inserttext","a"\]\] "foo<a href=http://www.google.com><u>[bar</u></a>baz\]" compare innerHTML] expected: FAIL - [[["inserttext","a"\]\] "foo<u><a href=http://www.google.com>[bar</a></u>baz\]" compare innerHTML] - expected: FAIL - [[["inserttext","a"\]\] "foo<sub><font size=2>[bar</font></sub>baz\]" compare innerHTML] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/editing/run/strikethrough_1-1000-expected.txt b/third_party/blink/web_tests/external/wpt/editing/run/strikethrough_1-1000-expected.txt index 5604cb47..a49dac8f 100644 --- a/third_party/blink/web_tests/external/wpt/editing/run/strikethrough_1-1000-expected.txt +++ b/third_party/blink/web_tests/external/wpt/editing/run/strikethrough_1-1000-expected.txt
@@ -76,7 +76,7 @@ PASS [["stylewithcss","true"],["strikethrough",""]] "<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>": execCommand("stylewithcss", false, "true") return value PASS [["stylewithcss","true"],["strikethrough",""]] "<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>": execCommand("strikethrough", false, "") return value PASS [["stylewithcss","true"],["strikethrough",""]] "<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>" checks for modifications to non-editable content -FAIL [["stylewithcss","true"],["strikethrough",""]] "<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>" compare innerHTML assert_equals: Unexpected innerHTML (after normalizing inline style) expected "<p><span style=\"text-decoration:line-through\">foo</span></p><p> <span style=\"text-decoration:line-through\"><span>bar</span></span> </p><p><span style=\"text-decoration:line-through\">baz</span></p>" but got "<p><span style=\"text-decoration-line:line-through\">foo</span></p><p> <span style=\"text-decoration-line:line-through\"><span>bar</span> </span></p><p><span style=\"text-decoration-line:line-through\">baz</span></p>" +FAIL [["stylewithcss","true"],["strikethrough",""]] "<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>" compare innerHTML assert_equals: Unexpected innerHTML (after normalizing inline style) expected "<p><span style=\"text-decoration:line-through\">foo</span></p><p> <span style=\"text-decoration:line-through\">bar</span> </p><p><span style=\"text-decoration:line-through\">baz</span></p>" but got "<p><span style=\"text-decoration-line:line-through\">foo</span></p><p> <span style=\"text-decoration-line:line-through\"><span>bar</span> </span></p><p><span style=\"text-decoration-line:line-through\">baz</span></p>" PASS [["stylewithcss","true"],["strikethrough",""]] "<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>" queryCommandIndeterm("stylewithcss") before PASS [["stylewithcss","true"],["strikethrough",""]] "<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>" queryCommandState("stylewithcss") before PASS [["stylewithcss","true"],["strikethrough",""]] "<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>" queryCommandValue("stylewithcss") before
diff --git a/third_party/blink/web_tests/external/wpt/editing/run/underline_1-1000-expected.txt b/third_party/blink/web_tests/external/wpt/editing/run/underline_1-1000-expected.txt index 2b0dbd99..33ae855 100644 --- a/third_party/blink/web_tests/external/wpt/editing/run/underline_1-1000-expected.txt +++ b/third_party/blink/web_tests/external/wpt/editing/run/underline_1-1000-expected.txt
@@ -76,7 +76,7 @@ PASS [["stylewithcss","true"],["underline",""]] "<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>": execCommand("stylewithcss", false, "true") return value PASS [["stylewithcss","true"],["underline",""]] "<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>": execCommand("underline", false, "") return value PASS [["stylewithcss","true"],["underline",""]] "<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>" checks for modifications to non-editable content -FAIL [["stylewithcss","true"],["underline",""]] "<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>" compare innerHTML assert_equals: Unexpected innerHTML (after normalizing inline style) expected "<p><span style=\"text-decoration:underline\">foo</span></p><p> <span style=\"text-decoration:underline\"><span>bar</span></span> </p><p><span style=\"text-decoration:underline\">baz</span></p>" but got "<p><span style=\"text-decoration-line:underline\">foo</span></p><p> <span style=\"text-decoration-line:underline\"><span>bar</span> </span></p><p><span style=\"text-decoration-line:underline\">baz</span></p>" +FAIL [["stylewithcss","true"],["underline",""]] "<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>" compare innerHTML assert_equals: Unexpected innerHTML (after normalizing inline style) expected "<p><span style=\"text-decoration:underline\">foo</span></p><p> <span style=\"text-decoration:underline\">bar</span> </p><p><span style=\"text-decoration:underline\">baz</span></p>" but got "<p><span style=\"text-decoration-line:underline\">foo</span></p><p> <span style=\"text-decoration-line:underline\"><span>bar</span> </span></p><p><span style=\"text-decoration-line:underline\">baz</span></p>" PASS [["stylewithcss","true"],["underline",""]] "<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>" queryCommandIndeterm("stylewithcss") before PASS [["stylewithcss","true"],["underline",""]] "<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>" queryCommandState("stylewithcss") before PASS [["stylewithcss","true"],["underline",""]] "<p>[foo</p><p> <span>bar</span> </p><p>baz]</p>" queryCommandValue("stylewithcss") before
diff --git a/third_party/blink/web_tests/external/wpt/element-timing/observe-multiple-images.html.ini b/third_party/blink/web_tests/external/wpt/element-timing/observe-multiple-images.html.ini index ee951be..80d5783d 100644 --- a/third_party/blink/web_tests/external/wpt/element-timing/observe-multiple-images.html.ini +++ b/third_party/blink/web_tests/external/wpt/element-timing/observe-multiple-images.html.ini
@@ -1,4 +1,4 @@ [observe-multiple-images.html] [PerformanceObserver can observe multiple image elements.] expected: - if flag_specific == "disable-site-isolation-trials": [PASS, FAIL] + if os == "win": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/he-windows-1255-late.tentative.html.ini b/third_party/blink/web_tests/external/wpt/encoding-detection/he-windows-1255-late.tentative.html.ini new file mode 100644 index 0000000..ab8528d --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/encoding-detection/he-windows-1255-late.tentative.html.ini
@@ -0,0 +1,3 @@ +[he-windows-1255-late.tentative.html] + expected: + if product == "chrome": [OK, ERROR]
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/pl-windows-1250-late.tentative.html.ini b/third_party/blink/web_tests/external/wpt/encoding-detection/pl-windows-1250-late.tentative.html.ini new file mode 100644 index 0000000..7aa70375 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/encoding-detection/pl-windows-1250-late.tentative.html.ini
@@ -0,0 +1,3 @@ +[pl-windows-1250-late.tentative.html] + expected: + if product == "chrome": [OK, ERROR]
diff --git a/third_party/blink/web_tests/external/wpt/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-decode.html.ini b/third_party/blink/web_tests/external/wpt/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-decode.html.ini index bd2c13863..0331e864 100644 --- a/third_party/blink/web_tests/external/wpt/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-decode.html.ini +++ b/third_party/blink/web_tests/external/wpt/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-decode.html.ini
@@ -1,10 +1,10 @@ [iso2022jp-decode.html?1001-2000] - expected: - if os == "win": [OK, CRASH] [iso2022jp-decode.html?6001-7000] [iso2022jp-decode.html?4001-5000] + expected: + if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [OK, CRASH] [iso2022jp-decode.html?1-1000]
diff --git a/third_party/blink/web_tests/external/wpt/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-csiso2022jp.html.ini b/third_party/blink/web_tests/external/wpt/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-csiso2022jp.html.ini index 5ecec73..492734c1 100644 --- a/third_party/blink/web_tests/external/wpt/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-csiso2022jp.html.ini +++ b/third_party/blink/web_tests/external/wpt/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-csiso2022jp.html.ini
@@ -3,14 +3,14 @@ [iso2022jp-encode-form-csiso2022jp.html?6001-7000] [iso2022jp-encode-form-csiso2022jp.html?2001-3000] + expected: + if flag_specific == "disable-layout-ng": [OK, CRASH] [iso2022jp-encode-form-csiso2022jp.html?3001-4000] [iso2022jp-encode-form-csiso2022jp.html?1-1000] [iso2022jp-encode-form-csiso2022jp.html?1001-2000] - expected: - if flag_specific == "disable-layout-ng": [OK, CRASH] [iso2022jp-encode-form-csiso2022jp.html?7001-last]
diff --git a/third_party/blink/web_tests/external/wpt/encoding/unsupported-labels.window.js.ini b/third_party/blink/web_tests/external/wpt/encoding/unsupported-labels.window.js.ini index 2298d46..f83eccb 100644 --- a/third_party/blink/web_tests/external/wpt/encoding/unsupported-labels.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/encoding/unsupported-labels.window.js.ini
@@ -1,2 +1,112 @@ [unsupported-labels.window.html] expected: TIMEOUT + [x-mac-farsi is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-mac-devanagari is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-mac-hebrew is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-iscii-ta is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [_autodetect_kr is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [_autodetect_all is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-mac-japanese is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-mac-arabic is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-mac-chinesesimp is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-mac-gujarati is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-iscii-te is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-mac-romanian is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [_autodetect is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-mac-tibetan is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-mac-greek is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-mac-korean is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-mac-roman-latin1 is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-mac-symbol is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-vps is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-mac-thai is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-mac-ce is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-mac-vt100 is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-mac-centraleurroman is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-mac-chinesetrad is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-nextstep is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-mac-turkish is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-mac-dingbats is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-mac-icelandic is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-mac-gurmukhi is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-mac-croatian is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-iscii-t is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-iscii-or is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-iscii-ka is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-iscii-ma is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-iscii-pa is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-iscii-gu is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT] + + [x-iscii-de is not supported by the Encoding Standard] + expected: [PASS, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/fetch/api/abort/general.any.js.ini b/third_party/blink/web_tests/external/wpt/fetch/api/abort/general.any.js.ini index 45c16bd..446c042 100644 --- a/third_party/blink/web_tests/external/wpt/fetch/api/abort/general.any.js.ini +++ b/third_party/blink/web_tests/external/wpt/fetch/api/abort/general.any.js.ini
@@ -35,7 +35,7 @@ [Stream errors once aborted, after reading. Underlying connection closed.] expected: - if flag_specific == "disable-layout-ng": [PASS, FAIL] + if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [PASS, FAIL] [general.any.worker.html]
diff --git a/third_party/blink/web_tests/external/wpt/fetch/metadata/generated/element-iframe.sub.html.ini b/third_party/blink/web_tests/external/wpt/fetch/metadata/generated/element-iframe.sub.html.ini new file mode 100644 index 0000000..96b1dbd1f --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/fetch/metadata/generated/element-iframe.sub.html.ini
@@ -0,0 +1,3 @@ +[element-iframe.sub.html] + expected: + if os == "win": [OK, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/fetch/metadata/generated/window-history.https.sub.html.ini b/third_party/blink/web_tests/external/wpt/fetch/metadata/generated/window-history.https.sub.html.ini index f5c7bcb5..157b4da 100644 --- a/third_party/blink/web_tests/external/wpt/fetch/metadata/generated/window-history.https.sub.html.ini +++ b/third_party/blink/web_tests/external/wpt/fetch/metadata/generated/window-history.https.sub.html.ini
@@ -1,3 +1,3 @@ [window-history.https.sub.html] expected: - if (flag_specific == "") and (os == "win"): [OK, TIMEOUT] + if (os == "linux") and (flag_specific == "") and (product == "content_shell"): [OK, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/fetch/private-network-access/iframe.tentative.https.window.js.ini b/third_party/blink/web_tests/external/wpt/fetch/private-network-access/iframe.tentative.https.window.js.ini index 2c364a8d..fbffedf 100644 --- a/third_party/blink/web_tests/external/wpt/fetch/private-network-access/iframe.tentative.https.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/fetch/private-network-access/iframe.tentative.https.window.js.ini
@@ -1,7 +1,6 @@ [iframe.tentative.https.window.html] expected: - if flag_specific == "disable-site-isolation-trials": [OK, TIMEOUT] - if flag_specific == "disable-layout-ng": [OK, TIMEOUT] + if (flag_specific == "") and (product == "content_shell"): [OK, TIMEOUT] [private to local: success.] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/fetch/private-network-access/service-worker-background-fetch.https.window.js.ini b/third_party/blink/web_tests/external/wpt/fetch/private-network-access/service-worker-background-fetch.https.window.js.ini index d2b92041..4ee70f0 100644 --- a/third_party/blink/web_tests/external/wpt/fetch/private-network-access/service-worker-background-fetch.https.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/fetch/private-network-access/service-worker-background-fetch.https.window.js.ini
@@ -1,10 +1,12 @@ [service-worker-background-fetch.https.window.html] [local to local: success.] expected: + if (product == "content_shell") and (flag_specific == "") and (os == "linux"): [PASS, FAIL] if product == "chrome": FAIL [private to local: success.] expected: + if (product == "content_shell") and (flag_specific == "") and (os == "linux"): [PASS, FAIL] if product == "chrome": FAIL [private to private: success.] @@ -13,8 +15,8 @@ [public to local: success.] expected: - if (flag_specific == "") and (os == "linux") and (product == "chrome"): FAIL - if flag_specific == "disable-site-isolation-trials": FAIL + if (product == "content_shell") and (flag_specific == "") and (os == "linux"): [PASS, FAIL] + if product == "chrome": FAIL [public to private: success.] expected:
diff --git a/third_party/blink/web_tests/external/wpt/fetch/private-network-access/service-worker-fetch.https.window.js.ini b/third_party/blink/web_tests/external/wpt/fetch/private-network-access/service-worker-fetch.https.window.js.ini index 21e60215..3ba1c99 100644 --- a/third_party/blink/web_tests/external/wpt/fetch/private-network-access/service-worker-fetch.https.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/fetch/private-network-access/service-worker-fetch.https.window.js.ini
@@ -1,3 +1,3 @@ [service-worker-fetch.https.window.html] expected: - if (product == "content_shell") and (flag_specific == "") and (os == "linux"): [OK, TIMEOUT] + if flag_specific == "disable-layout-ng": [OK, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/focus/focus-already-focused-iframe-same-site.html.ini b/third_party/blink/web_tests/external/wpt/focus/focus-already-focused-iframe-same-site.html.ini index c8cb0f97..4f0bb0c 100644 --- a/third_party/blink/web_tests/external/wpt/focus/focus-already-focused-iframe-same-site.html.ini +++ b/third_party/blink/web_tests/external/wpt/focus/focus-already-focused-iframe-same-site.html.ini
@@ -1,4 +1,2 @@ [focus-already-focused-iframe-same-site.html] - expected: - if flag_specific == "disable-site-isolation-trials": CRASH - TIMEOUT + expected: TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/focus/focus-restoration-in-different-site-iframes.html.ini b/third_party/blink/web_tests/external/wpt/focus/focus-restoration-in-different-site-iframes.html.ini index ad6f999..928c1bad 100644 --- a/third_party/blink/web_tests/external/wpt/focus/focus-restoration-in-different-site-iframes.html.ini +++ b/third_party/blink/web_tests/external/wpt/focus/focus-restoration-in-different-site-iframes.html.ini
@@ -1,5 +1,3 @@ [focus-restoration-in-different-site-iframes.html] - expected: - if product == "chrome": ERROR [Check result] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/focus/iframe-focus-with-different-site-intermediate-frame.html.ini b/third_party/blink/web_tests/external/wpt/focus/iframe-focus-with-different-site-intermediate-frame.html.ini index a4e9ffe..3dbc2c45 100644 --- a/third_party/blink/web_tests/external/wpt/focus/iframe-focus-with-different-site-intermediate-frame.html.ini +++ b/third_party/blink/web_tests/external/wpt/focus/iframe-focus-with-different-site-intermediate-frame.html.ini
@@ -1,3 +1,5 @@ [iframe-focus-with-different-site-intermediate-frame.html] + expected: + if flag_specific == "disable-site-isolation-trials": CRASH [Check result] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/focus/iframe-focuses-parent-different-site.html.ini b/third_party/blink/web_tests/external/wpt/focus/iframe-focuses-parent-different-site.html.ini deleted file mode 100644 index 78cd2ff..0000000 --- a/third_party/blink/web_tests/external/wpt/focus/iframe-focuses-parent-different-site.html.ini +++ /dev/null
@@ -1,3 +0,0 @@ -[iframe-focuses-parent-different-site.html] - expected: - if flag_specific == "disable-site-isolation-trials": [OK, CRASH]
diff --git a/third_party/blink/web_tests/external/wpt/fs/FileSystemFileHandle-create-sync-access-handle.https.tentative.window.js.ini b/third_party/blink/web_tests/external/wpt/fs/FileSystemFileHandle-create-sync-access-handle.https.tentative.window.js.ini index 3982055..e8803eb 100644 --- a/third_party/blink/web_tests/external/wpt/fs/FileSystemFileHandle-create-sync-access-handle.https.tentative.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/fs/FileSystemFileHandle-create-sync-access-handle.https.tentative.window.js.ini
@@ -1,4 +1,4 @@ [FileSystemFileHandle-create-sync-access-handle.https.tentative.window.html] [Attempt to create a sync access handle.] expected: - if flag_specific == "disable-layout-ng": [PASS, FAIL] + if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/hr-time/clamped-time-origin-isolated.https.html.ini b/third_party/blink/web_tests/external/wpt/hr-time/clamped-time-origin-isolated.https.html.ini index 32cc95b..eb78520 100644 --- a/third_party/blink/web_tests/external/wpt/hr-time/clamped-time-origin-isolated.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/hr-time/clamped-time-origin-isolated.https.html.ini
@@ -1,3 +1,3 @@ [clamped-time-origin-isolated.https.html] expected: - if (product == "content_shell") and (os == "win"): [OK, TIMEOUT] + if (os == "linux") and (flag_specific == "") and (product == "content_shell"): [OK, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/html/anonymous-iframe/embedding.tentative.https.window.js.ini b/third_party/blink/web_tests/external/wpt/html/anonymous-iframe/embedding.tentative.https.window.js.ini index 6144e3b..654defca 100644 --- a/third_party/blink/web_tests/external/wpt/html/anonymous-iframe/embedding.tentative.https.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/html/anonymous-iframe/embedding.tentative.https.window.js.ini
@@ -18,7 +18,7 @@ [embedding.tentative.https.window.html?11-11] expected: - if product == "chrome": [OK, ERROR] + if product == "chrome": ERROR [embedding.tentative.https.window.html?5-5] @@ -34,10 +34,10 @@ [embedding.tentative.https.window.html?2-2] [embedding.tentative.https.window.html?12-12] + expected: + if product == "chrome": ERROR [embedding.tentative.https.window.html?4-4] - expected: - if product == "chrome": [ERROR, OK] [embedding.tentative.https.window.html?8-8]
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/back-forward-cache/eligibility/broadcast-channel.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/back-forward-cache/eligibility/broadcast-channel.html.ini index e423a5b6..7d0aa084 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/back-forward-cache/eligibility/broadcast-channel.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/back-forward-cache/eligibility/broadcast-channel.html.ini
@@ -4,5 +4,4 @@ [Eligibility (BroadcastChannel closed in the pagehide event)] expected: - if (product == "content_shell") and (os == "win"): [PASS, PRECONDITION_FAILED] if product == "chrome": PRECONDITION_FAILED
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/back-forward-cache/focus.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/back-forward-cache/focus.html.ini index 1b6bf88..8bb63c5 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/back-forward-cache/focus.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/back-forward-cache/focus.html.ini
@@ -1,6 +1,5 @@ [focus.html] [Focus should be kept when page gets into and out of BFCache] expected: - if (product == "content_shell") and (os == "win"): [FAIL, PRECONDITION_FAILED] if product == "chrome": PRECONDITION_FAILED FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/history-traversal/browsing_context_name.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/history-traversal/browsing_context_name.html.ini index 5e7f0874..6bee75b 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/history-traversal/browsing_context_name.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/history-traversal/browsing_context_name.html.ini
@@ -1,5 +1,3 @@ [browsing_context_name.html] - expected: - if product == "chrome": ERROR [Retaining window.name on history traversal] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/navigating-across-documents/cross-origin-top-navigation-without-user-activation.window.js.ini b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/navigating-across-documents/cross-origin-top-navigation-without-user-activation.window.js.ini new file mode 100644 index 0000000..1041981 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/navigating-across-documents/cross-origin-top-navigation-without-user-activation.window.js.ini
@@ -0,0 +1,3 @@ +[cross-origin-top-navigation-without-user-activation.window.html] + expected: + if product == "chrome": [OK, ERROR]
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-traversal-same-document-traversal.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-traversal-same-document-traversal.html.ini index c50c6e9..1a88cf9 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-traversal-same-document-traversal.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/cross-document-traversal-same-document-traversal.html.ini
@@ -1,4 +1,4 @@ [cross-document-traversal-same-document-traversal.html] - [traversals in the same (forward) direction: coalesced] + [traversals in the same (back) direction: coalesced] expected: - if flag_specific == "disable-layout-ng": [PASS, FAIL] + if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-traversal-cross-document-traversal.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-traversal-cross-document-traversal.html.ini index dfb8578..5a5b599 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-traversal-cross-document-traversal.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/same-document-traversal-cross-document-traversal.html.ini
@@ -1,7 +1,6 @@ [same-document-traversal-cross-document-traversal.html] expected: - if flag_specific == "disable-layout-ng": [OK, TIMEOUT] - if flag_specific == "disable-site-isolation-trials": [OK, TIMEOUT] + if (flag_specific == "") and (product == "content_shell"): [OK, TIMEOUT] [traversals in the same (back) direction: queued up] expected: [PASS, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/unloading-documents/001.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/unloading-documents/001.html.ini index c3ca624..67e0c3a1 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/unloading-documents/001.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/browsing-the-web/unloading-documents/001.html.ini
@@ -1,3 +1,5 @@ [001.html] + expected: + if product == "chrome": [OK, ERROR] [document.open in unload] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/history/the-history-interface/combination_history_006.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/history/the-history-interface/combination_history_006.html.ini new file mode 100644 index 0000000..a339e37 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/history/the-history-interface/combination_history_006.html.ini
@@ -0,0 +1,3 @@ +[combination_history_006.html] + expected: + if os == "win": [OK, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/history/the-history-interface/traverse_the_history_write_onload_2.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/history/the-history-interface/traverse_the_history_write_onload_2.html.ini index 3b3b8d4..c3363eed 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/history/the-history-interface/traverse_the_history_write_onload_2.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/history/the-history-interface/traverse_the_history_write_onload_2.html.ini
@@ -1,2 +1,3 @@ [traverse_the_history_write_onload_2.html] - expected: [OK, ERROR] + expected: + if product == "chrome": ERROR
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html.ini index 6321850..6bbc69c2 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html.ini
@@ -4,6 +4,6 @@ [Set data URL frame location.protocol to data] expected: - if (flag_specific == "") and (os == "win"): [FAIL, PASS] + if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [FAIL, PASS] if flag_specific == "disable-layout-ng": PASS FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects-function-name.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects-function-name.html.ini index ab20f7d..f90fa4a 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects-function-name.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects-function-name.html.ini
@@ -1,6 +1,6 @@ [cross-origin-objects-function-name.html] expected: - if flag_specific == "disable-site-isolation-trials": [OK, CRASH] + if flag_specific == "disable-site-isolation-trials": CRASH [Cross-origin Window methods have correct 'name'] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/1-iframe/parent-no-child-yes-subdomain.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/1-iframe/parent-no-child-yes-subdomain.sub.https.html.ini deleted file mode 100644 index 25b59d5..0000000 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/1-iframe/parent-no-child-yes-subdomain.sub.https.html.ini +++ /dev/null
@@ -1,8 +0,0 @@ -[parent-no-child-yes-subdomain.sub.https.html] - [setting document.domain must not give sync access] - expected: - if flag_specific == "disable-site-isolation-trials": [PASS, FAIL] - - [child: originAgentCluster must equal true] - expected: - if flag_specific == "disable-site-isolation-trials": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/1-iframe/parent-yes-child-no-port.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/1-iframe/parent-yes-child-no-port.sub.https.html.ini index 5383b4d..31ea3f0 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/1-iframe/parent-yes-child-no-port.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/1-iframe/parent-yes-child-no-port.sub.https.html.ini
@@ -1,10 +1,10 @@ [parent-yes-child-no-port.sub.https.html] [setting document.domain must not give sync access] expected: - if (flag_specific == "") and (product == "chrome"): FAIL - if flag_specific == "disable-site-isolation-trials": FAIL + if (product == "content_shell") and (os == "win"): [PASS, FAIL] + if product == "chrome": FAIL [parent: originAgentCluster must equal true] expected: - if (flag_specific == "") and (product == "chrome"): FAIL - if flag_specific == "disable-site-isolation-trials": FAIL + if (product == "content_shell") and (os == "win"): [PASS, FAIL] + if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/1-iframe/parent-yes-child-no-subdomain.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/1-iframe/parent-yes-child-no-subdomain.sub.https.html.ini index 9759a28..454879f5 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/1-iframe/parent-yes-child-no-subdomain.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/1-iframe/parent-yes-child-no-subdomain.sub.https.html.ini
@@ -1,11 +1,8 @@ [parent-yes-child-no-subdomain.sub.https.html] [setting document.domain must not give sync access] expected: - if (flag_specific == "") and (product == "chrome"): FAIL - if flag_specific == "disable-site-isolation-trials": FAIL + if product == "chrome": FAIL [parent: originAgentCluster must equal true] expected: if (flag_specific == "") and (product == "chrome"): FAIL - if flag_specific == "disable-layout-ng": FAIL - if flag_specific == "disable-site-isolation-trials": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/1-iframe/parent-yes-child-yes-port.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/1-iframe/parent-yes-child-yes-port.sub.https.html.ini index 5f428d85c..1fe7649 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/1-iframe/parent-yes-child-yes-port.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/1-iframe/parent-yes-child-yes-port.sub.https.html.ini
@@ -1,5 +1,4 @@ [parent-yes-child-yes-port.sub.https.html] [parent: originAgentCluster must equal true] expected: - if (product == "content_shell") and (flag_specific == "disable-site-isolation-trials"): [PASS, FAIL] if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/1-iframe/parent-yes-child-yes-same.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/1-iframe/parent-yes-child-yes-same.sub.https.html.ini index 2b7fa4f..21a2266 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/1-iframe/parent-yes-child-yes-same.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/1-iframe/parent-yes-child-yes-same.sub.https.html.ini
@@ -1,10 +1,10 @@ [parent-yes-child-yes-same.sub.https.html] [parent: originAgentCluster must equal true] expected: - if (product == "content_shell") and (flag_specific == "disable-site-isolation-trials"): [PASS, FAIL] - if product == "chrome": FAIL + if (flag_specific == "") and (product == "chrome"): FAIL + if flag_specific == "disable-site-isolation-trials": FAIL [child: originAgentCluster must equal true] expected: - if (product == "content_shell") and (flag_specific == "disable-site-isolation-trials"): [PASS, FAIL] - if product == "chrome": FAIL + if (flag_specific == "") and (product == "chrome"): FAIL + if flag_specific == "disable-site-isolation-trials": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/1-iframe/parent-yes-child-yes-subdomain.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/1-iframe/parent-yes-child-yes-subdomain.sub.https.html.ini index 3f57474..960ac9a0 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/1-iframe/parent-yes-child-yes-subdomain.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/1-iframe/parent-yes-child-yes-subdomain.sub.https.html.ini
@@ -1,5 +1,13 @@ [parent-yes-child-yes-subdomain.sub.https.html] [parent: originAgentCluster must equal true] expected: - if (product == "content_shell") and (flag_specific == "disable-site-isolation-trials"): [PASS, FAIL] - if product == "chrome": FAIL + if (flag_specific == "") and (product == "chrome"): FAIL + if flag_specific == "disable-site-isolation-trials": [PASS, FAIL] + + [child: originAgentCluster must equal true] + expected: + if flag_specific == "disable-site-isolation-trials": [PASS, FAIL] + + [setting document.domain must not give sync access] + expected: + if flag_specific == "disable-site-isolation-trials": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-no-child1-no-subdomain-child2-yes-subdomain.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-no-child1-no-subdomain-child2-yes-subdomain.sub.https.html.ini index bd99113..0b11108e 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-no-child1-no-subdomain-child2-yes-subdomain.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-no-child1-no-subdomain-child2-yes-subdomain.sub.https.html.ini
@@ -13,8 +13,8 @@ [child2: originAgentCluster must equal false] expected: - if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [PASS, FAIL] + if (flag_specific == "") and (os == "linux") and (product == "content_shell"): FAIL [child1: originAgentCluster must equal false] expected: - if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [PASS, FAIL] + if (flag_specific == "") and (os == "linux") and (product == "content_shell"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-no-child1-no-subdomain-child2-yes-subdomainport.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-no-child1-no-subdomain-child2-yes-subdomainport.sub.https.html.ini index 62eb7b1..183bd1b 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-no-child1-no-subdomain-child2-yes-subdomainport.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-no-child1-no-subdomain-child2-yes-subdomainport.sub.https.html.ini
@@ -1,5 +1,10 @@ [parent-no-child1-no-subdomain-child2-yes-subdomainport.sub.https.html] [Parent to child1: setting document.domain must give sync access] expected: - if (flag_specific == "") and (product == "content_shell"): FAIL - if flag_specific == "disable-layout-ng": FAIL + if (flag_specific == "") and (product == "chrome"): PASS + if flag_specific == "disable-site-isolation-trials": PASS + FAIL + + [parent: originAgentCluster must equal false] + expected: + if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-no-child1-no-subdomain1-child2-yes-subdomain2.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-no-child1-no-subdomain1-child2-yes-subdomain2.sub.https.html.ini index 8c7947f8..ff06302c 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-no-child1-no-subdomain1-child2-yes-subdomain2.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-no-child1-no-subdomain1-child2-yes-subdomain2.sub.https.html.ini
@@ -1,22 +1,9 @@ [parent-no-child1-no-subdomain1-child2-yes-subdomain2.sub.https.html] [Parent to child1: setting document.domain must give sync access] expected: - if (product == "content_shell") and (flag_specific == "disable-site-isolation-trials"): [PASS, FAIL] - if product == "chrome": PASS + if (flag_specific == "") and (product == "chrome"): PASS FAIL - [child1 to child2: setting document.domain must not give sync access] - expected: - if flag_specific == "disable-site-isolation-trials": [PASS, FAIL] - [parent: originAgentCluster must equal false] expected: - if flag_specific == "disable-site-isolation-trials": [PASS, FAIL] - - [child2: originAgentCluster must equal true] - expected: - if flag_specific == "disable-site-isolation-trials": [PASS, FAIL] - - [child2 to child1: setting document.domain must not give sync access] - expected: - if flag_specific == "disable-site-isolation-trials": [PASS, FAIL] + if flag_specific == "disable-site-isolation-trials": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-no-child1-yes-subdomain-child2-no-port.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-no-child1-yes-subdomain-child2-no-port.sub.https.html.ini index 25a89075..0ea4a6a 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-no-child1-yes-subdomain-child2-no-port.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-no-child1-yes-subdomain-child2-no-port.sub.https.html.ini
@@ -13,6 +13,10 @@ expected: if flag_specific == "disable-site-isolation-trials": FAIL - [Parent to child1: setting document.domain must not give sync access] + [Parent to child2: setting document.domain must give sync access] + expected: + if flag_specific == "disable-site-isolation-trials": FAIL + + [parent: originAgentCluster must equal false] expected: if flag_specific == "disable-site-isolation-trials": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-no-child1-yes-subdomain-child2-no-subdomain.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-no-child1-yes-subdomain-child2-no-subdomain.sub.https.html.ini deleted file mode 100644 index 2ae4867..0000000 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-no-child1-yes-subdomain-child2-no-subdomain.sub.https.html.ini +++ /dev/null
@@ -1,16 +0,0 @@ -[parent-no-child1-yes-subdomain-child2-no-subdomain.sub.https.html] - [Parent to child1: setting document.domain must not give sync access] - expected: - if flag_specific == "disable-site-isolation-trials": FAIL - - [Parent to child2: setting document.domain must not give sync access] - expected: - if flag_specific == "disable-site-isolation-trials": FAIL - - [child1: originAgentCluster must equal true] - expected: - if flag_specific == "disable-site-isolation-trials": FAIL - - [child2: originAgentCluster must equal true] - expected: - if flag_specific == "disable-site-isolation-trials": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-no-subdomain-child2-no-subdomain.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-no-subdomain-child2-no-subdomain.sub.https.html.ini index cab93f6..c6fbd89 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-no-subdomain-child2-no-subdomain.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-no-subdomain-child2-no-subdomain.sub.https.html.ini
@@ -1,18 +1,15 @@ [parent-yes-child1-no-subdomain-child2-no-subdomain.sub.https.html] [Parent to child1: setting document.domain must not give sync access] expected: - if (flag_specific == "") and (product == "chrome"): FAIL - if flag_specific == "disable-site-isolation-trials": FAIL + if product == "chrome": FAIL [Parent to child2: setting document.domain must not give sync access] expected: - if (flag_specific == "") and (product == "chrome"): FAIL - if flag_specific == "disable-site-isolation-trials": FAIL + if product == "chrome": FAIL [parent: originAgentCluster must equal true] expected: - if (flag_specific == "") and (product == "chrome"): FAIL - if flag_specific == "disable-site-isolation-trials": FAIL + if product == "chrome": FAIL [child2: originAgentCluster must equal false] expected:
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-no-subdomain-child2-no-subdomain2.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-no-subdomain-child2-no-subdomain2.sub.https.html.ini index 404db30..ab0d901 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-no-subdomain-child2-no-subdomain2.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-no-subdomain-child2-no-subdomain2.sub.https.html.ini
@@ -1,18 +1,18 @@ [parent-yes-child1-no-subdomain-child2-no-subdomain2.sub.https.html] [Parent to child1: setting document.domain must not give sync access] expected: - if (product == "content_shell") and (flag_specific == "disable-site-isolation-trials"): [PASS, FAIL] - if product == "chrome": FAIL + if (flag_specific == "") and (product == "chrome"): [PASS, FAIL] + if flag_specific == "disable-site-isolation-trials": [PASS, FAIL] [Parent to child2: setting document.domain must not give sync access] expected: - if (product == "content_shell") and (flag_specific == "disable-site-isolation-trials"): [PASS, FAIL] - if product == "chrome": FAIL + if (flag_specific == "") and (product == "chrome"): [PASS, FAIL] + if flag_specific == "disable-site-isolation-trials": [PASS, FAIL] [parent: originAgentCluster must equal true] expected: - if (product == "content_shell") and (flag_specific == "disable-site-isolation-trials"): [PASS, FAIL] - if product == "chrome": FAIL + if (flag_specific == "") and (product == "chrome"): [PASS, FAIL] + if flag_specific == "disable-site-isolation-trials": [PASS, FAIL] [child2 to child1: setting document.domain must give sync access] expected:
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-no-subdomain-child2-yes-subdomain.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-no-subdomain-child2-yes-subdomain.sub.https.html.ini index e77ac91..55c95079 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-no-subdomain-child2-yes-subdomain.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-no-subdomain-child2-yes-subdomain.sub.https.html.ini
@@ -10,11 +10,3 @@ [parent: originAgentCluster must equal true] expected: if product == "chrome": FAIL - - [child2: originAgentCluster must equal false] - expected: - if flag_specific == "disable-site-isolation-trials": [PASS, FAIL] - - [child1: originAgentCluster must equal false] - expected: - if flag_specific == "disable-site-isolation-trials": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-no-subdomain-child2-yes-subdomain2.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-no-subdomain-child2-yes-subdomain2.sub.https.html.ini index 19a2ab11..ca5ad44 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-no-subdomain-child2-yes-subdomain2.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-no-subdomain-child2-yes-subdomain2.sub.https.html.ini
@@ -1,8 +1,8 @@ [parent-yes-child1-no-subdomain-child2-yes-subdomain2.sub.https.html] [parent: originAgentCluster must equal true] expected: - if flag_specific == "disable-site-isolation-trials": FAIL + if product == "chrome": [PASS, FAIL] [Parent to child1: setting document.domain must not give sync access] expected: - if flag_specific == "disable-site-isolation-trials": FAIL + if product == "chrome": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-no-subdomain-child2-yes-subdomainport.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-no-subdomain-child2-yes-subdomainport.sub.https.html.ini index ce25982..7ba4e73 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-no-subdomain-child2-yes-subdomainport.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-no-subdomain-child2-yes-subdomainport.sub.https.html.ini
@@ -6,3 +6,7 @@ [parent: originAgentCluster must equal true] expected: if product == "chrome": FAIL + + [child1: originAgentCluster must equal false] + expected: + if flag_specific == "disable-site-isolation-trials": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-yes-subdomain-child2-no-port.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-yes-subdomain-child2-no-port.sub.https.html.ini index 75721a1..408f0aa 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-yes-subdomain-child2-no-port.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-yes-subdomain-child2-no-port.sub.https.html.ini
@@ -1,10 +1,12 @@ [parent-yes-child1-yes-subdomain-child2-no-port.sub.https.html] [Parent to child2: setting document.domain must not give sync access] expected: + if (product == "content_shell") and (flag_specific == "disable-site-isolation-trials"): [PASS, FAIL] if product == "chrome": FAIL [parent: originAgentCluster must equal true] expected: + if (product == "content_shell") and (flag_specific == "disable-site-isolation-trials"): [PASS, FAIL] if product == "chrome": FAIL [child2 to child1: setting document.domain must not give sync access] @@ -18,3 +20,7 @@ [child1: originAgentCluster must equal true] expected: if flag_specific == "disable-site-isolation-trials": [PASS, FAIL] + + [Parent to child1: setting document.domain must not give sync access] + expected: + if flag_specific == "disable-site-isolation-trials": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-yes-subdomain-child2-no-subdomain.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-yes-subdomain-child2-no-subdomain.sub.https.html.ini index 6e06935..bb8a3cbb 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-yes-subdomain-child2-no-subdomain.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-yes-subdomain-child2-no-subdomain.sub.https.html.ini
@@ -1,23 +1,12 @@ [parent-yes-child1-yes-subdomain-child2-no-subdomain.sub.https.html] [parent: originAgentCluster must equal true] expected: - if (flag_specific == "") and (product == "chrome"): FAIL - if flag_specific == "disable-site-isolation-trials": FAIL + if product == "chrome": FAIL [child1: originAgentCluster must equal true] expected: - if (flag_specific == "") and (os == "win"): FAIL - if flag_specific == "disable-site-isolation-trials": FAIL + if os == "win": FAIL [child2: originAgentCluster must equal true] expected: - if (flag_specific == "") and (os == "win"): FAIL - if flag_specific == "disable-site-isolation-trials": FAIL - - [Parent to child1: setting document.domain must not give sync access] - expected: - if flag_specific == "disable-site-isolation-trials": FAIL - - [Parent to child2: setting document.domain must not give sync access] - expected: - if flag_specific == "disable-site-isolation-trials": FAIL + if os == "win": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-yes-subdomain-child2-yes-subdomain.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-yes-subdomain-child2-yes-subdomain.sub.https.html.ini index c0dbbaa..d8355a65 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-yes-subdomain-child2-yes-subdomain.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-yes-subdomain-child2-yes-subdomain.sub.https.html.ini
@@ -1,12 +1,12 @@ [parent-yes-child1-yes-subdomain-child2-yes-subdomain.sub.https.html] [parent: originAgentCluster must equal true] expected: - if (flag_specific == "") and (product == "chrome"): FAIL + if product == "chrome": FAIL [child1: originAgentCluster must equal true] expected: - if flag_specific == "disable-site-isolation-trials": FAIL + if flag_specific == "disable-site-isolation-trials": [PASS, FAIL] [child2: originAgentCluster must equal true] expected: - if flag_specific == "disable-site-isolation-trials": FAIL + if flag_specific == "disable-site-isolation-trials": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-yes-subdomain-child2-yes-subdomainport.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-yes-subdomain-child2-yes-subdomainport.sub.https.html.ini index 656603b..9fafc5f9 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-yes-subdomain-child2-yes-subdomainport.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/2-iframes/parent-yes-child1-yes-subdomain-child2-yes-subdomainport.sub.https.html.ini
@@ -1,9 +1,14 @@ [parent-yes-child1-yes-subdomain-child2-yes-subdomainport.sub.https.html] [parent: originAgentCluster must equal true] expected: - if (flag_specific == "") and (product == "chrome"): FAIL - if flag_specific == "disable-site-isolation-trials": FAIL + if (product == "content_shell") and (flag_specific == "disable-site-isolation-trials"): [PASS, FAIL] + if product == "chrome": FAIL [child1: originAgentCluster must equal true] expected: + if (os == "linux") and (flag_specific == "disable-site-isolation-trials"): [PASS, FAIL] if os == "win": FAIL + + [Parent to child1: setting document.domain must not give sync access] + expected: + if flag_specific == "disable-site-isolation-trials": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/document-domain.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/document-domain.sub.https.html.ini index 2d8b59bf..9d2572e 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/document-domain.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/document-domain.sub.https.html.ini
@@ -1,5 +1,6 @@ [document-domain.sub.https.html] [Setting document.domain must not change same-originness] expected: - if (flag_specific == "") and (product == "content_shell") and (os == "linux"): [PASS, FAIL] - if (flag_specific == "") and (product == "chrome"): FAIL + if (flag_specific == "") and (os == "linux") and (product == "chrome"): FAIL + if (flag_specific == "") and (os == "linux") and (product == "content_shell"): FAIL + if flag_specific == "disable-site-isolation-trials": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/operators/operator-dictionary-largeop-003.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/getter-special-cases/csp-sandbox-no.https.html.ini similarity index 67% copy from third_party/blink/web_tests/external/wpt/mathml/presentation-markup/operators/operator-dictionary-largeop-003.html.ini copy to third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/getter-special-cases/csp-sandbox-no.https.html.ini index 9d853344..0c3339d5 100644 --- a/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/operators/operator-dictionary-largeop-003.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/getter-special-cases/csp-sandbox-no.https.html.ini
@@ -1,3 +1,3 @@ -[operator-dictionary-largeop-003.html] +[csp-sandbox-no.https.html] expected: if flag_specific == "disable-site-isolation-trials": [OK, CRASH]
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/getter-special-cases/sandboxed-same-origin-iframe-no.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/getter-special-cases/sandboxed-same-origin-iframe-no.https.html.ini index 6739f44..e890d00d 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/getter-special-cases/sandboxed-same-origin-iframe-no.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/getter-special-cases/sandboxed-same-origin-iframe-no.https.html.ini
@@ -1,4 +1,6 @@ [sandboxed-same-origin-iframe-no.https.html] [originAgentCluster must equal false] expected: - if (flag_specific == "") and (product == "content_shell"): FAIL + if (flag_specific == "") and (product == "chrome"): PASS + if flag_specific == "disable-site-isolation-trials": PASS + FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/getter-special-cases/sandboxed-same-origin-iframe-yes.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/getter-special-cases/sandboxed-same-origin-iframe-yes.https.html.ini index 14cb1e6c..7ab8126 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/getter-special-cases/sandboxed-same-origin-iframe-yes.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/getter-special-cases/sandboxed-same-origin-iframe-yes.https.html.ini
@@ -1,4 +1,6 @@ [sandboxed-same-origin-iframe-yes.https.html] [originAgentCluster must equal true] expected: - if product == "chrome": FAIL + if (flag_specific == "") and (product == "content_shell") and (os == "win"): [PASS, FAIL] + if (flag_specific == "") and (product == "chrome"): FAIL + if flag_specific == "disable-site-isolation-trials": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/going-back.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/going-back.sub.https.html.ini index a320db9..9f1f582 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/going-back.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/going-back.sub.https.html.ini
@@ -1,20 +1,16 @@ [going-back.sub.https.html] [Before navigation: parent to child1: setting document.domain must not give sync access] expected: - if (flag_specific == "") and (product == "chrome"): FAIL - if flag_specific == "disable-site-isolation-trials": FAIL + if product == "chrome": FAIL [After navigation: parent to child2: setting document.domain must not give sync access] expected: - if (flag_specific == "") and (product == "chrome"): FAIL - if flag_specific == "disable-site-isolation-trials": FAIL + if product == "chrome": FAIL [After back: parent to child1: setting document.domain must not give sync access] expected: - if (flag_specific == "") and (product == "chrome"): FAIL - if flag_specific == "disable-site-isolation-trials": FAIL + if product == "chrome": FAIL [After back: parent to child2: setting document.domain must not give sync access] expected: - if (flag_specific == "") and (product == "chrome"): FAIL - if flag_specific == "disable-site-isolation-trials": FAIL + if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-no-1-no-same-2-yes-port.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-no-1-no-same-2-yes-port.sub.https.html.ini index 980b537..8b077d1 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-no-1-no-same-2-yes-port.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-no-1-no-same-2-yes-port.sub.https.html.ini
@@ -1,12 +1,15 @@ [parent-no-1-no-same-2-yes-port.sub.https.html] [before parent: originAgentCluster must equal false] expected: - if (flag_specific == "") and (product == "content_shell"): FAIL + if (os == "linux") and (flag_specific == "disable-layout-ng"): [PASS, FAIL] + if os == "win": FAIL [before child: originAgentCluster must equal false] expected: - if (flag_specific == "") and (product == "content_shell"): FAIL + if (os == "linux") and (flag_specific == "disable-layout-ng"): [PASS, FAIL] + if os == "win": FAIL [after parent: originAgentCluster must equal false] expected: - if (flag_specific == "") and (product == "content_shell"): FAIL + if (os == "linux") and (flag_specific == "disable-layout-ng"): [PASS, FAIL] + if os == "win": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-no-1-no-same-2-yes-subdomain.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-no-1-no-same-2-yes-subdomain.sub.https.html.ini index f19ae35..0370372 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-no-1-no-same-2-yes-subdomain.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-no-1-no-same-2-yes-subdomain.sub.https.html.ini
@@ -1,15 +1,16 @@ [parent-no-1-no-same-2-yes-subdomain.sub.https.html] [before parent: originAgentCluster must equal false] expected: - if (flag_specific == "") and (product == "chrome"): PASS - FAIL + if flag_specific == "disable-layout-ng": FAIL [before child: originAgentCluster must equal false] expected: - if (flag_specific == "") and (product == "chrome"): PASS - FAIL + if flag_specific == "disable-layout-ng": FAIL [after parent: originAgentCluster must equal false] expected: - if (flag_specific == "") and (product == "chrome"): PASS - FAIL + if flag_specific == "disable-layout-ng": FAIL + + [after child: originAgentCluster must equal true] + expected: + if flag_specific == "disable-layout-ng": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-no-1-no-subdomain-2-yes-subdomain.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-no-1-no-subdomain-2-yes-subdomain.sub.https.html.ini index a4e2a704..112b3cd4 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-no-1-no-subdomain-2-yes-subdomain.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-no-1-no-subdomain-2-yes-subdomain.sub.https.html.ini
@@ -1,30 +1,32 @@ [parent-no-1-no-subdomain-2-yes-subdomain.sub.https.html] [Before: parent to child: setting document.domain must give sync access] expected: - if (product == "content_shell") and (flag_specific == "disable-site-isolation-trials"): [PASS, FAIL] - if product == "chrome": PASS + if (flag_specific == "") and (product == "chrome"): PASS + if flag_specific == "disable-site-isolation-trials": [PASS, FAIL] FAIL [After: parent to child: setting document.domain must give sync access] expected: - if (product == "content_shell") and (flag_specific == "disable-site-isolation-trials"): [PASS, FAIL] - if product == "chrome": PASS + if (flag_specific == "") and (product == "chrome"): PASS + if flag_specific == "disable-site-isolation-trials": [PASS, FAIL] FAIL [after parent: originAgentCluster must equal false] expected: - if (os == "linux") and (flag_specific == "") and (product == "content_shell"): [PASS, FAIL] - if os == "win": FAIL + if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [PASS, FAIL] + if flag_specific == "disable-layout-ng": FAIL + if flag_specific == "disable-site-isolation-trials": [PASS, FAIL] [before parent: originAgentCluster must equal false] expected: - if (os == "linux") and (flag_specific == "") and (product == "content_shell"): [PASS, FAIL] - if os == "win": FAIL - - [before child: originAgentCluster must equal false] - expected: + if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [PASS, FAIL] + if flag_specific == "disable-layout-ng": FAIL if flag_specific == "disable-site-isolation-trials": [PASS, FAIL] [after child: originAgentCluster must equal false] expected: if flag_specific == "disable-site-isolation-trials": [PASS, FAIL] + + [before child: originAgentCluster must equal false] + expected: + if flag_specific == "disable-site-isolation-trials": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-no-1-no-subdomain-2-yes-subdomain2.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-no-1-no-subdomain-2-yes-subdomain2.sub.https.html.ini index ea522458..10a484b 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-no-1-no-subdomain-2-yes-subdomain2.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-no-1-no-subdomain-2-yes-subdomain2.sub.https.html.ini
@@ -1,13 +1,10 @@ [parent-no-1-no-subdomain-2-yes-subdomain2.sub.https.html] [Before: parent to child: setting document.domain must give sync access] expected: - if (flag_specific == "") and (product == "content_shell"): FAIL - if flag_specific == "disable-layout-ng": FAIL + if (flag_specific == "") and (product == "chrome"): PASS + if flag_specific == "disable-site-isolation-trials": PASS + FAIL - [After: parent to child: setting document.domain must not give sync access] + [before child: originAgentCluster must equal false] expected: - if flag_specific == "disable-site-isolation-trials": [PASS, FAIL] - - [after child: originAgentCluster must equal true] - expected: - if flag_specific == "disable-site-isolation-trials": [PASS, FAIL] + if os == "win": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-no-1-subdomain-yes-2-subdomain2-no.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-no-1-subdomain-yes-2-subdomain2-no.sub.https.html.ini index 632bbf12..b8180d0 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-no-1-subdomain-yes-2-subdomain2-no.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-no-1-subdomain-yes-2-subdomain2-no.sub.https.html.ini
@@ -7,14 +7,12 @@ [after parent: originAgentCluster must equal false] expected: - if (flag_specific == "") and (os == "win"): [PASS, FAIL] - if flag_specific == "disable-layout-ng": FAIL - - [before parent: originAgentCluster must equal false] - expected: - if (flag_specific == "") and (os == "win"): [PASS, FAIL] - if flag_specific == "disable-layout-ng": FAIL + if flag_specific == "disable-layout-ng": [PASS, FAIL] [before child: originAgentCluster must equal true] expected: - if os == "win": [PASS, FAIL] + if flag_specific == "disable-layout-ng": [PASS, FAIL] + + [before parent: originAgentCluster must equal false] + expected: + if flag_specific == "disable-layout-ng": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-no-1-yes-subdomain-2-no-subdomain.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-no-1-yes-subdomain-2-no-subdomain.sub.https.html.ini deleted file mode 100644 index b81877e..0000000 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-no-1-yes-subdomain-2-no-subdomain.sub.https.html.ini +++ /dev/null
@@ -1,24 +0,0 @@ -[parent-no-1-yes-subdomain-2-no-subdomain.sub.https.html] - [before parent: originAgentCluster must equal false] - expected: - if (os == "linux") and (flag_specific == "") and (product == "content_shell"): [PASS, FAIL] - if (os == "linux") and (flag_specific == "disable-site-isolation-trials"): [PASS, FAIL] - if (os == "linux") and (flag_specific == "disable-layout-ng"): FAIL - if os == "win": FAIL - - [before child: originAgentCluster must equal true] - expected: - if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [PASS, FAIL] - if flag_specific == "disable-layout-ng": FAIL - - [after parent: originAgentCluster must equal false] - expected: - if (os == "linux") and (flag_specific == "") and (product == "content_shell"): [PASS, FAIL] - if (os == "linux") and (flag_specific == "disable-layout-ng"): FAIL - if (os == "linux") and (flag_specific == "disable-site-isolation-trials"): [PASS, FAIL] - if os == "win": FAIL - - [after child: originAgentCluster must equal true] - expected: - if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [PASS, FAIL] - if flag_specific == "disable-layout-ng": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-yes-1-no-same-2-no-port.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-yes-1-no-same-2-no-port.sub.https.html.ini index b88a901..efbfed4 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-yes-1-no-same-2-no-port.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-yes-1-no-same-2-no-port.sub.https.html.ini
@@ -1,13 +1,13 @@ [parent-yes-1-no-same-2-no-port.sub.https.html] [before parent: originAgentCluster must equal true] expected: - if (product == "content_shell") and (flag_specific == "disable-layout-ng"): [PASS, FAIL] - if product == "chrome": FAIL + if (flag_specific == "") and (product == "content_shell"): PASS + FAIL [before child: originAgentCluster must equal true] expected: - if (product == "content_shell") and (flag_specific == "disable-layout-ng"): [PASS, FAIL] - if product == "chrome": FAIL + if (flag_specific == "") and (product == "content_shell"): PASS + FAIL [After: parent to child: setting document.domain must not give sync access] expected: @@ -15,9 +15,10 @@ [after parent: originAgentCluster must equal true] expected: - if (product == "content_shell") and (flag_specific == "disable-layout-ng"): [PASS, FAIL] - if product == "chrome": FAIL + if (flag_specific == "") and (product == "content_shell"): PASS + FAIL [after child: originAgentCluster must equal false] expected: - if flag_specific == "disable-layout-ng": [PASS, FAIL] + if flag_specific == "disable-site-isolation-trials": FAIL + if flag_specific == "disable-layout-ng": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-yes-1-no-same-2-no-subdomain.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-yes-1-no-same-2-no-subdomain.sub.https.html.ini index 27d56f5..c4f1fc2d 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-yes-1-no-same-2-no-subdomain.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-yes-1-no-same-2-no-subdomain.sub.https.html.ini
@@ -1,6 +1,24 @@ [parent-yes-1-no-same-2-no-subdomain.sub.https.html] [after child: originAgentCluster must equal false] expected: - if (flag_specific == "") and (product == "content_shell") and (os == "win"): [PASS, FAIL] - if (flag_specific == "") and (product == "content_shell") and (os == "linux"): FAIL - if flag_specific == "disable-site-isolation-trials": FAIL + if (flag_specific == "") and (os == "linux") and (product == "content_shell"): FAIL + if flag_specific == "disable-site-isolation-trials": [PASS, FAIL] + + [before child: originAgentCluster must equal true] + expected: + if (os == "linux") and (product == "chrome"): [PASS, FAIL] + if os == "win": FAIL + + [before parent: originAgentCluster must equal true] + expected: + if (os == "linux") and (product == "chrome"): [PASS, FAIL] + if os == "win": FAIL + + [after parent: originAgentCluster must equal true] + expected: + if (os == "linux") and (product == "chrome"): [PASS, FAIL] + if os == "win": FAIL + + [After: parent to child: setting document.domain must not give sync access] + expected: + if product == "chrome": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-no-openee-yes-port.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-no-openee-yes-port.sub.https.html.ini new file mode 100644 index 0000000..c74f36eb --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-no-openee-yes-port.sub.https.html.ini
@@ -0,0 +1,4 @@ +[opener-no-openee-yes-port.sub.https.html] + [opener: originAgentCluster must equal false] + expected: + if os == "win": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-no-openee-yes-same.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-no-openee-yes-same.sub.https.html.ini index 3383d84..ed1e963 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-no-openee-yes-same.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-no-openee-yes-same.sub.https.html.ini
@@ -1,10 +1,8 @@ [opener-no-openee-yes-same.sub.https.html] [opener: originAgentCluster must equal false] expected: - if (flag_specific == "") and (product == "content_shell"): [PASS, FAIL] - if flag_specific == "disable-site-isolation-trials": FAIL + if flag_specific == "disable-layout-ng": [PASS, FAIL] [openee: originAgentCluster must equal false] expected: - if (flag_specific == "") and (product == "content_shell"): [PASS, FAIL] - if flag_specific == "disable-site-isolation-trials": FAIL + if flag_specific == "disable-layout-ng": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-no-openee-yes-subdomain.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-no-openee-yes-subdomain.sub.https.html.ini index 876cac39..b05431d9 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-no-openee-yes-subdomain.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-no-openee-yes-subdomain.sub.https.html.ini
@@ -1,5 +1,8 @@ [opener-no-openee-yes-subdomain.sub.https.html] [opener: originAgentCluster must equal false] expected: - if flag_specific == "disable-site-isolation-trials": [PASS, FAIL] - if flag_specific == "disable-layout-ng": FAIL + if (flag_specific == "") and (os == "win"): [PASS, FAIL] + + [openee: originAgentCluster must equal true] + expected: + if os == "win": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-yes-openee-no-port.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-yes-openee-no-port.sub.https.html.ini index e9f5ea0b..734ce469 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-yes-openee-no-port.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-yes-openee-no-port.sub.https.html.ini
@@ -1,8 +1,12 @@ [opener-yes-openee-no-port.sub.https.html] [setting document.domain must not give sync access] expected: + if (flag_specific == "") and (os == "linux") and (product == "content_shell"): FAIL + if flag_specific == "disable-site-isolation-trials": [PASS, FAIL] if flag_specific == "disable-layout-ng": FAIL [opener: originAgentCluster must equal true] expected: + if (flag_specific == "") and (os == "linux") and (product == "content_shell"): FAIL + if flag_specific == "disable-site-isolation-trials": [PASS, FAIL] if flag_specific == "disable-layout-ng": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-yes-openee-no-same.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-yes-openee-no-same.sub.https.html.ini index e9d47544..053a0b7 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-yes-openee-no-same.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-yes-openee-no-same.sub.https.html.ini
@@ -1,8 +1,10 @@ [opener-yes-openee-no-same.sub.https.html] [opener: originAgentCluster must equal true] expected: - if product == "chrome": FAIL + if (flag_specific == "") and (product == "chrome"): FAIL + if flag_specific == "disable-site-isolation-trials": FAIL [openee: originAgentCluster must equal true] expected: - if product == "chrome": FAIL + if (flag_specific == "") and (product == "chrome"): FAIL + if flag_specific == "disable-site-isolation-trials": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-yes-openee-no-subdomain.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-yes-openee-no-subdomain.sub.https.html.ini index 83fcc1f..061e3f1 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-yes-openee-no-subdomain.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-yes-openee-no-subdomain.sub.https.html.ini
@@ -6,7 +6,3 @@ [opener: originAgentCluster must equal true] expected: if product == "chrome": FAIL - - [openee: originAgentCluster must equal false] - expected: - if flag_specific == "disable-site-isolation-trials": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-yes-openee-yes-same.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-yes-openee-yes-same.sub.https.html.ini index e665755..b6a9865 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-yes-openee-yes-same.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-yes-openee-yes-same.sub.https.html.ini
@@ -1,8 +1,10 @@ [opener-yes-openee-yes-same.sub.https.html] [opener: originAgentCluster must equal true] expected: - if product == "chrome": [PASS, FAIL] + if (product == "content_shell") and (flag_specific == "") and (os == "linux"): [PASS, FAIL] + if product == "chrome": FAIL [openee: originAgentCluster must equal true] expected: - if product == "chrome": [PASS, FAIL] + if (product == "content_shell") and (flag_specific == "") and (os == "linux"): [PASS, FAIL] + if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-yes-openee-yes-subdomain.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-yes-openee-yes-subdomain.sub.https.html.ini deleted file mode 100644 index 37cb728..0000000 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-yes-openee-yes-subdomain.sub.https.html.ini +++ /dev/null
@@ -1,8 +0,0 @@ -[opener-yes-openee-yes-subdomain.sub.https.html] - [openee: originAgentCluster must equal true] - expected: - if flag_specific == "disable-layout-ng": FAIL - - [opener: originAgentCluster must equal true] - expected: - if flag_specific == "disable-site-isolation-trials": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/removing-iframes.sub.https.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/removing-iframes.sub.https.html.ini index 3a11a3e..2a455225 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/removing-iframes.sub.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/origin/origin-keyed-agent-clusters/removing-iframes.sub.https.html.ini
@@ -1,23 +1,19 @@ [removing-iframes.sub.https.html] [parent: originAgentCluster must equal true] expected: - if (flag_specific == "") and (product == "chrome"): FAIL - if flag_specific == "disable-site-isolation-trials": FAIL + if product == "chrome": FAIL [Parent to child2: setting document.domain must not give sync access] expected: - if (flag_specific == "") and (product == "chrome"): FAIL - if flag_specific == "disable-site-isolation-trials": FAIL + if product == "chrome": FAIL [Before: setting document.domain must not give sync access] expected: - if (flag_specific == "") and (product == "chrome"): FAIL - if flag_specific == "disable-site-isolation-trials": FAIL + if product == "chrome": FAIL [Parent to child3: setting document.domain must not give sync access] expected: - if (flag_specific == "") and (product == "chrome"): FAIL - if flag_specific == "disable-site-isolation-trials": FAIL + if product == "chrome": FAIL [child2 to child3: setting document.domain must give sync access] expected:
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_4.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_4.html.ini index 96502bac..6c43d1e 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_4.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_4.html.ini
@@ -1,5 +1,3 @@ [discard_iframe_history_4.html] - expected: - if product == "chrome": ERROR [Removing iframe from document removes it from history] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/noopener-noreferrer-BarProp.window.js.ini b/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/noopener-noreferrer-BarProp.window.js.ini new file mode 100644 index 0000000..8e27e3b6 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/noopener-noreferrer-BarProp.window.js.ini
@@ -0,0 +1,3 @@ +[noopener-noreferrer-BarProp.window.html] + expected: + if product == "chrome": [OK, ERROR]
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/open-close/open-features-is-popup-condition.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/open-close/open-features-is-popup-condition.html.ini index 040bc7d..4761df5 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/open-close/open-features-is-popup-condition.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/open-close/open-features-is-popup-condition.html.ini
@@ -4,8 +4,6 @@ [open-features-is-popup-condition.html?single-1] expected: - if product == "chrome": ERROR + if product == "chrome": [TIMEOUT, ERROR] [open-features-is-popup-condition.html?single-2] - expected: - if product == "chrome": [TIMEOUT, OK]
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/open-close/open-features-non-integer-innerwidth.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/open-close/open-features-non-integer-innerwidth.html.ini new file mode 100644 index 0000000..2d2d132 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/open-close/open-features-non-integer-innerwidth.html.ini
@@ -0,0 +1,3 @@ +[open-features-non-integer-innerwidth.html] + expected: + if product == "chrome": [OK, ERROR]
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/window-open-noopener.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/window-open-noopener.html.ini new file mode 100644 index 0000000..302a2ca --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/window-open-noopener.html.ini
@@ -0,0 +1,9 @@ +[window-open-noopener.html?_self] + +[window-open-noopener.html?_parent] + +[window-open-noopener.html?indexed] + expected: + if product == "chrome": [OK, ERROR] + +[window-open-noopener.html?_top]
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/window-open-windowfeatures-values.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/window-open-windowfeatures-values.html.ini index c7f00b1..d9e0e4f 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/window-open-windowfeatures-values.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/window-open-windowfeatures-values.html.ini
@@ -1,3 +1,3 @@ [window-open-windowfeatures-values.html] expected: - if product == "chrome": ERROR + if product == "chrome": [ERROR, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/hr-time/clamped-time-origin.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/window-prototype-chain.html.ini similarity index 73% rename from third_party/blink/web_tests/external/wpt/hr-time/clamped-time-origin.html.ini rename to third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/window-prototype-chain.html.ini index 9082a0b2..f73af5a 100644 --- a/third_party/blink/web_tests/external/wpt/hr-time/clamped-time-origin.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/browsers/the-window-object/window-prototype-chain.html.ini
@@ -1,3 +1,3 @@ -[clamped-time-origin.html] +[window-prototype-chain.html] expected: if flag_specific == "disable-site-isolation-trials": [OK, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/windows/browsing-context-names/choose-_blank-002.html.ini b/third_party/blink/web_tests/external/wpt/html/browsers/windows/browsing-context-names/choose-_blank-002.html.ini new file mode 100644 index 0000000..400da251 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/browsers/windows/browsing-context-names/choose-_blank-002.html.ini
@@ -0,0 +1,3 @@ +[choose-_blank-002.html] + expected: + if os == "win": [OK, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/manual/filters/tentative/canvas-filter-object-turbulence.html.ini b/third_party/blink/web_tests/external/wpt/html/canvas/element/manual/filters/tentative/canvas-filter-object-turbulence.html.ini index 64be7110..5c2442f 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/element/manual/filters/tentative/canvas-filter-object-turbulence.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/manual/filters/tentative/canvas-filter-object-turbulence.html.ini
@@ -1,4 +1,4 @@ [canvas-filter-object-turbulence.html] expected: - if flag_specific == "disable-layout-ng": [FAIL, TIMEOUT] + if flag_specific == "disable-site-isolation-trials": [FAIL, TIMEOUT] FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-video.html.ini b/third_party/blink/web_tests/external/wpt/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-video.html.ini index ec5726f..3936c48 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-video.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-video.html.ini
@@ -1,4 +1,6 @@ [canvas-display-p3-drawImage-video.html] + expected: + if flag_specific == "disable-layout-ng": [OK, TIMEOUT] [Rec2020-3FF000000, Context srgb, ImageData srgb, scaleImage=false] expected: if (flag_specific == "") and (os == "linux") and (product == "chrome"): PASS @@ -64,7 +66,3 @@ [Rec2020-222000000, Context display-p3, ImageData display-p3, scaleImage=true] expected: FAIL - - [sRGB-FF0100, Context display-p3, ImageData display-p3, scaleImage=false] - expected: - if flag_specific == "disable-site-isolation-trials": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html.ini b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html.ini index d00299aa..484ae224 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html.ini
@@ -1,3 +1,3 @@ [2d.pattern.paint.repeat.outside.html] expected: - if product == "chrome": ERROR + if product == "chrome": [OK, ERROR]
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.resize.html.ini b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.resize.html.ini index e7a1f14..ba451b2 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.resize.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.resize.html.ini
@@ -1,12 +1,14 @@ [offscreencanvas.resize.html] [Verify that resizing an OffscreenCanvas with a webgl context propagates the new size to its placeholder canvas asynchronously.] expected: - if product == "chrome": FAIL + if (flag_specific == "") and (product == "chrome"): FAIL + if flag_specific == "disable-site-isolation-trials": PASS + [PASS, FAIL] [Verify that drawImage uses the size of the frame as the intinsic size of a placeholder canvas.] expected: - if (flag_specific == "") and (os == "win"): PASS - if flag_specific == "disable-site-isolation-trials": PASS + if (flag_specific == "") and (os == "win"): [PASS, FAIL] + if flag_specific == "disable-layout-ng": [PASS, FAIL] FAIL [Verify that resizing an OffscreenCanvas with a 2d context propagates the new size to its placeholder canvas asynchronously.]
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/resource-popup.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/credentialless/cache.window.js.ini similarity index 64% rename from third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/resource-popup.https.html.ini rename to third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/credentialless/cache.window.js.ini index 950ed5a35..6b68ee2 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/resource-popup.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/credentialless/cache.window.js.ini
@@ -1,3 +1,3 @@ -[resource-popup.https.html] +[cache.window.html] expected: if product == "chrome": [OK, ERROR]
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/credentialless/reporting-subresource-corp.https.window.js.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/credentialless/reporting-subresource-corp.https.window.js.ini index 218de4f..48ccb52 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/credentialless/reporting-subresource-corp.https.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/credentialless/reporting-subresource-corp.https.window.js.ini
@@ -1,3 +1,3 @@ [reporting-subresource-corp.https.window.html] expected: - if flag_specific == "disable-site-isolation-trials": [OK, TIMEOUT] + if (flag_specific == "") and (os == "win"): [OK, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/credentialless/service-worker-coep-credentialless-proxy.https.window.js.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/credentialless/service-worker-coep-credentialless-proxy.https.window.js.ini new file mode 100644 index 0000000..48241f2 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/credentialless/service-worker-coep-credentialless-proxy.https.window.js.ini
@@ -0,0 +1,3 @@ +[service-worker-coep-credentialless-proxy.https.window.html] + expected: + if product == "chrome": [OK, ERROR]
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/credentialless/shared-worker.https.window.js.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/credentialless/shared-worker.https.window.js.ini index 084fc28..c37d7bc 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/credentialless/shared-worker.https.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/credentialless/shared-worker.https.window.js.ini
@@ -1,3 +1,3 @@ [shared-worker.https.window.html] expected: - if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [OK, TIMEOUT] + if product == "chrome": [OK, ERROR]
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/cross-origin-isolated-permission-worker.https.window.js.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/cross-origin-isolated-permission-worker.https.window.js.ini index 1ed2310..1cda6978 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/cross-origin-isolated-permission-worker.https.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/cross-origin-isolated-permission-worker.https.window.js.ini
@@ -1,5 +1,5 @@ [cross-origin-isolated-permission-worker.https.window.html] expected: - if os == "win": [OK, TIMEOUT] + if os == "win": TIMEOUT [shared_worker (withCoopCoep: true) cross origin isolated permission test] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/dedicated-worker.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/dedicated-worker.https.html.ini index 12a8a0c..d92ca6a 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/dedicated-worker.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/dedicated-worker.https.html.ini
@@ -1,6 +1,4 @@ [dedicated-worker.https.html] - expected: - if flag_specific == "disable-layout-ng": TIMEOUT [COEP: require-corp worker in COEP: none frame] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/multi-globals/workers-coep-report.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/multi-globals/workers-coep-report.https.html.ini index 5d583996..4fe2cad 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/multi-globals/workers-coep-report.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/multi-globals/workers-coep-report.https.html.ini
@@ -1,5 +1,3 @@ [workers-coep-report.https.html] - expected: - if os == "win": TIMEOUT [Multiple globals for Worker constructor: COEP reports] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/reporting-navigation.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/reporting-navigation.https.html.ini index 360865ce..4b4b951 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/reporting-navigation.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/reporting-navigation.https.html.ini
@@ -3,4 +3,6 @@ expected: FAIL [parent: |header(cross-origin-embedder-policy,require-corp), target: |header(cross-origin-resource-policy,cross-origin)|header(content-security-policy,frame-ancestors 'none'), with empty frame: true] - expected: FAIL + expected: + if flag_specific == "disable-layout-ng": [PASS, FAIL] + FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/reporting-subresource-corp.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/reporting-subresource-corp.https.html.ini index 3daad9953..9560d8d6 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/reporting-subresource-corp.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/reporting-subresource-corp.https.html.ini
@@ -1,7 +1,4 @@ [reporting-subresource-corp.https.html] - expected: - if (flag_specific == "") and (product == "chrome"): [OK, TIMEOUT] - if flag_specific == "disable-layout-ng": [OK, TIMEOUT] [[dedicated worker\] blocked due to COEP] expected: FAIL @@ -13,11 +10,3 @@ [[shared worker\] blocked during redirect] expected: FAIL - - [[between service worker and page\] blocked during redirect] - expected: - if product == "chrome": [PASS, TIMEOUT] - - [destination: script] - expected: - if product == "chrome": [PASS, NOTRUN]
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/shared-workers.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/shared-workers.https.html.ini index 4d3947e..8bbb056 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/shared-workers.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-embedder-policy/shared-workers.https.html.ini
@@ -1,6 +1,6 @@ [shared-workers.https.html] expected: - if flag_specific == "disable-site-isolation-trials": [OK, TIMEOUT] + if flag_specific == "disable-layout-ng": [OK, TIMEOUT] [require-corp (derived from blob URL creator)] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-with-same-origin.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-with-same-origin.https.html.ini deleted file mode 100644 index 5fca842..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coep-with-same-origin.https.html.ini +++ /dev/null
@@ -1,3 +0,0 @@ -[coep-with-same-origin.https.html] - expected: - if product == "chrome": [OK, ERROR]
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coop-sandbox-cuts-opener.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coop-sandbox-cuts-opener.https.html.ini new file mode 100644 index 0000000..35a670a --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coop-sandbox-cuts-opener.https.html.ini
@@ -0,0 +1,8 @@ +[coop-sandbox-cuts-opener.https.html] + [<iframe sandbox="allow-popups allow-scripts allow-same-origin"> Sandboxed Cross-Origin-Opener-Policy popup should cut the opener if necessary] + expected: + if product == "chrome": [PASS, FAIL] + + [<iframe sandbox="allow-popups allow-scripts"> Sandboxed Cross-Origin-Opener-Policy popup should cut the opener if necessary] + expected: + if product == "chrome": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coop-sandbox-redirects-cuts-opener.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coop-sandbox-redirects-cuts-opener.https.html.ini new file mode 100644 index 0000000..86969da --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/coop-sandbox-redirects-cuts-opener.https.html.ini
@@ -0,0 +1,3 @@ +[coop-sandbox-redirects-cuts-opener.https.html] + expected: + if os == "win": [OK, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/header-parsing-successes.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/header-parsing-successes.https.html.ini new file mode 100644 index 0000000..f545d7b1 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/header-parsing-successes.https.html.ini
@@ -0,0 +1,3 @@ +[header-parsing-successes.https.html] + expected: + if product == "chrome": [OK, ERROR]
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html.ini deleted file mode 100644 index 8eb49f5..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html.ini +++ /dev/null
@@ -1,3 +0,0 @@ -[popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html] - expected: - if product == "chrome": ERROR
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html.ini deleted file mode 100644 index 03a15807..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html.ini +++ /dev/null
@@ -1,3 +0,0 @@ -[popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html] - expected: - if product == "chrome": [ERROR, OK]
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html.ini index eb3fd048..0ece312 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html.ini
@@ -1,3 +1,3 @@ [popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html] expected: - if product == "chrome": ERROR + if product == "chrome": [OK, ERROR]
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html.ini new file mode 100644 index 0000000..8d718f6b6 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html.ini
@@ -0,0 +1,3 @@ +[popup-same-site-unsafe-allow-outgoing-with-same-site.https.html] + expected: + if product == "chrome": [OK, ERROR]
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html.ini new file mode 100644 index 0000000..71fe175 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html.ini
@@ -0,0 +1,3 @@ +[popup-same-site-with-same-origin.https.html] + expected: + if product == "chrome": [OK, ERROR]
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin.https.html.ini index 108522d6..fbb8b7e 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin.https.html.ini
@@ -4,7 +4,7 @@ [iframe-popup-same-origin-allow-popups-to-same-origin.https.html?9-last] expected: - if product == "chrome": [OK, ERROR] + if product == "chrome": ERROR [iframe-popup-same-origin-allow-popups-to-same-origin.https.html?3-4] expected:
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-unsafe-none.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-unsafe-none.https.html.ini index a82ac75..fb0dd854 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-unsafe-none.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-unsafe-none.https.html.ini
@@ -1,6 +1,4 @@ [iframe-popup-same-origin-allow-popups-to-unsafe-none.https.html?9-last] - expected: - if product == "chrome": [OK, ERROR] [iframe-popup-same-origin-allow-popups-to-unsafe-none.https.html?5-6] expected: @@ -8,7 +6,7 @@ [iframe-popup-same-origin-allow-popups-to-unsafe-none.https.html?3-4] expected: - if product == "chrome": ERROR + if product == "chrome": [OK, ERROR] [iframe-popup-same-origin-allow-popups-to-unsafe-none.https.html?1-2] expected:
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-to-same-origin.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-to-same-origin.https.html.ini index 79b69601..223c26b 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-to-same-origin.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-to-same-origin.https.html.ini
@@ -8,7 +8,7 @@ [iframe-popup-same-origin-to-same-origin.https.html?9-last] expected: - if product == "chrome": [OK, ERROR] + if product == "chrome": ERROR [iframe-popup-same-origin-to-same-origin.https.html?7-8] expected:
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html.ini index 63d4fce..872be04 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html.ini
@@ -4,7 +4,7 @@ [iframe-popup-same-origin-to-unsafe-none.https.html?5-6] expected: - if product == "chrome": [OK, ERROR] + if product == "chrome": ERROR [iframe-popup-same-origin-to-unsafe-none.https.html?1-2] expected:
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/javascript-url.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/javascript-url.https.html.ini index 9f98201..43051fc 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/javascript-url.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/javascript-url.https.html.ini
@@ -4,13 +4,15 @@ [javascript-url.https.html?3-4] expected: - if product == "chrome": [OK, ERROR] + if product == "chrome": ERROR [javascript-url.https.html?11-12] expected: if product == "chrome": ERROR [javascript-url.https.html?13-14] + expected: + if product == "chrome": ERROR [javascript-url.https.html?15-16] expected: @@ -22,7 +24,7 @@ [javascript-url.https.html?5-6] expected: - if product == "chrome": ERROR + if product == "chrome": [OK, ERROR] [javascript-url.https.html?7-8] expected:
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/navigate-top-to-aboutblank.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/navigate-top-to-aboutblank.https.html.ini index 9a870f3..1aeca85 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/navigate-top-to-aboutblank.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/navigate-top-to-aboutblank.https.html.ini
@@ -1,10 +1,8 @@ [navigate-top-to-aboutblank.https.html] + expected: + if product == "chrome": ERROR [Navigate top to about:blank from iframe with opener COOP: |header(Cross-Origin-Opener-Policy,same-origin), iframe origin: https://www1.web-platform.test:8444] expected: FAIL [Navigate top to about:blank from iframe with opener COOP: |header(Cross-Origin-Opener-Policy,same-origin-allow-popups), iframe origin: https://www1.web-platform.test:8444] expected: FAIL - - [Navigate top to about:blank from iframe with opener COOP: |header(Cross-Origin-Opener-Policy,same-origin), iframe origin: https://web-platform.test:8444] - expected: - if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-redirect-cache.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-redirect-cache.https.html.ini new file mode 100644 index 0000000..4497bca --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-redirect-cache.https.html.ini
@@ -0,0 +1,15 @@ +[popup-redirect-cache.https.html?4-5] + expected: + if product == "chrome": [OK, ERROR] + +[popup-redirect-cache.https.html?6-7] + +[popup-redirect-cache.https.html?2-3] + +[popup-redirect-cache.https.html?8-last] + expected: + if product == "chrome": [ERROR, OK] + +[popup-redirect-cache.https.html?0-1] + expected: + if product == "chrome": ERROR
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-redirect-same-origin-allow-popups.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-redirect-same-origin-allow-popups.https.html.ini deleted file mode 100644 index 0756fe5..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-redirect-same-origin-allow-popups.https.html.ini +++ /dev/null
@@ -1,3 +0,0 @@ -[popup-redirect-same-origin-allow-popups.https.html] - expected: - if product == "chrome": [ERROR, OK]
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html.ini deleted file mode 100644 index b3e0ea1fa..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html.ini +++ /dev/null
@@ -1,3 +0,0 @@ -[popup-same-origin-allow-popups-with-same-origin.https.html] - expected: - if product == "chrome": [OK, ERROR]
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html.ini index f1d91d7..817cd70 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html.ini
@@ -1,3 +1,3 @@ [popup-same-origin-with-same-origin.https.html] expected: - if product == "chrome": ERROR + if product == "chrome": [OK, ERROR]
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https.html.ini new file mode 100644 index 0000000..604de218 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https.html.ini
@@ -0,0 +1,3 @@ +[popup-unsafe-none-with-same-site.https.html] + expected: + if product == "chrome": [OK, ERROR]
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-openee_coop-ro.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-openee_coop-ro.https.html.ini index 59258e97..4ce7bb5 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-openee_coop-ro.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-openee_coop-ro.https.html.ini
@@ -1,3 +1,10 @@ [access-from-coop-page-to-openee_coop-ro.https.html] expected: - if product == "chrome": ERROR + if product == "chrome": [OK, ERROR] + [access-from-coop-page-to-openee, same-origin] + expected: + if product == "chrome": FAIL + + [access-from-coop-page-to-openee, same-origin + redirect] + expected: + if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-openee_coop-ro_cross-origin.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-openee_coop-ro_cross-origin.https.html.ini index c525d52..4ae0b275 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-openee_coop-ro_cross-origin.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-openee_coop-ro_cross-origin.https.html.ini
@@ -1,3 +1,8 @@ [access-from-coop-page-to-openee_coop-ro_cross-origin.https.html] - expected: - if product == "chrome": ERROR + [access-from-coop-page-to-openee, cross-origin] + expected: + if product == "chrome": FAIL + + [access-from-coop-page-to-openee, cross-origin + redirect] + expected: + if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-opener_coop-ro_cross-origin.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-opener_coop-ro_cross-origin.https.html.ini index 3acaa4a..2e08cc6 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-opener_coop-ro_cross-origin.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-opener_coop-ro_cross-origin.https.html.ini
@@ -1,10 +1,8 @@ [access-from-coop-page-to-opener_coop-ro_cross-origin.https.html] - expected: [OK, ERROR] [access-from-coop-page-to-opener, cross-origin] expected: - if product == "chrome": FAIL + if (os == "linux") and (product == "chrome"): FAIL [access-from-coop-page-to-opener, cross-origin + redirect] expected: - if (product == "content_shell") and (os == "win"): [PASS, FAIL] if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-openee_coop-ro.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-openee_coop-ro.https.html.ini index 9945127..45761bca 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-openee_coop-ro.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-openee_coop-ro.https.html.ini
@@ -1,8 +1,3 @@ [access-to-coop-page-from-openee_coop-ro.https.html] - [access-to-coop-page-from-openee, same-origin] - expected: - if product == "chrome": FAIL - - [access-to-coop-page-from-openee, same-origin + redirect] - expected: - if product == "chrome": FAIL + expected: + if product == "chrome": ERROR
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-opener_coop-ro.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-opener_coop-ro.https.html.ini index cde27b4c..3d56df9 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-opener_coop-ro.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-opener_coop-ro.https.html.ini
@@ -1,10 +1,8 @@ [access-to-coop-page-from-opener_coop-ro.https.html] - expected: - if product == "chrome": [OK, ERROR] - [access-to-coop-page-from-opener, same-origin] + [access-to-coop-page-from-opener, same-origin + redirect] expected: if product == "chrome": FAIL - [access-to-coop-page-from-opener, same-origin + redirect] + [access-to-coop-page-from-opener, same-origin] expected: if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-opener_coop-ro_cross-origin.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-opener_coop-ro_cross-origin.https.html.ini index 9e0d21c..098e5d0 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-opener_coop-ro_cross-origin.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-opener_coop-ro_cross-origin.https.html.ini
@@ -1,3 +1,10 @@ [access-to-coop-page-from-opener_coop-ro_cross-origin.https.html] expected: - if product == "chrome": ERROR + if product == "chrome": [OK, ERROR] + [access-to-coop-page-from-opener, cross-origin + redirect] + expected: + if product == "chrome": FAIL + + [access-to-coop-page-from-opener, cross-origin] + expected: + if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-other_coop-ro_cross-origin.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-other_coop-ro_cross-origin.https.html.ini index 9871408..9d900f4e 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-other_coop-ro_cross-origin.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-other_coop-ro_cross-origin.https.html.ini
@@ -1,6 +1,3 @@ [access-to-coop-page-from-other_coop-ro_cross-origin.https.html] expected: - if product == "chrome": [OK, ERROR] - [access-to-coop-page-from-other (COOP-RO)] - expected: - if product == "chrome": FAIL + if product == "chrome": ERROR
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-close.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-close.https.html.ini index d060d8a9..1b5d3197 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-close.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-close.https.html.ini
@@ -1,6 +1,4 @@ [property-close.https.html] - expected: - if product == "chrome": [OK, ERROR] [cross-origin > w => w.close()] expected: if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-closed.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-closed.https.html.ini index 3ee2c657..ad0e9b0 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-closed.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-closed.https.html.ini
@@ -1,10 +1,3 @@ [property-closed.https.html] expected: - if product == "chrome": [OK, ERROR] - [same-origin > w => w.closed] - expected: - if product == "chrome": FAIL - - [cross-origin > w => w.closed] - expected: - if product == "chrome": FAIL + if product == "chrome": ERROR
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-frames.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-frames.https.html.ini index 01f4fcd..f6d2d33 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-frames.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-frames.https.html.ini
@@ -1,3 +1,10 @@ [property-frames.https.html] expected: - if product == "chrome": ERROR + if product == "chrome": [OK, ERROR] + [cross-origin > w => w.frames] + expected: + if product == "chrome": FAIL + + [same-origin > w => w.frames] + expected: + if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-indexed-getter.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-indexed-getter.https.html.ini new file mode 100644 index 0000000..4186abaa --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-indexed-getter.https.html.ini
@@ -0,0 +1,3 @@ +[property-indexed-getter.https.html] + expected: + if product == "chrome": [OK, ERROR]
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-length.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-length.https.html.ini index 20d6b23..3435757a 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-length.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-length.https.html.ini
@@ -1,10 +1,3 @@ [property-length.https.html] expected: - if product == "chrome": [OK, ERROR] - [same-origin > w => w.length] - expected: - if product == "chrome": FAIL - - [cross-origin > w => w.length] - expected: - if product == "chrome": FAIL + if product == "chrome": ERROR
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-location-set.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-location-set.https.html.ini index 175abd5..1ee952d 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-location-set.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-location-set.https.html.ini
@@ -1,6 +1,4 @@ [property-location-set.https.html] - expected: - if product == "chrome": [OK, ERROR] [cross-origin > w => w.location = "#"] expected: if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-named-getter.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-named-getter.https.html.ini deleted file mode 100644 index d654a715..0000000 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-named-getter.https.html.ini +++ /dev/null
@@ -1,3 +0,0 @@ -[property-named-getter.https.html] - expected: - if product == "chrome": [OK, ERROR]
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-opener-get.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-opener-get.https.html.ini index 76173f05..7eb4dc0 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-opener-get.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-opener-get.https.html.ini
@@ -1,3 +1,10 @@ [property-opener-get.https.html] expected: - if product == "chrome": ERROR + if product == "chrome": [OK, ERROR] + [same-origin > w => w.opener] + expected: + if product == "chrome": FAIL + + [cross-origin > w => w.opener] + expected: + if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/resource-popup.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-opener-set.https.html.ini similarity index 60% copy from third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/resource-popup.https.html.ini copy to third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-opener-set.https.html.ini index 950ed5a35..1a77643 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/resource-popup.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-opener-set.https.html.ini
@@ -1,3 +1,3 @@ -[resource-popup.https.html] +[property-opener-set.https.html] expected: if product == "chrome": [OK, ERROR]
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-postmessage-1.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-postmessage-1.https.html.ini index 09ccef31f..4777f897 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-postmessage-1.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-postmessage-1.https.html.ini
@@ -1,3 +1,10 @@ [property-postmessage-1.https.html] expected: - if product == "chrome": ERROR + if product == "chrome": [ERROR, OK] + [cross-origin > w => w.postMessage("", "")] + expected: + if product == "chrome": FAIL + + [same-origin > w => w.postMessage("", "")] + expected: + if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-postmessage-2.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-postmessage-2.https.html.ini index 586bba13..e687c5d 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-postmessage-2.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-postmessage-2.https.html.ini
@@ -1,3 +1,10 @@ [property-postmessage-2.https.html] expected: - if product == "chrome": ERROR + if product == "chrome": [ERROR, OK] + [cross-origin > w => w.postMessage("")] + expected: + if product == "chrome": FAIL + + [same-origin > w => w.postMessage("")] + expected: + if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-top.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-top.https.html.ini index e3a7586a..86f71d589 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-top.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-top.https.html.ini
@@ -1,3 +1,10 @@ [property-top.https.html] expected: - if product == "chrome": ERROR + if product == "chrome": [OK, ERROR] + [same-origin > w => w.top] + expected: + if product == "chrome": FAIL + + [cross-origin > w => w.top] + expected: + if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-window.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-window.https.html.ini index 799db67..78ab09d 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-window.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/property-window.https.html.ini
@@ -1,10 +1,3 @@ [property-window.https.html] expected: - if product == "chrome": [OK, ERROR] - [same-origin > w => w.window] - expected: - if product == "chrome": FAIL - - [cross-origin > w => w.window] - expected: - if product == "chrome": FAIL + if product == "chrome": ERROR
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/document-reporting/report-to-both_coop-ro.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/document-reporting/report-to-both_coop-ro.https.html.ini index 46d3e245..3533c77b 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/document-reporting/report-to-both_coop-ro.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/document-reporting/report-to-both_coop-ro.https.html.ini
@@ -1,3 +1,8 @@ [report-to-both_coop-ro.https.html] - expected: - if product == "chrome": ERROR + [Access from opener] + expected: + if product == "chrome": FAIL + + [Access from openee] + expected: + if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/document-reporting/reporting-redirect-with-same-origin-allow-popups.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/document-reporting/reporting-redirect-with-same-origin-allow-popups.https.html.ini index 6f1d038e..80bec0a 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/document-reporting/reporting-redirect-with-same-origin-allow-popups.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/document-reporting/reporting-redirect-with-same-origin-allow-popups.https.html.ini
@@ -1,10 +1,10 @@ [reporting-redirect-with-same-origin-allow-popups.https.html] expected: if product == "chrome": [OK, ERROR] - [Cross origin openee redirected to same-origin with same-origin-allow-popups] + [Same origin openee redirected to same-origin with same-origin-allow-popups] expected: if product == "chrome": FAIL - [Same origin openee redirected to same-origin with same-origin-allow-popups] + [Cross origin openee redirected to same-origin with same-origin-allow-popups] expected: if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/document-reporting/reporting-redirect-with-unsafe-none.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/document-reporting/reporting-redirect-with-unsafe-none.https.html.ini index 7b11492b..68909ce 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/document-reporting/reporting-redirect-with-unsafe-none.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/reporting/document-reporting/reporting-redirect-with-unsafe-none.https.html.ini
@@ -1,10 +1,8 @@ [reporting-redirect-with-unsafe-none.https.html] - expected: - if product == "chrome": [OK, ERROR] - [Cross origin openee redirected to same-origin with unsafe-none] + [Same origin openee redirected to same-origin with unsafe-none] expected: if product == "chrome": FAIL - [Same origin openee redirected to same-origin with unsafe-none] + [Cross origin openee redirected to same-origin with unsafe-none] expected: if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/tentative/restrict-properties/coop-rp-in-navigation-chain.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/tentative/restrict-properties/coop-rp-in-navigation-chain.https.html.ini index 4aedaff6..3d17e08 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/tentative/restrict-properties/coop-rp-in-navigation-chain.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/tentative/restrict-properties/coop-rp-in-navigation-chain.https.html.ini
@@ -1,3 +1,3 @@ [coop-rp-in-navigation-chain.https.html] expected: - if product == "chrome": [OK, ERROR] + if product == "chrome": ERROR
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/tentative/restrict-properties/iframe-popup-to-so.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/tentative/restrict-properties/iframe-popup-to-so.https.html.ini index 2451a4e..f8a499ba 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/tentative/restrict-properties/iframe-popup-to-so.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/tentative/restrict-properties/iframe-popup-to-so.https.html.ini
@@ -15,5 +15,3 @@ if product == "chrome": ERROR [iframe-popup-to-so.https.html?9-last] - expected: - if product == "chrome": ERROR
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/tentative/restrict-properties/iframe-popup-to-un.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/tentative/restrict-properties/iframe-popup-to-un.https.html.ini index 275706e..3868993 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/tentative/restrict-properties/iframe-popup-to-un.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/tentative/restrict-properties/iframe-popup-to-un.https.html.ini
@@ -19,13 +19,15 @@ [iframe-popup-to-un.https.html?9-last] + expected: + if product == "chrome": ERROR [COOP: restrict-properties to popup COOP: unsafe-none via an iframe, with cross origin iframe, cross origin popup with window_open] expected: FAIL [iframe-popup-to-un.https.html?5-6] expected: - if product == "chrome": ERROR + if product == "chrome": [OK, ERROR] [COOP: restrict-properties to popup COOP: unsafe-none via an iframe, with same site iframe, same site popup with window_open] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/tentative/restrict-properties/iframe-popup.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/tentative/restrict-properties/iframe-popup.https.html.ini index f3681f2..da3ba00 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/tentative/restrict-properties/iframe-popup.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/tentative/restrict-properties/iframe-popup.https.html.ini
@@ -10,7 +10,7 @@ [iframe-popup.https.html?9-last] expected: - if product == "chrome": ERROR + if product == "chrome": [OK, ERROR] [COOP: restrict-properties to popup COOP: restrict-properties via an iframe, with cross origin iframe, cross origin popup with window_open] expected: FAIL @@ -27,7 +27,7 @@ [iframe-popup.https.html?3-4] expected: - if product == "chrome": ERROR + if product == "chrome": [OK, ERROR] [COOP: restrict-properties to popup COOP: restrict-properties via an iframe, with cross origin iframe, same origin popup with window_open] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/tentative/restrict-properties/popup-un.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/tentative/restrict-properties/popup-un.https.html.ini index 245d44f..1fa6809a 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/tentative/restrict-properties/popup-un.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/tentative/restrict-properties/popup-un.https.html.ini
@@ -1,4 +1,6 @@ [popup-un.https.html] + expected: + if product == "chrome": [OK, ERROR] [SAME_ORIGIN popup with coop restrict-properties] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/tentative/restrict-properties/popup-with-cross-origin.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/tentative/restrict-properties/popup-with-cross-origin.https.html.ini index f97561b..fca3b7c 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/tentative/restrict-properties/popup-with-cross-origin.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/tentative/restrict-properties/popup-with-cross-origin.https.html.ini
@@ -1,6 +1,4 @@ [popup-with-cross-origin.https.html] - expected: - if product == "chrome": [OK, ERROR] [Cross-origin popup with empty coop] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/tentative/restrict-properties/popup-with-same-site.https.html.ini b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/tentative/restrict-properties/popup-with-same-site.https.html.ini index 38b2f93..3a041615 100644 --- a/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/tentative/restrict-properties/popup-with-same-site.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/cross-origin-opener-policy/tentative/restrict-properties/popup-with-same-site.https.html.ini
@@ -1,6 +1,4 @@ [popup-with-same-site.https.html] - expected: - if product == "chrome": ERROR [Same-site popup with coop restrict-properties] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/dom/render-blocking/script-inserted-script.html.ini b/third_party/blink/web_tests/external/wpt/html/dom/render-blocking/script-inserted-script.html.ini index e11044c..ead65bc 100644 --- a/third_party/blink/web_tests/external/wpt/html/dom/render-blocking/script-inserted-script.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/dom/render-blocking/script-inserted-script.html.ini
@@ -1,4 +1,4 @@ [script-inserted-script.html] [Rendering is blocked before render-blocking resources are loaded] expected: - if (flag_specific == "") and (os == "linux") and (product == "content_shell"): FAIL + if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/html/rendering/pixel-length-attributes.html.ini b/third_party/blink/web_tests/external/wpt/html/rendering/pixel-length-attributes.html.ini index dcfec0f..7843cbb4 100644 --- a/third_party/blink/web_tests/external/wpt/html/rendering/pixel-length-attributes.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/rendering/pixel-length-attributes.html.ini
@@ -1,6 +1,6 @@ [pixel-length-attributes.html] expected: - if flag_specific == "disable-layout-ng": [OK, TIMEOUT] + if flag_specific == "disable-site-isolation-trials": [OK, TIMEOUT] [<iframe marginwidth="+-200"> mapping to marginLeft] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/rendering/the-details-element/details-revert-ref.html b/third_party/blink/web_tests/external/wpt/html/rendering/the-details-element/details-revert-ref.html new file mode 100644 index 0000000..dc46b15 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/rendering/the-details-element/details-revert-ref.html
@@ -0,0 +1,19 @@ +<!doctype html> +<meta charset="utf-8"> +<title>CSS Test Reference</title> +<style> + summary { + display: list-item; + counter-increment: list-item 0; + list-style: disclosure-closed inside; + } + details[open] > summary { + list-style-type: disclosure-open; + } +</style> +<details> + <summary>Example</summary> +</details> +<details open> + <summary>Example</summary> +</details>
diff --git a/third_party/blink/web_tests/external/wpt/html/rendering/the-details-element/details-revert.html b/third_party/blink/web_tests/external/wpt/html/rendering/the-details-element/details-revert.html new file mode 100644 index 0000000..760cc82 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/rendering/the-details-element/details-revert.html
@@ -0,0 +1,18 @@ +<!doctype html> +<meta charset="utf-8"> +<link rel="help" href="https://html.spec.whatwg.org/#the-details-and-summary-elements"> +<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1804925"> +<link rel="match" href="details-revert-ref.html"> +<style> + summary { + display: revert; + counter-increment: revert; + list-style: revert; + } +</style> +<details> + <summary>Example</summary> +</details> +<details open> + <summary>Example</summary> +</details>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-insert-source-not-in-document.html.ini b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-insert-source-not-in-document.html.ini index 4c22271..0d35b24d 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-insert-source-not-in-document.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-insert-source-not-in-document.html.ini
@@ -1,5 +1,3 @@ [resource-selection-invoke-insert-source-not-in-document.html] [invoking resource selection by inserting <source> in video not in a document] - expected: - if flag_specific == "disable-layout-ng": [FAIL, PASS] - FAIL + expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-insert-source.html.ini b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-insert-source.html.ini index cf5642f..5e49a00 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-insert-source.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-insert-source.html.ini
@@ -1,5 +1,3 @@ [resource-selection-invoke-insert-source.html] [invoking resource selection by inserting <source>] - expected: - if (product == "content_shell") and (flag_specific == "disable-site-isolation-trials"): [PASS, FAIL] - FAIL + expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-remove-src.html.ini b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-remove-src.html.ini index b11e0fc..dcae1f1 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-remove-src.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-remove-src.html.ini
@@ -1,5 +1,5 @@ [resource-selection-invoke-remove-src.html] [NOT invoking media load or resource selection when removing the src attribute] expected: - if flag_specific == "disable-layout-ng": [PASS, FAIL] - if flag_specific == "disable-site-isolation-trials": [PASS, FAIL] + if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [PASS, FAIL] + if (flag_specific == "") and (os == "linux") and (product == "chrome"): [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-set-src.html.ini b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-set-src.html.ini index c0581652..694c3cc0 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-set-src.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-set-src.html.ini
@@ -1,3 +1,5 @@ [resource-selection-invoke-set-src.html] [invoking load by setting src] - expected: FAIL + expected: + if flag_specific == "disable-site-isolation-trials": [PASS, FAIL] + FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-removed.html.ini b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-removed.html.ini index d6f3a37..071be32 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-removed.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-removed.html.ini
@@ -1,5 +1,5 @@ [track-cue-rendering-after-controls-removed.html] expected: - if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [PASS, FAIL] - if (flag_specific == "") and (os == "win"): FAIL + if (flag_specific == "") and (os == "linux") and (product == "content_shell"): FAIL + if (flag_specific == "") and (os == "win"): [PASS, FAIL] if flag_specific == "disable-layout-ng": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toBlob-cross-realm-callback-report-exception.html.ini b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toBlob-cross-realm-callback-report-exception.html.ini deleted file mode 100644 index e403f2e..0000000 --- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-canvas-element/toBlob-cross-realm-callback-report-exception.html.ini +++ /dev/null
@@ -1,4 +0,0 @@ -[toBlob-cross-realm-callback-report-exception.html] - [toBlob() reports the exception from its callback in the callback's global object] - expected: - if (product == "content_shell") and (flag_specific == "disable-layout-ng"): [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-child-special-cases.tentative.sub.window.js.ini b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-child-special-cases.tentative.sub.window.js.ini index cdc5476b..9867bff 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-child-special-cases.tentative.sub.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-child-special-cases.tentative.sub.window.js.ini
@@ -1,4 +1,4 @@ [sandbox-top-navigation-child-special-cases.tentative.sub.window.html] expected: - if (product == "content_shell") and (flag_specific == "disable-site-isolation-trials"): [OK, TIMEOUT] - if product == "chrome": ERROR + if (flag_specific == "") and (product == "chrome"): ERROR + if flag_specific == "disable-site-isolation-trials": TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-child.tentative.sub.window.js.ini b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-child.tentative.sub.window.js.ini index 4d916ea..7679aec 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-child.tentative.sub.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-child.tentative.sub.window.js.ini
@@ -2,3 +2,4 @@ expected: if (flag_specific == "") and (product == "chrome"): ERROR if flag_specific == "disable-site-isolation-trials": TIMEOUT + if flag_specific == "disable-layout-ng": [OK, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-escalate-privileges.tentative.sub.window.js.ini b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-escalate-privileges.tentative.sub.window.js.ini index ae3370f..4d6ee23 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-escalate-privileges.tentative.sub.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-escalate-privileges.tentative.sub.window.js.ini
@@ -1,4 +1,4 @@ [sandbox-top-navigation-escalate-privileges.tentative.sub.window.html] expected: - if (flag_specific == "") and (product == "chrome"): ERROR - if flag_specific == "disable-site-isolation-trials": TIMEOUT + if (product == "content_shell") and (flag_specific == "disable-site-isolation-trials"): [OK, TIMEOUT] + if product == "chrome": ERROR
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-grandchild.tentative.sub.window.js.ini b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-grandchild.tentative.sub.window.js.ini index ddb32689..f6d097fe 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-grandchild.tentative.sub.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-grandchild.tentative.sub.window.js.ini
@@ -1,4 +1,4 @@ [sandbox-top-navigation-grandchild.tentative.sub.window.html] expected: - if (product == "content_shell") and (flag_specific == "disable-layout-ng"): [OK, TIMEOUT] - if product == "chrome": ERROR + if (flag_specific == "") and (product == "chrome"): ERROR + if flag_specific == "disable-site-isolation-trials": TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-img-element/available-images.html.ini b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-img-element/available-images.html.ini index c8639671..df23c0b 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-img-element/available-images.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-img-element/available-images.html.ini
@@ -1,3 +1,3 @@ [available-images.html] expected: - if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [PASS, TIMEOUT] + if flag_specific == "disable-layout-ng": [PASS, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-video-element/resize-during-playback.html.ini b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-video-element/resize-during-playback.html.ini index e1b14173..ec7d98f7 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-video-element/resize-during-playback.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-video-element/resize-during-playback.html.ini
@@ -1,3 +1,7 @@ [resize-during-playback.html] [mp4 video] expected: FAIL + + [webm video] + expected: + if product == "chrome": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini b/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini index ed9a8215..962ba8b 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini
@@ -1,3 +1,102 @@ [multipart-formdata.window.html] expected: - if flag_specific == "disable-site-isolation-trials": TIMEOUT + if (flag_specific == "") and (product == "chrome"): [OK, TIMEOUT] + [multipart/form-data: backslash in name (normal form)] + expected: + if product == "chrome": [PASS, NOTRUN] + + [multipart/form-data: non-ASCII in name and value (formdata event)] + expected: + if product == "chrome": [PASS, NOTRUN] + + [multipart/form-data: double quote in filename (formdata event)] + expected: + if product == "chrome": [PASS, NOTRUN] + + [multipart/form-data: backslash in filename (normal form)] + expected: + if product == "chrome": [PASS, NOTRUN] + + [multipart/form-data: non-ASCII in filename (normal form)] + expected: + if product == "chrome": [PASS, NOTRUN] + + [multipart/form-data: character not in encoding in filename (formdata event)] + expected: + if product == "chrome": [PASS, NOTRUN] + + [multipart/form-data: double quote in name (formdata event)] + expected: + if product == "chrome": [PASS, TIMEOUT] + + [multipart/form-data: double quote in value (formdata event)] + expected: + if product == "chrome": [PASS, NOTRUN] + + [multipart/form-data: single quote in name (formdata event)] + expected: + if product == "chrome": [PASS, NOTRUN] + + [multipart/form-data: double quote in value (normal form)] + expected: + if product == "chrome": [PASS, NOTRUN] + + [multipart/form-data: single quote in value (formdata event)] + expected: + if product == "chrome": [PASS, NOTRUN] + + [multipart/form-data: characters not in encoding in name and value (normal form)] + expected: + if product == "chrome": [PASS, NOTRUN] + + [multipart/form-data: backslash in value (formdata event)] + expected: + if product == "chrome": [PASS, NOTRUN] + + [multipart/form-data: single quote in filename (formdata event)] + expected: + if product == "chrome": [PASS, NOTRUN] + + [multipart/form-data: single quote in name (normal form)] + expected: + if product == "chrome": [PASS, NOTRUN] + + [multipart/form-data: characters not in encoding in name and value (formdata event)] + expected: + if product == "chrome": [PASS, NOTRUN] + + [multipart/form-data: character not in encoding in filename (normal form)] + expected: + if product == "chrome": [PASS, NOTRUN] + + [multipart/form-data: backslash in filename (formdata event)] + expected: + if product == "chrome": [PASS, NOTRUN] + + [multipart/form-data: double quote in filename (normal form)] + expected: + if product == "chrome": [PASS, NOTRUN] + + [multipart/form-data: single quote in filename (normal form)] + expected: + if product == "chrome": [PASS, NOTRUN] + + [multipart/form-data: backslash in name (formdata event)] + expected: + if product == "chrome": [PASS, NOTRUN] + + [multipart/form-data: non-ASCII in name and value (normal form)] + expected: + if product == "chrome": [PASS, NOTRUN] + + [multipart/form-data: non-ASCII in filename (formdata event)] + expected: + if product == "chrome": [PASS, NOTRUN] + + [multipart/form-data: backslash in value (normal form)] + expected: + if product == "chrome": [PASS, NOTRUN] + + [multipart/form-data: single quote in value (normal form)] + expected: + if product == "chrome": [PASS, NOTRUN]
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/urlencoded2.window.js.ini b/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/urlencoded2.window.js.ini index d66b56e..3c32f2ce 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/urlencoded2.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/urlencoded2.window.js.ini
@@ -1,120 +1,8 @@ [urlencoded2.window.html] expected: - if product == "chrome": [OK, TIMEOUT] - [application/x-www-form-urlencoded: character not in encoding in filename (formdata event)] - expected: - if product == "chrome": [PASS, NOTRUN] - - [application/x-www-form-urlencoded: character not in encoding in filename (normal form)] - expected: - if product == "chrome": [PASS, NOTRUN] - - [application/x-www-form-urlencoded: characters not in encoding in name and value (normal form)] - expected: - if product == "chrome": [PASS, NOTRUN] - - [application/x-www-form-urlencoded: non-ASCII in filename (formdata event)] - expected: - if product == "chrome": [PASS, NOTRUN] - - [application/x-www-form-urlencoded: non-ASCII in filename (normal form)] - expected: - if product == "chrome": [PASS, NOTRUN] - - [application/x-www-form-urlencoded: characters not in encoding in name and value (formdata event)] - expected: - if product == "chrome": [PASS, NOTRUN] - - [application/x-www-form-urlencoded: backslash in name (normal form)] - expected: - if product == "chrome": [PASS, NOTRUN] - - [application/x-www-form-urlencoded: double quote in filename (formdata event)] - expected: - if product == "chrome": [PASS, NOTRUN] - - [application/x-www-form-urlencoded: single quote in name (normal form)] - expected: - if product == "chrome": [PASS, NOTRUN] - - [application/x-www-form-urlencoded: non-ASCII in name and value (formdata event)] - expected: - if product == "chrome": [PASS, NOTRUN] - - [application/x-www-form-urlencoded: double quote in name (formdata event)] - expected: - if product == "chrome": [PASS, NOTRUN] - - [application/x-www-form-urlencoded: double quote in value (normal form)] - expected: - if product == "chrome": [PASS, NOTRUN] - - [application/x-www-form-urlencoded: double quote in name (normal form)] - expected: - if product == "chrome": [PASS, NOTRUN] - - [application/x-www-form-urlencoded: backslash in filename (formdata event)] - expected: - if product == "chrome": [PASS, NOTRUN] - - [application/x-www-form-urlencoded: single quote in filename (normal form)] - expected: - if product == "chrome": [PASS, NOTRUN] - - [application/x-www-form-urlencoded: single quote in value (normal form)] - expected: - if product == "chrome": [PASS, NOTRUN] - - [application/x-www-form-urlencoded: single quote in filename (formdata event)] - expected: - if product == "chrome": [PASS, NOTRUN] - - [application/x-www-form-urlencoded: backslash in name (formdata event)] - expected: - if product == "chrome": [PASS, NOTRUN] - - [application/x-www-form-urlencoded: double quote in value (formdata event)] - expected: - if product == "chrome": [PASS, NOTRUN] - - [application/x-www-form-urlencoded: double quote in filename (normal form)] - expected: - if product == "chrome": [PASS, NOTRUN] - - [application/x-www-form-urlencoded: single quote in name (formdata event)] - expected: - if product == "chrome": [PASS, NOTRUN] - + if flag_specific == "disable-site-isolation-trials": [OK, TIMEOUT] [application/x-www-form-urlencoded: \\r\\n in filename (normal form)] expected: [PASS, NOTRUN] - [application/x-www-form-urlencoded: backslash in filename (normal form)] - expected: - if product == "chrome": [PASS, NOTRUN] - - [application/x-www-form-urlencoded: backslash in value (normal form)] - expected: - if product == "chrome": [PASS, NOTRUN] - - [application/x-www-form-urlencoded: single quote in value (formdata event)] - expected: - if product == "chrome": [PASS, NOTRUN] - [application/x-www-form-urlencoded: \\r in filename (formdata event)] expected: [PASS, TIMEOUT] - - [application/x-www-form-urlencoded: non-ASCII in name and value (normal form)] - expected: - if product == "chrome": [PASS, NOTRUN] - - [application/x-www-form-urlencoded: backslash in value (formdata event)] - expected: - if product == "chrome": [PASS, NOTRUN] - - [application/x-www-form-urlencoded: \\n\\r in filename (formdata event)] - expected: - if product == "chrome": [PASS, NOTRUN] - - [application/x-www-form-urlencoded: \\n\\r in filename (normal form)] - expected: - if product == "chrome": [PASS, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-target/rel-form-target.html.ini b/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-target/rel-form-target.html.ini deleted file mode 100644 index eae9314..0000000 --- a/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-target/rel-form-target.html.ini +++ /dev/null
@@ -1,2 +0,0 @@ -[rel-form-target.html] - expected: [OK, ERROR]
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/the-selectmenu-element/selectmenu-form-state-restore.tentative.html.ini b/third_party/blink/web_tests/external/wpt/html/semantics/forms/the-selectmenu-element/selectmenu-form-state-restore.tentative.html.ini index 69f2b9a6..a6ec91b 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/forms/the-selectmenu-element/selectmenu-form-state-restore.tentative.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/the-selectmenu-element/selectmenu-form-state-restore.tentative.html.ini
@@ -1,4 +1,4 @@ [selectmenu-form-state-restore.tentative.html] expected: - if (product == "content_shell") and (flag_specific == "") and (os == "linux"): [OK, ERROR] + if flag_specific == "disable-layout-ng": OK ERROR
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/links/following-hyperlinks/activation-behavior.window.js.ini b/third_party/blink/web_tests/external/wpt/html/semantics/links/following-hyperlinks/activation-behavior.window.js.ini index b02e6bff1..9dd31d1 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/links/following-hyperlinks/activation-behavior.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/html/semantics/links/following-hyperlinks/activation-behavior.window.js.ini
@@ -1,7 +1,11 @@ [activation-behavior.window.html] [<area> that is not connected should not be followed] - expected: FAIL + expected: + if (product == "content_shell") and (flag_specific == "disable-site-isolation-trials"): [PASS, FAIL] + FAIL [<a> that is not connected should be followed] expected: if (flag_specific == "") and (os == "linux") and (product == "content_shell"): FAIL + if (flag_specific == "") and (os == "win"): [PASS, FAIL] + if flag_specific == "disable-site-isolation-trials": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-attribute-basic.tentative.html.ini b/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-attribute-basic.tentative.html.ini deleted file mode 100644 index 29ea487..0000000 --- a/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-attribute-basic.tentative.html.ini +++ /dev/null
@@ -1,147 +0,0 @@ -[popover-attribute-basic.tentative.html] - [Changing the popover type in a "toggle" event handler should not cause problems (during showPopover())] - expected: FAIL - - [Changing a popover from auto to manual (via attr), and then auto during 'toggle' works] - expected: FAIL - - [Changing a popover from auto to manual (via attr), and then invalid during 'toggle' works] - expected: FAIL - - [Changing a popover from auto to manual (via attr), and then null during 'toggle' works] - expected: FAIL - - [Changing a popover from auto to manual (via attr), and then undefined during 'toggle' works] - expected: FAIL - - [Changing a popover from auto to invalid (via attr), and then auto during 'toggle' works] - expected: FAIL - - [Changing a popover from auto to invalid (via attr), and then manual during 'toggle' works] - expected: FAIL - - [Changing a popover from auto to invalid (via attr), and then null during 'toggle' works] - expected: FAIL - - [Changing a popover from auto to invalid (via attr), and then undefined during 'toggle' works] - expected: FAIL - - [Changing a popover from auto to null (via attr), and then auto during 'toggle' works] - expected: FAIL - - [Changing a popover from auto to null (via attr), and then manual during 'toggle' works] - expected: FAIL - - [Changing a popover from auto to null (via attr), and then invalid during 'toggle' works] - expected: FAIL - - [Changing a popover from auto to null (via attr), and then undefined during 'toggle' works] - expected: FAIL - - [Changing a popover from auto to undefined (via attr), and then auto during 'toggle' works] - expected: FAIL - - [Changing a popover from auto to undefined (via attr), and then manual during 'toggle' works] - expected: FAIL - - [Changing a popover from auto to undefined (via attr), and then invalid during 'toggle' works] - expected: FAIL - - [Changing a popover from auto to undefined (via attr), and then null during 'toggle' works] - expected: FAIL - - [Changing a popover from manual to auto (via attr), and then manual during 'toggle' works] - expected: FAIL - - [Changing a popover from manual to auto (via attr), and then invalid during 'toggle' works] - expected: FAIL - - [Changing a popover from manual to auto (via attr), and then null during 'toggle' works] - expected: FAIL - - [Changing a popover from manual to auto (via attr), and then undefined during 'toggle' works] - expected: FAIL - - [Changing a popover from manual to undefined (via attr), and then auto during 'toggle' works] - expected: FAIL - - [Changing a popover from manual to undefined (via attr), and then manual during 'toggle' works] - expected: FAIL - - [Changing a popover from manual to undefined (via attr), and then invalid during 'toggle' works] - expected: FAIL - - [Changing a popover from manual to undefined (via attr), and then null during 'toggle' works] - expected: FAIL - - [Changing a popover from auto to manual (via idl), and then auto during 'toggle' works] - expected: FAIL - - [Changing a popover from auto to manual (via idl), and then invalid during 'toggle' works] - expected: FAIL - - [Changing a popover from auto to manual (via idl), and then null during 'toggle' works] - expected: FAIL - - [Changing a popover from auto to manual (via idl), and then undefined during 'toggle' works] - expected: FAIL - - [Changing a popover from auto to invalid (via idl), and then auto during 'toggle' works] - expected: FAIL - - [Changing a popover from auto to invalid (via idl), and then manual during 'toggle' works] - expected: FAIL - - [Changing a popover from auto to invalid (via idl), and then null during 'toggle' works] - expected: FAIL - - [Changing a popover from auto to invalid (via idl), and then undefined during 'toggle' works] - expected: FAIL - - [Changing a popover from auto to null (via idl), and then auto during 'toggle' works] - expected: FAIL - - [Changing a popover from auto to null (via idl), and then manual during 'toggle' works] - expected: FAIL - - [Changing a popover from auto to null (via idl), and then invalid during 'toggle' works] - expected: FAIL - - [Changing a popover from auto to undefined (via idl), and then auto during 'toggle' works] - expected: FAIL - - [Changing a popover from auto to undefined (via idl), and then manual during 'toggle' works] - expected: FAIL - - [Changing a popover from auto to undefined (via idl), and then invalid during 'toggle' works] - expected: FAIL - - [Changing a popover from manual to auto (via idl), and then manual during 'toggle' works] - expected: FAIL - - [Changing a popover from manual to auto (via idl), and then invalid during 'toggle' works] - expected: FAIL - - [Changing a popover from manual to auto (via idl), and then null during 'toggle' works] - expected: FAIL - - [Changing a popover from manual to auto (via idl), and then undefined during 'toggle' works] - expected: FAIL - - [Changing a popover from manual to null (via idl), and then auto during 'toggle' works] - expected: FAIL - - [Changing a popover from manual to null (via idl), and then manual during 'toggle' works] - expected: FAIL - - [Changing a popover from manual to null (via idl), and then invalid during 'toggle' works] - expected: FAIL - - [Changing a popover from manual to undefined (via idl), and then auto during 'toggle' works] - expected: FAIL - - [Changing a popover from manual to undefined (via idl), and then manual during 'toggle' works] - expected: FAIL - - [Changing a popover from manual to undefined (via idl), and then invalid during 'toggle' works] - expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/tabular-data/processing-model-1/span-limits.html.ini b/third_party/blink/web_tests/external/wpt/html/semantics/tabular-data/processing-model-1/span-limits.html.ini index 77f4ff42..db1b042f 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/tabular-data/processing-model-1/span-limits.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/semantics/tabular-data/processing-model-1/span-limits.html.ini
@@ -1,3 +1,3 @@ [span-limits.html] expected: - if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [OK, TIMEOUT] + if flag_specific == "disable-layout-ng": [OK, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini b/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini deleted file mode 100644 index e2f5d1c..0000000 --- a/third_party/blink/web_tests/external/wpt/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini +++ /dev/null
@@ -1,3 +0,0 @@ -[promise-job-entry-different-function-realm.html] - expected: - if product == "chrome": [OK, ERROR]
diff --git a/third_party/blink/web_tests/external/wpt/html/webappapis/timers/negative-settimeout.any.js.ini b/third_party/blink/web_tests/external/wpt/html/webappapis/timers/negative-settimeout.any.js.ini index cac620a..80e633e 100644 --- a/third_party/blink/web_tests/external/wpt/html/webappapis/timers/negative-settimeout.any.js.ini +++ b/third_party/blink/web_tests/external/wpt/html/webappapis/timers/negative-settimeout.any.js.ini
@@ -1,5 +1,5 @@ [negative-settimeout.any.worker.html] expected: - if product == "chrome": ERROR + if product == "chrome": [OK, ERROR] [negative-settimeout.any.html]
diff --git a/third_party/blink/web_tests/external/wpt/idle-detection/idle-detection-allowed-by-permissions-policy.https.sub.html.ini b/third_party/blink/web_tests/external/wpt/idle-detection/idle-detection-allowed-by-permissions-policy.https.sub.html.ini index f6cc69d..6f363c1 100644 --- a/third_party/blink/web_tests/external/wpt/idle-detection/idle-detection-allowed-by-permissions-policy.https.sub.html.ini +++ b/third_party/blink/web_tests/external/wpt/idle-detection/idle-detection-allowed-by-permissions-policy.https.sub.html.ini
@@ -14,6 +14,3 @@ [Permissions-Policy idle-detection=* explicity set by top-level frame allows workers in cross-origin iframes.] expected: NOTRUN - - [Inherited header permissions policy allows dedicated workers.] - expected: TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/infrastructure/expected-fail/unhandled-rejection-following-subtest.html.ini b/third_party/blink/web_tests/external/wpt/infrastructure/expected-fail/unhandled-rejection-following-subtest.html.ini index 231515a..c2b68fb 100644 --- a/third_party/blink/web_tests/external/wpt/infrastructure/expected-fail/unhandled-rejection-following-subtest.html.ini +++ b/third_party/blink/web_tests/external/wpt/infrastructure/expected-fail/unhandled-rejection-following-subtest.html.ini
@@ -1,5 +1,2 @@ [unhandled-rejection-following-subtest.html] - expected: - if flag_specific == "disable-layout-ng": [ERROR, OK] - if flag_specific == "disable-site-isolation-trials": [ERROR, OK] - ERROR + expected: ERROR
diff --git a/third_party/blink/web_tests/external/wpt/infrastructure/server/webtransport-h3.https.sub.any.js.ini b/third_party/blink/web_tests/external/wpt/infrastructure/server/webtransport-h3.https.sub.any.js.ini index d9db14c2..cfa3865 100644 --- a/third_party/blink/web_tests/external/wpt/infrastructure/server/webtransport-h3.https.sub.any.js.ini +++ b/third_party/blink/web_tests/external/wpt/infrastructure/server/webtransport-h3.https.sub.any.js.ini
@@ -19,4 +19,4 @@ [webtransport-h3.https.sub.any.worker.html] [WebTransport server should be running and should handle a bidirectional stream] expected: - if os == "win": [PASS, FAIL] + if os == "win": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/infrastructure/server/wpt-server-wpt-flags.sub.html.ini b/third_party/blink/web_tests/external/wpt/infrastructure/server/wpt-server-wpt-flags.sub.html.ini new file mode 100644 index 0000000..7783075b --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/infrastructure/server/wpt-server-wpt-flags.sub.html.ini
@@ -0,0 +1,7 @@ +[wpt-server-wpt-flags.sub.html?wpt_flags=h2] + +[wpt-server-wpt-flags.sub.html?wpt_flags=https] + +[wpt-server-wpt-flags.sub.html] + expected: + if flag_specific == "disable-site-isolation-trials": [OK, CRASH]
diff --git a/third_party/blink/web_tests/external/wpt/intersection-observer/callback-cross-realm-report-exception.html.ini b/third_party/blink/web_tests/external/wpt/intersection-observer/callback-cross-realm-report-exception.html.ini index ca0f3c4..1af63137 100644 --- a/third_party/blink/web_tests/external/wpt/intersection-observer/callback-cross-realm-report-exception.html.ini +++ b/third_party/blink/web_tests/external/wpt/intersection-observer/callback-cross-realm-report-exception.html.ini
@@ -1,4 +1,4 @@ [callback-cross-realm-report-exception.html] [IntersectionObserver reports the exception from its callback in the callback's global object] expected: - if os == "win": [PASS, FAIL] + if (os == "linux") and (product == "chrome"): [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/intersection-observer/cross-origin-iframe.sub.html.ini b/third_party/blink/web_tests/external/wpt/intersection-observer/cross-origin-iframe.sub.html.ini index 9d4270f7..ea54f0f5 100644 --- a/third_party/blink/web_tests/external/wpt/intersection-observer/cross-origin-iframe.sub.html.ini +++ b/third_party/blink/web_tests/external/wpt/intersection-observer/cross-origin-iframe.sub.html.ini
@@ -1,17 +1,9 @@ [cross-origin-iframe.sub.html] [topDocument.scrollingElement.scrollTop = 200] expected: - if (flag_specific == "") and (product == "content_shell") and (os == "win"): [PASS, FAIL] - if (flag_specific == "") and (product == "content_shell") and (os == "linux"): PASS - if flag_specific == "disable-layout-ng": [PASS, FAIL] - FAIL + if (os == "linux") and (flag_specific == "") and (product == "chrome"): FAIL + if (os == "linux") and (flag_specific == "disable-site-isolation-trials"): FAIL [topDocument.scrollingElement.scrollTop = 100] expected: - if (flag_specific == "") and (os == "win"): [PASS, FAIL] - if flag_specific == "disable-layout-ng": [PASS, FAIL] - - [iframeDocument.scrollingElement.scrollTop = 250] - expected: - if (flag_specific == "") and (os == "win"): [PASS, FAIL] - if flag_specific == "disable-layout-ng": [PASS, FAIL] + if os == "win": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/largest-contentful-paint/first-paint-equals-lcp-text.html.ini b/third_party/blink/web_tests/external/wpt/largest-contentful-paint/first-paint-equals-lcp-text.html.ini index 88987019..29f3d289 100644 --- a/third_party/blink/web_tests/external/wpt/largest-contentful-paint/first-paint-equals-lcp-text.html.ini +++ b/third_party/blink/web_tests/external/wpt/largest-contentful-paint/first-paint-equals-lcp-text.html.ini
@@ -1,5 +1,5 @@ [first-paint-equals-lcp-text.html] [FCP and LCP are the same when there is a single text element in the page.] expected: - if (flag_specific == "") and (os == "win"): [PASS, FAIL] + if (flag_specific == "") and (os == "linux") and (product == "content_shell"): PASS FAIL
diff --git a/third_party/blink/web_tests/external/wpt/loading/early-hints/csp-early-hints-absent-final-disallowed.h2.window.js.ini b/third_party/blink/web_tests/external/wpt/loading/early-hints/csp-early-hints-absent-final-disallowed.h2.window.js.ini index 54ac630c..36b4ee8 100644 --- a/third_party/blink/web_tests/external/wpt/loading/early-hints/csp-early-hints-absent-final-disallowed.h2.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/loading/early-hints/csp-early-hints-absent-final-disallowed.h2.window.js.ini
@@ -1,4 +1,4 @@ [csp-early-hints-absent-final-disallowed.h2.window.html] expected: - if product == "chrome": OK + if product == "chrome": [ERROR, OK] ERROR
diff --git a/third_party/blink/web_tests/external/wpt/loading/early-hints/csp-early-hints-allowed-final-absent.h2.window.js.ini b/third_party/blink/web_tests/external/wpt/loading/early-hints/csp-early-hints-allowed-final-absent.h2.window.js.ini index c53530f1..e5500a1 100644 --- a/third_party/blink/web_tests/external/wpt/loading/early-hints/csp-early-hints-allowed-final-absent.h2.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/loading/early-hints/csp-early-hints-allowed-final-absent.h2.window.js.ini
@@ -1,4 +1,2 @@ [csp-early-hints-allowed-final-absent.h2.window.html] - expected: - if product == "chrome": [OK, ERROR] - ERROR + expected: ERROR
diff --git a/third_party/blink/web_tests/external/wpt/loading/early-hints/csp-early-hints-allowed-final-disallowed.h2.window.js.ini b/third_party/blink/web_tests/external/wpt/loading/early-hints/csp-early-hints-allowed-final-disallowed.h2.window.js.ini index 1c54980..62644a2 100644 --- a/third_party/blink/web_tests/external/wpt/loading/early-hints/csp-early-hints-allowed-final-disallowed.h2.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/loading/early-hints/csp-early-hints-allowed-final-disallowed.h2.window.js.ini
@@ -1,2 +1,4 @@ [csp-early-hints-allowed-final-disallowed.h2.window.html] - expected: ERROR + expected: + if product == "chrome": [OK, ERROR] + ERROR
diff --git a/third_party/blink/web_tests/external/wpt/loading/early-hints/csp-early-hints-disallowed-final-allowed.h2.window.js.ini b/third_party/blink/web_tests/external/wpt/loading/early-hints/csp-early-hints-disallowed-final-allowed.h2.window.js.ini index 26f2affea..e935dbe 100644 --- a/third_party/blink/web_tests/external/wpt/loading/early-hints/csp-early-hints-disallowed-final-allowed.h2.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/loading/early-hints/csp-early-hints-disallowed-final-allowed.h2.window.js.ini
@@ -1,2 +1,4 @@ [csp-early-hints-disallowed-final-allowed.h2.window.html] - expected: ERROR + expected: + if product == "chrome": OK + ERROR
diff --git a/third_party/blink/web_tests/external/wpt/loading/early-hints/multiple-early-hints-responses.h2.window.js.ini b/third_party/blink/web_tests/external/wpt/loading/early-hints/multiple-early-hints-responses.h2.window.js.ini index 885ec286..eb2fb4e 100644 --- a/third_party/blink/web_tests/external/wpt/loading/early-hints/multiple-early-hints-responses.h2.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/loading/early-hints/multiple-early-hints-responses.h2.window.js.ini
@@ -1,4 +1,4 @@ [multiple-early-hints-responses.h2.window.html] expected: - if product == "chrome": OK + if product == "chrome": [OK, ERROR] ERROR
diff --git a/third_party/blink/web_tests/external/wpt/loading/early-hints/preload-finished-before-final-response.h2.window.js.ini b/third_party/blink/web_tests/external/wpt/loading/early-hints/preload-finished-before-final-response.h2.window.js.ini index 34b01efc..a768834 100644 --- a/third_party/blink/web_tests/external/wpt/loading/early-hints/preload-finished-before-final-response.h2.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/loading/early-hints/preload-finished-before-final-response.h2.window.js.ini
@@ -1,3 +1,4 @@ [preload-finished-before-final-response.h2.window.html] expected: - if product == "content_shell": ERROR + if product == "chrome": OK + ERROR
diff --git a/third_party/blink/web_tests/external/wpt/loading/early-hints/preload-finished-while-receiving-final-response-body.h2.window.js.ini b/third_party/blink/web_tests/external/wpt/loading/early-hints/preload-finished-while-receiving-final-response-body.h2.window.js.ini index 4e0b8871..77d6e57 100644 --- a/third_party/blink/web_tests/external/wpt/loading/early-hints/preload-finished-while-receiving-final-response-body.h2.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/loading/early-hints/preload-finished-while-receiving-final-response-body.h2.window.js.ini
@@ -1,4 +1,2 @@ [preload-finished-while-receiving-final-response-body.h2.window.html] - expected: - if product == "chrome": [OK, ERROR] - ERROR + expected: ERROR
diff --git a/third_party/blink/web_tests/external/wpt/loading/early-hints/preload-in-flight-when-consumed.h2.window.js.ini b/third_party/blink/web_tests/external/wpt/loading/early-hints/preload-in-flight-when-consumed.h2.window.js.ini index 426ffab..34414adc 100644 --- a/third_party/blink/web_tests/external/wpt/loading/early-hints/preload-in-flight-when-consumed.h2.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/loading/early-hints/preload-in-flight-when-consumed.h2.window.js.ini
@@ -1,4 +1,4 @@ [preload-in-flight-when-consumed.h2.window.html] expected: - if product == "chrome": [OK, ERROR] + if product == "chrome": OK ERROR
diff --git a/third_party/blink/web_tests/external/wpt/loading/early-hints/preload-without-as.h2.window.js.ini b/third_party/blink/web_tests/external/wpt/loading/early-hints/preload-without-as.h2.window.js.ini index 7cc9418f..6ac50adc 100644 --- a/third_party/blink/web_tests/external/wpt/loading/early-hints/preload-without-as.h2.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/loading/early-hints/preload-without-as.h2.window.js.ini
@@ -1,4 +1,4 @@ [preload-without-as.h2.window.html] expected: - if product == "chrome": OK + if product == "chrome": [OK, ERROR] ERROR
diff --git a/third_party/blink/web_tests/external/wpt/loading/early-hints/preload-without-csp-document-disallow.h2.window.js.ini b/third_party/blink/web_tests/external/wpt/loading/early-hints/preload-without-csp-document-disallow.h2.window.js.ini index 2124955e..49c25eb1 100644 --- a/third_party/blink/web_tests/external/wpt/loading/early-hints/preload-without-csp-document-disallow.h2.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/loading/early-hints/preload-without-csp-document-disallow.h2.window.js.ini
@@ -1,4 +1,2 @@ [preload-without-csp-document-disallow.h2.window.html] - expected: - if product == "chrome": [OK, ERROR] - ERROR + expected: ERROR
diff --git a/third_party/blink/web_tests/external/wpt/loading/early-hints/redirect-same-origin.h2.window.js.ini b/third_party/blink/web_tests/external/wpt/loading/early-hints/redirect-same-origin.h2.window.js.ini index 9985515..0c8859c 100644 --- a/third_party/blink/web_tests/external/wpt/loading/early-hints/redirect-same-origin.h2.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/loading/early-hints/redirect-same-origin.h2.window.js.ini
@@ -1,2 +1,4 @@ [redirect-same-origin.h2.window.html] - expected: ERROR + expected: + if product == "chrome": [OK, ERROR] + ERROR
diff --git a/third_party/blink/web_tests/external/wpt/loading/early-hints/referrer-policy-same-origin.h2.window.js.ini b/third_party/blink/web_tests/external/wpt/loading/early-hints/referrer-policy-same-origin.h2.window.js.ini index cc4aae74..c87d9d9 100644 --- a/third_party/blink/web_tests/external/wpt/loading/early-hints/referrer-policy-same-origin.h2.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/loading/early-hints/referrer-policy-same-origin.h2.window.js.ini
@@ -1,2 +1,4 @@ [referrer-policy-same-origin.h2.window.html] - expected: ERROR + expected: + if product == "chrome": OK + ERROR
diff --git a/third_party/blink/web_tests/external/wpt/longtask-timing/longtask-in-sibling-iframe-crossorigin.html.ini b/third_party/blink/web_tests/external/wpt/longtask-timing/longtask-in-sibling-iframe-crossorigin.html.ini index e392bba..ac50b0d 100644 --- a/third_party/blink/web_tests/external/wpt/longtask-timing/longtask-in-sibling-iframe-crossorigin.html.ini +++ b/third_party/blink/web_tests/external/wpt/longtask-timing/longtask-in-sibling-iframe-crossorigin.html.ini
@@ -1,4 +1,4 @@ [longtask-in-sibling-iframe-crossorigin.html] [Performance longtask entries from cross-origin iframe are observable in its sibling.] expected: - if (flag_specific == "") and (os == "linux") and (product == "content_shell"): FAIL + if (flag_specific == "") and (os == "win"): [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/mrow/mrow-fallback.html b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/mrow/mrow-fallback.html index 6fad205..3f9d466 100644 --- a/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/mrow/mrow-fallback.html +++ b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/mrow/mrow-fallback.html
@@ -63,6 +63,15 @@ } } }); + Array.from(document.getElementById("invalidMultiscripts"). + getElementsByTagName("mmultiscripts")).forEach(element => { + let reference = element.nextElementSibling; + let description = element.dataset.description; + test(function() { + compareLayout(element, reference, epsilon); + }, `Invalid mmultiscripts should lay out as an mrow (${description})`); + }); + done(); } </script> @@ -70,5 +79,47 @@ <body> <div id="log"></div> <div id="container"></div> + <div id="invalidMultiscripts"> + <math> + <mmultiscripts data-description="first in-flow child is an <mprescripts>"> + <mprescripts/> + <mspace height="5px" depth="15px" width="10px" style="background: black"/> + <mspace height="30px" depth="10px" width="20px" style="background: black"/> + <mspace height="15px" depth="45px" width="30px" style="background: black"/> + <mspace height="60px" depth="20px" width="40px" style="background: black"/> + + </mmultiscripts> + <mrow> + <mprescripts/> + <mspace height="5px" depth="15px" width="10px" style="background: black"/> + <mspace height="30px" depth="10px" width="20px" style="background: black"/> + <mspace height="15px" depth="45px" width="30px" style="background: black"/> + <mspace height="60px" depth="20px" width="40px" style="background: black"/> + + </mrow> + </math> + <math> + <mmultiscripts data-description="one of the even number of children after the first <mprescripts> is an <mprescripts>"> + <mspace height="5px" depth="15px" width="10px" style="background: black"/> + <mspace height="30px" depth="10px" width="20px" style="background: black"/> + <mspace height="15px" depth="45px" width="30px" style="background: black"/> + <mprescripts/> + <mspace height="60px" depth="20px" width="40px" style="background: black"/> + <mprescripts/> + <mspace height="25px" depth="75px" width="50px" style="background: black"/> + <mspace height="35px" depth="105px" width="70px" style="background: black"/> + </mmultiscripts> + <mrow> + <mspace height="5px" depth="15px" width="10px" style="background: black"/> + <mspace height="30px" depth="10px" width="20px" style="background: black"/> + <mspace height="15px" depth="45px" width="30px" style="background: black"/> + <mprescripts/> + <mspace height="60px" depth="20px" width="40px" style="background: black"/> + <mprescripts/> + <mspace height="25px" depth="75px" width="50px" style="background: black"/> + <mspace height="35px" depth="105px" width="70px" style="background: black"/> + </mrow> + </math> + </div> </body> </html>
diff --git a/third_party/blink/web_tests/external/wpt/mathml/relations/css-styling/ignored-properties-001.html.ini b/third_party/blink/web_tests/external/wpt/mathml/relations/css-styling/ignored-properties-001.html.ini index 7e0c8f48..79419195 100644 --- a/third_party/blink/web_tests/external/wpt/mathml/relations/css-styling/ignored-properties-001.html.ini +++ b/third_party/blink/web_tests/external/wpt/mathml/relations/css-styling/ignored-properties-001.html.ini
@@ -1,7 +1,4 @@ [ignored-properties-001.html] - expected: - if (flag_specific == "") and (os == "linux") and (product == "content_shell"): TIMEOUT - if flag_specific == "disable-site-isolation-trials": TIMEOUT [maction layout is not affected by width: 100px !important; height: 200px !important;] expected: FAIL @@ -31,7 +28,8 @@ [mpadded layout is not affected by width: 100px !important; height: 200px !important;] expected: - if os == "win": FAIL + if product == "chrome": PASS + FAIL [mphantom layout is not affected by width: 100px !important; height: 200px !important;] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/media-source/dedicated-worker/mediasource-worker-play-terminate-worker.html.ini b/third_party/blink/web_tests/external/wpt/media-source/dedicated-worker/mediasource-worker-play-terminate-worker.html.ini index c324d20..59e2dce 100644 --- a/third_party/blink/web_tests/external/wpt/media-source/dedicated-worker/mediasource-worker-play-terminate-worker.html.ini +++ b/third_party/blink/web_tests/external/wpt/media-source/dedicated-worker/mediasource-worker-play-terminate-worker.html.ini
@@ -1,4 +1,4 @@ [mediasource-worker-play-terminate-worker.html] [Test worker MediaSource termination after at least 8 main thread setTimeouts, starting counting before setting srcObject] expected: - if (product == "content_shell") and (flag_specific == "") and (os == "linux"): [PASS, FAIL] + if (flag_specific == "") and (os == "linux") and (product == "content_shell"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/media-source/mediasource-appendbuffer-quota-exceeded.html.ini b/third_party/blink/web_tests/external/wpt/media-source/mediasource-appendbuffer-quota-exceeded.html.ini index 44b783c..74fb2d1 100644 --- a/third_party/blink/web_tests/external/wpt/media-source/mediasource-appendbuffer-quota-exceeded.html.ini +++ b/third_party/blink/web_tests/external/wpt/media-source/mediasource-appendbuffer-quota-exceeded.html.ini
@@ -1,3 +1,6 @@ [mediasource-appendbuffer-quota-exceeded.html] + expected: + if product == "chrome": [OK, TIMEOUT] [Appending data repeatedly should fill up the buffer and throw a QuotaExceededError when buffer is full.] - expected: [PASS, TIMEOUT] + expected: + if product == "chrome": [PASS, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/media-source/mediasource-avtracks.html.ini b/third_party/blink/web_tests/external/wpt/media-source/mediasource-avtracks.html.ini index 790aede..395d921f 100644 --- a/third_party/blink/web_tests/external/wpt/media-source/mediasource-avtracks.html.ini +++ b/third_party/blink/web_tests/external/wpt/media-source/mediasource-avtracks.html.ini
@@ -4,6 +4,5 @@ [Media tracks must be removed when the SourceBuffer is removed from the MediaSource] expected: - if (flag_specific == "") and (os == "linux") and (product == "content_shell"): FAIL if (flag_specific == "") and (os == "win"): FAIL - if flag_specific == "disable-layout-ng": [FAIL, PASS] + if flag_specific == "disable-layout-ng": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/media-source/mediasource-duration.html.ini b/third_party/blink/web_tests/external/wpt/media-source/mediasource-duration.html.ini index 62814da..d83b828 100644 --- a/third_party/blink/web_tests/external/wpt/media-source/mediasource-duration.html.ini +++ b/third_party/blink/web_tests/external/wpt/media-source/mediasource-duration.html.ini
@@ -1,8 +1,8 @@ [mediasource-duration.html] expected: - if (os == "linux") and (product == "content_shell") and (flag_specific == "disable-site-isolation-trials"): ERROR - if (os == "linux") and (product == "content_shell") and (flag_specific == "disable-layout-ng"): [OK, ERROR] - if (os == "linux") and (product == "content_shell") and (flag_specific == ""): ERROR - [Test appendBuffer completes previous seek to truncated duration] + if (flag_specific == "") and (os == "linux") and (product == "chrome"): OK + if (flag_specific == "") and (os == "win"): OK + ERROR + [Test seek starts on duration truncation below currentTime] expected: - if (product == "content_shell") and (flag_specific == "disable-layout-ng"): [PASS, FAIL] + if flag_specific == "disable-layout-ng": [FAIL, PASS]
diff --git a/third_party/blink/web_tests/external/wpt/native-io/detach_iframe_during_open.https.window.js.ini b/third_party/blink/web_tests/external/wpt/native-io/detach_iframe_during_open.https.window.js.ini index 93efa3b..1f325167 100644 --- a/third_party/blink/web_tests/external/wpt/native-io/detach_iframe_during_open.https.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/native-io/detach_iframe_during_open.https.window.js.ini
@@ -1,5 +1,3 @@ [detach_iframe_during_open.https.window.html] expected: - if (flag_specific == "") and (os == "linux") and (product == "content_shell"): CRASH - if (flag_specific == "") and (os == "win"): [OK, TIMEOUT] - if flag_specific == "disable-layout-ng": [CRASH, OK] + if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [OK, CRASH]
diff --git a/third_party/blink/web_tests/external/wpt/navigation-api/navigation-methods/return-value/navigate-initial-about-blank.html.ini b/third_party/blink/web_tests/external/wpt/navigation-api/navigation-methods/return-value/navigate-initial-about-blank.html.ini deleted file mode 100644 index 464f171f..0000000 --- a/third_party/blink/web_tests/external/wpt/navigation-api/navigation-methods/return-value/navigate-initial-about-blank.html.ini +++ /dev/null
@@ -1,3 +0,0 @@ -[navigate-initial-about-blank.html] - expected: - if (flag_specific == "") and (os == "linux") and (product == "content_shell"): ERROR
diff --git a/third_party/blink/web_tests/external/wpt/navigation-timing/test-performance-attributes.sub.html.ini b/third_party/blink/web_tests/external/wpt/navigation-timing/test-performance-attributes.sub.html.ini new file mode 100644 index 0000000..4eaddd8 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/navigation-timing/test-performance-attributes.sub.html.ini
@@ -0,0 +1,5 @@ +[test-performance-attributes.sub.html] + [Check that performance.timing has reasonable values for secureConnectionStart and other attributes] + expected: + if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [PASS, FAIL] + if (flag_specific == "") and (os == "win"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/pending-beacon/pending_beacon-sendnow.tentative.https.window.js.ini b/third_party/blink/web_tests/external/wpt/pending-beacon/pending_beacon-sendnow.tentative.https.window.js.ini index 96481bee..77d12e5b 100644 --- a/third_party/blink/web_tests/external/wpt/pending-beacon/pending_beacon-sendnow.tentative.https.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/pending-beacon/pending_beacon-sendnow.tentative.https.window.js.ini
@@ -1,10 +1,14 @@ [pending_beacon-sendnow.tentative.https.window.html] - expected: [OK, TIMEOUT] + expected: + if product == "chrome": TIMEOUT [sendNow() sends a beacon immediately.] - expected: [PASS, FAIL] + expected: + if product == "chrome": FAIL [sendNow() doesn't send the same beacon twice.] - expected: [PASS, FAIL] + expected: + if product == "chrome": FAIL [sendNow() sends multiple beacons.] - expected: [PASS, TIMEOUT] + expected: + if product == "chrome": TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/pending-beacon/pending_beacon-sendondiscard.tentative.https.window.js.ini b/third_party/blink/web_tests/external/wpt/pending-beacon/pending_beacon-sendondiscard.tentative.https.window.js.ini index 3bf616fc..6517a5a 100644 --- a/third_party/blink/web_tests/external/wpt/pending-beacon/pending_beacon-sendondiscard.tentative.https.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/pending-beacon/pending_beacon-sendondiscard.tentative.https.window.js.ini
@@ -3,8 +3,10 @@ if product == "chrome": ERROR [A discarded document does not send an already sent beacon.] expected: - if (flag_specific == "") and (os == "win"): FAIL + if (flag_specific == "") and (os == "linux"): [PASS, FAIL] + if flag_specific == "disable-layout-ng": PASS + FAIL [A discarded document sends all its beacons of which backgroundTimeouts are\n not default.] expected: - if flag_specific == "disable-site-isolation-trials": FAIL + if os == "win": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/pending-beacon/pending_beacon-sendonhidden.tentative.https.window.js.ini b/third_party/blink/web_tests/external/wpt/pending-beacon/pending_beacon-sendonhidden.tentative.https.window.js.ini index 9728382d..039188a7 100644 --- a/third_party/blink/web_tests/external/wpt/pending-beacon/pending_beacon-sendonhidden.tentative.https.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/pending-beacon/pending_beacon-sendonhidden.tentative.https.window.js.ini
@@ -1,3 +1,4 @@ [pending_beacon-sendonhidden.tentative.https.window.html] expected: - if (flag_specific == "") and (product == "chrome"): ERROR + if (product == "content_shell") and (flag_specific == ""): [OK, TIMEOUT] + if product == "chrome": ERROR
diff --git a/third_party/blink/web_tests/external/wpt/performance-timeline/navigation-id-reset.tentative.html.ini b/third_party/blink/web_tests/external/wpt/performance-timeline/navigation-id-reset.tentative.html.ini index a5e9a1f..ec4c7246 100644 --- a/third_party/blink/web_tests/external/wpt/performance-timeline/navigation-id-reset.tentative.html.ini +++ b/third_party/blink/web_tests/external/wpt/performance-timeline/navigation-id-reset.tentative.html.ini
@@ -1,6 +1,6 @@ [navigation-id-reset.tentative.html] expected: - if flag_specific == "disable-layout-ng": [OK, TIMEOUT] + if (flag_specific == "") and (os == "win"): [OK, TIMEOUT] [Navigation Id should be reset to 1 after reload.] expected: if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/performance-timeline/not-restored-reasons/performance-navigation-timing-same-origin-bfcache.tentative.window.js.ini b/third_party/blink/web_tests/external/wpt/performance-timeline/not-restored-reasons/performance-navigation-timing-same-origin-bfcache.tentative.window.js.ini index a5c5bbd..e27e3f44 100644 --- a/third_party/blink/web_tests/external/wpt/performance-timeline/not-restored-reasons/performance-navigation-timing-same-origin-bfcache.tentative.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/performance-timeline/not-restored-reasons/performance-navigation-timing-same-origin-bfcache.tentative.window.js.ini
@@ -1,6 +1,7 @@ [performance-navigation-timing-same-origin-bfcache.tentative.window.html] [RemoteContextHelper navigation using BFCache] expected: - if (product == "content_shell") and (flag_specific == "") and (os == "linux"): [PASS, FAIL] - if (product == "content_shell") and (flag_specific == "disable-layout-ng"): [PASS, FAIL] - if product == "chrome": FAIL + if (flag_specific == "") and (os == "linux") and (product == "chrome"): FAIL + if (flag_specific == "") and (os == "win"): PASS + if flag_specific == "disable-layout-ng": FAIL + [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/permissions-policy/reporting/geolocation-report-only.https.html.ini b/third_party/blink/web_tests/external/wpt/permissions-policy/reporting/geolocation-report-only.https.html.ini index eb3d0b7..74bda712 100644 --- a/third_party/blink/web_tests/external/wpt/permissions-policy/reporting/geolocation-report-only.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/permissions-policy/reporting/geolocation-report-only.https.html.ini
@@ -1,7 +1,3 @@ [geolocation-report-only.https.html] - expected: - if product == "chrome": [OK, TIMEOUT] [Geolocation report only mode] - expected: - if product == "chrome": [FAIL, TIMEOUT] - FAIL + expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/pointerevents/capturing_boundary_event_handler_at_ua_shadowdom.html.ini b/third_party/blink/web_tests/external/wpt/pointerevents/capturing_boundary_event_handler_at_ua_shadowdom.html.ini new file mode 100644 index 0000000..bbcb899 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/pointerevents/capturing_boundary_event_handler_at_ua_shadowdom.html.ini
@@ -0,0 +1,25 @@ +[capturing_boundary_event_handler_at_ua_shadowdom.html?pen] + [Capturing boundary event handler at DIV] + expected: [PASS, FAIL] + + [Capturing boundary event handler at VIDEO] + expected: FAIL + + [Capturing boundary event handler at INPUT] + expected: FAIL + + +[capturing_boundary_event_handler_at_ua_shadowdom.html?mouse] + [Capturing boundary event handler at VIDEO] + expected: FAIL + + [Capturing boundary event handler at INPUT] + expected: FAIL + + +[capturing_boundary_event_handler_at_ua_shadowdom.html?touch] + [Capturing boundary event handler at VIDEO] + expected: FAIL + + [Capturing boundary event handler at INPUT] + expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_pointercapture_in_frame.html b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_pointercapture_in_frame.html index c4332ac..9edacd7 100644 --- a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_pointercapture_in_frame.html +++ b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_pointercapture_in_frame.html
@@ -233,9 +233,14 @@ .pointerMove(50, 50) .pointerDown() .pointerMove(200, 200) + // Pause here to make sure that the previous and following pointer moves + // are not coalesced. If they are coalesced, we will not see the second + // move event which is when the pending lostpointercapture should be fired + // (Since the pointerup event is targeted at a different frame, it won't dispatch + // the pending lostpointercapture event). + .pause(300) .pointerMove(250, 250) .pointerUp() - .pointerMove(251, 251) .send(); // Wait for pointerup to fire. await watcher_promise;
diff --git a/third_party/blink/web_tests/external/wpt/requestidlecallback/deadline-max-rAF-dynamic.html.ini b/third_party/blink/web_tests/external/wpt/requestidlecallback/deadline-max-rAF-dynamic.html.ini index 3dbee2d..68b966f6 100644 --- a/third_party/blink/web_tests/external/wpt/requestidlecallback/deadline-max-rAF-dynamic.html.ini +++ b/third_party/blink/web_tests/external/wpt/requestidlecallback/deadline-max-rAF-dynamic.html.ini
@@ -1,3 +1,6 @@ [deadline-max-rAF-dynamic.html] expected: - if os == "win": TIMEOUT + if os == "win": [OK, TIMEOUT] + [Check that the deadline is changed if there is a new requestAnimationFrame from within requestIdleCallback.] + expected: + if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/requestidlecallback/deadline-max-rAF.html.ini b/third_party/blink/web_tests/external/wpt/requestidlecallback/deadline-max-rAF.html.ini index c2a9bbc..534eef0 100644 --- a/third_party/blink/web_tests/external/wpt/requestidlecallback/deadline-max-rAF.html.ini +++ b/third_party/blink/web_tests/external/wpt/requestidlecallback/deadline-max-rAF.html.ini
@@ -1,3 +1,6 @@ [deadline-max-rAF.html] expected: if os == "win": TIMEOUT + [Check that the deadline is less than 16ms when there is a pending animation frame.] + expected: + if product == "chrome": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/resource-timing/content-type-parsing.html.ini b/third_party/blink/web_tests/external/wpt/resource-timing/content-type-parsing.html.ini index 3da3db6..4df4c94a 100644 --- a/third_party/blink/web_tests/external/wpt/resource-timing/content-type-parsing.html.ini +++ b/third_party/blink/web_tests/external/wpt/resource-timing/content-type-parsing.html.ini
@@ -22,12 +22,12 @@ [content-type 9 : text/html;charset=gbk,text/plain,text/html] expected: - if os == "win": PASS + if (flag_specific == "") and (os == "win"): PASS FAIL [content-type 10 : text/plain,*/*] expected: - if os == "win": PASS + if (flag_specific == "") and (os == "win"): PASS FAIL [content-type 11 : text/html,*/*] @@ -35,10 +35,6 @@ if os == "win": PASS FAIL - [content-type 12 : */*,text/html] - expected: - if os == "win": FAIL - [content-type 13 : text/plain,*/*;charset=gbk] expected: if os == "win": PASS @@ -46,7 +42,7 @@ [content-type 14 : text/html,*/*;charset=gbk] expected: - if os == "win": PASS + if (flag_specific == "") and (os == "win"): PASS FAIL [content-type 15 : text/html;x=",text/plain] @@ -162,3 +158,15 @@ [mime-type 69 : text/html;test=ÿ;charset=gbk] expected: FAIL + + [content-type 12 : */*,text/html] + expected: + if os == "win": FAIL + + [content-type 3 : text/plain;charset=gbk,text/html] + expected: + if os == "win": [PASS, FAIL] + + [content-type 2 : text/html,text/plain] + expected: + if os == "win": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/resource-timing/nested-context-navigations-iframe.html.ini b/third_party/blink/web_tests/external/wpt/resource-timing/nested-context-navigations-iframe.html.ini new file mode 100644 index 0000000..1c863b1 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/resource-timing/nested-context-navigations-iframe.html.ini
@@ -0,0 +1,4 @@ +[nested-context-navigations-iframe.html] + [Test that cross-site iframe navigations are not observable by the parent, even after history navigations by the parent] + expected: + if flag_specific == "disable-layout-ng": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/resource-timing/no-entries-for-cross-origin-css-fetched-memory-cache.sub.html.ini b/third_party/blink/web_tests/external/wpt/resource-timing/no-entries-for-cross-origin-css-fetched-memory-cache.sub.html.ini index 1d9ea2f..ff8840b 100644 --- a/third_party/blink/web_tests/external/wpt/resource-timing/no-entries-for-cross-origin-css-fetched-memory-cache.sub.html.ini +++ b/third_party/blink/web_tests/external/wpt/resource-timing/no-entries-for-cross-origin-css-fetched-memory-cache.sub.html.ini
@@ -1,3 +1,5 @@ [no-entries-for-cross-origin-css-fetched-memory-cache.sub.html] [Make sure that resources fetched by cross origin CSS are not in the timeline.] - expected: FAIL + expected: + if flag_specific == "disable-layout-ng": PASS + FAIL
diff --git a/third_party/blink/web_tests/external/wpt/resource-timing/object-not-found-adds-entry.html.ini b/third_party/blink/web_tests/external/wpt/resource-timing/object-not-found-adds-entry.html.ini new file mode 100644 index 0000000..af9142d31 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/resource-timing/object-not-found-adds-entry.html.ini
@@ -0,0 +1,10 @@ +[object-not-found-adds-entry.html] + expected: + if product == "chrome": [OK, TIMEOUT] + [Verify that a 404 null-typed object emits an entry.] + expected: + if product == "chrome": [PASS, TIMEOUT] + + [Verify that a 404 img-typed object emits an entry.] + expected: + if product == "chrome": [PASS, NOTRUN]
diff --git a/third_party/blink/web_tests/external/wpt/resource-timing/object-not-found-after-cross-origin-redirect.html.ini b/third_party/blink/web_tests/external/wpt/resource-timing/object-not-found-after-cross-origin-redirect.html.ini index e13c217..caf7a33 100644 --- a/third_party/blink/web_tests/external/wpt/resource-timing/object-not-found-after-cross-origin-redirect.html.ini +++ b/third_party/blink/web_tests/external/wpt/resource-timing/object-not-found-after-cross-origin-redirect.html.ini
@@ -1,6 +1,3 @@ [object-not-found-after-cross-origin-redirect.html] expected: - if product == "chrome": [OK, TIMEOUT] - [Verify that cross-origin object resources don't implicitly expose their redirect timings] - expected: - if product == "chrome": [PASS, TIMEOUT] + if (product == "content_shell") and (flag_specific == "disable-layout-ng"): [OK, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/resource-timing/response-status-code.html.ini b/third_party/blink/web_tests/external/wpt/resource-timing/response-status-code.html.ini index 8f75a2f8..0359fd1 100644 --- a/third_party/blink/web_tests/external/wpt/resource-timing/response-status-code.html.ini +++ b/third_party/blink/web_tests/external/wpt/resource-timing/response-status-code.html.ini
@@ -1,6 +1,6 @@ [response-status-code.html] expected: - if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [OK, TIMEOUT] + if flag_specific == "disable-layout-ng": [OK, TIMEOUT] [This test validates the response status of resources. 145] expected: [PASS, NOTRUN]
diff --git a/third_party/blink/web_tests/external/wpt/scroll-to-text-fragment/find-range-from-text-directive.html.ini b/third_party/blink/web_tests/external/wpt/scroll-to-text-fragment/find-range-from-text-directive.html.ini index 6507c291..f58d327 100644 --- a/third_party/blink/web_tests/external/wpt/scroll-to-text-fragment/find-range-from-text-directive.html.ini +++ b/third_party/blink/web_tests/external/wpt/scroll-to-text-fragment/find-range-from-text-directive.html.ini
@@ -4,7 +4,7 @@ expected: [PASS, NOTRUN] [Non-matching suffix in first potential match.] - expected: [PASS, NOTRUN] + expected: [PASS, TIMEOUT] [Non-matching suffix search continues to prefix match.] expected: [PASS, NOTRUN]
diff --git a/third_party/blink/web_tests/external/wpt/service-workers/cache-storage/cache-add.https.any.js.ini b/third_party/blink/web_tests/external/wpt/service-workers/cache-storage/cache-add.https.any.js.ini index 5c33035..4fcea8d 100644 --- a/third_party/blink/web_tests/external/wpt/service-workers/cache-storage/cache-add.https.any.js.ini +++ b/third_party/blink/web_tests/external/wpt/service-workers/cache-storage/cache-add.https.any.js.ini
@@ -2,10 +2,6 @@ [Cache.addAll called with the same Request object specified twice] expected: FAIL - [Cache.addAll should succeed when entries differ by vary header] - expected: - if product == "chrome": [PASS, FAIL] - [cache-add.https.any.sharedworker.html] [Cache.addAll called with the same Request object specified twice] @@ -20,7 +16,3 @@ [cache-add.https.any.html] [Cache.addAll called with the same Request object specified twice] expected: FAIL - - [Cache.addAll should succeed when entries differ by vary header] - expected: - if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/service-workers/service-worker/client-navigate.https.html.ini b/third_party/blink/web_tests/external/wpt/service-workers/service-worker/client-navigate.https.html.ini index ed96e18b..a8461b4 100644 --- a/third_party/blink/web_tests/external/wpt/service-workers/service-worker/client-navigate.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/service-workers/service-worker/client-navigate.https.html.ini
@@ -1,4 +1,4 @@ [client-navigate.https.html] - [Frame location should not be accessible after redirect] + [Frame location should not be accessible after cross-origin navigation] expected: - if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [PASS, FAIL] + if flag_specific == "disable-layout-ng": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/service-workers/service-worker/getregistrations.https.html.ini b/third_party/blink/web_tests/external/wpt/service-workers/service-worker/getregistrations.https.html.ini index 6bdecd6..8d78459a2 100644 --- a/third_party/blink/web_tests/external/wpt/service-workers/service-worker/getregistrations.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/service-workers/service-worker/getregistrations.https.html.ini
@@ -2,14 +2,11 @@ [Register then Unregister then getRegistrations] expected: if flag_specific == "disable-site-isolation-trials": [PASS, FAIL] - if flag_specific == "disable-layout-ng": FAIL [Register then Unregister with controlled frame then getRegistrations] expected: if flag_specific == "disable-site-isolation-trials": [PASS, FAIL] - if flag_specific == "disable-layout-ng": FAIL [getRegistrations promise resolves only with same origin registrations.] expected: - if flag_specific == "disable-layout-ng": FAIL if flag_specific == "disable-site-isolation-trials": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/service-workers/service-worker/unregister-immediately-during-extendable-events.https.html.ini b/third_party/blink/web_tests/external/wpt/service-workers/service-worker/unregister-immediately-during-extendable-events.https.html.ini index 3ac7278..4507f10 100644 --- a/third_party/blink/web_tests/external/wpt/service-workers/service-worker/unregister-immediately-during-extendable-events.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/service-workers/service-worker/unregister-immediately-during-extendable-events.https.html.ini
@@ -1,8 +1,4 @@ [unregister-immediately-during-extendable-events.https.html] - expected: - if flag_specific == "disable-layout-ng": [OK, TIMEOUT] - TIMEOUT + expected: TIMEOUT [Clear-Site-Data must fail pending subresource fetch events.] - expected: - if product == "chrome": TIMEOUT - FAIL + expected: TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prefetch/out-of-document-rule-set.https.html.ini b/third_party/blink/web_tests/external/wpt/speculation-rules/prefetch/out-of-document-rule-set.https.html.ini index 0ae4bf4..c7316ee 100644 --- a/third_party/blink/web_tests/external/wpt/speculation-rules/prefetch/out-of-document-rule-set.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prefetch/out-of-document-rule-set.https.html.ini
@@ -29,6 +29,8 @@ [out-of-document-rule-set.https.html?include=StatusCode199] [out-of-document-rule-set.https.html?include=FollowRedirect] + expected: + if product == "chrome": [OK, ERROR] [It should follow redirects and fetch the speculation rules set.] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prefetch/referrer-policy-not-accepted.https.html.ini b/third_party/blink/web_tests/external/wpt/speculation-rules/prefetch/referrer-policy-not-accepted.https.html.ini index b18abbe9..0de0fe9 100644 --- a/third_party/blink/web_tests/external/wpt/speculation-rules/prefetch/referrer-policy-not-accepted.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prefetch/referrer-policy-not-accepted.https.html.ini
@@ -1,4 +1,6 @@ [referrer-policy-not-accepted.https.html?1-1] + expected: + if product == "chrome": [OK, ERROR] [with "unsafe-url" referrer policy on same-site referring page] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/cross-origin-iframe.html.ini b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/cross-origin-iframe.html.ini index 1023c05..1cda8fa 100644 --- a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/cross-origin-iframe.html.ini +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/cross-origin-iframe.html.ini
@@ -1,6 +1,7 @@ [cross-origin-iframe.html] expected: - if product == "chrome": TIMEOUT + if (os == "linux") and (product == "chrome"): TIMEOUT + if os == "win": ERROR [cross-origin iframes should not load until activation] expected: if product == "chrome": TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/csp-script-src-elem-inline-speculation-rules.tentative.html.ini b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/csp-script-src-elem-inline-speculation-rules.tentative.html.ini new file mode 100644 index 0000000..b73464e --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/csp-script-src-elem-inline-speculation-rules.tentative.html.ini
@@ -0,0 +1,6 @@ +[csp-script-src-elem-inline-speculation-rules.tentative.html] + expected: + if product == "chrome": TIMEOUT + ERROR + [Test if CSP script-src-elem inline-speculation-rules permits inline speculationrules.] + expected: TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/csp-script-src-self.html.ini b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/csp-script-src-self.html.ini new file mode 100644 index 0000000..4329c7f --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/csp-script-src-self.html.ini
@@ -0,0 +1,4 @@ +[csp-script-src-self.html] + expected: + if (os == "linux") and (flag_specific == "") and (product == "content_shell"): [OK, ERROR] + if (os == "linux") and (flag_specific == "disable-site-isolation-trials"): [OK, ERROR]
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/iframe-added-post-activation.html.ini b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/iframe-added-post-activation.html.ini index 639ddc1..4c72df7 100644 --- a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/iframe-added-post-activation.html.ini +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/iframe-added-post-activation.html.ini
@@ -1,7 +1,7 @@ [iframe-added-post-activation.html] expected: - if (os == "linux") and (product == "chrome"): TIMEOUT - if os == "win": ERROR + if (product == "content_shell") and (os == "win"): [OK, ERROR] + if product == "chrome": TIMEOUT [iframe added after activation has false document.prerendering] expected: if product == "chrome": TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/indexeddb.html.ini b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/indexeddb.html.ini index e16ee6b..3dd4ff1 100644 --- a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/indexeddb.html.ini +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/indexeddb.html.ini
@@ -1,5 +1,6 @@ [indexeddb.html] expected: + if (product == "content_shell") and (os == "win"): [OK, TIMEOUT] if product == "chrome": TIMEOUT [prerendering page should be able to access Indexed DataBase] expected:
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/navigator-plugins.tentative.html.ini b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/navigator-plugins.tentative.html.ini index 6d40224..a9fa26cb 100644 --- a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/navigator-plugins.tentative.html.ini +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/navigator-plugins.tentative.html.ini
@@ -1,5 +1,6 @@ [navigator-plugins.tentative.html] expected: + if (product == "content_shell") and (os == "win"): [OK, TIMEOUT] if product == "chrome": TIMEOUT [prerendering page should be able to access the navigator.plugins] expected:
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/referrer-policy-from-rules.html.ini b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/referrer-policy-from-rules.html.ini index c96a9be..9df55d5d 100644 --- a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/referrer-policy-from-rules.html.ini +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/referrer-policy-from-rules.html.ini
@@ -1,6 +1,6 @@ [referrer-policy-from-rules.html?2-last] expected: - if product == "chrome": [OK, ERROR] + if product == "chrome": ERROR [referrer-policy-from-rules.html?1-1] expected: TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/referrer-policy-no-referrer.html.ini b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/referrer-policy-no-referrer.html.ini index 76132cd0..9c2d108 100644 --- a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/referrer-policy-no-referrer.html.ini +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/referrer-policy-no-referrer.html.ini
@@ -1,5 +1,6 @@ [referrer-policy-no-referrer.html] expected: + if (product == "content_shell") and (os == "win"): [OK, TIMEOUT] if product == "chrome": TIMEOUT [no referrer] expected:
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/response-code-non-successful.html.ini b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/response-code-non-successful.html.ini index 30fcd9b..6b924a96 100644 --- a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/response-code-non-successful.html.ini +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/response-code-non-successful.html.ini
@@ -1,19 +1,13 @@ -[response-code-non-successful.html?code=503] - expected: - if product == "chrome": ERROR +[response-code-non-successful.html?code=205] [response-code-non-successful.html?code=402] - -[response-code-non-successful.html?code=204] - -[response-code-non-successful.html?code=404] expected: if product == "chrome": [OK, ERROR] [response-code-non-successful.html?code=500] - expected: - if product == "chrome": [OK, ERROR] -[response-code-non-successful.html?code=205] - expected: - if product == "chrome": [OK, ERROR] +[response-code-non-successful.html?code=503] + +[response-code-non-successful.html?code=404] + +[response-code-non-successful.html?code=204]
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/response-code-successful.html.ini b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/response-code-successful.html.ini index 78c2c35..6d11eee 100644 --- a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/response-code-successful.html.ini +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/response-code-successful.html.ini
@@ -1,10 +1,10 @@ [response-code-successful.html?code=203] - [Responses with code 203 should be activated] - expected: - if product == "chrome": FAIL - + expected: + if product == "chrome": ERROR [response-code-successful.html?code=200] + expected: + if product == "chrome": [OK, ERROR] [Responses with code 200 should be activated] expected: if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-dedicated-worker.https.html.ini b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-dedicated-worker.https.html.ini index 4c890c0c2..4aeadc5 100644 --- a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-dedicated-worker.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-dedicated-worker.https.html.ini
@@ -1,7 +1,7 @@ [restriction-dedicated-worker.https.html] expected: - if (product == "content_shell") and (os == "win"): [OK, ERROR] - if product == "chrome": TIMEOUT + if (os == "linux") and (product == "chrome"): TIMEOUT + if os == "win": ERROR [The access to the Dedicated Worker API should be deferred until the\n prerendered page is activated] expected: if product == "chrome": TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-encrypted-media-unsupported-config.https.html.ini b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-encrypted-media-unsupported-config.https.html.ini index ba53aa9..ac50913 100644 --- a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-encrypted-media-unsupported-config.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-encrypted-media-unsupported-config.https.html.ini
@@ -1,7 +1,7 @@ [restriction-encrypted-media-unsupported-config.https.html] expected: - if (product == "content_shell") and (os == "win"): [OK, ERROR] - if product == "chrome": TIMEOUT + if (os == "linux") and (product == "chrome"): TIMEOUT + if os == "win": ERROR [the access to the Encrypted Media API should be deferred with the\n unsupported configurations until the prerendered page is activated] expected: if product == "chrome": TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-local-file-system-access.https.html.ini b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-local-file-system-access.https.html.ini index 0e13ca06..d7eeb88 100644 --- a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-local-file-system-access.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-local-file-system-access.https.html.ini
@@ -1,7 +1,7 @@ [restriction-local-file-system-access.https.html] expected: - if (product == "content_shell") and (os == "win"): [OK, TIMEOUT] - if product == "chrome": TIMEOUT + if (os == "linux") and (product == "chrome"): TIMEOUT + if os == "win": TIMEOUT [prerendering pages should not be able to access the local file system via the File System Access API] expected: if product == "chrome": TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-media-microphone.https.html.ini b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-media-microphone.https.html.ini index 9cafd15..3191a4d 100644 --- a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-media-microphone.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-media-microphone.https.html.ini
@@ -1,6 +1,7 @@ [restriction-media-microphone.https.html] expected: - if product == "chrome": TIMEOUT + if (os == "linux") and (product == "chrome"): TIMEOUT + if os == "win": ERROR [the access to the Microphone of the user media should be deferred until the\n prerendered page is activated] expected: if product == "chrome": TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-media-play.html.ini b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-media-play.html.ini index f3cd2a6..f1e8bd65 100644 --- a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-media-play.html.ini +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-media-play.html.ini
@@ -3,7 +3,6 @@ disabled: if flag_specific == "force-renderer-accessibility": was skipped in 'FlagExpectations/force-renderer-accessibility' expected: - if (product == "content_shell") and (os == "win"): [OK, ERROR] if product == "chrome": TIMEOUT [play of the audio media should be deferred until the prerendered page is activated] expected:
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-message-boxes.html.ini b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-message-boxes.html.ini index a190613..8bd9788 100644 --- a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-message-boxes.html.ini +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-message-boxes.html.ini
@@ -1,7 +1,7 @@ [restriction-message-boxes.html] expected: - if (os == "linux") and (product == "chrome"): TIMEOUT - if os == "win": ERROR + if (product == "content_shell") and (os == "win"): [OK, ERROR] + if product == "chrome": TIMEOUT [alert() does not display the modal and returns immediately] expected: if product == "chrome": TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-service-worker-postmessage.https.html.ini b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-service-worker-postmessage.https.html.ini index 3cb7332..7b078835 100644 --- a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-service-worker-postmessage.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-service-worker-postmessage.https.html.ini
@@ -1,7 +1,7 @@ [restriction-service-worker-postmessage.https.html] expected: - if (product == "content_shell") and (os == "win"): [OK, TIMEOUT] - if product == "chrome": TIMEOUT + if (os == "linux") and (product == "chrome"): TIMEOUT + if os == "win": TIMEOUT [ServiceWorker#postMessage() from a prerendered page should be deferred until page activation.] expected: if product == "chrome": TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-service-worker-update.https.html.ini b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-service-worker-update.https.html.ini index fb6c6b0..f0afa05 100644 --- a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-service-worker-update.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-service-worker-update.https.html.ini
@@ -1,5 +1,6 @@ [restriction-service-worker-update.https.html] expected: + if (product == "content_shell") and (os == "win"): [OK, ERROR] if product == "chrome": TIMEOUT [ServiceWorkerRegistration.update() should be deferred in a prerendered page] expected:
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-speech-synthesis.html.ini b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-speech-synthesis.html.ini index c8b329d..ad1ad4c 100644 --- a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-speech-synthesis.html.ini +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-speech-synthesis.html.ini
@@ -1,7 +1,6 @@ [restriction-speech-synthesis.html] expected: - if (os == "linux") and (product == "chrome"): TIMEOUT - if os == "win": ERROR + if product == "chrome": TIMEOUT [speechSynthesis.speak(utterance) should be deferred until the prerendered page is activated] expected: if product == "chrome": TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-web-locks.https.html.ini b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-web-locks.https.html.ini index eb9f2ef..fee9484 100644 --- a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-web-locks.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-web-locks.https.html.ini
@@ -1,7 +1,7 @@ [restriction-web-locks.https.html] expected: - if (product == "content_shell") and (os == "win"): [OK, ERROR] - if product == "chrome": TIMEOUT + if (os == "linux") and (product == "chrome"): TIMEOUT + if os == "win": ERROR [navigator.locks.request should be deferred until the prerendered page is activated] expected: if product == "chrome": TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-web-nfc.https.html.ini b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-web-nfc.https.html.ini index e02269b0..2a03aca 100644 --- a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-web-nfc.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/restriction-web-nfc.https.html.ini
@@ -1,6 +1,5 @@ [restriction-web-nfc.https.html] expected: - if (product == "content_shell") and (os == "win"): [OK, ERROR] if product == "chrome": TIMEOUT [The access to the Web NFC API should be deferred until the prerendered\n page is activated] expected:
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/state-and-event.html.ini b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/state-and-event.html.ini index 1024f52..3bc2c9bd 100644 --- a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/state-and-event.html.ini +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/state-and-event.html.ini
@@ -1,7 +1,7 @@ [state-and-event.html] expected: - if (product == "content_shell") and (os == "win"): [OK, ERROR] - if product == "chrome": TIMEOUT + if (os == "linux") and (product == "chrome"): TIMEOUT + if os == "win": ERROR [Test document.prerendering and its change event.] expected: if product == "chrome": TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/storage-foundation.https.html.ini b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/storage-foundation.https.html.ini index 895af8b..a2e584a 100644 --- a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/storage-foundation.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/storage-foundation.https.html.ini
@@ -1,6 +1,7 @@ [storage-foundation.https.html] expected: - if product == "content_shell": ERROR - TIMEOUT + if (product == "content_shell") and (os == "win"): [ERROR, TIMEOUT] + if product == "chrome": TIMEOUT + ERROR [prerendering page should be able to access storage foundation API] expected: TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/windowclient-navigate.https.html.ini b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/windowclient-navigate.https.html.ini index 39d9146..1ea18b66 100644 --- a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/windowclient-navigate.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/windowclient-navigate.https.html.ini
@@ -1,7 +1,6 @@ [windowclient-navigate.https.html] expected: - if (os == "linux") and (product == "chrome"): TIMEOUT + if product == "chrome": TIMEOUT [WindowClient.navigate() for a prerendered main page should throw aTypeError] expected: - if (product == "content_shell") and (os == "win"): [PASS, FAIL] if product == "chrome": TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/workers.html.ini b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/workers.html.ini index 3ed7eaa..a986d42 100644 --- a/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/workers.html.ini +++ b/third_party/blink/web_tests/external/wpt/speculation-rules/prerender/workers.html.ini
@@ -1,7 +1,7 @@ [workers.html] expected: - if (product == "content_shell") and (os == "win"): [OK, TIMEOUT] - if product == "chrome": TIMEOUT + if (os == "linux") and (product == "chrome"): TIMEOUT + if os == "win": TIMEOUT [Dedicated workers should be loaded in suspended state until activated] expected: if product == "chrome": TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/storage/partitioned-estimate-usage-details-caches.tentative.https.sub.html.ini b/third_party/blink/web_tests/external/wpt/storage/partitioned-estimate-usage-details-caches.tentative.https.sub.html.ini index 0690a75..4e84a27 100644 --- a/third_party/blink/web_tests/external/wpt/storage/partitioned-estimate-usage-details-caches.tentative.https.sub.html.ini +++ b/third_party/blink/web_tests/external/wpt/storage/partitioned-estimate-usage-details-caches.tentative.https.sub.html.ini
@@ -1,6 +1,5 @@ [partitioned-estimate-usage-details-caches.tentative.https.sub.html] expected: - if flag_specific == "disable-site-isolation-trials": [OK, TIMEOUT] - if flag_specific == "disable-layout-ng": [OK, TIMEOUT] + if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [OK, TIMEOUT] [Partitioned estimate() usage details for caches test.] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/url/url-setters-stripping.any.js.ini b/third_party/blink/web_tests/external/wpt/url/url-setters-stripping.any.js.ini index 5c23a98..ad2f860 100644 --- a/third_party/blink/web_tests/external/wpt/url/url-setters-stripping.any.js.ini +++ b/third_party/blink/web_tests/external/wpt/url/url-setters-stripping.any.js.ini
@@ -1,6 +1,4 @@ [url-setters-stripping.any.html] - expected: - if os == "win": [OK, TIMEOUT] [Setting pathname with leading U+0000 (https:)] expected: FAIL @@ -318,6 +316,8 @@ [url-setters-stripping.any.worker.html] + expected: + if os == "win": [OK, TIMEOUT] [Setting pathname with leading U+0000 (https:)] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/url/urlsearchparams-get.any.js.ini b/third_party/blink/web_tests/external/wpt/url/urlsearchparams-get.any.js.ini new file mode 100644 index 0000000..8bfbd43 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/url/urlsearchparams-get.any.js.ini
@@ -0,0 +1,5 @@ +[urlsearchparams-get.any.html] + +[urlsearchparams-get.any.worker.html] + expected: + if flag_specific == "disable-layout-ng": CRASH
diff --git a/third_party/blink/web_tests/external/wpt/url/urlsearchparams-stringifier.any.js.ini b/third_party/blink/web_tests/external/wpt/url/urlsearchparams-stringifier.any.js.ini index 300c68e..5874c97 100644 --- a/third_party/blink/web_tests/external/wpt/url/urlsearchparams-stringifier.any.js.ini +++ b/third_party/blink/web_tests/external/wpt/url/urlsearchparams-stringifier.any.js.ini
@@ -1,7 +1,6 @@ [urlsearchparams-stringifier.any.worker.html] - expected: - if os == "win": [OK, TIMEOUT] [urlsearchparams-stringifier.any.html] expected: - if (os == "linux") and (flag_specific == "") and (product == "content_shell"): CRASH + if (os == "linux") and (flag_specific == "") and (product == "content_shell"): [OK, CRASH] + if os == "win": [OK, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/user-timing/case-sensitivity.any.js.ini b/third_party/blink/web_tests/external/wpt/user-timing/case-sensitivity.any.js.ini index 8fdad24..235f972 100644 --- a/third_party/blink/web_tests/external/wpt/user-timing/case-sensitivity.any.js.ini +++ b/third_party/blink/web_tests/external/wpt/user-timing/case-sensitivity.any.js.ini
@@ -1,5 +1,5 @@ [case-sensitivity.any.worker.html] + expected: + if (flag_specific == "") and (product == "content_shell"): [OK, CRASH] [case-sensitivity.any.html] - expected: - if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [OK, CRASH]
diff --git a/third_party/blink/web_tests/external/wpt/element-timing/buffer-before-onload.html.ini b/third_party/blink/web_tests/external/wpt/vibration/api-is-present.html.ini similarity index 77% rename from third_party/blink/web_tests/external/wpt/element-timing/buffer-before-onload.html.ini rename to third_party/blink/web_tests/external/wpt/vibration/api-is-present.html.ini index 640488b..acd332b 100644 --- a/third_party/blink/web_tests/external/wpt/element-timing/buffer-before-onload.html.ini +++ b/third_party/blink/web_tests/external/wpt/vibration/api-is-present.html.ini
@@ -1,3 +1,3 @@ -[buffer-before-onload.html] +[api-is-present.html] expected: if (flag_specific == "") and (os == "linux") and (product == "content_shell"): CRASH
diff --git a/third_party/blink/web_tests/external/wpt/visual-viewport/viewport-unscaled-scroll.html.ini b/third_party/blink/web_tests/external/wpt/visual-viewport/viewport-unscaled-scroll.html.ini new file mode 100644 index 0000000..2d42fed --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/visual-viewport/viewport-unscaled-scroll.html.ini
@@ -0,0 +1,3 @@ +[viewport-unscaled-scroll.html] + expected: + if os == "win": [OK, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/wasm/jsapi/constructor/compile.any.js.ini b/third_party/blink/web_tests/external/wpt/wasm/jsapi/constructor/compile.any.js.ini deleted file mode 100644 index c77440f4..0000000 --- a/third_party/blink/web_tests/external/wpt/wasm/jsapi/constructor/compile.any.js.ini +++ /dev/null
@@ -1,5 +0,0 @@ -[compile.any.worker.html] - -[compile.any.html] - expected: - if os == "win": TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/interfaces/Animation/finished.html.ini b/third_party/blink/web_tests/external/wpt/web-animations/interfaces/Animation/finished.html.ini index ff75ca8..70c2d21 100644 --- a/third_party/blink/web_tests/external/wpt/web-animations/interfaces/Animation/finished.html.ini +++ b/third_party/blink/web_tests/external/wpt/web-animations/interfaces/Animation/finished.html.ini
@@ -1,6 +1,4 @@ [finished.html] [Test finished promise changes for animation duration changes] expected: - if (flag_specific == "") and (os == "linux") and (product == "chrome"): [PASS, FAIL] - if (flag_specific == "") and (os == "win"): [FAIL, PASS] - if flag_specific == "disable-layout-ng": [PASS, FAIL] + if product == "chrome": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/responsive/columnGap-expected.txt b/third_party/blink/web_tests/external/wpt/web-animations/responsive/columnGap-expected.txt new file mode 100644 index 0000000..940e19f --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/web-animations/responsive/columnGap-expected.txt
@@ -0,0 +1,6 @@ +This is a testharness.js-based test. +PASS column-gap responsive to style changes +FAIL column-gap clamped to 0px on keyframes assert_equals: expected "20px" but got "0px" +PASS column-gap responsive to inherited changes +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/responsive/columnGap.html b/third_party/blink/web_tests/external/wpt/web-animations/responsive/columnGap.html index fa85272..43d4415 100644 --- a/third_party/blink/web_tests/external/wpt/web-animations/responsive/columnGap.html +++ b/third_party/blink/web_tests/external/wpt/web-animations/responsive/columnGap.html
@@ -26,11 +26,11 @@ player.currentTime = 5; element.style.fontSize = '40px'; - assert_equals(getComputedStyle(element).columnGap, '0px'); + assert_equals(getComputedStyle(element).columnGap, '20px'); player.currentTime = 7.5; - assert_equals(getComputedStyle(element).columnGap, '0px'); -}, 'column-gap clamped to 0px'); + assert_equals(getComputedStyle(element).columnGap, '10px'); +}, 'column-gap clamped to 0px on keyframes'); test(function() { container.style.columnGap = 'normal';
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/responsive/columnGap.html.ini b/third_party/blink/web_tests/external/wpt/web-animations/responsive/columnGap.html.ini new file mode 100644 index 0000000..ee901b0 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/web-animations/responsive/columnGap.html.ini
@@ -0,0 +1,3 @@ +[columnGap.html] + [column-gap clamped to 0px on keyframes] + expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/responsive/lineHeight-expected.txt b/third_party/blink/web_tests/external/wpt/web-animations/responsive/lineHeight-expected.txt new file mode 100644 index 0000000..53aec54 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/web-animations/responsive/lineHeight-expected.txt
@@ -0,0 +1,8 @@ +This is a testharness.js-based test. +PASS lineHeight responsive to style changes +FAIL lineHeight clamped to 0px on keyframes assert_equals: expected "20px" but got "0px" +PASS lineHeight responsive to inherited changes from keyword +PASS lineHeight responsive to inherited changes from number +PASS lineHeight responsive to inherited changes from length +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/responsive/lineHeight.html b/third_party/blink/web_tests/external/wpt/web-animations/responsive/lineHeight.html index 16c12a7..03d45e5 100644 --- a/third_party/blink/web_tests/external/wpt/web-animations/responsive/lineHeight.html +++ b/third_party/blink/web_tests/external/wpt/web-animations/responsive/lineHeight.html
@@ -26,11 +26,11 @@ player.currentTime = 5; element.style.fontSize = '40px'; - assert_equals(getComputedStyle(element).lineHeight, '0px'); + assert_equals(getComputedStyle(element).lineHeight, '20px'); player.currentTime = 7.5; - assert_equals(getComputedStyle(element).lineHeight, '0px'); -}, 'lineHeight clamped to 0px'); + assert_equals(getComputedStyle(element).lineHeight, '10px'); +}, 'lineHeight clamped to 0px on keyframes'); test(function() { container.style.lineHeight = 'normal';
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/responsive/lineHeight.html.ini b/third_party/blink/web_tests/external/wpt/web-animations/responsive/lineHeight.html.ini new file mode 100644 index 0000000..16cd313 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/web-animations/responsive/lineHeight.html.ini
@@ -0,0 +1,3 @@ +[lineHeight.html] + [lineHeight clamped to 0px on keyframes] + expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/responsive/minHeight-expected.txt b/third_party/blink/web_tests/external/wpt/web-animations/responsive/minHeight-expected.txt new file mode 100644 index 0000000..824a22de --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/web-animations/responsive/minHeight-expected.txt
@@ -0,0 +1,5 @@ +This is a testharness.js-based test. +PASS minHeight responsive to style changes +FAIL minHeight clamped to 0px on keyframes assert_equals: expected "20px" but got "0px" +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/responsive/minHeight.html b/third_party/blink/web_tests/external/wpt/web-animations/responsive/minHeight.html index 7055b53..07474bc 100644 --- a/third_party/blink/web_tests/external/wpt/web-animations/responsive/minHeight.html +++ b/third_party/blink/web_tests/external/wpt/web-animations/responsive/minHeight.html
@@ -21,11 +21,15 @@ test(function() { element.style.fontSize = '10px'; - var player = element.animate([{minHeight: '30px'}, {minHeight: 'calc(30px - 2em)'}], 10); + var player = element.animate([{minHeight: '40px'}, {minHeight: 'calc(40px - 2em)'}], 10); player.pause(); - player.currentTime = 7.5; + + player.currentTime = 5; element.style.fontSize = '40px'; - assert_equals(getComputedStyle(element).minHeight, '0px'); -}, 'minHeight clamped to 0px'); + assert_equals(getComputedStyle(element).minHeight, '20px'); + + player.currentTime = 7.5; + assert_equals(getComputedStyle(element).minHeight, '10px'); +}, 'minHeight clamped to 0px on keyframes'); </script>
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/responsive/minHeight.html.ini b/third_party/blink/web_tests/external/wpt/web-animations/responsive/minHeight.html.ini new file mode 100644 index 0000000..c10d0530 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/web-animations/responsive/minHeight.html.ini
@@ -0,0 +1,3 @@ +[minHeight.html] + [minHeight clamped to 0px on keyframes] + expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/responsive/perspective-expected.txt b/third_party/blink/web_tests/external/wpt/web-animations/responsive/perspective-expected.txt new file mode 100644 index 0000000..6d1920a8 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/web-animations/responsive/perspective-expected.txt
@@ -0,0 +1,6 @@ +This is a testharness.js-based test. +PASS perspective responsive to style changes +FAIL perspective clamped to 0px on keyframes assert_equals: expected "20px" but got "0px" +PASS perspective responsive to inherited changes +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/responsive/perspective.html b/third_party/blink/web_tests/external/wpt/web-animations/responsive/perspective.html index 2c28526..f32b4db 100644 --- a/third_party/blink/web_tests/external/wpt/web-animations/responsive/perspective.html +++ b/third_party/blink/web_tests/external/wpt/web-animations/responsive/perspective.html
@@ -26,11 +26,11 @@ player.currentTime = 5; element.style.fontSize = '40px'; - assert_equals(getComputedStyle(element).perspective, '0px'); + assert_equals(getComputedStyle(element).perspective, '20px'); player.currentTime = 7.5; - assert_equals(getComputedStyle(element).perspective, '0px'); -}, 'perspective clamped to 0px'); + assert_equals(getComputedStyle(element).perspective, '10px'); +}, 'perspective clamped to 0px on keyframes'); test(function() { container.style.perspective = 'none';
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/responsive/perspective.html.ini b/third_party/blink/web_tests/external/wpt/web-animations/responsive/perspective.html.ini new file mode 100644 index 0000000..26dfb2f --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/web-animations/responsive/perspective.html.ini
@@ -0,0 +1,3 @@ +[perspective.html] + [perspective clamped to 0px on keyframes] + expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/responsive/rowGap-expected.txt b/third_party/blink/web_tests/external/wpt/web-animations/responsive/rowGap-expected.txt new file mode 100644 index 0000000..ebe4ed0 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/web-animations/responsive/rowGap-expected.txt
@@ -0,0 +1,6 @@ +This is a testharness.js-based test. +PASS row-gap responsive to style changes +FAIL row-gap clamped to 0px on keyframes assert_equals: expected "20px" but got "0px" +PASS row-gap responsive to inherited changes +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/responsive/rowGap.html b/third_party/blink/web_tests/external/wpt/web-animations/responsive/rowGap.html index ad18461..b7dae62f 100644 --- a/third_party/blink/web_tests/external/wpt/web-animations/responsive/rowGap.html +++ b/third_party/blink/web_tests/external/wpt/web-animations/responsive/rowGap.html
@@ -26,11 +26,11 @@ player.currentTime = 5; element.style.fontSize = '40px'; - assert_equals(getComputedStyle(element).rowGap, '0px'); + assert_equals(getComputedStyle(element).rowGap, '20px'); player.currentTime = 7.5; - assert_equals(getComputedStyle(element).rowGap, '0px'); -}, 'row-gap clamped to 0px'); + assert_equals(getComputedStyle(element).rowGap, '10px'); +}, 'row-gap clamped to 0px on keyframes'); test(function() { container.style.rowGap = 'normal';
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/responsive/rowGap.html.ini b/third_party/blink/web_tests/external/wpt/web-animations/responsive/rowGap.html.ini new file mode 100644 index 0000000..fd84d8d --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/web-animations/responsive/rowGap.html.ini
@@ -0,0 +1,3 @@ +[rowGap.html] + [row-gap clamped to 0px on keyframes] + expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/timing-model/timelines/document-timelines.html.ini b/third_party/blink/web_tests/external/wpt/web-animations/timing-model/timelines/document-timelines.html.ini new file mode 100644 index 0000000..08dcd48 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/web-animations/timing-model/timelines/document-timelines.html.ini
@@ -0,0 +1,4 @@ +[document-timelines.html] + [Document timelines report current time relative to navigationStart] + expected: + if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/timing-model/timelines/sibling-iframe-timeline.html.ini b/third_party/blink/web_tests/external/wpt/web-animations/timing-model/timelines/sibling-iframe-timeline.html.ini index 7fd03e0..262b1a1 100644 --- a/third_party/blink/web_tests/external/wpt/web-animations/timing-model/timelines/sibling-iframe-timeline.html.ini +++ b/third_party/blink/web_tests/external/wpt/web-animations/timing-model/timelines/sibling-iframe-timeline.html.ini
@@ -1,6 +1,4 @@ [sibling-iframe-timeline.html] [animation tied to another frame's timeline runs properly] expected: - if (flag_specific == "") and (product == "content_shell") and (os == "linux"): FAIL - if (flag_specific == "") and (product == "content_shell") and (os == "win"): [PASS, FAIL] - if flag_specific == "disable-layout-ng": FAIL + if (os == "linux") and (flag_specific == "") and (product == "content_shell"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/web-bundle/subresource-loading/reuse-web-bundle-resource.https.tentative.html.ini b/third_party/blink/web_tests/external/wpt/web-bundle/subresource-loading/reuse-web-bundle-resource.https.tentative.html.ini index 8d4bbc6..ef413eb3 100644 --- a/third_party/blink/web_tests/external/wpt/web-bundle/subresource-loading/reuse-web-bundle-resource.https.tentative.html.ini +++ b/third_party/blink/web_tests/external/wpt/web-bundle/subresource-loading/reuse-web-bundle-resource.https.tentative.html.ini
@@ -1,4 +1,5 @@ [reuse-web-bundle-resource.https.tentative.html] ['remove(), then append()' should reuse webbundle resources] expected: - if flag_specific == "disable-layout-ng": [PASS, FAIL] + if (flag_specific == "") and (product == "chrome"): [PASS, FAIL] + if flag_specific == "disable-site-isolation-trials": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/web-locks/bfcache/release-across-thread.tentative.https.html.ini b/third_party/blink/web_tests/external/wpt/web-locks/bfcache/release-across-thread.tentative.https.html.ini deleted file mode 100644 index abcdb1a..0000000 --- a/third_party/blink/web_tests/external/wpt/web-locks/bfcache/release-across-thread.tentative.https.html.ini +++ /dev/null
@@ -1,3 +0,0 @@ -[release-across-thread.tentative.https.html] - expected: - if flag_specific == "disable-layout-ng": [OK, CRASH]
diff --git a/third_party/blink/web_tests/external/wpt/web-locks/bfcache/sharedworker-multiple.tentative.https.html.ini b/third_party/blink/web_tests/external/wpt/web-locks/bfcache/sharedworker-multiple.tentative.https.html.ini new file mode 100644 index 0000000..169cb70 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/web-locks/bfcache/sharedworker-multiple.tentative.https.html.ini
@@ -0,0 +1,3 @@ +[sharedworker-multiple.tentative.https.html] + expected: + if os == "win": TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-analysernode-interface/test-analyser-output.html.ini b/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-analysernode-interface/test-analyser-output.html.ini index b750494..c339ed3 100644 --- a/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-analysernode-interface/test-analyser-output.html.ini +++ b/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-analysernode-interface/test-analyser-output.html.ini
@@ -1,4 +1,6 @@ [test-analyser-output.html] [AnalyserNode output] expected: - if product == "chrome": [PASS, FAIL] + if (flag_specific == "") and (os == "win"): [PASS, FAIL] + if flag_specific == "disable-layout-ng": [PASS, FAIL] + if flag_specific == "disable-site-isolation-trials": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini b/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini index 2567da0b..5249d5bd 100644 --- a/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini +++ b/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
@@ -1,10 +1,3 @@ [sub-sample-buffer-stitching.html] expected: - if product == "chrome": [OK, TIMEOUT] - [Executing "buffer-stitching-2"] - expected: - if product == "chrome": [PASS, TIMEOUT] - - [Audit report] - expected: - if product == "chrome": [PASS, NOTRUN] + if (product == "content_shell") and (flag_specific == ""): [OK, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-audiocontext-interface/suspend-with-navigation.html.ini b/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-audiocontext-interface/suspend-with-navigation.html.ini index 652f921..1fbda7c 100644 --- a/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-audiocontext-interface/suspend-with-navigation.html.ini +++ b/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-audiocontext-interface/suspend-with-navigation.html.ini
@@ -1,6 +1,6 @@ [suspend-with-navigation.html] expected: - if flag_specific == "disable-layout-ng": [OK, CRASH] + if flag_specific == "disable-layout-ng": CRASH [suspend() with navigation] expected: if product == "chrome": PRECONDITION_FAILED
diff --git a/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-output-channel-count.https.html.ini b/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-output-channel-count.https.html.ini deleted file mode 100644 index 97f1aa6..0000000 --- a/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-output-channel-count.https.html.ini +++ /dev/null
@@ -1,9 +0,0 @@ -[audioworkletnode-output-channel-count.https.html] - [X The expected output channel count is not equal to 17. Got 1.] - expected: FAIL - - [< [Dynamically change the channel count to if unspecified.\] 1 out of 1 assertions were failed.] - expected: FAIL - - [# AUDIT TASK RUNNER FINISHED: 1 out of 2 tasks were failed.] - expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-convolvernode-interface/active-processing.https.html.ini b/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-convolvernode-interface/active-processing.https.html.ini index c45c45f..d569653 100644 --- a/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-convolvernode-interface/active-processing.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-convolvernode-interface/active-processing.https.html.ini
@@ -7,3 +7,9 @@ [# AUDIT TASK RUNNER FINISHED: 1 out of 2 tasks were failed.] expected: FAIL + + [< [test\] 1 out of 2 assertions were failed.] + expected: FAIL + + [X Number of distinct values is not equal to 2. Got 1.] + expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html.ini b/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html.ini index a30e93b..981f6ff 100644 --- a/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html.ini +++ b/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html.ini
@@ -1,4 +1,4 @@ [mediaElementAudioSourceToScriptProcessorTest.html] [All data processed correctly] expected: - if flag_specific == "disable-layout-ng": [PASS, FAIL] + if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/webcodecs/full-cycle-test.https.any.js.ini b/third_party/blink/web_tests/external/wpt/webcodecs/full-cycle-test.https.any.js.ini new file mode 100644 index 0000000..d492159 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/webcodecs/full-cycle-test.https.any.js.ini
@@ -0,0 +1,46 @@ +[full-cycle-test.https.any.worker.html?vp9_p2] + +[full-cycle-test.https.any.worker.html?vp8] + +[full-cycle-test.https.any.html?h264_annexb] + [Encoding and decoding cycle] + expected: PRECONDITION_FAILED + + [Encoding and decoding cycle w/ stripped color space] + expected: PRECONDITION_FAILED + + +[full-cycle-test.https.any.worker.html?vp9_p0] + +[full-cycle-test.https.any.html?h264_avc] + [Encoding and decoding cycle] + expected: PRECONDITION_FAILED + + [Encoding and decoding cycle w/ stripped color space] + expected: PRECONDITION_FAILED + + +[full-cycle-test.https.any.html?av1] + +[full-cycle-test.https.any.html?vp9_p2] + +[full-cycle-test.https.any.html?vp8] + +[full-cycle-test.https.any.worker.html?av1] + +[full-cycle-test.https.any.worker.html?h264_annexb] + [Encoding and decoding cycle] + expected: PRECONDITION_FAILED + + [Encoding and decoding cycle w/ stripped color space] + expected: PRECONDITION_FAILED + + +[full-cycle-test.https.any.html?vp9_p0] + +[full-cycle-test.https.any.worker.html?h264_avc] + [Encoding and decoding cycle] + expected: PRECONDITION_FAILED + + [Encoding and decoding cycle w/ stripped color space] + expected: PRECONDITION_FAILED
diff --git a/third_party/blink/web_tests/external/wpt/webcodecs/reconfiguring-encoder.https.any.js.ini b/third_party/blink/web_tests/external/wpt/webcodecs/reconfiguring-encoder.https.any.js.ini new file mode 100644 index 0000000..9c56867 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/webcodecs/reconfiguring-encoder.https.any.js.ini
@@ -0,0 +1,35 @@ +[reconfiguring-encoder.https.any.worker.html?h264_annexb] + [Reconfiguring encoder] + expected: PRECONDITION_FAILED + + +[reconfiguring-encoder.https.any.worker.html?h264_avc] + [Reconfiguring encoder] + expected: PRECONDITION_FAILED + + +[reconfiguring-encoder.https.any.html?vp8] + +[reconfiguring-encoder.https.any.html?av1] + +[reconfiguring-encoder.https.any.worker.html?av1] + +[reconfiguring-encoder.https.any.html?h264_annexb] + [Reconfiguring encoder] + expected: PRECONDITION_FAILED + + +[reconfiguring-encoder.https.any.html?h264_avc] + [Reconfiguring encoder] + expected: PRECONDITION_FAILED + + +[reconfiguring-encoder.https.any.html?vp9_p0] + +[reconfiguring-encoder.https.any.worker.html?vp9_p0] + +[reconfiguring-encoder.https.any.worker.html?vp9_p2] + +[reconfiguring-encoder.https.any.worker.html?vp8] + +[reconfiguring-encoder.https.any.html?vp9_p2]
diff --git a/third_party/blink/web_tests/external/wpt/webcodecs/reconfiguring-encoder.https.any.worker_h264_annexb-expected.txt b/third_party/blink/web_tests/external/wpt/webcodecs/reconfiguring-encoder.https.any.worker_h264_annexb-expected.txt new file mode 100644 index 0000000..e39bac0 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/webcodecs/reconfiguring-encoder.https.any.worker_h264_annexb-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +NOTRUN Reconfiguring encoder Unsupported config: {"codec":"avc1.42001E","avc":{"format":"annexb"},"hardwareAcceleration":"prefer-software","bitrateMode":"constant","scalabilityMode":"L1T2","framerate":30,"width":800,"height":600,"bitrate":3000000} +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/external/wpt/webcodecs/reconfiguring-encoder.https.any.worker_h264_avc-expected.txt b/third_party/blink/web_tests/external/wpt/webcodecs/reconfiguring-encoder.https.any.worker_h264_avc-expected.txt new file mode 100644 index 0000000..85865e4 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/webcodecs/reconfiguring-encoder.https.any.worker_h264_avc-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +NOTRUN Reconfiguring encoder Unsupported config: {"codec":"avc1.42001E","avc":{"format":"avc"},"hardwareAcceleration":"prefer-software","bitrateMode":"constant","scalabilityMode":"L1T2","framerate":30,"width":800,"height":600,"bitrate":3000000} +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/external/wpt/webcodecs/reconfiguring-encoder.https.any_h264_annexb-expected.txt b/third_party/blink/web_tests/external/wpt/webcodecs/reconfiguring-encoder.https.any_h264_annexb-expected.txt new file mode 100644 index 0000000..e39bac0 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/webcodecs/reconfiguring-encoder.https.any_h264_annexb-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +NOTRUN Reconfiguring encoder Unsupported config: {"codec":"avc1.42001E","avc":{"format":"annexb"},"hardwareAcceleration":"prefer-software","bitrateMode":"constant","scalabilityMode":"L1T2","framerate":30,"width":800,"height":600,"bitrate":3000000} +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/external/wpt/webcodecs/reconfiguring-encoder.https.any_h264_avc-expected.txt b/third_party/blink/web_tests/external/wpt/webcodecs/reconfiguring-encoder.https.any_h264_avc-expected.txt new file mode 100644 index 0000000..85865e4 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/webcodecs/reconfiguring-encoder.https.any_h264_avc-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +NOTRUN Reconfiguring encoder Unsupported config: {"codec":"avc1.42001E","avc":{"format":"avc"},"hardwareAcceleration":"prefer-software","bitrateMode":"constant","scalabilityMode":"L1T2","framerate":30,"width":800,"height":600,"bitrate":3000000} +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/external/wpt/webcodecs/temporal-svc-encoding.https.any.js.ini b/third_party/blink/web_tests/external/wpt/webcodecs/temporal-svc-encoding.https.any.js.ini new file mode 100644 index 0000000..d42d43cd --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/webcodecs/temporal-svc-encoding.https.any.js.ini
@@ -0,0 +1,27 @@ +[temporal-svc-encoding.https.any.worker.html?h264] + [SVC L1T2] + expected: PRECONDITION_FAILED + + [SVC L1T3] + expected: PRECONDITION_FAILED + + +[temporal-svc-encoding.https.any.html?vp9] + +[temporal-svc-encoding.https.any.html?h264] + [SVC L1T2] + expected: PRECONDITION_FAILED + + [SVC L1T3] + expected: PRECONDITION_FAILED + + +[temporal-svc-encoding.https.any.html?vp8] + +[temporal-svc-encoding.https.any.worker.html?av1] + +[temporal-svc-encoding.https.any.html?av1] + +[temporal-svc-encoding.https.any.worker.html?vp9] + +[temporal-svc-encoding.https.any.worker.html?vp8]
diff --git a/third_party/blink/web_tests/external/wpt/webcodecs/video-encoder-utils.js b/third_party/blink/web_tests/external/wpt/webcodecs/video-encoder-utils.js index fad6b90..7201e05 100644 --- a/third_party/blink/web_tests/external/wpt/webcodecs/video-encoder-utils.js +++ b/third_party/blink/web_tests/external/wpt/webcodecs/video-encoder-utils.js
@@ -6,12 +6,6 @@ supported = support.supported; } catch (e) {} - if (!supported) { - // Mark the test 'passed', unfortunately assert_implements_optional() - // doesn't do it by itself. - test.done(); - } - assert_implements_optional(supported, 'Unsupported config: ' + JSON.stringify(config)); }
diff --git a/third_party/blink/web_tests/external/wpt/webmessaging/broadcastchannel/workers.html.ini b/third_party/blink/web_tests/external/wpt/webmessaging/broadcastchannel/workers.html.ini new file mode 100644 index 0000000..fd51247 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/webmessaging/broadcastchannel/workers.html.ini
@@ -0,0 +1,3 @@ +[workers.html] + expected: + if flag_specific == "disable-site-isolation-trials": TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/webmessaging/message-channels/worker-post-after-close.any.js.ini b/third_party/blink/web_tests/external/wpt/webmessaging/message-channels/worker-post-after-close.any.js.ini index 38e85428..be207b65 100644 --- a/third_party/blink/web_tests/external/wpt/webmessaging/message-channels/worker-post-after-close.any.js.ini +++ b/third_party/blink/web_tests/external/wpt/webmessaging/message-channels/worker-post-after-close.any.js.ini
@@ -1,5 +1,5 @@ [worker-post-after-close.any.html] - -[worker-post-after-close.any.worker.html] expected: if os == "win": [OK, TIMEOUT] + +[worker-post-after-close.any.worker.html]
diff --git a/third_party/blink/web_tests/external/wpt/webmessaging/multi-globals/broadcastchannel-incumbent.sub.html.ini b/third_party/blink/web_tests/external/wpt/webmessaging/multi-globals/broadcastchannel-incumbent.sub.html.ini index b15baab..b7ed4395 100644 --- a/third_party/blink/web_tests/external/wpt/webmessaging/multi-globals/broadcastchannel-incumbent.sub.html.ini +++ b/third_party/blink/web_tests/external/wpt/webmessaging/multi-globals/broadcastchannel-incumbent.sub.html.ini
@@ -1,8 +1,7 @@ [broadcastchannel-incumbent.sub.html] expected: - if os == "win": [OK, TIMEOUT] + if os == "win": TIMEOUT [The incumbent page being cross-origin must not prevent the BroadcastChannel message from being seen] expected: - if (flag_specific == "") and (product == "chrome"): PASS - if flag_specific == "disable-site-isolation-trials": PASS - FAIL + if (flag_specific == "") and (product == "content_shell"): FAIL + if flag_specific == "disable-layout-ng": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/operators/operator-dictionary-largeop-003.html.ini b/third_party/blink/web_tests/external/wpt/webmessaging/postMessage_ArrayBuffer.sub.htm.ini similarity index 67% rename from third_party/blink/web_tests/external/wpt/mathml/presentation-markup/operators/operator-dictionary-largeop-003.html.ini rename to third_party/blink/web_tests/external/wpt/webmessaging/postMessage_ArrayBuffer.sub.htm.ini index 9d853344..244903d 100644 --- a/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/operators/operator-dictionary-largeop-003.html.ini +++ b/third_party/blink/web_tests/external/wpt/webmessaging/postMessage_ArrayBuffer.sub.htm.ini
@@ -1,3 +1,3 @@ -[operator-dictionary-largeop-003.html] +[postMessage_ArrayBuffer.sub.htm] expected: if flag_specific == "disable-site-isolation-trials": [OK, CRASH]
diff --git a/third_party/blink/web_tests/external/wpt/webmessaging/without-ports/020.html.ini b/third_party/blink/web_tests/external/wpt/webmessaging/without-ports/020.html.ini deleted file mode 100644 index c4b9b177..0000000 --- a/third_party/blink/web_tests/external/wpt/webmessaging/without-ports/020.html.ini +++ /dev/null
@@ -1,5 +0,0 @@ -[020.html] - [cross-origin test] - expected: - if (flag_specific == "") and (product == "content_shell"): [PASS, FAIL] - if flag_specific == "disable-layout-ng": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/webmessaging/without-ports/021.html.ini b/third_party/blink/web_tests/external/wpt/webmessaging/without-ports/021.html.ini new file mode 100644 index 0000000..fd4aad1 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/webmessaging/without-ports/021.html.ini
@@ -0,0 +1,4 @@ +[021.html] + [cross-origin test] + expected: + if flag_specific == "disable-layout-ng": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/webnn/idlharness.https.any.js.ini b/third_party/blink/web_tests/external/wpt/webnn/idlharness.https.any.js.ini index 1f6ede4..c656216 100644 --- a/third_party/blink/web_tests/external/wpt/webnn/idlharness.https.any.js.ini +++ b/third_party/blink/web_tests/external/wpt/webnn/idlharness.https.any.js.ini
@@ -1,4 +1,6 @@ [idlharness.https.any.html] + expected: + if product == "chrome": [ERROR, OK] [idl_test setup] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-onicecandidateerror.https.html.ini b/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-onicecandidateerror.https.html.ini deleted file mode 100644 index 494d968..0000000 --- a/third_party/blink/web_tests/external/wpt/webrtc/RTCPeerConnection-onicecandidateerror.https.html.ini +++ /dev/null
@@ -1,4 +0,0 @@ -[RTCPeerConnection-onicecandidateerror.https.html] - expected: [OK, TIMEOUT] - [Surfacing onicecandidateerror] - expected: [PASS, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/websockets/stream/tentative/close.any.js.ini b/third_party/blink/web_tests/external/wpt/websockets/stream/tentative/close.any.js.ini index a72ddf5..65ce6567 100644 --- a/third_party/blink/web_tests/external/wpt/websockets/stream/tentative/close.any.js.ini +++ b/third_party/blink/web_tests/external/wpt/websockets/stream/tentative/close.any.js.ini
@@ -4,18 +4,33 @@ [close.any.worker.html?wpt_flags=h2] expected: - if (flag_specific == "") and (product == "content_shell") and (os == "linux"): [OK, TIMEOUT] + if product == "chrome": [OK, TIMEOUT] [canceling the readable with a code should send that code] - expected: [PASS, NOTRUN] + expected: + if product == "chrome": [PASS, TIMEOUT] [canceling the readable should result in a clean close] expected: [PASS, TIMEOUT] [canceling the readable with a code and reason should use them] - expected: [PASS, NOTRUN] + expected: + if product == "chrome": [PASS, NOTRUN] [canceling the readable with a reason but no code should be ignored] - expected: [PASS, NOTRUN] + expected: + if product == "chrome": [PASS, NOTRUN] + + [canceling the readable with an invalid reason should be ignored] + expected: + if product == "chrome": [PASS, NOTRUN] + + [canceling the readable with a DOMException should be ignored] + expected: + if product == "chrome": [PASS, NOTRUN] + + [canceling the readable with an invalid code should be ignored] + expected: + if product == "chrome": [PASS, NOTRUN] [close.any.serviceworker.html?wss] @@ -23,6 +38,16 @@ [close.any.worker.html?wss] [close.any.html?wpt_flags=h2] + expected: + if product == "chrome": [OK, TIMEOUT] + [canceling the readable with an invalid reason should be ignored] + expected: + if product == "chrome": [PASS, TIMEOUT] + + [canceling the readable with a DOMException should be ignored] + expected: + if product == "chrome": [PASS, NOTRUN] + [close.any.sharedworker.html?wpt_flags=h2] [canceling the readable with a code should send that code] @@ -51,3 +76,8 @@ [close.any.serviceworker.html?wpt_flags=h2] + expected: + if product == "chrome": [OK, TIMEOUT] + [canceling the readable with a DOMException should be ignored] + expected: + if product == "chrome": [PASS, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/webstorage/localstorage-basic-partitioned.tentative.sub.html.ini b/third_party/blink/web_tests/external/wpt/webstorage/localstorage-basic-partitioned.tentative.sub.html.ini index 60e8f28..8c073029 100644 --- a/third_party/blink/web_tests/external/wpt/webstorage/localstorage-basic-partitioned.tentative.sub.html.ini +++ b/third_party/blink/web_tests/external/wpt/webstorage/localstorage-basic-partitioned.tentative.sub.html.ini
@@ -1,3 +1,5 @@ [localstorage-basic-partitioned.tentative.sub.html] + expected: + if product == "chrome": [OK, ERROR] [Simple test for partitioned localStorage] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/webxr/dom-overlay/ar_dom_overlay.https.html.ini b/third_party/blink/web_tests/external/wpt/webxr/dom-overlay/ar_dom_overlay.https.html.ini index bd83b2c..05b1e4a5 100644 --- a/third_party/blink/web_tests/external/wpt/webxr/dom-overlay/ar_dom_overlay.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/webxr/dom-overlay/ar_dom_overlay.https.html.ini
@@ -1,5 +1,6 @@ [ar_dom_overlay.https.html] expected: + if (product == "content_shell") and (flag_specific == "highdpi"): [OK, CRASH] if product == "chrome": TIMEOUT [Ensures DOM Overlay rejected without root element] expected:
diff --git a/third_party/blink/web_tests/external/wpt/webxr/events_referenceSpace_reset_inline.https.html.ini b/third_party/blink/web_tests/external/wpt/webxr/events_referenceSpace_reset_inline.https.html.ini index 00c1d56..6967e14 100644 --- a/third_party/blink/web_tests/external/wpt/webxr/events_referenceSpace_reset_inline.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/webxr/events_referenceSpace_reset_inline.https.html.ini
@@ -1,7 +1,11 @@ [events_referenceSpace_reset_inline.https.html] - expected: TIMEOUT + expected: + if os == "win": [OK, TIMEOUT] + TIMEOUT [XRSession resetpose from a device properly fires off the right events for non-immersive sessions - webgl] - expected: FAIL + expected: + if os == "linux": FAIL [XRSession resetpose from a device properly fires off the right events for non-immersive sessions - webgl2] - expected: TIMEOUT + expected: + if os == "linux": TIMEOUT
diff --git a/third_party/blink/web_tests/external/wpt/webxr/xrDevice_requestSession_optionalFeatures.https.html.ini b/third_party/blink/web_tests/external/wpt/webxr/xrDevice_requestSession_optionalFeatures.https.html.ini index f62357f..e0a82b3 100644 --- a/third_party/blink/web_tests/external/wpt/webxr/xrDevice_requestSession_optionalFeatures.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/webxr/xrDevice_requestSession_optionalFeatures.https.html.ini
@@ -1,4 +1,6 @@ [xrDevice_requestSession_optionalFeatures.https.html] + expected: + if flag_specific == "disable-site-isolation-trials": [OK, CRASH] [Tests requestSession accepts XRSessionInit dictionary - webgl] expected: if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/webxr/xrStationaryReferenceSpace_floorlevel_updates.https.html.ini b/third_party/blink/web_tests/external/wpt/webxr/xrStationaryReferenceSpace_floorlevel_updates.https.html.ini index 5011c0d..e1ee827 100644 --- a/third_party/blink/web_tests/external/wpt/webxr/xrStationaryReferenceSpace_floorlevel_updates.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/webxr/xrStationaryReferenceSpace_floorlevel_updates.https.html.ini
@@ -3,10 +3,6 @@ expected: if product == "chrome": FAIL - ['floor-level' XRStationaryReferenceSpace updates properly when the transform changes for non-immersive sessions - webgl2] - expected: - if product == "chrome": [PASS, FAIL] - ['floor-level' XRStationaryReferenceSpace updates properly when the transform changes for non-immersive sessions - webgl] expected: if product == "chrome": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/external/wpt/webxr/xr_viewport_scale.https.html.ini b/third_party/blink/web_tests/external/wpt/webxr/xr_viewport_scale.https.html.ini index b0115bb..42d4822 100644 --- a/third_party/blink/web_tests/external/wpt/webxr/xr_viewport_scale.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/webxr/xr_viewport_scale.https.html.ini
@@ -1,6 +1,6 @@ [xr_viewport_scale.https.html] expected: - if flag_specific == "disable-site-isolation-trials": [OK, TIMEOUT] + if flag_specific == "disable-layout-ng": [OK, TIMEOUT] [requestViewportScale valid viewport for inline session - webgl] expected: if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/workers/interfaces/WorkerGlobalScope/location/worker-separate-file.html.ini b/third_party/blink/web_tests/external/wpt/workers/interfaces/WorkerGlobalScope/location/worker-separate-file.html.ini deleted file mode 100644 index 8bae788..0000000 --- a/third_party/blink/web_tests/external/wpt/workers/interfaces/WorkerGlobalScope/location/worker-separate-file.html.ini +++ /dev/null
@@ -1,3 +0,0 @@ -[worker-separate-file.html] - expected: - if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [OK, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/workers/interfaces/SharedWorkerGlobalScope/name/setting.html.ini b/third_party/blink/web_tests/external/wpt/workers/interfaces/WorkerGlobalScope/onerror/exception-in-onerror.html.ini similarity index 74% copy from third_party/blink/web_tests/external/wpt/workers/interfaces/SharedWorkerGlobalScope/name/setting.html.ini copy to third_party/blink/web_tests/external/wpt/workers/interfaces/WorkerGlobalScope/onerror/exception-in-onerror.html.ini index 2244b252..17e25684 100644 --- a/third_party/blink/web_tests/external/wpt/workers/interfaces/SharedWorkerGlobalScope/name/setting.html.ini +++ b/third_party/blink/web_tests/external/wpt/workers/interfaces/WorkerGlobalScope/onerror/exception-in-onerror.html.ini
@@ -1,3 +1,3 @@ -[setting.html] +[exception-in-onerror.html] expected: if flag_specific == "disable-site-isolation-trials": [OK, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/workers/interfaces/WorkerGlobalScope/self.any.js.ini b/third_party/blink/web_tests/external/wpt/workers/interfaces/WorkerGlobalScope/self.any.js.ini deleted file mode 100644 index 33a7441f..0000000 --- a/third_party/blink/web_tests/external/wpt/workers/interfaces/WorkerGlobalScope/self.any.js.ini +++ /dev/null
@@ -1,7 +0,0 @@ -[self.any.serviceworker.html] - -[self.any.worker.html] - expected: - if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [OK, TIMEOUT] - -[self.any.sharedworker.html]
diff --git a/third_party/blink/web_tests/external/wpt/workers/interfaces/SharedWorkerGlobalScope/name/setting.html.ini b/third_party/blink/web_tests/external/wpt/workers/interfaces/WorkerUtils/WindowTimers/002.html.ini similarity index 84% rename from third_party/blink/web_tests/external/wpt/workers/interfaces/SharedWorkerGlobalScope/name/setting.html.ini rename to third_party/blink/web_tests/external/wpt/workers/interfaces/WorkerUtils/WindowTimers/002.html.ini index 2244b252..e0db37d 100644 --- a/third_party/blink/web_tests/external/wpt/workers/interfaces/SharedWorkerGlobalScope/name/setting.html.ini +++ b/third_party/blink/web_tests/external/wpt/workers/interfaces/WorkerUtils/WindowTimers/002.html.ini
@@ -1,3 +1,3 @@ -[setting.html] +[002.html] expected: if flag_specific == "disable-site-isolation-trials": [OK, TIMEOUT]
diff --git a/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/operators/operator-dictionary-largeop-003.html.ini b/third_party/blink/web_tests/external/wpt/workers/nested_worker_importScripts.worker.js.ini similarity index 65% copy from third_party/blink/web_tests/external/wpt/mathml/presentation-markup/operators/operator-dictionary-largeop-003.html.ini copy to third_party/blink/web_tests/external/wpt/workers/nested_worker_importScripts.worker.js.ini index 9d853344..cdc8217 100644 --- a/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/operators/operator-dictionary-largeop-003.html.ini +++ b/third_party/blink/web_tests/external/wpt/workers/nested_worker_importScripts.worker.js.ini
@@ -1,3 +1,3 @@ -[operator-dictionary-largeop-003.html] +[nested_worker_importScripts.worker.html] expected: if flag_specific == "disable-site-isolation-trials": [OK, CRASH]
diff --git a/third_party/blink/web_tests/external/wpt/workers/semantics/interface-objects/003.any.js.ini b/third_party/blink/web_tests/external/wpt/workers/semantics/interface-objects/003.any.js.ini index d5372c4..d6e9fa7b 100644 --- a/third_party/blink/web_tests/external/wpt/workers/semantics/interface-objects/003.any.js.ini +++ b/third_party/blink/web_tests/external/wpt/workers/semantics/interface-objects/003.any.js.ini
@@ -1,4 +1,6 @@ [003.any.sharedworker.html] + expected: + if os == "win": [OK, TIMEOUT] [The ApplicationCache interface object should be exposed] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/workers/shared-worker-in-data-url-context.window.js.ini b/third_party/blink/web_tests/external/wpt/workers/shared-worker-in-data-url-context.window.js.ini index 3e4f610..e0d2ea3d 100644 --- a/third_party/blink/web_tests/external/wpt/workers/shared-worker-in-data-url-context.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/workers/shared-worker-in-data-url-context.window.js.ini
@@ -1,6 +1,4 @@ [shared-worker-in-data-url-context.window.html] - expected: - if (flag_specific == "") and (product == "content_shell"): TIMEOUT [Create a shared worker in a data url frame] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/xhr/abort-after-send.any.js.ini b/third_party/blink/web_tests/external/wpt/xhr/abort-after-send.any.js.ini index e3c68023..81d696c3 100644 --- a/third_party/blink/web_tests/external/wpt/xhr/abort-after-send.any.js.ini +++ b/third_party/blink/web_tests/external/wpt/xhr/abort-after-send.any.js.ini
@@ -1,10 +1,10 @@ [abort-after-send.any.html] - expected: - if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [OK, TIMEOUT] [XMLHttpRequest: abort() after send()] expected: FAIL [abort-after-send.any.worker.html] + expected: + if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [OK, TIMEOUT] [XMLHttpRequest: abort() after send()] expected: FAIL
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/css/css-overflow/scrollable-overflow-zero-one-axis-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/css/css-overflow/scrollable-overflow-zero-one-axis-expected.txt new file mode 100644 index 0000000..b1d260a --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/css/css-overflow/scrollable-overflow-zero-one-axis-expected.txt
@@ -0,0 +1,25 @@ +This is a testharness.js-based test. +PASS .scroll 1 +FAIL .scroll 2 assert_equals: +<div class="scroll zero-w" data-expected-scroll-width="100"> + <div class="zero-h"></div> +</div> +scrollWidth expected 100 but got 0 +PASS .scroll 3 +FAIL .scroll 4 assert_equals: +<div class="scroll zero-w flex-col" data-expected-scroll-width="100"> + <div class="zero-h"></div> +</div> +scrollWidth expected 100 but got 1 +FAIL .scroll 5 assert_equals: +<div class="scroll zero-h grid" data-expected-scroll-height="100"> + <div class="zero-w"></div> +</div> +scrollHeight expected 100 but got 0 +FAIL .scroll 6 assert_equals: +<div class="scroll zero-w grid" data-expected-scroll-width="100"> + <div class="zero-h"></div> +</div> +scrollWidth expected 100 but got 1 +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/webcodecs/full-cycle-test.https.any.worker_h264_annexb-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/webcodecs/full-cycle-test.https.any.worker_h264_annexb-expected.txt new file mode 100644 index 0000000..51e58ed7e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/webcodecs/full-cycle-test.https.any.worker_h264_annexb-expected.txt
@@ -0,0 +1,5 @@ +This is a testharness.js-based test. +NOTRUN Encoding and decoding cycle Unsupported config: {"codec":"avc1.42001E","avc":{"format":"annexb"},"hasEmbeddedColorSpace":true,"hardwareAcceleration":"prefer-software","width":320,"height":200,"bitrate":1000000,"bitrateMode":"constant","framerate":30} +NOTRUN Encoding and decoding cycle w/ stripped color space Unsupported config: {"codec":"avc1.42001E","avc":{"format":"annexb"},"hasEmbeddedColorSpace":true,"hardwareAcceleration":"prefer-software","width":320,"height":200,"bitrate":1000000,"bitrateMode":"constant","framerate":30} +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/webcodecs/full-cycle-test.https.any.worker_h264_avc-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/webcodecs/full-cycle-test.https.any.worker_h264_avc-expected.txt new file mode 100644 index 0000000..4885b9f7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/webcodecs/full-cycle-test.https.any.worker_h264_avc-expected.txt
@@ -0,0 +1,5 @@ +This is a testharness.js-based test. +NOTRUN Encoding and decoding cycle Unsupported config: {"codec":"avc1.42001E","avc":{"format":"avc"},"hasEmbeddedColorSpace":true,"hardwareAcceleration":"prefer-software","width":320,"height":200,"bitrate":1000000,"bitrateMode":"constant","framerate":30} +NOTRUN Encoding and decoding cycle w/ stripped color space Unsupported config: {"codec":"avc1.42001E","avc":{"format":"avc"},"hasEmbeddedColorSpace":true,"hardwareAcceleration":"prefer-software","width":320,"height":200,"bitrate":1000000,"bitrateMode":"constant","framerate":30} +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/webcodecs/full-cycle-test.https.any_h264_annexb-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/webcodecs/full-cycle-test.https.any_h264_annexb-expected.txt new file mode 100644 index 0000000..51e58ed7e --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/webcodecs/full-cycle-test.https.any_h264_annexb-expected.txt
@@ -0,0 +1,5 @@ +This is a testharness.js-based test. +NOTRUN Encoding and decoding cycle Unsupported config: {"codec":"avc1.42001E","avc":{"format":"annexb"},"hasEmbeddedColorSpace":true,"hardwareAcceleration":"prefer-software","width":320,"height":200,"bitrate":1000000,"bitrateMode":"constant","framerate":30} +NOTRUN Encoding and decoding cycle w/ stripped color space Unsupported config: {"codec":"avc1.42001E","avc":{"format":"annexb"},"hasEmbeddedColorSpace":true,"hardwareAcceleration":"prefer-software","width":320,"height":200,"bitrate":1000000,"bitrateMode":"constant","framerate":30} +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/webcodecs/full-cycle-test.https.any_h264_avc-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/webcodecs/full-cycle-test.https.any_h264_avc-expected.txt new file mode 100644 index 0000000..4885b9f7 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/webcodecs/full-cycle-test.https.any_h264_avc-expected.txt
@@ -0,0 +1,5 @@ +This is a testharness.js-based test. +NOTRUN Encoding and decoding cycle Unsupported config: {"codec":"avc1.42001E","avc":{"format":"avc"},"hasEmbeddedColorSpace":true,"hardwareAcceleration":"prefer-software","width":320,"height":200,"bitrate":1000000,"bitrateMode":"constant","framerate":30} +NOTRUN Encoding and decoding cycle w/ stripped color space Unsupported config: {"codec":"avc1.42001E","avc":{"format":"avc"},"hasEmbeddedColorSpace":true,"hardwareAcceleration":"prefer-software","width":320,"height":200,"bitrate":1000000,"bitrateMode":"constant","framerate":30} +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/webcodecs/temporal-svc-encoding.https.any.worker_h264-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/webcodecs/temporal-svc-encoding.https.any.worker_h264-expected.txt new file mode 100644 index 0000000..3440fb50 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/webcodecs/temporal-svc-encoding.https.any.worker_h264-expected.txt
@@ -0,0 +1,5 @@ +This is a testharness.js-based test. +NOTRUN SVC L1T2 Unsupported config: {"codec":"avc1.42001E","avc":{"format":"annexb"},"hardwareAcceleration":"prefer-software","width":320,"height":200,"bitrate":1000000,"bitrateMode":"constant","framerate":30,"scalabilityMode":"L1T2"} +NOTRUN SVC L1T3 Unsupported config: {"codec":"avc1.42001E","avc":{"format":"annexb"},"hardwareAcceleration":"prefer-software","width":320,"height":200,"bitrate":1000000,"bitrateMode":"constant","framerate":30,"scalabilityMode":"L1T3"} +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/webcodecs/temporal-svc-encoding.https.any_h264-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/webcodecs/temporal-svc-encoding.https.any_h264-expected.txt new file mode 100644 index 0000000..3440fb50 --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/webcodecs/temporal-svc-encoding.https.any_h264-expected.txt
@@ -0,0 +1,5 @@ +This is a testharness.js-based test. +NOTRUN SVC L1T2 Unsupported config: {"codec":"avc1.42001E","avc":{"format":"annexb"},"hardwareAcceleration":"prefer-software","width":320,"height":200,"bitrate":1000000,"bitrateMode":"constant","framerate":30,"scalabilityMode":"L1T2"} +NOTRUN SVC L1T3 Unsupported config: {"codec":"avc1.42001E","avc":{"format":"annexb"},"hardwareAcceleration":"prefer-software","width":320,"height":200,"bitrate":1000000,"bitrateMode":"constant","framerate":30,"scalabilityMode":"L1T3"} +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/storage/indexed-db-storage-key-track-untrack.js b/third_party/blink/web_tests/http/tests/inspector-protocol/storage/indexed-db-storage-key-track-untrack.js index 4f43650..f21b2c3 100644 --- a/third_party/blink/web_tests/http/tests/inspector-protocol/storage/indexed-db-storage-key-track-untrack.js +++ b/third_party/blink/web_tests/http/tests/inspector-protocol/storage/indexed-db-storage-key-track-untrack.js
@@ -3,15 +3,28 @@ `Tests that tracking and untracking IndexedDB for storage key works\n`); await dp.Page.enable(); + const protocolMessages = []; + const originalDispatchMessage = DevToolsAPI.dispatchMessage; + DevToolsAPI.dispatchMessage = (message) => { + protocolMessages.push(message); + originalDispatchMessage(message); + }; + window.onerror = (msg) => testRunner.log('onerror: ' + msg); + window.onunhandledrejection = (e) => testRunner.log('onunhandledrejection: ' + e.reason); let errorForLog = new Error(); - setTimeout(() => {testRunner.die('Timeout', errorForLog)}, 9000); - testRunner.startDumpingProtocolMessages(); + setTimeout(() => { + testRunner.log(protocolMessages); + testRunner.die('Timeout', errorForLog); + }, 9000); const frameId = (await dp.Page.getResourceTree()).result.frameTree.frame.id; + errorForLog = new Error(); const storageKey = (await dp.Storage.getStorageKeyForFrame({ frameId: frameId })).result.storageKey; + errorForLog = new Error(); await dp.Storage.trackIndexedDBForStorageKey({storageKey}); + errorForLog = new Error(); const listUpdatedPromise = dp.Storage.onceIndexedDBListUpdated( message => {return `indexedDB list updated for storage key ${ message.params.storageKey}`}); @@ -38,10 +51,12 @@ testRunner.log(await Promise.all( [listUpdatedPromise, contentUpdatedPromise, valuePromise])); + errorForLog = new Error(); testRunner.log('\nUntrack IndexedDB for storage key'); await dp.Storage.untrackIndexedDBForStorageKey({storageKey}); + errorForLog = new Error(); dp.Storage.onIndexedDBListUpdated(message => {message.params.storageKey}); dp.Storage.onIndexedDBContentUpdated(message => {message.params}); @@ -62,11 +77,13 @@ }; }) `); + errorForLog = new Error(); testRunner.log(oneMoreValue); // Clean up await dp.IndexedDB.deleteDatabase({storageKey, databaseName: "test-database"}); + errorForLog = new Error(); testRunner.completeTest(); })
diff --git a/third_party/blink/web_tests/media/controls/table-multicol-crash-expected.txt b/third_party/blink/web_tests/media/controls/table-multicol-crash-expected.txt new file mode 100644 index 0000000..ddad5eaf --- /dev/null +++ b/third_party/blink/web_tests/media/controls/table-multicol-crash-expected.txt
@@ -0,0 +1 @@ +PASS if no crash
diff --git a/third_party/blink/web_tests/media/controls/table-multicol-crash.html b/third_party/blink/web_tests/media/controls/table-multicol-crash.html new file mode 100644 index 0000000..231f342d --- /dev/null +++ b/third_party/blink/web_tests/media/controls/table-multicol-crash.html
@@ -0,0 +1,12 @@ +<!DOCTYPE html> +<!-- crbug.com/1399620 --> +<div style="columns:2;"> + <div style="display:table-caption;"> + <video controls src="not-exist.ogv"></video> + </div> +</div> +<script> +testRunner.dumpAsText(); +internals.pauseAnimations(3600); +</script> +<p>PASS if no crash</p>
diff --git a/third_party/blink/web_tests/platform/mac/external/wpt/editing/run/strikethrough_1001-2000-expected.txt b/third_party/blink/web_tests/platform/mac/external/wpt/editing/run/strikethrough_1001-2000-expected.txt index 4aa65f4..717df97 100644 --- a/third_party/blink/web_tests/platform/mac/external/wpt/editing/run/strikethrough_1001-2000-expected.txt +++ b/third_party/blink/web_tests/platform/mac/external/wpt/editing/run/strikethrough_1001-2000-expected.txt
@@ -743,7 +743,7 @@ PASS [["stylewithcss","true"],["strikethrough",""]] "foo<span class=\"underline\">[bar]</span>baz": execCommand("stylewithcss", false, "true") return value PASS [["stylewithcss","true"],["strikethrough",""]] "foo<span class=\"underline\">[bar]</span>baz": execCommand("strikethrough", false, "") return value PASS [["stylewithcss","true"],["strikethrough",""]] "foo<span class=\"underline\">[bar]</span>baz" checks for modifications to non-editable content -FAIL [["stylewithcss","true"],["strikethrough",""]] "foo<span class=\"underline\">[bar]</span>baz" compare innerHTML assert_equals: Unexpected innerHTML (after normalizing inline style) expected "foo<span style=\"text-decoration:line-through\"><span class=\"underline\">bar</span></span>baz" but got "foo<span class=\"underline\" style=\"text-decoration-line:line-through\">bar</span>baz" +FAIL [["stylewithcss","true"],["strikethrough",""]] "foo<span class=\"underline\">[bar]</span>baz" compare innerHTML assert_equals: Unexpected innerHTML (after normalizing inline style) expected "foo<span class=\"underline\" style=\"text-decoration:line-through\">bar</span>baz" but got "foo<span class=\"underline\" style=\"text-decoration-line:line-through\">bar</span>baz" PASS [["stylewithcss","true"],["strikethrough",""]] "foo<span class=\"underline\">[bar]</span>baz" queryCommandIndeterm("stylewithcss") before PASS [["stylewithcss","true"],["strikethrough",""]] "foo<span class=\"underline\">[bar]</span>baz" queryCommandState("stylewithcss") before PASS [["stylewithcss","true"],["strikethrough",""]] "foo<span class=\"underline\">[bar]</span>baz" queryCommandValue("stylewithcss") before
diff --git a/third_party/blink/web_tests/platform/mac/external/wpt/editing/run/underline_1001-2000-expected.txt b/third_party/blink/web_tests/platform/mac/external/wpt/editing/run/underline_1001-2000-expected.txt index 44dd64fa4..1ec047f 100644 --- a/third_party/blink/web_tests/platform/mac/external/wpt/editing/run/underline_1001-2000-expected.txt +++ b/third_party/blink/web_tests/platform/mac/external/wpt/editing/run/underline_1001-2000-expected.txt
@@ -761,7 +761,7 @@ PASS [["stylewithcss","true"],["underline",""]] "foo<span class=\"line-through\">[bar]</span>baz": execCommand("stylewithcss", false, "true") return value PASS [["stylewithcss","true"],["underline",""]] "foo<span class=\"line-through\">[bar]</span>baz": execCommand("underline", false, "") return value PASS [["stylewithcss","true"],["underline",""]] "foo<span class=\"line-through\">[bar]</span>baz" checks for modifications to non-editable content -FAIL [["stylewithcss","true"],["underline",""]] "foo<span class=\"line-through\">[bar]</span>baz" compare innerHTML assert_equals: Unexpected innerHTML (after normalizing inline style) expected "foo<span style=\"text-decoration:underline\"><span class=\"line-through\">bar</span></span>baz" but got "foo<span class=\"line-through\" style=\"text-decoration-line:underline\">bar</span>baz" +FAIL [["stylewithcss","true"],["underline",""]] "foo<span class=\"line-through\">[bar]</span>baz" compare innerHTML assert_equals: Unexpected innerHTML (after normalizing inline style) expected "foo<span class=\"line-through\" style=\"text-decoration:underline\">bar</span>baz" but got "foo<span class=\"line-through\" style=\"text-decoration-line:underline\">bar</span>baz" PASS [["stylewithcss","true"],["underline",""]] "foo<span class=\"line-through\">[bar]</span>baz" queryCommandIndeterm("stylewithcss") before PASS [["stylewithcss","true"],["underline",""]] "foo<span class=\"line-through\">[bar]</span>baz" queryCommandState("stylewithcss") before PASS [["stylewithcss","true"],["underline",""]] "foo<span class=\"line-through\">[bar]</span>baz" queryCommandValue("stylewithcss") before
diff --git a/third_party/blink/web_tests/platform/win/external/wpt/editing/run/strikethrough_1001-2000-expected.txt b/third_party/blink/web_tests/platform/win/external/wpt/editing/run/strikethrough_1001-2000-expected.txt index b335061..0dbf75bb 100644 --- a/third_party/blink/web_tests/platform/win/external/wpt/editing/run/strikethrough_1001-2000-expected.txt +++ b/third_party/blink/web_tests/platform/win/external/wpt/editing/run/strikethrough_1001-2000-expected.txt
@@ -743,7 +743,7 @@ PASS [["stylewithcss","true"],["strikethrough",""]] "foo<span class=\"underline\">[bar]</span>baz": execCommand("stylewithcss", false, "true") return value PASS [["stylewithcss","true"],["strikethrough",""]] "foo<span class=\"underline\">[bar]</span>baz": execCommand("strikethrough", false, "") return value PASS [["stylewithcss","true"],["strikethrough",""]] "foo<span class=\"underline\">[bar]</span>baz" checks for modifications to non-editable content -FAIL [["stylewithcss","true"],["strikethrough",""]] "foo<span class=\"underline\">[bar]</span>baz" compare innerHTML assert_equals: Unexpected innerHTML (after normalizing inline style) expected "foo<span style=\"text-decoration:line-through\"><span class=\"underline\">bar</span></span>baz" but got "foo<span class=\"underline\" style=\"text-decoration-line:line-through\">bar</span>baz" +FAIL [["stylewithcss","true"],["strikethrough",""]] "foo<span class=\"underline\">[bar]</span>baz" compare innerHTML assert_equals: Unexpected innerHTML (after normalizing inline style) expected "foo<span class=\"underline\" style=\"text-decoration:line-through\">bar</span>baz" but got "foo<span class=\"underline\" style=\"text-decoration-line:line-through\">bar</span>baz" PASS [["stylewithcss","true"],["strikethrough",""]] "foo<span class=\"underline\">[bar]</span>baz" queryCommandIndeterm("stylewithcss") before PASS [["stylewithcss","true"],["strikethrough",""]] "foo<span class=\"underline\">[bar]</span>baz" queryCommandState("stylewithcss") before PASS [["stylewithcss","true"],["strikethrough",""]] "foo<span class=\"underline\">[bar]</span>baz" queryCommandValue("stylewithcss") before
diff --git a/third_party/blink/web_tests/platform/win/external/wpt/editing/run/underline_1001-2000-expected.txt b/third_party/blink/web_tests/platform/win/external/wpt/editing/run/underline_1001-2000-expected.txt index 4d9d0e48..ef3fde74 100644 --- a/third_party/blink/web_tests/platform/win/external/wpt/editing/run/underline_1001-2000-expected.txt +++ b/third_party/blink/web_tests/platform/win/external/wpt/editing/run/underline_1001-2000-expected.txt
@@ -761,7 +761,7 @@ PASS [["stylewithcss","true"],["underline",""]] "foo<span class=\"line-through\">[bar]</span>baz": execCommand("stylewithcss", false, "true") return value PASS [["stylewithcss","true"],["underline",""]] "foo<span class=\"line-through\">[bar]</span>baz": execCommand("underline", false, "") return value PASS [["stylewithcss","true"],["underline",""]] "foo<span class=\"line-through\">[bar]</span>baz" checks for modifications to non-editable content -FAIL [["stylewithcss","true"],["underline",""]] "foo<span class=\"line-through\">[bar]</span>baz" compare innerHTML assert_equals: Unexpected innerHTML (after normalizing inline style) expected "foo<span style=\"text-decoration:underline\"><span class=\"line-through\">bar</span></span>baz" but got "foo<span class=\"line-through\" style=\"text-decoration-line:underline\">bar</span>baz" +FAIL [["stylewithcss","true"],["underline",""]] "foo<span class=\"line-through\">[bar]</span>baz" compare innerHTML assert_equals: Unexpected innerHTML (after normalizing inline style) expected "foo<span class=\"line-through\" style=\"text-decoration:underline\">bar</span>baz" but got "foo<span class=\"line-through\" style=\"text-decoration-line:underline\">bar</span>baz" PASS [["stylewithcss","true"],["underline",""]] "foo<span class=\"line-through\">[bar]</span>baz" queryCommandIndeterm("stylewithcss") before PASS [["stylewithcss","true"],["underline",""]] "foo<span class=\"line-through\">[bar]</span>baz" queryCommandState("stylewithcss") before PASS [["stylewithcss","true"],["underline",""]] "foo<span class=\"line-through\">[bar]</span>baz" queryCommandValue("stylewithcss") before
diff --git a/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-click.html.ini b/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-click.html.ini index e9d6baf..aab32b8 100644 --- a/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-click.html.ini +++ b/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-click.html.ini
@@ -1,4 +1,6 @@ [file-input-webkitdirectory-click.html] + expected: + if (flag_specific == "") and (product == "content_shell"): [OK, TIMEOUT] [clicking a file input with the webkitdirectory attribute launches a file chooser] expected: if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-key-enter.html.ini b/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-key-enter.html.ini index f94a6ac..c35b594 100644 --- a/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-key-enter.html.ini +++ b/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-key-enter.html.ini
@@ -1,6 +1,6 @@ [file-input-webkitdirectory-key-enter.html] expected: - if flag_specific == "disable-site-isolation-trials": [OK, TIMEOUT] + if flag_specific == "disable-site-isolation-trials": TIMEOUT [pressing Enter with focus on a webkitdirectory file input element launches a file chooser] expected: if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-key-space.html.ini b/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-key-space.html.ini index c238f449..6e4add39 100644 --- a/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-key-space.html.ini +++ b/third_party/blink/web_tests/wpt_internal/forms/file/file-input-webkitdirectory-key-space.html.ini
@@ -1,4 +1,6 @@ [file-input-webkitdirectory-key-space.html] + expected: + if flag_specific == "disable-layout-ng": [OK, TIMEOUT] [pressing Space on a focused webkitdirectory file input element launches a file chooser] expected: if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/wpt_internal/html/interaction/focus/the-autofocus-attribute/object-fallback.html.ini b/third_party/blink/web_tests/wpt_internal/html/interaction/focus/the-autofocus-attribute/object-fallback.html.ini index 27016c7..1655538 100644 --- a/third_party/blink/web_tests/wpt_internal/html/interaction/focus/the-autofocus-attribute/object-fallback.html.ini +++ b/third_party/blink/web_tests/wpt_internal/html/interaction/focus/the-autofocus-attribute/object-fallback.html.ini
@@ -1,6 +1,6 @@ [object-fallback.html] expected: - if (os == "linux") and (product == "chrome"): [OK, ERROR] + if (product == "content_shell") and (os == "win"): [OK, TIMEOUT] [An autofocus element in an OBJECT with a loaded frame should not be processed] expected: if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/wpt_internal/prerender/restriction-speech-recognition.html.ini b/third_party/blink/web_tests/wpt_internal/prerender/restriction-speech-recognition.html.ini index 51975d1..8a0fc9a0 100644 --- a/third_party/blink/web_tests/wpt_internal/prerender/restriction-speech-recognition.html.ini +++ b/third_party/blink/web_tests/wpt_internal/prerender/restriction-speech-recognition.html.ini
@@ -3,8 +3,8 @@ disabled: if flag_specific == "force-renderer-accessibility": @False expected: - if (product == "content_shell") and (flag_specific == "disable-site-isolation-trials"): [OK, ERROR] - if product == "chrome": TIMEOUT + if (flag_specific == "") and (product == "content_shell") and (os == "win"): [OK, ERROR] + if (flag_specific == "") and (product == "chrome"): TIMEOUT [SpeechRecognition.start should be deferred until the prerendered page is activated] expected: if product == "chrome": TIMEOUT
diff --git a/third_party/blink/web_tests/wpt_internal/storage/estimate-usage-details-filesystem.https.tentative.any.js.ini b/third_party/blink/web_tests/wpt_internal/storage/estimate-usage-details-filesystem.https.tentative.any.js.ini new file mode 100644 index 0000000..7454257 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/storage/estimate-usage-details-filesystem.https.tentative.any.js.ini
@@ -0,0 +1,7 @@ +[estimate-usage-details-filesystem.https.tentative.any.worker.html] + +[estimate-usage-details-filesystem.https.tentative.any.html] + [estimate() usage details reflects increase in fileSystem after write operation] + expected: + if flag_specific == "disable-site-isolation-trials": [FAIL, PASS] + if flag_specific == "disable-layout-ng": [PASS, FAIL]
diff --git a/third_party/blink/web_tests/wpt_internal/view-transition-on-navigation/reload-crash.html.ini b/third_party/blink/web_tests/wpt_internal/view-transition-on-navigation/reload-crash.html.ini index 19cf3a6..6bc5922 100644 --- a/third_party/blink/web_tests/wpt_internal/view-transition-on-navigation/reload-crash.html.ini +++ b/third_party/blink/web_tests/wpt_internal/view-transition-on-navigation/reload-crash.html.ini
@@ -1,3 +1,3 @@ [reload-crash.html] expected: - if product == "chrome": ERROR + if product == "chrome": [PASS, ERROR]
diff --git a/third_party/blink/web_tests/wpt_internal/webmidi/requestmidiaccess-basic.https.html.ini b/third_party/blink/web_tests/wpt_internal/webmidi/requestmidiaccess-basic.https.html.ini index a237eae..0dd3f3c 100644 --- a/third_party/blink/web_tests/wpt_internal/webmidi/requestmidiaccess-basic.https.html.ini +++ b/third_party/blink/web_tests/wpt_internal/webmidi/requestmidiaccess-basic.https.html.ini
@@ -1,3 +1,4 @@ [requestmidiaccess-basic.https.html] expected: - if product == "chrome": ERROR + if (flag_specific == "") and (os == "linux") and (product == "content_shell"): [ERROR, OK] + ERROR
diff --git a/third_party/ipcz/src/connect_test.cc b/third_party/ipcz/src/connect_test.cc index 36b549b7..6e679c1d 100644 --- a/third_party/ipcz/src/connect_test.cc +++ b/third_party/ipcz/src/connect_test.cc
@@ -70,7 +70,7 @@ Close(b); } -MULTINODE_TEST(ConnectTest, DisconnectWithoutBrokerHandshake) { +MULTINODE_TEST(ConnectTest, DISABLED_DisconnectWithoutBrokerHandshake) { IpczDriverHandle our_transport; auto controller = SpawnTestNodeNoConnect<ExpectDisconnectFromBroker>(our_transport);
diff --git a/third_party/ipcz/src/ipcz/node_connector.h b/third_party/ipcz/src/ipcz/node_connector.h index 96d3dc2..9d1d9e0d 100644 --- a/third_party/ipcz/src/ipcz/node_connector.h +++ b/third_party/ipcz/src/ipcz/node_connector.h
@@ -11,10 +11,8 @@ #include "ipcz/driver_transport.h" #include "ipcz/ipcz.h" -#include "ipcz/link_side.h" #include "ipcz/node.h" #include "ipcz/node_messages.h" -#include "third_party/abseil-cpp/absl/types/span.h" #include "util/ref_counted.h" namespace ipcz {
diff --git a/third_party/webrtc_overrides/BUILD.gn b/third_party/webrtc_overrides/BUILD.gn index 7f583d8..c816599 100644 --- a/third_party/webrtc_overrides/BUILD.gn +++ b/third_party/webrtc_overrides/BUILD.gn
@@ -271,6 +271,7 @@ "p2p/base/ice_connection.cc", "p2p/base/ice_connection.h", "p2p/base/ice_controller_observer.h", + "p2p/base/ice_interaction_interface.h", "p2p/base/ice_ping_proposal.cc", "p2p/base/ice_ping_proposal.h", "p2p/base/ice_proposal.h", @@ -287,6 +288,7 @@ "//third_party/webrtc/api:candidate", "//third_party/webrtc/api:ice_transport_interface", "//third_party/webrtc/api:make_ref_counted", + "//third_party/webrtc/api:rtc_error", "//third_party/webrtc/api:scoped_refptr", "//third_party/webrtc/p2p:rtc_p2p", "//third_party/webrtc/rtc_base:logging",
diff --git a/third_party/webrtc_overrides/p2p/base/bridge_ice_controller.cc b/third_party/webrtc_overrides/p2p/base/bridge_ice_controller.cc index ded05c02..56087b5a 100644 --- a/third_party/webrtc_overrides/p2p/base/bridge_ice_controller.cc +++ b/third_party/webrtc_overrides/p2p/base/bridge_ice_controller.cc
@@ -28,7 +28,6 @@ using cricket::IceControllerInterface; using cricket::IceMode; using cricket::IceRole; -using cricket::IceSwitchReason; using cricket::NominationMode; } // unnamed namespace @@ -129,7 +128,8 @@ base::Milliseconds(result.recheck_delay_ms)); } -void BridgeIceController::OnSortAndSwitchRequest(IceSwitchReason reason) { +void BridgeIceController::OnSortAndSwitchRequest( + cricket::IceSwitchReason reason) { DCHECK(network_task_runner_->RunsTasksInCurrentSequence()); if (!sort_pending_) { // To avoid recursion, enqueue a task to sort connections and check if a @@ -149,7 +149,7 @@ } void BridgeIceController::SortAndSwitchToBestConnection( - IceSwitchReason reason) { + cricket::IceSwitchReason reason) { DCHECK(network_task_runner_->RunsTasksInCurrentSequence()); if (!sort_pending_) { return; @@ -161,13 +161,13 @@ } void BridgeIceController::OnImmediateSortAndSwitchRequest( - IceSwitchReason reason) { + cricket::IceSwitchReason reason) { DCHECK(network_task_runner_->RunsTasksInCurrentSequence()); DoSortAndSwitchToBestConnection(reason); } void BridgeIceController::DoSortAndSwitchToBestConnection( - IceSwitchReason reason) { + cricket::IceSwitchReason reason) { DCHECK(network_task_runner_->RunsTasksInCurrentSequence()); // Make sure the connection states are up-to-date since this affects how they @@ -180,8 +180,9 @@ UpdateStateOnConnectionsResorted(); } -bool BridgeIceController::OnImmediateSwitchRequest(IceSwitchReason reason, - const Connection* selected) { +bool BridgeIceController::OnImmediateSwitchRequest( + cricket::IceSwitchReason reason, + const Connection* selected) { DCHECK(network_task_runner_->RunsTasksInCurrentSequence()); IceControllerInterface::SwitchResult result = native_controller_->ShouldSwitchConnection(reason, selected); @@ -190,7 +191,7 @@ } void BridgeIceController::HandleSwitchResult( - IceSwitchReason reason_for_switch, + cricket::IceSwitchReason reason_for_switch, IceControllerInterface::SwitchResult result) { DCHECK(network_task_runner_->RunsTasksInCurrentSequence()); if (result.connection.has_value()) {
diff --git a/third_party/webrtc_overrides/p2p/base/bridge_ice_controller.h b/third_party/webrtc_overrides/p2p/base/bridge_ice_controller.h index 6d11b0f..5f1bc665 100644 --- a/third_party/webrtc_overrides/p2p/base/bridge_ice_controller.h +++ b/third_party/webrtc_overrides/p2p/base/bridge_ice_controller.h
@@ -7,10 +7,13 @@ #include <memory> +#include "base/containers/span.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" +#include "base/notreached.h" #include "base/task/sequenced_task_runner.h" +#include "third_party/webrtc/api/rtc_error.h" #include "third_party/webrtc/p2p/base/active_ice_controller_interface.h" #include "third_party/webrtc/p2p/base/connection.h" #include "third_party/webrtc/p2p/base/ice_agent_interface.h" @@ -19,6 +22,8 @@ #include "third_party/webrtc/p2p/base/ice_transport_internal.h" #include "third_party/webrtc/p2p/base/transport_description.h" #include "third_party/webrtc/rtc_base/system/rtc_export.h" +#include "third_party/webrtc_overrides/p2p/base/ice_connection.h" +#include "third_party/webrtc_overrides/p2p/base/ice_interaction_interface.h" namespace blink { @@ -30,7 +35,8 @@ // by the native ICE transport (i.e. P2PTransportChannel). It must be called on // the same sequence (or thread) on which the ICE agent expects to be invoked. class RTC_EXPORT BridgeIceController - : public cricket::ActiveIceControllerInterface { + : public cricket::ActiveIceControllerInterface, + public IceInteractionInterface { public: // Constructs an ICE controller wrapping an already constructed native webrtc // ICE controller. Does not take ownership of the ICE agent, which must @@ -42,6 +48,8 @@ std::unique_ptr<cricket::IceControllerInterface> native_controller); ~BridgeIceController() override; + // ActiveIceControllerInterface overrides. + void SetIceConfig(const cricket::IceConfig& config) override; bool GetUseCandidateAttribute( const cricket::Connection* connection, @@ -63,6 +71,44 @@ // Only for unit tests const cricket::Connection* FindNextPingableConnection() override; + // IceInteractionInterface overrides. + + void AcceptPingProposal(const IcePingProposal& ping_proposal) override { + NOTIMPLEMENTED(); // TODO(crbug.com/1369096) implement! + } + void RejectPingProposal(const IcePingProposal& ping_proposal) override { + NOTIMPLEMENTED(); // TODO(crbug.com/1369096) implement! + } + + void AcceptSwitchProposal(const IceSwitchProposal& switch_proposal) override { + NOTIMPLEMENTED(); // TODO(crbug.com/1369096) implement! + } + void RejectSwitchProposal(const IceSwitchProposal& switch_proposal) override { + NOTIMPLEMENTED(); // TODO(crbug.com/1369096) implement! + } + + void AcceptPruneProposal(const IcePruneProposal& prune_proposal) override { + NOTIMPLEMENTED(); // TODO(crbug.com/1369096) implement! + } + void RejectPruneProposal(const IcePruneProposal& prune_proposal) override { + NOTIMPLEMENTED(); // TODO(crbug.com/1369096) implement! + } + + webrtc::RTCError PingIceConnection(const IceConnection& connection) override { + NOTIMPLEMENTED(); // TODO(crbug.com/1369096) implement! + return webrtc::RTCError(webrtc::RTCErrorType::INTERNAL_ERROR); + } + webrtc::RTCError SwitchToIceConnection( + const IceConnection& connection) override { + NOTIMPLEMENTED(); // TODO(crbug.com/1369096) implement! + return webrtc::RTCError(webrtc::RTCErrorType::INTERNAL_ERROR); + } + webrtc::RTCError PruneIceConnections( + base::span<const IceConnection> connections_to_prune) override { + NOTIMPLEMENTED(); // TODO(crbug.com/1369096) implement! + return webrtc::RTCError(webrtc::RTCErrorType::INTERNAL_ERROR); + } + private: void MaybeStartPinging(); void SelectAndPingConnection();
diff --git a/third_party/webrtc_overrides/p2p/base/ice_controller_observer.h b/third_party/webrtc_overrides/p2p/base/ice_controller_observer.h index 44d903f..401167a 100644 --- a/third_party/webrtc_overrides/p2p/base/ice_controller_observer.h +++ b/third_party/webrtc_overrides/p2p/base/ice_controller_observer.h
@@ -5,7 +5,10 @@ #ifndef THIRD_PARTY_WEBRTC_OVERRIDES_P2P_BASE_ICE_CONTROLLER_OBSERVER_H_ #define THIRD_PARTY_WEBRTC_OVERRIDES_P2P_BASE_ICE_CONTROLLER_OBSERVER_H_ +#include "base/memory/scoped_refptr.h" + #include "third_party/webrtc_overrides/p2p/base/ice_connection.h" +#include "third_party/webrtc_overrides/p2p/base/ice_interaction_interface.h" #include "third_party/webrtc_overrides/p2p/base/ice_ping_proposal.h" #include "third_party/webrtc_overrides/p2p/base/ice_prune_proposal.h" #include "third_party/webrtc_overrides/p2p/base/ice_switch_proposal.h" @@ -19,8 +22,11 @@ virtual ~IceControllerObserverInterface() = default; // Once attached, the observer will receive ICE controller events from the - // observed ICE controller. - virtual void OnObserverAttached() {} + // observed ICE controller. The observer can respond to events where the ICE + // controller expects such responses through the interaction agent supplied in + // this method. + virtual void OnObserverAttached( + scoped_refptr<IceInteractionInterface> agent) {} // The observer will no longer receive ICE controller events for the observed // ICE controller. virtual void OnObserverDetached() {}
diff --git a/third_party/webrtc_overrides/p2p/base/ice_interaction_interface.h b/third_party/webrtc_overrides/p2p/base/ice_interaction_interface.h new file mode 100644 index 0000000..eaeaed6 --- /dev/null +++ b/third_party/webrtc_overrides/p2p/base/ice_interaction_interface.h
@@ -0,0 +1,57 @@ +// Copyright 2022 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef THIRD_PARTY_WEBRTC_OVERRIDES_P2P_BASE_ICE_INTERACTION_INTERFACE_H_ +#define THIRD_PARTY_WEBRTC_OVERRIDES_P2P_BASE_ICE_INTERACTION_INTERFACE_H_ + +#include "base/containers/span.h" +#include "base/memory/ref_counted.h" + +#include "third_party/webrtc/api/rtc_error.h" +#include "third_party/webrtc/rtc_base/system/rtc_export.h" +#include "third_party/webrtc_overrides/p2p/base/ice_connection.h" +#include "third_party/webrtc_overrides/p2p/base/ice_ping_proposal.h" +#include "third_party/webrtc_overrides/p2p/base/ice_prune_proposal.h" +#include "third_party/webrtc_overrides/p2p/base/ice_switch_proposal.h" + +namespace blink { + +// An interface that supports interactions with an ICE controller in response to +// events generated by the ICE controller or initiated by an external observer. +class RTC_EXPORT IceInteractionInterface + : public base::RefCounted<IceInteractionInterface> { + public: + virtual ~IceInteractionInterface() = default; + + // Accept a proposal to send a STUN ping on an ICE connection. + virtual void AcceptPingProposal(const IcePingProposal& ping_proposal) = 0; + // Reject a proposal to send a STUN ping on an ICE connection. + virtual void RejectPingProposal(const IcePingProposal& ping_proposal) = 0; + + // Accept a proposal to switch the ICE transport to an ICE connection. + virtual void AcceptSwitchProposal( + const IceSwitchProposal& switch_proposal) = 0; + // Reject a proposal to switch the ICE transport to an ICE connection. + virtual void RejectSwitchProposal( + const IceSwitchProposal& switch_proposal) = 0; + + // Accept a proposal to prune away certain ICE connections. + virtual void AcceptPruneProposal(const IcePruneProposal& prune_proposal) = 0; + // Reject a proposal to prune away certain ICE connections. + virtual void RejectPruneProposal(const IcePruneProposal& prune_proposal) = 0; + + // Send a STUN ping on the ICE connection. + virtual webrtc::RTCError PingIceConnection( + const IceConnection& connection) = 0; + // Switch the ICE transport to the ICE connection. + virtual webrtc::RTCError SwitchToIceConnection( + const IceConnection& connection) = 0; + // Prune the supplied ICE connections. + virtual webrtc::RTCError PruneIceConnections( + base::span<const IceConnection> connections_to_prune) = 0; +}; + +} // namespace blink + +#endif // THIRD_PARTY_WEBRTC_OVERRIDES_P2P_BASE_ICE_INTERACTION_INTERFACE_H_
diff --git a/tools/android/modularization/loc/modularization_loc_stat.py b/tools/android/modularization/loc/modularization_loc_stat.py index 3ade95e0..c44819c 100755 --- a/tools/android/modularization/loc/modularization_loc_stat.py +++ b/tools/android/modularization/loc/modularization_loc_stat.py
@@ -58,9 +58,9 @@ # # :thanhdng:2020-08-17:Use vector icons for zero state file results # - # 118 98 chrome/browser/ui/app_list/file_icon_util.cc - # 2 1 chrome/browser/ui/app_list/file_icon_util.h - # 0 20 chrome/browser/ui/app_list/file_icon_util_unittest.cc + # 118 98 chromeos/ui/base/file_icon_util.cc + # 2 1 chromeos/ui/base/file_icon_util.h + # 0 20 chromeos/ui/base/file_icon_util_unittest.cc # # i.e.: #
diff --git a/tools/metrics/actions/actions.xml b/tools/metrics/actions/actions.xml index 3184ccb..c378f91 100644 --- a/tools/metrics/actions/actions.xml +++ b/tools/metrics/actions/actions.xml
@@ -20955,6 +20955,15 @@ </description> </action> +<action name="MobileTabNewTab"> + <owner>ewannpv@chromium.org</owner> + <owner>gambard@chromium.org</owner> + <description> + User opens a new Tab. This includes an opening from the Toolbar, the + Overflow Menu and the Tab Grid (incognito + regular). + </description> +</action> + <action name="MobileTabReturnedToCurrentTab"> <owner>yusufo@chromium.org</owner> <owner>wychen@chromium.org</owner> @@ -29730,6 +29739,16 @@ </description> </action> +<action name="Signin_Impression_FromNTPFeedBottomSigninPromo"> + <owner>Please list the metric's owners. Add more owner tags as needed.</owner> + <description>Please enter the description of the metric.</description> +</action> + +<action name="Signin_Impression_FromNTPFeedCardMenuSigninPromo"> + <owner>Please list the metric's owners. Add more owner tags as needed.</owner> + <description>Please enter the description of the metric.</description> +</action> + <action name="Signin_Impression_FromNTPFeedTopPromo"> <owner>mrefaat@google.com</owner> <owner>sczs@chromium.org</owner> @@ -30358,6 +30377,16 @@ </description> </action> +<action name="Signin_Signin_FromNTPFeedBottomSigninPromo"> + <owner>Please list the metric's owners. Add more owner tags as needed.</owner> + <description>Please enter the description of the metric.</description> +</action> + +<action name="Signin_Signin_FromNTPFeedCardMenuSigninPromo"> + <owner>Please list the metric's owners. Add more owner tags as needed.</owner> + <description>Please enter the description of the metric.</description> +</action> + <action name="Signin_Signin_FromNTPFeedTopPromo"> <owner>jlebel@chromium.org</owner> <owner>mrefaat@chromium.org</owner>
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 3927eb3..36d46b5 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -25591,6 +25591,12 @@ <int value="27" label="DeviceActivityClientOnGetLastPingDatesStatusFetched"/> </enum> +<enum name="DeviceEnumerationResult"> + <int value="0" label="Success"/> + <int value="1" label="Unknown error"/> + <int value="2" label="Error - Video Capturer Service crashed"/> +</enum> + <enum name="DeviceIdMismatch"> <int value="0" label="BOTH_NONEMPTY"/> <int value="1" label="SYNC_EMPTY"/> @@ -32308,6 +32314,7 @@ <int value="1041" label="NewBaseUrlInheritanceBehaviorAllowed"/> <int value="1042" label="ShowCastSessionsStartedByOtherDevices"/> <int value="1043" label="CloudAPAuthEnabled"/> + <int value="1044" label="UsbDetectorNotificationEnabled"/> </enum> <enum name="EnterprisePoliciesSources"> @@ -57113,6 +57120,7 @@ <int value="-2043095449" label="DXGIWaitableSwapChain:enabled"/> <int value="-2042278511" label="SmartSuggestionForLargeDownloads:disabled"/> <int value="-2041281386" label="MultiPaste:disabled"/> + <int value="-2041208747" label="StorageBuckets:enabled"/> <int value="-2041091005" label="OmniboxDomainSuggestions:enabled"/> <int value="-2040471724" label="CrOSComponent:disabled"/> <int value="-2040360427" label="DesktopScreenshots:disabled"/> @@ -58504,6 +58512,7 @@ <int value="-1265627803" label="WebAppEnableManifestId:enabled"/> <int value="-1262730949" label="EnableDspHotword:enabled"/> <int value="-1262303946" label="SubresourceRedirectPreviews:disabled"/> + <int value="-1262302650" label="StorageBuckets:disabled"/> <int value="-1262152606" label="disable-lock-screen-apps"/> <int value="-1261972671" label="OmniboxDocumentProvider:disabled"/> <int value="-1261699926" label="DownloadBubbleV2:disabled"/> @@ -77308,12 +77317,6 @@ <int value="4" label="Did nothing"/> </enum> -<enum name="PasswordCheckScriptsCacheState"> - <int value="0" label="Cache is fresh"/> - <int value="1" label="Cache is stale but no UI update is triggered"/> - <int value="2" label="Cache is stale and a UI update is triggered"/> -</enum> - <enum name="PasswordCheckUIUserActionAndroid"> <int value="0" label="Start check automatically"/> <int value="1" label="Start check manually"/>
diff --git a/tools/metrics/histograms/metadata/android/histograms.xml b/tools/metrics/histograms/metadata/android/histograms.xml index 118a8f1..0d82e49 100644 --- a/tools/metrics/histograms/metadata/android/histograms.xml +++ b/tools/metrics/histograms/metadata/android/histograms.xml
@@ -4461,6 +4461,17 @@ </summary> </histogram> +<histogram name="Android.WebView.RequestedWithHeader.OriginTrialEnabled" + enum="BooleanEnabled" expires_after="2023-07-01"> + <owner>pbirk@chromium.org</owner> + <owner>src/android_webview/OWNERS</owner> + <summary> + Records if the WebViewXRequestedWithDeprecation Origin Trial was enabled on + a resource request. This histogram is recorded on every request sent by + WebView if Persistent Origin Trials are enabled. + </summary> +</histogram> + <histogram name="Android.WebView.RequestedWithHeader.SetRequestedWithHeaderMode" enum="WebViewRequestedWithHeaderMode" expires_after="2023-01-01">
diff --git a/tools/metrics/histograms/metadata/enterprise/histograms.xml b/tools/metrics/histograms/metadata/enterprise/histograms.xml index e132979..93de3da7 100644 --- a/tools/metrics/histograms/metadata/enterprise/histograms.xml +++ b/tools/metrics/histograms/metadata/enterprise/histograms.xml
@@ -2150,7 +2150,7 @@ <owner>domfc@chromium.org</owner> <summary> Records whether a browser unenrollment was completed succcessfully by - writing an invalid DM token to storage or not. + writing an invalid DMToken to storage or not. </summary> </histogram>
diff --git a/tools/metrics/histograms/metadata/feature_engagement/histograms.xml b/tools/metrics/histograms/metadata/feature_engagement/histograms.xml index fdf2216..fd820d1 100644 --- a/tools/metrics/histograms/metadata/feature_engagement/histograms.xml +++ b/tools/metrics/histograms/metadata/feature_engagement/histograms.xml
@@ -285,7 +285,7 @@ </histogram> <histogram name="InProductHelp.Db.Init.{IPHDatabase}" enum="BooleanSuccess" - expires_after="2022-12-26"> + expires_after="2023-12-26"> <owner>nyquist@chromium.org</owner> <summary> Records if {IPHDatabase} database initialization succeeds for in-product @@ -295,7 +295,7 @@ </histogram> <histogram name="InProductHelp.Db.Load.{IPHDatabase}" enum="BooleanSuccess" - expires_after="2022-12-26"> + expires_after="2023-12-26"> <owner>nyquist@chromium.org</owner> <summary> Records if {IPHDatabase} database successfully loads the data for in-product @@ -314,7 +314,7 @@ </histogram> <histogram name="InProductHelp.Db.Update.{IPHDatabase}" enum="BooleanSuccess" - expires_after="2022-12-26"> + expires_after="2023-12-26"> <owner>nyquist@chromium.org</owner> <summary> Records if {IPHDatabase} database update succeeds for in-product help. @@ -332,7 +332,7 @@ </histogram> <histogram name="InProductHelp.NotifyEventReadyState.{IPHFeature}" - enum="BooleanSuccess" expires_after="2022-12-26"> + enum="BooleanSuccess" expires_after="2023-12-26"> <owner>nyquist@chromium.org</owner> <summary> Records if the model is ready when in-product help event happens for @@ -414,7 +414,7 @@ </histogram> <histogram name="InProductHelp.ShouldTriggerHelpUI.{IPHFeature}" - enum="TriggerHelpUIResult" expires_after="2022-12-26"> + enum="TriggerHelpUIResult" expires_after="2023-12-26"> <owner>nyquist@chromium.org</owner> <summary> Records if in-product help for {IPHFeature} is shown to the user, and the
diff --git a/tools/metrics/histograms/metadata/media/histograms.xml b/tools/metrics/histograms/metadata/media/histograms.xml index cc6ee6a..c314e2e 100644 --- a/tools/metrics/histograms/metadata/media/histograms.xml +++ b/tools/metrics/histograms/metadata/media/histograms.xml
@@ -3112,6 +3112,27 @@ </summary> </histogram> +<histogram name="Media.MediaDevicesManager.VideoDeviceEnumeration.Result" + enum="DeviceEnumerationResult" expires_after="2023-05-01"> + <owner>toprice@chromium.org</owner> + <owner>agpalak@chromium.org</owner> + <summary> + The success or failure code of MediaDevicesManager requests to enumerate + video devices (ie cameras) with the camera capture service. + </summary> +</histogram> + +<histogram name="Media.MediaDevicesManager.VideoDeviceEnumeration.Start" + enum="Boolean" expires_after="2023-05-01"> + <owner>toprice@chromium.org</owner> + <owner>agpalak@chromium.org</owner> + <summary> + Count of MediaDevicesManager starting enumerating video devices (ie cameras) + with the camera capture service, including enumerations which never + finished. + </summary> +</histogram> + <histogram name="Media.MediaElement.ContentTypeParseable" enum="ContentTypeParseableResult" expires_after="2022-07-03"> <obsolete> @@ -5000,6 +5021,19 @@ </summary> </histogram> +<histogram name="Media.VideoCapture.StartErrorCode" enum="VideoCaptureError" + expires_after="2023-05-14"> + <owner>toprice@chromium.org</owner> + <owner>video-cmi-apis@google.com</owner> + <summary> + Counts detailed outcomes of first starting video capture, as a breakdown of + Media.VideoCapture.StartOutcome based on the error codes which caused + failures, or kNone if we started successfully. Can also be viewed as the + subset of reports to Media.VideoCapture.Error which occur before + VideoCaptureImpl first transitions to STARTED. + </summary> +</histogram> + <histogram name="Media.VideoCapture.StartOutcome" enum="VideoCaptureStartOutcome" expires_after="2023-04-30"> <owner>toprice@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/navigation/histograms.xml b/tools/metrics/histograms/metadata/navigation/histograms.xml index c1c3e6a6..9355126 100644 --- a/tools/metrics/histograms/metadata/navigation/histograms.xml +++ b/tools/metrics/histograms/metadata/navigation/histograms.xml
@@ -52,8 +52,8 @@ <histogram name="BackForwardCache.AllSites.EvictedAfterDocumentRestoredReason" enum="BackForwardCacheEvictedAfterDocumentRestoredReason" - expires_after="2022-10-01"> - <owner>hajimehoshi@chromium.org</owner> + expires_after="2023-06-13"> + <owner>fergal@chromium.org</owner> <owner>bfcache-dev@chromium.org</owner> <summary> Records the reason why the page is evicted from the back-forward cache but @@ -284,8 +284,7 @@ name="BackForwardCache.HistoryNavigationOutcome.DisabledForRenderFrameHostReason2" enum="BackForwardCacheDisabledForRenderFrameHostReason2" expires_after="2023-06-30"> - <owner>carlscab@chromium.org</owner> - <owner>hajimehoshi@chromium.org</owner> + <owner>fergal@chromium.org</owner> <owner>bfcache-dev@chromium.org</owner> <summary> For history navigations, records the reason passed to @@ -304,7 +303,6 @@ <histogram name="BackForwardCache.HistoryNavigationOutcome.DisallowActivationReason" enum="InactiveFrameDisallowActivationReason" expires_after="2023-06-30"> - <owner>carlscab@chromium.org</owner> <owner>fergal@chromium.org</owner> <owner>bfcache-dev@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/others/histograms.xml b/tools/metrics/histograms/metadata/others/histograms.xml index c0aa509..fa42a9a 100644 --- a/tools/metrics/histograms/metadata/others/histograms.xml +++ b/tools/metrics/histograms/metadata/others/histograms.xml
@@ -4009,17 +4009,6 @@ </summary> </histogram> -<histogram name="Conversions.Storage.GetNextReportTimeSucceeded" - units="BooleanSuccess" expires_after="M117"> - <owner>apaseltiner@chromium.org</owner> - <owner>johnidel@chromium.org</owner> - <owner>measurement-api-dev+metrics@google.com</owner> - <summary> - Records whether each GetNextReportTime SQL statement succeeded, regardless - of whether it returned any data. - </summary> -</histogram> - <histogram name="Conversions.Storage.MigrationTime" units="ms" expires_after="M117"> <owner>johnidel@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/sync/histograms.xml b/tools/metrics/histograms/metadata/sync/histograms.xml index 05f07db..d9400b6 100644 --- a/tools/metrics/histograms/metadata/sync/histograms.xml +++ b/tools/metrics/histograms/metadata/sync/histograms.xml
@@ -1363,7 +1363,7 @@ </summary> </histogram> -<histogram name="Sync.TrustedVaultDegradedRecoverabilityValue" +<histogram name="Sync.TrustedVaultDegradedRecoverabilityValue2" enum="TrustedVaultDegradedRecoverabilityValue" expires_after="2023-04-09"> <owner>mmrashad@google.com</owner> <owner>mmoskvitin@google.com</owner> @@ -1475,7 +1475,7 @@ </summary> </histogram> -<histogram name="Sync.TrustedVaultHintDegradedRecoverabilityChangedReason" +<histogram name="Sync.TrustedVaultHintDegradedRecoverabilityChangedReason2" enum="TrustedVaultHintDegradedRecoverabilityChangedReason" expires_after="2023-04-09"> <owner>mmrashad@google.com</owner>
diff --git a/ui/accessibility/extensions/strings/accessibility_extensions_strings_te.xtb b/ui/accessibility/extensions/strings/accessibility_extensions_strings_te.xtb index e603638..c521198 100644 --- a/ui/accessibility/extensions/strings/accessibility_extensions_strings_te.xtb +++ b/ui/accessibility/extensions/strings/accessibility_extensions_strings_te.xtb
@@ -61,7 +61,7 @@ <translation id="7586636300921797327">దశ 2: ఎంచుకున్న అడ్డు వరుసలో అన్ని నక్షత్రాలు కనిపించే విధంగా స్లయిడర్ను సర్దుబాటు చేయండి</translation> <translation id="7658239707568436148">రద్దు చేయండి</translation> -<translation id="786423340267544509">aria-describedat లేదా longdesc ఫీచర్లు ఉన్న మూలకాలకు హద్దును జోడించు.</translation> +<translation id="786423340267544509">aria-describedat లేదా longdesc ఫీచర్లు ఉన్న మూలకాలకు హద్దును జోడించండి.</translation> <translation id="7942349550061667556">ఎరుపు</translation> <translation id="8260673944985561857">కేరెట్ బ్రౌజింగ్ ఎంపికలు</translation> <translation id="8321034316479930120">యానిమేషన్ విధానం</translation>
diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java index 5e26227..97143df9 100644 --- a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java +++ b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
@@ -1169,7 +1169,16 @@ MediaStore.Files.FileColumns.MIME_TYPE, }; - Cursor cursor = contentResolver.query(mediaUri, filePathColumn, null, null, null); + Cursor cursor = null; + try { + cursor = contentResolver.query(mediaUri, filePathColumn, null, null, null); + } catch (Exception e) { + // The OS may fail at some point during this, as seen in crbug.com/1395702. + Log.w(TAG, "Failed to use ContentResolver", e); + return mediaPickerWasUsed ? FileSelectedAction.MEDIA_PICKER_UNKNOWN_TYPE + : FileSelectedAction.EXTERNAL_PICKER_UNKNOWN_TYPE; + } + if (cursor != null) { Integer mediaType = null; if (cursor.moveToFirst()) {
diff --git a/ui/aura/window_tree_host_platform.cc b/ui/aura/window_tree_host_platform.cc index c226395..5399596d 100644 --- a/ui/aura/window_tree_host_platform.cc +++ b/ui/aura/window_tree_host_platform.cc
@@ -21,6 +21,7 @@ #include "ui/base/cursor/mojom/cursor_type.mojom-shared.h" #include "ui/base/layout.h" #include "ui/compositor/compositor.h" +#include "ui/compositor/layer.h" #include "ui/display/display.h" #include "ui/display/screen.h" #include "ui/events/event.h" @@ -299,6 +300,13 @@ SetNativeWindowOcclusionState(aura_occlusion_state, {}); } +int64_t WindowTreeHostPlatform::InsertSequencePoint() { + int64_t seq = + compositor()->local_surface_id_from_parent().child_sequence_number(); + compositor()->RequestNewLocalSurfaceId(); + return seq; +} + void WindowTreeHostPlatform::SetFrameRateThrottleEnabled(bool enabled) { if (enabled) HostFrameRateThrottler::GetInstance().AddHost(this);
diff --git a/ui/aura/window_tree_host_platform.h b/ui/aura/window_tree_host_platform.h index 3a92327..84e796e 100644 --- a/ui/aura/window_tree_host_platform.h +++ b/ui/aura/window_tree_host_platform.h
@@ -88,6 +88,7 @@ void OnMouseEnter() override; void OnOcclusionStateChanged( ui::PlatformWindowOcclusionState occlusion_state) override; + int64_t InsertSequencePoint() override; void SetFrameRateThrottleEnabled(bool enabled) override; // Overridden from aura::WindowTreeHost:
diff --git a/ui/chromeos/strings/network/network_element_localized_strings_provider.cc b/ui/chromeos/strings/network/network_element_localized_strings_provider.cc index a5199051..dc48e84 100644 --- a/ui/chromeos/strings/network/network_element_localized_strings_provider.cc +++ b/ui/chromeos/strings/network/network_element_localized_strings_provider.cc
@@ -310,6 +310,7 @@ {"apn", IDS_SETTINGS_APN_INPUT_LABEL}, {"apnPageAddNewApn", IDS_SETTINGS_ADD_NEW_APN}, {"apnSettingsDescriptionNoLink", IDS_SETTINGS_APN_DESCRIPTION_NO_LINK}, + {"customApnLimitReached", IDS_SETTINGS_CUSTOM_APN_LIMIT_REACHED}, {"apnSettingsDescriptionWithLink", IDS_SETTINGS_APN_DESCRIPTION_WITH_LEARN_MORE_LINK}, {"apnMenuDetails", IDS_SETTINGS_APN_MENU_DETAILS},
diff --git a/ui/chromeos/translations/ui_chromeos_strings_am.xtb b/ui/chromeos/translations/ui_chromeos_strings_am.xtb index 0b70d311..d459592c5 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_am.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_am.xtb
@@ -43,8 +43,10 @@ <translation id="1378727793141957596">ወደ Google Drive እንኳን በደህና መጡ!</translation> <translation id="1379911846207762492">የበይነመረብ ግንኙነት በማይኖርበት ጊዜ ፋይሎችን ለመድረስ ከመስመር ውጭ እንዲገኙ ማድረግ ይችላሉ።</translation> <translation id="1383876407941801731">ፍለጋ </translation> +<translation id="1388045380422025115">ሁሉም ዓይነቶች</translation> <translation id="1395262318152388157">የመፈለጊያ ተንሸራታች</translation> <translation id="1399511500114202393">ምንም የተጠቃሚ እውቅና ማረጋገጫ የለም</translation> +<translation id="1403008701842173542">ሁሉም ቦታ</translation> <translation id="1404323374378969387">ኖርዌይኛ</translation> <translation id="1433628812591023318">Parallels Desktop ውስጥ ፋይሎችን ለመጣል ፋይሉ ወደ Windows ፋይሎች መዛወር አለበት።</translation> <translation id="1435838927755162558">አቃፊን ለParallels ዴስክቶፕ አጋራ</translation> @@ -102,6 +104,7 @@ <translation id="1834290891154666894">ልክ ያልሆነ የርዕስ አማራጭ ስም ዝምድና ግቤት</translation> <translation id="1838709767668011582">የGoogle ጣቢያ</translation> <translation id="1853795129690976061">ይህ አቃፊ ለLinux ተጋርቷል</translation> +<translation id="1859422890169495746">ይህ Chromebook</translation> <translation id="1864756863218646478">ፋይሉ ሊገኝ አልቻለም።</translation> <translation id="1884013283844450420">አውታረ መረብ <ph name="NETWORK_INDEX" /> ከ<ph name="NETWORK_COUNT" />፣ <ph name="NETWORK_NAME" />፣ አገናኝ</translation> <translation id="1920670151694390848">በማላያላምኛ ቋንቋ ፊደል መጻፍ</translation> @@ -153,6 +156,7 @@ <translation id="2307462900900812319">አውታረ መረብ አዋቅር</translation> <translation id="2325650632570794183">ይህ ፋይል አይነት አይደገፍም። የዚህ አይነት ፋይል መክፈት የሚችል መተግበሪያን ለማግኘት እባክዎ Chrome የድር ሱቁን ይጎብኙ።</translation> <translation id="2326539130272988168">ቡልጋሪያኛ</translation> +<translation id="2337715497728194187">ለBruschetta ያጋሩ</translation> <translation id="23721837607121582">የሞባይል መገለጫን ያውርዱ፣ አውታረ መረብ <ph name="NETWORK_INDEX" /> ከ<ph name="NETWORK_COUNT" />፣ <ph name="NETWORK_NAME" /></translation> <translation id="2377319039870049694">ወደ የዝርዝር እይታ ቀይር</translation> <translation id="2377590462528165447"><ph name="NUMBER_OF_ITEMS" /> አቃፊዎች ለLinux ተጋርተዋል</translation> @@ -182,6 +186,7 @@ <translation id="2544853746127077729">የማረጋገጫ ምስክር ወረቀት በአውታረ መረቡ ተቀባይነት አላገኘም</translation> <translation id="255937426064304553">አሜሪካ ዓለምአቀፍ</translation> <translation id="2563185590376525700">እንቁራሪት</translation> +<translation id="2574327434504608656">1 አቃፊ ከBruschetta ጋር ተጋርቷል</translation> <translation id="2578394532502990878">ታሚልኛ ፎነቲክ</translation> <translation id="2579959351793446050">ኦዲያ</translation> <translation id="2602810353103180630">አውታረ መረብ <ph name="NETWORK_INDEX" /> ከ<ph name="NETWORK_COUNT" />፣ <ph name="NETWORK_NAME" />, <ph name="CONNECTION_STATUS" />፣ የሲግናል ጥንካሬ <ph name="SIGNAL_STRENGTH" />%፣ በአስተዳዳሪዎ የታገደ፣ ዝርዝሮች</translation> @@ -275,6 +280,7 @@ <translation id="3408072735282270043">አግብር፣ <ph name="NETWORK_NAME" /></translation> <translation id="3408236822532681288">ጀርመንኛ (ጀርመን) በNeo 2 ቁልፍ ሰሌዳ</translation> <translation id="3414856743105198592">ተነቃይ ማህደረ ትውስታው ላይ ቅርጸት መስራት ሁሉንም ውሂብ ያጠፋል። መቀጠል ይፈልጋሉ?</translation> +<translation id="3435143625481187092">በ<ph name="FOLDER_NAME" /> በአቃፊ ውስጥ ያሉ ፋይሎችን እንዲደርስ ለBruschetta ፈቃድ ይስጡ</translation> <translation id="3437801641691368414">የተፈጠረበት ጊዜ</translation> <translation id="343907260260897561">ቅጽበታዊ ካሜራ</translation> <translation id="3455931012307786678">ኤስቶኒያኛ</translation> @@ -355,6 +361,7 @@ <translation id="4159731583141908892"><ph name="FILE_NAME" /> ተወስደዋል።</translation> <translation id="4176286497474237543">የቆሻሻ ማጠራቀሚያውን አሁኑኑ አጽዳ</translation> <translation id="4179621117429069925">ይህ ንጥል በመጣያዎ ውስጥ ነው</translation> +<translation id="4181839429935094755"><ph name="NUMBER_OF_ITEMS" /> አቃፊዎች ከBruschetta ጋር ተጋርተዋል</translation> <translation id="4186579485882418952">ከመስመር ውጭን አንቃ</translation> <translation id="4193154014135846272">Google ሰነድ</translation> <translation id="4197674956721858839">የጨመቃ ምርጫ</translation> @@ -416,6 +423,7 @@ <translation id="4646813851450205600">ቼክኛ በQwerty ቁልፍ ሰሌዳ</translation> <translation id="4656777537938206294">ፋይሎችን ከመስመር ውጭ እንዲገኙ ያድርጉ</translation> <translation id="4658782175094886150">በበረዶ ውስጥ ያለ ሰው</translation> +<translation id="466782788172479199">በእርስዎ Google Drive ውስጥ ፋይሎችን የመድረስ ፈቃድን ለBruschetta ይስጡ። ለውጦች ወደ ሌሎች የእርስዎ መሣሪያዎች የሚሰምሩ ይሆናል።</translation> <translation id="4669606053856530811">እነዚህ ንጥሎች ለእነሱ ካልተጋሩ በስተቀር የ«<ph name="SOURCE_NAME" />» አባላት መዳረሻ ያጣሉ።</translation> <translation id="467809019005607715">Google ስላይዶች</translation> <translation id="4690246192099372265">ስዊድንኛ</translation> @@ -523,6 +531,7 @@ <translation id="5330145655348521461">እነዚህ ፋይሎች በተለየ ዴስክቶፕ ላይ ተከፍተዋል። ለማየት ወደ <ph name="USER_NAME" /> (<ph name="MAIL_ADDRESS" />) ይውሰዱት።</translation> <translation id="5330512191124428349">መረጃ ያግኙ</translation> <translation id="5337538975554986899">ከ<ph name="NON_RESTRICTED_DESTINATIONS" /> ውጪ በሁሉም ዩአርኤሎች የፋይል መዳረሻ</translation> +<translation id="5344246330454251646">የBruschetta ማጋራትን ያስተዳድሩ</translation> <translation id="535792325654997756">ድመቶች ያሉት ሰው</translation> <translation id="5358764674931277">የክፈፍ ፍጥነት</translation> <translation id="5363339716524495120">የግቤት ቋንቋ ቻይንኛ ነው</translation> @@ -568,6 +577,7 @@ <translation id="5700087501958648444">የኦዲዮ መረጃ</translation> <translation id="5720028165859493293"><ph name="FILE_NAME" /> ወደ መጣያ ተወስዷል</translation> <translation id="5724172041621205163">ታይላንድኛ በፓቶቾት ቁልፍ ሰሌዳ</translation> +<translation id="57383366388012121">ባለፈው ወር</translation> <translation id="5756666464756035725">የሃንጋሪኛ QWERTY</translation> <translation id="5763377084591234761">ጀርመንኛ (ስዊዘርላንድ)</translation> <translation id="5769519078756170258">የሚገለል አስተናጋጅ ወይም ጎራ</translation> @@ -677,6 +687,7 @@ <translation id="6710213216561001401">ቀዳሚ</translation> <translation id="6732801395666424405">የእውቅና ማረጋገጫዎች አልተጫኑም</translation> <translation id="6736329909263487977"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />]</translation> +<translation id="6740270213273127264">አቃፊን ከBruschetta ጋር ያጋሩ</translation> <translation id="6751256176799620176">1 አቃፊ ተመርጧል</translation> <translation id="6755827872271341378">የChromeOS Flex መሣሪያ</translation> <translation id="6790428901817661496">አጫውት</translation> @@ -705,6 +716,7 @@ <translation id="6935521024859866267">ወደ ታች የተገለበጠ</translation> <translation id="6943836128787782965">ኤችቲቲፒ ማግኘት አልተሳካም</translation> <translation id="6949408524333579394">በሰርቢያኛ ቋንቋ ፊደል መጻፍ</translation> +<translation id="69548399407432279">አምና</translation> <translation id="6960565108681981554">አልገበረም። የአገልግሎት አቅራቢዎን ያነጋግሩ።</translation> <translation id="696203921837389374">በሞባይል ውሂብ ላይ ማመሳሰልን አንቃ</translation> <translation id="6965382102122355670">እሺ</translation> @@ -848,6 +860,7 @@ <translation id="8042602468072383151">የ<ph name="AUDIO_TYPE" /> ኦዲዮ</translation> <translation id="8045462269890919536">ሮማኒያን</translation> <translation id="8049184478152619004">የግል እገዳ ማንሻ ቁልፍ (PUK) ያስገቡ</translation> +<translation id="8055538340801153769">ይህ አቃፊ</translation> <translation id="807187749540895545"><ph name="FILE_NAME" />ን ሰርስሮ በማውጣት ላይ...</translation> <translation id="8087576439476816834">አውርድ፣ <ph name="PROFILE_NAME" /></translation> <translation id="8106045200081704138">ከእኔ ጋር የተጋሩ</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sr-Latn.xtb b/ui/chromeos/translations/ui_chromeos_strings_sr-Latn.xtb index 8c4bc58..ffbfcb6 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_sr-Latn.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_sr-Latn.xtb
@@ -6,7 +6,7 @@ <translation id="1049926623896334335">Word dokument</translation> <translation id="1056775291175587022">Nema mreža</translation> <translation id="1056898198331236512">Upozorenje</translation> -<translation id="1060368002126861100">Da biste otvarali datoteke pomoću aplikacije <ph name="APP_NAME" />, prvo ih premestite u direktorijum sa Windows datotekama.</translation> +<translation id="1060368002126861100">Da biste otvarali datoteke pomoću aplikacije <ph name="APP_NAME" />, prvo ih premestite u folder sa Windows datotekama.</translation> <translation id="1062407476771304334">Zameni</translation> <translation id="1119447706177454957">Interna greška</translation> <translation id="1120073797882051782">Hangul romadža</translation> @@ -49,7 +49,7 @@ <translation id="1403008701842173542">Svuda</translation> <translation id="1404323374378969387">norveški</translation> <translation id="1433628812591023318">Da biste otpustili fajlove na Parallels Desktop, morate da ih premestite u Windows fajlove.</translation> -<translation id="1435838927755162558">Delite direktorijum sa Parallels Desktop-om</translation> +<translation id="1435838927755162558">Delite folder sa Parallels Desktop-om</translation> <translation id="1439919885608649279">Osoba sa cvećem</translation> <translation id="1471718551822868769">slovački</translation> <translation id="1482884275703521657">finski</translation> @@ -103,7 +103,7 @@ <translation id="1832073788765803750">katakana sa pola širine</translation> <translation id="1834290891154666894">Nevažeći unos podudaranja alternativnog naziva subjekta</translation> <translation id="1838709767668011582">Google sajt</translation> -<translation id="1853795129690976061">Ovaj direktorijum se deli sa Linux-om</translation> +<translation id="1853795129690976061">Ovaj folder se deli sa Linux-om</translation> <translation id="1859422890169495746">Ovaj Chromebook</translation> <translation id="1864756863218646478">Nije moguće pronaći datoteku.</translation> <translation id="1884013283844450420"><ph name="NETWORK_INDEX" />. mreža od <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, poveži</translation> @@ -143,7 +143,7 @@ <translation id="22085916256174561">korejski</translation> <translation id="2208919847696382164">Instalirajte pomoću Linux-a</translation> <translation id="2225536596944493418">Želite li stvarno da izbrišete stavke (<ph name="NUMBER_OF_ITEMS" />)?</translation> -<translation id="2230062665678605299">Nije moguće napraviti direktorijum „<ph name="FOLDER_NAME" />“. <ph name="ERROR_MESSAGE" /></translation> +<translation id="2230062665678605299">Nije moguće napraviti folder „<ph name="FOLDER_NAME" />“. <ph name="ERROR_MESSAGE" /></translation> <translation id="2239068707900391003">Osoba sa kafom</translation> <translation id="2251368349685848079">Vrati iz otpada</translation> <translation id="2282155092769082568">URL za automatsku konfiguraciju:</translation> @@ -168,7 +168,7 @@ <translation id="240770291734945588"><ph name="SPACE_AVAILABLE" /> slobodnog prostora</translation> <translation id="2417486498593892439">Prijavite se na mrežu</translation> <translation id="2425665904502185219">Ukupna veličina datoteke</translation> -<translation id="2428749644083375155">Stavke (<ph name="NUMBER_OF_ITEMS" />) se kopiraju u direktorijum <ph name="FOLDER_NAME" /></translation> +<translation id="2428749644083375155">Stavke (<ph name="NUMBER_OF_ITEMS" />) se kopiraju u folder <ph name="FOLDER_NAME" /></translation> <translation id="2448312741937722512">Tip</translation> <translation id="2452444014801043526">Osoba sa megafonom</translation> <translation id="2464079411014186876">Sladoled</translation> @@ -294,7 +294,7 @@ <translation id="3527085408025491307">Folder</translation> <translation id="3548125359243647069">Previše puta ste uneli pogrešan PIN.</translation> <translation id="3549797760399244642">Idi na drive.google.com...</translation> -<translation id="3553048479571901246">Da biste otvarali datoteke pomoću aplikacije <ph name="APP_NAME" />, prvo ih kopirajte u direktorijum sa Windows datotekama.</translation> +<translation id="3553048479571901246">Da biste otvarali datoteke pomoću aplikacije <ph name="APP_NAME" />, prvo ih kopirajte u folder sa Windows datotekama.</translation> <translation id="3556731189587832921">engleski (SAD) sa internacionalnom tastaturom za računar</translation> <translation id="3557414470514932909">Fajl <ph name="FILE_NAME" /> se premešta u otpad</translation> <translation id="3567221313191587603">Izaberite fajl i obeležite <ph name="OFFLINE_CHECKBOX_NAME" /> da biste aktivirali oflajn pristup fajlovima.</translation> @@ -372,7 +372,7 @@ <translation id="4218274196133425560">Ukloni izuzetak za <ph name="HOST_NAME" /></translation> <translation id="4261901459838235729">Google prezentacija</translation> <translation id="4277536868133419688">Filter <ph name="FILTER_NAME" /> je uključen.</translation> -<translation id="4290535918735525311">1 direktorijum se deli sa Linux-om</translation> +<translation id="4290535918735525311">1 folder se deli sa Linux-om</translation> <translation id="4299729908419173967">portugalski (Brazil)</translation> <translation id="4302605047395093221">Svako ko koristi ovaj uređaj mora da unese PIN da bi se povezao na ovu mobilnu mrežu</translation> <translation id="4303531889494116116">Ova mreža je zauzeta. Probajte ponovo kasnije.</translation> @@ -417,7 +417,7 @@ <translation id="4583436353463424810">Nema nedavnih dokumenata</translation> <translation id="4594543368593301662">Prikazuju se rezultati za: <ph name="SEARCH_TERM" />.</translation> <translation id="4599600860674643278">Filter je resetovan.</translation> -<translation id="4603392156942865207"><ph name="FILE_NAME" /> se kopira u direktorijum <ph name="FOLDER_NAME" /></translation> +<translation id="4603392156942865207"><ph name="FILE_NAME" /> se kopira u folder <ph name="FOLDER_NAME" /></translation> <translation id="4631887759990505102">Izvođač</translation> <translation id="4642769377300286600">Instalira se profil za mobilne uređaje, mreža <ph name="NETWORK_INDEX" /> od <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="NETWORK_PROVIDER_NAME" /></translation> <translation id="4646813851450205600">češki sa Qwerty tastaturom</translation> @@ -468,7 +468,7 @@ <translation id="4906580650526544301"><ph name="NETWORK_INDEX" />. mreža od <ph name="NETWORK_COUNT" />, <ph name="PHONE_NAME" />, <ph name="PROVIDER_NAME" />, <ph name="CONNECTION_STATUS" />, jačina signala <ph name="SIGNAL_STRENGTH" />%, baterija telefona <ph name="BATTERY_STATUS" />%, detalji</translation> <translation id="4935975195727477204">Cvet gazanije</translation> <translation id="4943368462779413526">Fudbalska lopta</translation> -<translation id="4961158930123534723">1 direktorijum se deli sa Parallels Desktop-om</translation> +<translation id="4961158930123534723">1 folder se deli sa Parallels Desktop-om</translation> <translation id="496656650103537022">Vraćen je fajl <ph name="FILE_NAME" /></translation> <translation id="4969785127455456148">Album</translation> <translation id="4973523518332075481">Koristite naziv čiji je maksimalni broj znakova <ph name="MAX_LENGTH" /></translation> @@ -487,7 +487,7 @@ <translation id="5059127710849015030">nepalski, transliteracija</translation> <translation id="5068919226082848014">Pica</translation> <translation id="5081517858322016911"><ph name="TOTAL_FILE_SIZE" /> datoteka će se izbrisati</translation> -<translation id="508423945471810158">Stavke (<ph name="NUMBER_OF_ITEMS" />) se premeštaju u direktorijum <ph name="FOLDER_NAME" /></translation> +<translation id="508423945471810158">Stavke (<ph name="NUMBER_OF_ITEMS" />) se premeštaju u folder <ph name="FOLDER_NAME" /></translation> <translation id="509429900233858213">Došlo je do greške.</translation> <translation id="5098629044894065541">hebrejski</translation> <translation id="5102922915594634436">Upravljajte sinhronizovanim folderima</translation> @@ -536,7 +536,7 @@ <translation id="5358764674931277">Brzina kadrova</translation> <translation id="5363339716524495120">Jezik unosa je kineski</translation> <translation id="5364067326287025678">Otpad je prazan</translation> -<translation id="5368191757080475556">Delite direktorijum sa Linux-om</translation> +<translation id="5368191757080475556">Delite folder sa Linux-om</translation> <translation id="5402367795255837559">Brajeva azbuka</translation> <translation id="5411472733320185105">Ne koristi podešavanja proksija za ove hostove i domene:</translation> <translation id="541890217011173530">sorani kurdski sa tastaturom zasnovanom na engleskom</translation> @@ -616,7 +616,7 @@ <translation id="6074825444536523002">Google obrazac</translation> <translation id="6079871810119356840">mađarski sa Qwerty tastaturom</translation> <translation id="6096979789310008754">Tekst pretrage je obrisan, prikazuju se sve datoteke i direktorijumi.</translation> -<translation id="610101264611565198"><ph name="FILE_NAME" /> se premešta u direktorijum <ph name="FOLDER_NAME" /></translation> +<translation id="610101264611565198"><ph name="FILE_NAME" /> se premešta u folder <ph name="FOLDER_NAME" /></translation> <translation id="61118516107968648">CSV tekst</translation> <translation id="6129953537138746214">Razmak</translation> <translation id="6133173853026656527">Premeštanje datoteke <ph name="FILE_NAME" />...</translation> @@ -688,7 +688,7 @@ <translation id="6732801395666424405">Sertifikati nisu otpremljeni</translation> <translation id="6736329909263487977"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />]</translation> <translation id="6740270213273127264">Delite folder sa virtuelnom mašinom Bruschetta</translation> -<translation id="6751256176799620176">Izabran je 1 direktorijum</translation> +<translation id="6751256176799620176">Izabran je 1 folder</translation> <translation id="6755827872271341378">Chrome OS Flex uređaj</translation> <translation id="6790428901817661496">Pusti</translation> <translation id="6794539005637808366">Vratite stavku ili je prevucite u nov folder izvan otpada</translation> @@ -890,7 +890,7 @@ <translation id="8297012244086013755">Hangul, 3 reda (No Shift)</translation> <translation id="8299269255470343364">japanski</translation> <translation id="8300849813060516376">OTASP nije uspeo</translation> -<translation id="8312871300878166382">Nalepi u direktorijum</translation> +<translation id="8312871300878166382">Nalepi u folder</translation> <translation id="8329978297633540474">Čisti tekst</translation> <translation id="8335587457941836791">Otkači sa police</translation> <translation id="8335837413233998004">beloruski</translation> @@ -998,7 +998,7 @@ <translation id="9219103736887031265">Slike</translation> <translation id="9219908252191632183">Mesečeva površina</translation> <translation id="938470336146445890">Instalirajte korisnički sertifikat.</translation> -<translation id="939736085109172342">Novi direktorijum</translation> +<translation id="939736085109172342">Novi folder</translation> <translation id="943972244133411984">Izmenio/la</translation> <translation id="945522503751344254">Pošalji povratne informacije</translation> <translation id="947144732524271678">Izabrali ste niz stavki (<ph name="ENTRY_COUNT" />) od stavke <ph name="FROM_ENTRY_NAME" /> do stavke <ph name="TO_ENTRY_NAME" />.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sr.xtb b/ui/chromeos/translations/ui_chromeos_strings_sr.xtb index 7b16349..13804f1 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_sr.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_sr.xtb
@@ -6,7 +6,7 @@ <translation id="1049926623896334335">Word документ</translation> <translation id="1056775291175587022">Нема мрежа</translation> <translation id="1056898198331236512">Упозорење</translation> -<translation id="1060368002126861100">Да бисте отварали датотеке помоћу апликације <ph name="APP_NAME" />, прво их преместите у директоријум са Windows датотекама.</translation> +<translation id="1060368002126861100">Да бисте отварали датотеке помоћу апликације <ph name="APP_NAME" />, прво их преместите у фолдер са Windows датотекама.</translation> <translation id="1062407476771304334">Замени</translation> <translation id="1119447706177454957">Интерна грешка</translation> <translation id="1120073797882051782">Хангул ромаџа</translation> @@ -49,7 +49,7 @@ <translation id="1403008701842173542">Свуда</translation> <translation id="1404323374378969387">норвешки</translation> <translation id="1433628812591023318">Да бисте отпустили фајлове на Parallels Desktop, морате да их преместите у Windows фајлове.</translation> -<translation id="1435838927755162558">Делите директоријум са Parallels Desktop-ом</translation> +<translation id="1435838927755162558">Делите фолдер са Parallels Desktop-ом</translation> <translation id="1439919885608649279">Особа са цвећем</translation> <translation id="1471718551822868769">словачки</translation> <translation id="1482884275703521657">фински</translation> @@ -103,7 +103,7 @@ <translation id="1832073788765803750">катакана са пола ширине</translation> <translation id="1834290891154666894">Неважећи унос подударања алтернативног назива субјекта</translation> <translation id="1838709767668011582">Google сајт</translation> -<translation id="1853795129690976061">Овај директоријум се дели са Linux-ом</translation> +<translation id="1853795129690976061">Овај фолдер се дели са Linux-ом</translation> <translation id="1859422890169495746">Овај Chromebook</translation> <translation id="1864756863218646478">Није могуће пронаћи датотеку.</translation> <translation id="1884013283844450420"><ph name="NETWORK_INDEX" />. мрежа од <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, повежи</translation> @@ -143,7 +143,7 @@ <translation id="22085916256174561">корејски</translation> <translation id="2208919847696382164">Инсталирајте помоћу Linux-а</translation> <translation id="2225536596944493418">Желите ли стварно да избришете ставке (<ph name="NUMBER_OF_ITEMS" />)?</translation> -<translation id="2230062665678605299">Није могуће направити директоријум „<ph name="FOLDER_NAME" />“. <ph name="ERROR_MESSAGE" /></translation> +<translation id="2230062665678605299">Није могуће направити фолдер „<ph name="FOLDER_NAME" />“. <ph name="ERROR_MESSAGE" /></translation> <translation id="2239068707900391003">Особа са кафом</translation> <translation id="2251368349685848079">Врати из отпада</translation> <translation id="2282155092769082568">URL за аутоматску конфигурацију:</translation> @@ -168,7 +168,7 @@ <translation id="240770291734945588"><ph name="SPACE_AVAILABLE" /> слободног простора</translation> <translation id="2417486498593892439">Пријавите се на мрежу</translation> <translation id="2425665904502185219">Укупна величина датотеке</translation> -<translation id="2428749644083375155">Ставке (<ph name="NUMBER_OF_ITEMS" />) се копирају у директоријум <ph name="FOLDER_NAME" /></translation> +<translation id="2428749644083375155">Ставке (<ph name="NUMBER_OF_ITEMS" />) се копирају у фолдер <ph name="FOLDER_NAME" /></translation> <translation id="2448312741937722512">Тип</translation> <translation id="2452444014801043526">Особа са мегафоном</translation> <translation id="2464079411014186876">Сладолед</translation> @@ -294,7 +294,7 @@ <translation id="3527085408025491307">Фолдер</translation> <translation id="3548125359243647069">Превише пута сте унели погрешан PIN.</translation> <translation id="3549797760399244642">Иди на drive.google.com...</translation> -<translation id="3553048479571901246">Да бисте отварали датотеке помоћу апликације <ph name="APP_NAME" />, прво их копирајте у директоријум са Windows датотекама.</translation> +<translation id="3553048479571901246">Да бисте отварали датотеке помоћу апликације <ph name="APP_NAME" />, прво их копирајте у фолдер са Windows датотекама.</translation> <translation id="3556731189587832921">енглески (САД) са интернационалном тастатуром за рачунар</translation> <translation id="3557414470514932909">Фајл <ph name="FILE_NAME" /> се премешта у отпад</translation> <translation id="3567221313191587603">Изаберите фајл и обележите <ph name="OFFLINE_CHECKBOX_NAME" /> да бисте активирали офлајн приступ фајловима.</translation> @@ -372,7 +372,7 @@ <translation id="4218274196133425560">Уклони изузетак за <ph name="HOST_NAME" /></translation> <translation id="4261901459838235729">Google презентација</translation> <translation id="4277536868133419688">Филтер <ph name="FILTER_NAME" /> је укључен.</translation> -<translation id="4290535918735525311">1 директоријум се дели са Linux-ом</translation> +<translation id="4290535918735525311">1 фолдер се дели са Linux-ом</translation> <translation id="4299729908419173967">португалски (Бразил)</translation> <translation id="4302605047395093221">Свако ко користи овај уређај мора да унесе PIN да би се повезао на ову мобилну мрежу</translation> <translation id="4303531889494116116">Ова мрежа је заузета. Пробајте поново касније.</translation> @@ -417,7 +417,7 @@ <translation id="4583436353463424810">Нема недавних докумената</translation> <translation id="4594543368593301662">Приказују се резултати за: <ph name="SEARCH_TERM" />.</translation> <translation id="4599600860674643278">Филтер је ресетован.</translation> -<translation id="4603392156942865207"><ph name="FILE_NAME" /> се копира у директоријум <ph name="FOLDER_NAME" /></translation> +<translation id="4603392156942865207"><ph name="FILE_NAME" /> се копира у фолдер <ph name="FOLDER_NAME" /></translation> <translation id="4631887759990505102">Извођач</translation> <translation id="4642769377300286600">Инсталира се профил за мобилне уређаје, мрежа <ph name="NETWORK_INDEX" /> од <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="NETWORK_PROVIDER_NAME" /></translation> <translation id="4646813851450205600">чешки са Qwerty тастатуром</translation> @@ -468,7 +468,7 @@ <translation id="4906580650526544301"><ph name="NETWORK_INDEX" />. мрежа од <ph name="NETWORK_COUNT" />, <ph name="PHONE_NAME" />, <ph name="PROVIDER_NAME" />, <ph name="CONNECTION_STATUS" />, јачина сигнала <ph name="SIGNAL_STRENGTH" />%, батерија телефона <ph name="BATTERY_STATUS" />%, детаљи</translation> <translation id="4935975195727477204">Цвет газаније</translation> <translation id="4943368462779413526">Фудбалска лопта</translation> -<translation id="4961158930123534723">1 директоријум се дели са Parallels Desktop-ом</translation> +<translation id="4961158930123534723">1 фолдер се дели са Parallels Desktop-ом</translation> <translation id="496656650103537022">Враћен је фајл <ph name="FILE_NAME" /></translation> <translation id="4969785127455456148">Албум</translation> <translation id="4973523518332075481">Користите назив чији је максимални број знакова <ph name="MAX_LENGTH" /></translation> @@ -487,7 +487,7 @@ <translation id="5059127710849015030">непалски, транслитерација</translation> <translation id="5068919226082848014">Пица</translation> <translation id="5081517858322016911"><ph name="TOTAL_FILE_SIZE" /> датотека ће се избрисати</translation> -<translation id="508423945471810158">Ставке (<ph name="NUMBER_OF_ITEMS" />) се премештају у директоријум <ph name="FOLDER_NAME" /></translation> +<translation id="508423945471810158">Ставке (<ph name="NUMBER_OF_ITEMS" />) се премештају у фолдер <ph name="FOLDER_NAME" /></translation> <translation id="509429900233858213">Дошло је до грешке.</translation> <translation id="5098629044894065541">хебрејски</translation> <translation id="5102922915594634436">Управљајте синхронизованим фолдерима</translation> @@ -536,7 +536,7 @@ <translation id="5358764674931277">Брзина кадрова</translation> <translation id="5363339716524495120">Језик уноса је кинески</translation> <translation id="5364067326287025678">Отпад је празан</translation> -<translation id="5368191757080475556">Делите директоријум са Linux-ом</translation> +<translation id="5368191757080475556">Делите фолдер са Linux-ом</translation> <translation id="5402367795255837559">Брајева азбука</translation> <translation id="5411472733320185105">Не користи подешавања проксија за ове хостове и домене:</translation> <translation id="541890217011173530">сорани курдски са тастатуром заснованом на енглеском</translation> @@ -616,7 +616,7 @@ <translation id="6074825444536523002">Google образац</translation> <translation id="6079871810119356840">мађарски са Qwerty тастатуром</translation> <translation id="6096979789310008754">Текст претраге је обрисан, приказују се све датотеке и директоријуми.</translation> -<translation id="610101264611565198"><ph name="FILE_NAME" /> се премешта у директоријум <ph name="FOLDER_NAME" /></translation> +<translation id="610101264611565198"><ph name="FILE_NAME" /> се премешта у фолдер <ph name="FOLDER_NAME" /></translation> <translation id="61118516107968648">CSV текст</translation> <translation id="6129953537138746214">Размак</translation> <translation id="6133173853026656527">Премештање датотеке <ph name="FILE_NAME" />...</translation> @@ -688,7 +688,7 @@ <translation id="6732801395666424405">Сертификати нису отпремљени</translation> <translation id="6736329909263487977"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />]</translation> <translation id="6740270213273127264">Делите фолдер са виртуелном машином Bruschetta</translation> -<translation id="6751256176799620176">Изабран је 1 директоријум</translation> +<translation id="6751256176799620176">Изабран је 1 фолдер</translation> <translation id="6755827872271341378">Chrome OS Flex уређај</translation> <translation id="6790428901817661496">Пусти</translation> <translation id="6794539005637808366">Вратите ставку или је превуците у нов фолдер изван отпада</translation> @@ -890,7 +890,7 @@ <translation id="8297012244086013755">Хангул, 3 реда (No Shift)</translation> <translation id="8299269255470343364">јапански</translation> <translation id="8300849813060516376">OTASP није успео</translation> -<translation id="8312871300878166382">Налепи у директоријум</translation> +<translation id="8312871300878166382">Налепи у фолдер</translation> <translation id="8329978297633540474">Чисти текст</translation> <translation id="8335587457941836791">Откачи са полице</translation> <translation id="8335837413233998004">белоруски</translation> @@ -998,7 +998,7 @@ <translation id="9219103736887031265">Слике</translation> <translation id="9219908252191632183">Месечева површина</translation> <translation id="938470336146445890">Инсталирајте кориснички сертификат.</translation> -<translation id="939736085109172342">Нови директоријум</translation> +<translation id="939736085109172342">Нови фолдер</translation> <translation id="943972244133411984">Изменио/ла</translation> <translation id="945522503751344254">Пошаљи повратне информације</translation> <translation id="947144732524271678">Изабрали сте низ ставки (<ph name="ENTRY_COUNT" />) од ставке <ph name="FROM_ENTRY_NAME" /> до ставке <ph name="TO_ENTRY_NAME" />.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_te.xtb b/ui/chromeos/translations/ui_chromeos_strings_te.xtb index f0e13299..3d121183 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_te.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_te.xtb
@@ -718,7 +718,7 @@ <translation id="6949408524333579394">సెర్బియన్ ట్రాన్స్లిటరేషన్</translation> <translation id="69548399407432279">గత సంవత్సరం</translation> <translation id="6960565108681981554">యాక్టివేట్ చేయబడలేదు. మీ క్యారియర్ను సంప్రదించండి.</translation> -<translation id="696203921837389374">మొబైల్ డేటా ఉపయోగించి సింక్ చేయడం ప్రారంభించు</translation> +<translation id="696203921837389374">మొబైల్ డేటా ఉపయోగించి సింక్ చేయడం ప్రారంభించండి</translation> <translation id="6965382102122355670">సరే</translation> <translation id="6965648386495488594">పోర్ట్</translation> <translation id="6970230597523682626">బల్గేరియన్</translation> @@ -836,7 +836,7 @@ <translation id="7839804798877833423">ఈ ఫైళ్లను పొందడానికి మొబైల్ డేటాలో సుమారుగా <ph name="FILE_SIZE" /> ఉపయోగించబడుతుంది.</translation> <translation id="7846076177841592234">ఎంపికను రద్దు చేయి</translation> <translation id="7853966320808728790">ఫ్రెంచ్ BÉPO</translation> -<translation id="7857117644404132472">మినహాయింపును జోడించు</translation> +<translation id="7857117644404132472">మినహాయింపును జోడించండి</translation> <translation id="7868774406711971383">పోలిష్</translation> <translation id="7874321682039004450">ఫిలిప్పినో</translation> <translation id="78946041517601018">షేర్ చేసిన డ్రైవ్లు</translation>
diff --git a/ui/compositor/compositor.h b/ui/compositor/compositor.h index 5a9fd7f..50cea82c 100644 --- a/ui/compositor/compositor.h +++ b/ui/compositor/compositor.h
@@ -256,6 +256,12 @@ return host_->display_transform_hint(); } + const viz::LocalSurfaceId& local_surface_id_from_parent() const { + return host_->local_surface_id_from_parent(); + } + + void RequestNewLocalSurfaceId() { host_->RequestNewLocalSurfaceId(); } + // Returns the size of the widget that is being drawn to in pixel coordinates. const gfx::Size& size() const { return size_; }
diff --git a/ui/file_manager/file_manager/foreground/js/ui/file_table_list.js b/ui/file_manager/file_manager/foreground/js/ui/file_table_list.js index 9044db8a..14177c99 100644 --- a/ui/file_manager/file_manager/foreground/js/ui/file_table_list.js +++ b/ui/file_manager/file_manager/foreground/js/ui/file_table_list.js
@@ -371,8 +371,13 @@ // Overriding the default role 'list' to 'listbox' for better // accessibility on ChromeOS. li.setAttribute('role', 'option'); - li.toggleAttribute( - 'disabled', filelist.isDlpBlocked(entry, metadataModel, volumeManager)); + const disabled = filelist.isDlpBlocked(entry, metadataModel, volumeManager); + li.toggleAttribute('disabled', disabled); + if (disabled) { + li.setAttribute('aria-disabled', 'true'); + } else { + li.removeAttribute('aria-disabled'); + } Object.defineProperty(li, 'selected', { /**
diff --git a/ui/ozone/platform/wayland/test/mock_wayland_platform_window_delegate.cc b/ui/ozone/platform/wayland/test/mock_wayland_platform_window_delegate.cc index 4d3d29c..2bfba9f5 100644 --- a/ui/ozone/platform/wayland/test/mock_wayland_platform_window_delegate.cc +++ b/ui/ozone/platform/wayland/test/mock_wayland_platform_window_delegate.cc
@@ -34,4 +34,8 @@ return window; } +int64_t MockWaylandPlatformWindowDelegate::InsertSequencePoint() { + return viz_seq_++; +} + } // namespace ui
diff --git a/ui/ozone/platform/wayland/test/mock_wayland_platform_window_delegate.h b/ui/ozone/platform/wayland/test/mock_wayland_platform_window_delegate.h index 5576973..fe1d8d59 100644 --- a/ui/ozone/platform/wayland/test/mock_wayland_platform_window_delegate.h +++ b/ui/ozone/platform/wayland/test/mock_wayland_platform_window_delegate.h
@@ -31,9 +31,17 @@ // MockPlatformWindowDelegate: gfx::Rect ConvertRectToPixels(const gfx::Rect& rect_in_dp) const override; gfx::Rect ConvertRectToDIP(const gfx::Rect& rect_in_pixels) const override; + int64_t InsertSequencePoint() override; + + int64_t viz_seq() const { return viz_seq_; } private: raw_ptr<WaylandWindow> wayland_window_ = nullptr; + + // |viz_seq_| is used to save an incrementing sequence point on each + // call to InsertSequencePoint. Test code can check this value to know + // what sequence point is required to advance to the latest state. + int64_t viz_seq_ = 0; }; } // namespace ui
diff --git a/ui/ozone/platform/wayland/wayland_buffer_manager_unittest.cc b/ui/ozone/platform/wayland/wayland_buffer_manager_unittest.cc index ac76485..bf69fb1 100644 --- a/ui/ozone/platform/wayland/wayland_buffer_manager_unittest.cc +++ b/ui/ozone/platform/wayland/wayland_buffer_manager_unittest.cc
@@ -477,7 +477,8 @@ CreateDmabufBasedBufferAndSetTerminateExpectation(false /*fail*/, kBufferId1); - CommitBuffer(widget, kBufferId1, kBufferId1, gl::FrameData(), + CommitBuffer(widget, kBufferId1, kBufferId1, + gl::FrameData(delegate_.viz_seq()), window_->GetBoundsInPixels(), gfx::RoundedCornersF(), kDefaultScale, gfx::Rect(window_->size_px())); @@ -503,7 +504,8 @@ CreateDmabufBasedBufferAndSetTerminateExpectation(false /*fail*/, kBufferId1); - CommitBuffer(widget, kBufferId1, kBufferId1, gl::FrameData(), + CommitBuffer(widget, kBufferId1, kBufferId1, + gl::FrameData(delegate_.viz_seq()), window_->GetBoundsInPixels(), gfx::RoundedCornersF(), kDefaultScale, gfx::Rect(window_->size_px())); @@ -531,7 +533,8 @@ CreateDmabufBasedBufferAndSetTerminateExpectation(false /*fail*/, kBufferId1); // Attach to a surface. - CommitBuffer(widget, kBufferId1, kBufferId1, gl::FrameData(), + CommitBuffer(widget, kBufferId1, kBufferId1, + gl::FrameData(delegate_.viz_seq()), window_->GetBoundsInPixels(), gfx::RoundedCornersF(), kDefaultScale, gfx::Rect(window_->size_px())); @@ -574,7 +577,7 @@ EXPECT_CALL(*mock_surface, Commit()).Times(kNumberOfCommits); }); - CommitBuffer(window_->GetWidget(), 1u, 5u, gl::FrameData(), + CommitBuffer(window_->GetWidget(), 1u, 5u, gl::FrameData(delegate_.viz_seq()), window_->GetBoundsInPixels(), gfx::RoundedCornersF(), kDefaultScale, gfx::Rect(window_->size_px())); @@ -609,7 +612,8 @@ // Non-existing buffer id overlay_configs.emplace_back( CreateBasicWaylandOverlayConfig(0, 2u, window_->GetBoundsInPixels())); - buffer_manager_gpu_->CommitOverlays(window_->GetWidget(), 1u, gl::FrameData(), + buffer_manager_gpu_->CommitOverlays(window_->GetWidget(), 1u, + gl::FrameData(delegate_.viz_seq()), std::move(overlay_configs)); // Let the mojo call to go through. @@ -641,7 +645,8 @@ overlay_configs.emplace_back( CreateBasicWaylandOverlayConfig(1, 1u, window_->GetBoundsInPixels())); - buffer_manager_gpu_->CommitOverlays(window_->GetWidget(), 1u, gl::FrameData(), + buffer_manager_gpu_->CommitOverlays(window_->GetWidget(), 1u, + gl::FrameData(delegate_.viz_seq()), std::move(overlay_configs)); // Let the mojo call to go through. @@ -660,9 +665,10 @@ // Can't commit for non-existing widget. SetTerminateCallbackExpectationAndDestroyChannel(&callback_, true /*fail*/); - CommitBuffer(gfx::kNullAcceleratedWidget, 1u, kBufferId, gl::FrameData(), - window_->GetBoundsInPixels(), gfx::RoundedCornersF(), - kDefaultScale, gfx::Rect(window_->size_px())); + CommitBuffer(gfx::kNullAcceleratedWidget, 1u, kBufferId, + gl::FrameData(delegate_.viz_seq()), window_->GetBoundsInPixels(), + gfx::RoundedCornersF(), kDefaultScale, + gfx::Rect(window_->size_px())); // Let the mojo call to go through. base::RunLoop().RunUntilIdle(); @@ -725,7 +731,7 @@ z_order++, kBufferId2, window_->GetBoundsInPixels())); } buffer_manager_gpu_->CommitOverlays(window_->GetWidget(), 1u, - gl::FrameData(), + gl::FrameData(delegate_.viz_seq()), std::move(overlay_configs)); base::RunLoop().RunUntilIdle(); @@ -805,7 +811,8 @@ ASSERT_TRUE(!connection_->presentation()); EXPECT_CALL(mock_surface_gpu, OnPresentation(kBufferId1, _)).Times(1); - CommitBuffer(widget, kBufferId1, kBufferId1, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId1, kBufferId1, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); base::RunLoop().RunUntilIdle(); @@ -815,7 +822,8 @@ SendFrameCallbackForSurface(surface_id_); // Commit second buffer now. - CommitBuffer(widget, kBufferId2, kBufferId2, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId2, kBufferId2, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); base::RunLoop().RunUntilIdle(); @@ -847,7 +855,8 @@ ASSERT_TRUE(connection_->presentation()); // Commit second buffer now. - CommitBuffer(widget, kBufferId1, kBufferId1, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId1, kBufferId1, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); base::RunLoop().RunUntilIdle(); @@ -925,7 +934,8 @@ EXPECT_CALL(mock_surface_gpu, OnSubmission(kBufferId1, gfx::SwapResult::SWAP_ACK, _)) .Times(1); - CommitBuffer(widget, kBufferId1, kBufferId1, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId1, kBufferId1, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); SendFrameCallbackForSurface(surface_id_); @@ -942,7 +952,8 @@ testing::Mock::VerifyAndClearExpectations(&mock_surface_gpu); // Commit second buffer now. - CommitBuffer(widget, kBufferId2, kBufferId2, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId2, kBufferId2, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); SendFrameCallbackForSurface(surface_id_); @@ -993,7 +1004,8 @@ ::testing::Eq(gfx::PresentationFeedback::Flags::kFailure)))) .Times(1); EXPECT_CALL(mock_surface_gpu, OnPresentation(_, _)).Times(0); - CommitBuffer(widget, kBufferId3, kBufferId3, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId3, kBufferId3, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); PostToServerAndWait([id = surface_id_](wl::TestWaylandServerThread* server) { server->GetObject<wl::MockSurface>(id)->SendFrameCallback(); @@ -1075,7 +1087,8 @@ EXPECT_CALL(mock_surface_gpu, OnPresentation(_, _)).Times(0); // Commit first buffer - CommitBuffer(widget, kBufferId1, kBufferId1, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId1, kBufferId1, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); // Let the mojo message for OnSubmission go back. @@ -1098,7 +1111,8 @@ EXPECT_CALL(mock_surface_gpu, OnPresentation(_, _)).Times(0); // Commit second buffer - CommitBuffer(widget, kBufferId2, kBufferId2, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId2, kBufferId2, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); PostToServerAndWait([id = surface_id_](wl::TestWaylandServerThread* server) { @@ -1124,7 +1138,8 @@ EXPECT_CALL(mock_surface_gpu, OnPresentation(_, _)).Times(0); // Commit third buffer - CommitBuffer(widget, kBufferId3, kBufferId3, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId3, kBufferId3, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); PostToServerAndWait([id = surface_id_](wl::TestWaylandServerThread* server) { @@ -1235,9 +1250,10 @@ EXPECT_CALL(*mock_surface, Commit()).Times(0); }); - CommitBuffer(widget, kDmabufBufferId, kDmabufBufferId, gl::FrameData(), - window_->GetBoundsInPixels(), gfx::RoundedCornersF(), - kDefaultScale, gfx::Rect(window_->size_px())); + CommitBuffer(widget, kDmabufBufferId, kDmabufBufferId, + gl::FrameData(delegate_.viz_seq()), window_->GetBoundsInPixels(), + gfx::RoundedCornersF(), kDefaultScale, + gfx::Rect(window_->size_px())); PostToServerAndWait([id = surface_id_](wl::TestWaylandServerThread* server) { auto* mock_surface = server->GetObject<wl::MockSurface>(id); @@ -1276,9 +1292,10 @@ EXPECT_CALL(*mock_surface, Commit()).Times(0); }); - CommitBuffer(widget, kDmabufBufferId2, kDmabufBufferId2, gl::FrameData(), - window_->GetBoundsInPixels(), gfx::RoundedCornersF(), - kDefaultScale, gfx::Rect(window_->size_px())); + CommitBuffer(widget, kDmabufBufferId2, kDmabufBufferId2, + gl::FrameData(delegate_.viz_seq()), window_->GetBoundsInPixels(), + gfx::RoundedCornersF(), kDefaultScale, + gfx::Rect(window_->size_px())); PostToServerAndWait([id = surface_id_](wl::TestWaylandServerThread* server) { auto* mock_surface = server->GetObject<wl::MockSurface>(id); @@ -1352,7 +1369,8 @@ EXPECT_CALL(*mock_surface, Commit()).Times(0); }); - CommitBuffer(widget, kDmabufBufferId, kDmabufBufferId, gl::FrameData(), + CommitBuffer(widget, kDmabufBufferId, kDmabufBufferId, + gl::FrameData(delegate_.viz_seq()), window_->GetBoundsInPixels(), gfx::RoundedCornersF(), kDefaultScale, window_->GetBoundsInPixels()); PostToServerAndWait( @@ -1469,14 +1487,14 @@ EXPECT_CALL(*mock_surface, Commit()).Times(1); }); - CommitBuffer(widget, kDmabufBufferId, kDmabufBufferId, gl::FrameData(), - gfx::Rect{55, 55}, gfx::RoundedCornersF(), kDefaultScale, - gfx::Rect{55, 55}); + CommitBuffer(widget, kDmabufBufferId, kDmabufBufferId, + gl::FrameData(delegate_.viz_seq() - 1), gfx::Rect{55, 55}, + gfx::RoundedCornersF(), kDefaultScale, gfx::Rect{55, 55}); ActivateSurface(surface_id, kActivateSerial); - CommitBuffer(widget, kDmabufBufferId, kDmabufBufferId, gl::FrameData(), - kRestoredBounds, gfx::RoundedCornersF(), kDefaultScale, - kRestoredBounds); + CommitBuffer(widget, kDmabufBufferId, kDmabufBufferId, + gl::FrameData(delegate_.viz_seq()), kRestoredBounds, + gfx::RoundedCornersF(), kDefaultScale, kRestoredBounds); SetPointerFocusedWindow(nullptr); window.reset(); DestroyBufferAndSetTerminateExpectation(kDmabufBufferId, false /*fail*/); @@ -1522,7 +1540,8 @@ EXPECT_CALL(mock_surface_gpu, OnPresentation(kBufferId1, _)).Times(1); // Commit second buffer now. - CommitBuffer(widget, kBufferId1, kBufferId1, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId1, kBufferId1, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); SendFrameCallbackForSurface(surface_id_); @@ -1549,7 +1568,8 @@ EXPECT_CALL(mock_surface_gpu, OnPresentation(kBufferId2, _)).Times(1); // Commit second buffer now. - CommitBuffer(widget, kBufferId2, kBufferId2, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId2, kBufferId2, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); PostToServerAndWait([id = surface_id_](wl::TestWaylandServerThread* server) { @@ -1578,7 +1598,8 @@ .Times(0); EXPECT_CALL(mock_surface_gpu, OnPresentation(kBufferId3, _)).Times(0); - CommitBuffer(widget, kBufferId3, kBufferId3, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId3, kBufferId3, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); // Let mojo messages to be processed from host to gpu (if any). @@ -1621,7 +1642,7 @@ }); CreateDmabufBasedBufferAndSetTerminateExpectation(false /*fail*/, kBufferId); - CommitBuffer(widget, kBufferId, kBufferId, gl::FrameData(), + CommitBuffer(widget, kBufferId, kBufferId, gl::FrameData(delegate_.viz_seq()), temp_window->GetBoundsInPixels(), gfx::RoundedCornersF(), kDefaultScale, temp_window->GetBoundsInPixels()); @@ -1653,8 +1674,8 @@ temp_window.reset(); - CommitBuffer(widget, kBufferId, kBufferId, gl::FrameData(), bounds, - gfx::RoundedCornersF(), kDefaultScale, bounds); + CommitBuffer(widget, kBufferId, kBufferId, gl::FrameData(delegate_.viz_seq()), + bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); DestroyBufferAndSetTerminateExpectation(kBufferId, false /*fail*/); } @@ -1692,7 +1713,8 @@ EXPECT_CALL(mock_surface_gpu, OnSubmission(_, _, _)).Times(1); EXPECT_CALL(mock_surface_gpu, OnPresentation(_, _)).Times(1); - CommitBuffer(widget, kBufferId1, kBufferId1, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId1, kBufferId1, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); // Let mojo messages to be processed back to the gpu. @@ -1716,7 +1738,8 @@ .Times(1); EXPECT_CALL(mock_surface_gpu, OnPresentation(kBufferId2, _)).Times(1); - CommitBuffer(widget, kBufferId2, kBufferId2, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId2, kBufferId2, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); PostToServerAndWait( @@ -1735,7 +1758,8 @@ EXPECT_CALL(mock_surface_gpu, OnPresentation(_, _)).Times(0); temp_window.reset(); - CommitBuffer(widget, kBufferId1, kBufferId1, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId1, kBufferId1, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); // Let mojo messages to be processed back to the gpu. @@ -1771,7 +1795,8 @@ .Times(1); EXPECT_CALL(mock_surface_gpu, OnPresentation(kBufferId1, _)).Times(1); - CommitBuffer(widget, kBufferId1, kBufferId1, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId1, kBufferId1, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); SendFrameCallbackForSurface(surface_id_); @@ -1785,11 +1810,13 @@ EXPECT_CALL(mock_surface_gpu, OnSubmission(_, _, _)).Times(0); EXPECT_CALL(mock_surface_gpu, OnPresentation(_, _)).Times(0); - CommitBuffer(widget, kBufferId2, kBufferId2, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId2, kBufferId2, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); SendFrameCallbackForSurface(surface_id_); - CommitBuffer(widget, kBufferId2, kBufferId2, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId2, kBufferId2, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); SendFrameCallbackForSurface(surface_id_); @@ -1838,7 +1865,8 @@ .Times(1); EXPECT_CALL(mock_surface_gpu, OnPresentation(kBufferId1, _)).Times(1); - CommitBuffer(widget, kBufferId1, kBufferId1, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId1, kBufferId1, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); SendFrameCallbackForSurface(surface_id_); @@ -1855,11 +1883,13 @@ EXPECT_CALL(mock_surface_gpu, OnSubmission(_, _, _)).Times(0); EXPECT_CALL(mock_surface_gpu, OnPresentation(_, _)).Times(0); - CommitBuffer(widget, kBufferId2, kBufferId2, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId2, kBufferId2, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); SendFrameCallbackForSurface(surface_id_); - CommitBuffer(widget, kBufferId2, kBufferId2, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId2, kBufferId2, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); // Let mojo messages to be processed back to the gpu. @@ -1916,7 +1946,8 @@ .Times(1); }); - CommitBuffer(widget, kBufferId1, kBufferId1, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId1, kBufferId1, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); SendFrameCallbackForSurface(surface_id_); @@ -1938,7 +1969,8 @@ .Times(2); }); - CommitBuffer(widget, kBufferId2, kBufferId2, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId2, kBufferId2, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); SendFrameCallbackForSurface(surface_id_); @@ -1948,7 +1980,8 @@ wl_resource* wl_buffer2 = GetSurfaceAttachedBuffer(surface_id_); ASSERT_TRUE(wl_buffer2); - CommitBuffer(widget, kBufferId3, kBufferId3, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId3, kBufferId3, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); SendFrameCallbackForSurface(surface_id_); @@ -2031,7 +2064,8 @@ EXPECT_CALL(*mock_surface, Commit()).Times(1); }); - CommitBuffer(widget, kBufferId1, kBufferId1, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId1, kBufferId1, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); // Let mojo messages to be passed from host to gpu. @@ -2056,7 +2090,8 @@ }); // Commit second buffer now. - CommitBuffer(widget, kBufferId2, kBufferId2, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId2, kBufferId2, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); // Let mojo messages to be passed from host to gpu. @@ -2107,7 +2142,8 @@ }); // Commit second buffer now. - CommitBuffer(widget, kBufferId2, kBufferId2, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId2, kBufferId2, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); // Let mojo messages to be passed from host to gpu. @@ -2151,7 +2187,8 @@ EXPECT_CALL(*mock_surface, Commit()).Times(1); }); - CommitBuffer(widget, kBufferId1, kBufferId1, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId1, kBufferId1, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); // Let mojo messages to be passed from host to gpu. @@ -2204,7 +2241,8 @@ .Times(1); EXPECT_CALL(mock_surface_gpu, OnPresentation(kBufferId1, _)).Times(1); - CommitBuffer(widget, kBufferId1, kBufferId1, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId1, kBufferId1, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); // Let mojo messages to be passed from host to gpu. @@ -2258,7 +2296,8 @@ CreateBasicWaylandOverlayConfig(0, kBufferId2, bounds)); overlay_configs.emplace_back( CreateBasicWaylandOverlayConfig(1, kBufferId3, bounds)); - buffer_manager_gpu_->CommitOverlays(window_->GetWidget(), 1u, gl::FrameData(), + buffer_manager_gpu_->CommitOverlays(window_->GetWidget(), 1u, + gl::FrameData(delegate_.viz_seq()), std::move(overlay_configs)); // Let mojo messages from gpu to host to go through. base::RunLoop().RunUntilIdle(); @@ -2319,7 +2358,8 @@ OnSubmission(kBufferId1, gfx::SwapResult::SWAP_ACK, Truly([](const auto& fence) { return fence.is_null(); }))) .Times(1); - CommitBuffer(widget, kBufferId1, kBufferId1, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId1, kBufferId1, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); // Let mojo messages from gpu to host to go through. @@ -2329,7 +2369,8 @@ SendFrameCallbackForSurface(surface_id_); // Commit the second buffer now. - CommitBuffer(widget, kBufferId2, kBufferId2, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId2, kBufferId2, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); SendFrameCallbackForSurface(surface_id_); @@ -2358,7 +2399,8 @@ testing::Mock::VerifyAndClearExpectations(&mock_surface_gpu); // Commit the third buffer now. - CommitBuffer(widget, kBufferId3, kBufferId3, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId3, kBufferId3, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); SendFrameCallbackForSurface(surface_id_); @@ -2427,7 +2469,8 @@ .Times(1); EXPECT_CALL(*mock_surface_gpu.get(), OnPresentation(kBufferId1, _)).Times(1); - CommitBuffer(widget, kBufferId1, kBufferId1, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId1, kBufferId1, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); // Let mojo messages from host to gpu to go through. @@ -2486,7 +2529,8 @@ .Times(1); EXPECT_CALL(*mock_surface_gpu.get(), OnPresentation(kBufferId1, _)).Times(1); - CommitBuffer(widget, kBufferId1, kBufferId1, gl::FrameData(), bounds, + CommitBuffer(widget, kBufferId1, kBufferId1, + gl::FrameData(delegate_.viz_seq()), bounds, gfx::RoundedCornersF(), kDefaultScale, bounds); // Let mojo messages from host to gpu to go through. @@ -2528,7 +2572,8 @@ CreateBasicWaylandOverlayConfig(0, kBufferId2, bounds)); overlay_configs.emplace_back( CreateBasicWaylandOverlayConfig(1, kBufferId3, bounds)); - buffer_manager_gpu_->CommitOverlays(window_->GetWidget(), 1u, gl::FrameData(), + buffer_manager_gpu_->CommitOverlays(window_->GetWidget(), 1u, + gl::FrameData(delegate_.viz_seq()), std::move(overlay_configs)); // Let mojo messages from gpu to host to go through. @@ -2587,7 +2632,8 @@ std::vector<wl::WaylandOverlayConfig> overlay_configs2; overlay_configs2.push_back( CreateBasicWaylandOverlayConfig(INT32_MIN, kBufferId1, bounds)); - buffer_manager_gpu_->CommitOverlays(window_->GetWidget(), 2u, gl::FrameData(), + buffer_manager_gpu_->CommitOverlays(window_->GetWidget(), 2u, + gl::FrameData(delegate_.viz_seq()), std::move(overlay_configs2)); base::RunLoop().RunUntilIdle(); @@ -2667,7 +2713,7 @@ } buffer_manager_gpu_->CommitOverlays(window_->GetWidget(), ++frame_id, - gl::FrameData(), + gl::FrameData(delegate_.viz_seq()), std::move(overlay_configs)); base::RunLoop().RunUntilIdle(); @@ -2853,8 +2899,8 @@ } CommitBuffer(widget, next_buffer_id_commit, next_buffer_id_commit, - gl::FrameData(), bounds, gfx::RoundedCornersF(), kDefaultScale, - bounds); + gl::FrameData(delegate_.viz_seq()), bounds, + gfx::RoundedCornersF(), kDefaultScale, bounds); PostToServerAndWait( [id = surface_id_](wl::TestWaylandServerThread* server) { @@ -2890,7 +2936,7 @@ CreateDmabufBasedBufferAndSetTerminateExpectation(false /*fail*/, kDmabufBufferId); CommitBuffer(window_->GetWidget(), kDmabufBufferId, kDmabufBufferId, - gl::FrameData(), window_->GetBoundsInPixels(), + gl::FrameData(delegate_.viz_seq()), window_->GetBoundsInPixels(), gfx::RoundedCornersF(), kDefaultScale, window_->GetBoundsInPixels()); DestroyBufferAndSetTerminateExpectation(kDmabufBufferId, false /*fail*/); @@ -2937,7 +2983,8 @@ auto bounds = window_->GetBoundsInPixels(); overlay_configs.emplace_back(CreateBasicWaylandOverlayConfig( INT32_MIN, solid_color_buffer_id, bounds)); - buffer_manager_gpu_->CommitOverlays(widget_, 1u, gl::FrameData(), + buffer_manager_gpu_->CommitOverlays(widget_, 1u, + gl::FrameData(delegate_.viz_seq()), std::move(overlay_configs)); base::RunLoop().RunUntilIdle(); @@ -2988,7 +3035,7 @@ overlay_configs.emplace_back( CreateBasicWaylandOverlayConfig(1, kBufferId1, bounds_rect)); buffer_manager_gpu_->CommitOverlays(temp_window->GetWidget(), 1u, - gl::FrameData(), + gl::FrameData(delegate_.viz_seq()), std::move(overlay_configs)); base::RunLoop().RunUntilIdle();
diff --git a/ui/platform_window/platform_window_delegate.cc b/ui/platform_window/platform_window_delegate.cc index 69bd26b5..e68ec58 100644 --- a/ui/platform_window/platform_window_delegate.cc +++ b/ui/platform_window/platform_window_delegate.cc
@@ -42,6 +42,11 @@ void PlatformWindowDelegate::OnOcclusionStateChanged( PlatformWindowOcclusionState occlusion_state) {} +int64_t PlatformWindowDelegate::InsertSequencePoint() { + NOTREACHED(); + return -1; +} + absl::optional<OwnedWindowAnchor> PlatformWindowDelegate::GetOwnedWindowAnchorAndRectInDIP() { return absl::nullopt;
diff --git a/ui/platform_window/platform_window_delegate.h b/ui/platform_window/platform_window_delegate.h index a376c56..aa2bddd 100644 --- a/ui/platform_window/platform_window_delegate.h +++ b/ui/platform_window/platform_window_delegate.h
@@ -160,6 +160,13 @@ virtual void OnOcclusionStateChanged( PlatformWindowOcclusionState occlusion_state); + // Requests a new LocalSurfaceId for the window tree of this platform window. + // Returns the currently set child id (not the new one, since that requires + // an asynchronous operation). Calling code can compare this value with + // the gl::FrameData::seq value to see when viz has produced a frame at or + // after the (conceptually) inserted sequence point. + virtual int64_t InsertSequencePoint(); + // Returns optional information for owned windows that require anchor for // positioning. Useful for such backends as Wayland as it provides flexibility // in positioning child windows, which must be repositioned if the originally
diff --git a/ui/strings/translations/ui_strings_te.xtb b/ui/strings/translations/ui_strings_te.xtb index adac492..dc9bbef8 100644 --- a/ui/strings/translations/ui_strings_te.xtb +++ b/ui/strings/translations/ui_strings_te.xtb
@@ -100,7 +100,7 @@ <translation id="4031910098617850788">F5</translation> <translation id="40579289237549812">{UNREAD_NOTIFICATIONS,plural, =1{1 చదవని నోటిఫికేషన్ ఉంది}other{# చదవని నోటిఫికేషన్లు ఉన్నాయి}}</translation> <translation id="4266252015790371705">{MONTHS,plural, =1{1 నెల క్రితం}other{# నెలల క్రితం}}</translation> -<translation id="4289300219472526559">మాట్లాడటాన్ని ప్రారంభించు</translation> +<translation id="4289300219472526559">మాట్లాడటాన్ని ప్రారంభించండి</translation> <translation id="4289540628985791613">స్థూలదృష్టి</translation> <translation id="4306392492252714209">క్లిప్బోర్డ్ నుండి తీసివేయండి.</translation> <translation id="4491109536499578614">చిత్రం</translation>
diff --git a/ui/views/controls/scroll_view_unittest.cc b/ui/views/controls/scroll_view_unittest.cc index d710cef..54624f3 100644 --- a/ui/views/controls/scroll_view_unittest.cc +++ b/ui/views/controls/scroll_view_unittest.cc
@@ -2518,7 +2518,7 @@ // is somewhat ambiguous. This is the case where the horizontal component is // larger than the vertical. TEST_F(WidgetScrollViewTest, - CompositedTransposedScrollEventsHorizontalComponentIsLarger) { + DISABLED_CompositedTransposedScrollEventsHorizontalComponentIsLarger) { // Set up with a vertical scroll bar. ScrollView* scroll_view = AddScrollViewWithContentSize(gfx::Size(kDefaultHeight * 5, 10));